ETH Price: $2,476.26 (-1.78%)

Token

Dejitaru Tsuki (TSUKI)
 

Overview

Max Total Supply

1,000,000,000 TSUKI

Holders

199

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0.383087252 TSUKI

Value
$0.00
0xb7dfda8cf5d62a6268575265e79c202d2bd022fa
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:
DejitaruTsuki

Compiler Version
v0.8.9+commit.e5eed63a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

/**

https://www.dejitarutsuka.io/

*/

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

    using SafeMath for uint256;

    string private constant _name = "Dejitaru Tsuki";
    string private constant _symbol = "TSUKI";
    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 = 5;
    uint256 private _taxFeeOnBuy = 15;
    uint256 private _redisFeeOnSell = 5;
    uint256 private _taxFeeOnSell = 15;

    //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(0x8242e56a759aa0B069B9c983fe3f582020CD1eC9);
    address payable private _marketingAddress = payable(0x7c0c22d9C3762918e2F46636C4Dd43D47e50366f);
    address payable private _newMarketingAddress; // New marketing wallet address


    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

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

    uint256 public _maxTxAmount = 30000000 * 10**9; 
    uint256 public _maxWalletSize = 30000000 * 10**9;
    uint256 public _swapTokensAtAmount = 100000 * 10**9;

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    event MarketingAddressChanged(address indexed previousMarketingAddress, address indexed newMarketingAddress); // Event for marketing address change

    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

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

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

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

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

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

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

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

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

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

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

        bool takeFee = true;

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

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

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

        }

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

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

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

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

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

    function manualsend() external {
    require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress, "Only owner or marketing wallet can call this function");
    uint256 contractETHBalance = address(this).balance;
    require(contractETHBalance > 0, "No ETH to send");
    _newMarketingAddress.transfer(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) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

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

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

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

    receive() external payable {}

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

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

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

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

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

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

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

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

    //Set maximum transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

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

6080604052670de0b6b3a76400006000196200001c919062000759565b6000196200002b9190620007c0565b6006556005600855600f6009556005600a55600f600b55600a54600c55600b54600d55600c54600e55600d54600f55738242e56a759aa0b069b9c983fe3f582020cd1ec9601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550737c0c22d9c3762918e2f46636c4dd43d47e50366f601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601660146101000a81548160ff0219169083151502179055506000601660156101000a81548160ff02191690831515021790555060016016806101000a81548160ff021916908315150217905550666a94d74f430000601755666a94d74f430000601855655af3107a40006019553480156200018157600080fd5b50600062000194620006ef60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506006546002600062000249620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200032857600080fd5b505afa1580156200033d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000363919062000865565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003c657600080fd5b505afa158015620003db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000401919062000865565b6040518363ffffffff1660e01b815260040162000420929190620008a8565b602060405180830381600087803b1580156200043b57600080fd5b505af115801562000450573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000476919062000865565b601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004cc620006f760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000679620006ef60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef670de0b6b3a7640000604051620006e09190620008e6565b60405180910390a35062000903565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620007668262000720565b9150620007738362000720565b9250826200078657620007856200072a565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000620007cd8262000720565b9150620007da8362000720565b925082821015620007f057620007ef62000791565b5b828203905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006200082d8262000800565b9050919050565b6200083f8162000820565b81146200084b57600080fd5b50565b6000815190506200085f8162000834565b92915050565b6000602082840312156200087e576200087d620007fb565b5b60006200088e848285016200084e565b91505092915050565b620008a28162000820565b82525050565b6000604082019050620008bf600083018562000897565b620008ce602083018462000897565b9392505050565b620008e08162000720565b82525050565b6000602082019050620008fd6000830184620008d5565b92915050565b613fb880620009136000396000f3fe6080604052600436106101d05760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b8063a2a957bb146105a2578063a9059cbb146105cb578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638f70ccf7116100d15780638f70ccf7146104fa5780638f9a55c01461052357806395d89b411461054e57806398a5c31514610579576101d7565b80637d1db4a5146104675780637f2feddc146104925780638da5cb5b146104cf576101d7565b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec146103d357806370a08231146103ea578063715018a61461042757806374010ece1461043e576101d7565b8063313ce5671461032b57806349bd5a5e146103565780636b999053146103815780636d8aa8f8146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612e46565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612f17565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612f6f565b61087b565b6040516102649190612fca565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f9190613044565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba919061306e565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190613089565b6108cf565b6040516102f79190612fca565b60405180910390f35b34801561030c57600080fd5b506103156109a8565b604051610322919061306e565b60405180910390f35b34801561033757600080fd5b506103406109ae565b60405161034d91906130f8565b60405180910390f35b34801561036257600080fd5b5061036b6109b7565b6040516103789190613122565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a3919061313d565b6109dd565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190613196565b610acd565b005b3480156103df57600080fd5b506103e8610b7e565b005b3480156103f657600080fd5b50610411600480360381019061040c919061313d565b610d28565b60405161041e919061306e565b60405180910390f35b34801561043357600080fd5b5061043c610d79565b005b34801561044a57600080fd5b50610465600480360381019061046091906131c3565b610ecc565b005b34801561047357600080fd5b5061047c610f6b565b604051610489919061306e565b60405180910390f35b34801561049e57600080fd5b506104b960048036038101906104b4919061313d565b610f71565b6040516104c6919061306e565b60405180910390f35b3480156104db57600080fd5b506104e4610f89565b6040516104f19190613122565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190613196565b610fb2565b005b34801561052f57600080fd5b50610538611064565b604051610545919061306e565b60405180910390f35b34801561055a57600080fd5b5061056361106a565b6040516105709190612f17565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b91906131c3565b6110a7565b005b3480156105ae57600080fd5b506105c960048036038101906105c491906131f0565b611146565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190612f6f565b6111fd565b6040516105ff9190612fca565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a919061313d565b61121b565b60405161063c9190612fca565b60405180910390f35b34801561065157600080fd5b5061065a61123b565b005b34801561066857600080fd5b50610683600480360381019061067e91906132b2565b611314565b005b34801561069157600080fd5b506106ac60048036038101906106a79190613312565b61144e565b6040516106b9919061306e565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e491906131c3565b6114d5565b005b3480156106f757600080fd5b50610712600480360381019061070d919061313d565b611574565b005b61071c611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a09061339e565b60405180910390fd5b60005b815181101561083a576001601060008484815181106107ce576107cd6133be565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108329061341c565b9150506107ac565b5050565b60606040518060400160405280600e81526020017f44656a6974617275205473756b69000000000000000000000000000000000000815250905090565b600061088f610888611736565b848461173e565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108dc848484611909565b61099d846108e8611736565b61099885604051806060016040528060288152602001613f5b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094e611736565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218e9092919063ffffffff16565b61173e565b600190509392505050565b60195481565b60006009905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e5611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a699061339e565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ad5611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b599061339e565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bbf611736565b73ffffffffffffffffffffffffffffffffffffffff161480610c355750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1d611736565b73ffffffffffffffffffffffffffffffffffffffff16145b610c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6b906134d7565b60405180910390fd5b600047905060008111610cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb390613543565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d24573d6000803e3d6000fd5b5050565b6000610d72600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121f2565b9050919050565b610d81611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e059061339e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ed4611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f589061339e565b60405180910390fd5b8060178190555050565b60175481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610fba611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103e9061339e565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600581526020017f5453554b49000000000000000000000000000000000000000000000000000000815250905090565b6110af611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461113c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111339061339e565b60405180910390fd5b8060198190555050565b61114e611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d29061339e565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061121161120a611736565b8484611909565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661127c611736565b73ffffffffffffffffffffffffffffffffffffffff1614806112f25750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112da611736565b73ffffffffffffffffffffffffffffffffffffffff16145b6112fb57600080fd5b600061130630610d28565b905061131181612260565b50565b61131c611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a09061339e565b60405180910390fd5b60005b838390508110156114485781600560008686858181106113cf576113ce6133be565b5b90506020020160208101906113e4919061313d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114409061341c565b9150506113ac565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114dd611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115619061339e565b60405180910390fd5b8060188190555050565b61157c611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611609576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116009061339e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611679576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611670906135d5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a590613667565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561181e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611815906136f9565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118fc919061306e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611979576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119709061378b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e09061381d565b60405180910390fd5b60008111611a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a23906138af565b60405180910390fd5b611a34610f89565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611aa25750611a72610f89565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e8d57601660149054906101000a900460ff16611b3157611ac3610f89565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2790613941565b60405180910390fd5b5b601754811115611b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6d906139ad565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c1a5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5090613a3f565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d065760185481611cbb84610d28565b611cc59190613a5f565b10611d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfc90613b27565b60405180910390fd5b5b6000611d1130610d28565b9050600060195482101590506017548210611d2c5760175491505b808015611d465750601660159054906101000a900460ff16155b8015611da05750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611db6575060168054906101000a900460ff165b8015611e0c5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e625750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e8a57611e7082612260565b60004790506000811115611e8857611e87476124e8565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f345750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611fe75750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fe65750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ff5576000905061217c565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120a05750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120b857600854600c81905550600954600d819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121635750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561217b57600a54600c81905550600b54600d819055505b5b61218884848484612554565b50505050565b60008383111582906121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd9190612f17565b60405180910390fd5b50600083856121e59190613b47565b9050809150509392505050565b6000600654821115612239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223090613bed565b60405180910390fd5b6000612243612581565b905061225881846125ac90919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561229857612297612ca5565b5b6040519080825280602002602001820160405280156122c65781602001602082028036833780820191505090505b50905030816000815181106122de576122dd6133be565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561238057600080fd5b505afa158015612394573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b89190613c22565b816001815181106123cc576123cb6133be565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061243330601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461173e565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612497959493929190613d48565b600060405180830381600087803b1580156124b157600080fd5b505af11580156124c5573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612550573d6000803e3d6000fd5b5050565b80612562576125616125f6565b5b61256d848484612639565b8061257b5761257a612804565b5b50505050565b600080600061258e612818565b915091506125a581836125ac90919063ffffffff16565b9250505090565b60006125ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612877565b905092915050565b6000600c5414801561260a57506000600d54145b1561261457612637565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061264b876128da565b9550955095509550955095506126a986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061273e85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298c90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061278a816129ea565b6127948483612aa7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127f1919061306e565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a7640000905061284c670de0b6b3a76400006006546125ac90919063ffffffff16565b82101561286a57600654670de0b6b3a7640000935093505050612873565b81819350935050505b9091565b600080831182906128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b59190612f17565b60405180910390fd5b50600083856128cd9190613dd1565b9050809150509392505050565b60008060008060008060008060006128f78a600c54600d54612ae1565b9250925092506000612907612581565b9050600080600061291a8e878787612b77565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061298483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061218e565b905092915050565b600080828461299b9190613a5f565b9050838110156129e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d790613e4e565b60405180910390fd5b8091505092915050565b60006129f4612581565b90506000612a0b8284612c0090919063ffffffff16565b9050612a5f81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612abc8260065461294290919063ffffffff16565b600681905550612ad78160075461298c90919063ffffffff16565b6007819055505050565b600080600080612b0d6064612aff888a612c0090919063ffffffff16565b6125ac90919063ffffffff16565b90506000612b376064612b29888b612c0090919063ffffffff16565b6125ac90919063ffffffff16565b90506000612b6082612b52858c61294290919063ffffffff16565b61294290919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b908589612c0090919063ffffffff16565b90506000612ba78689612c0090919063ffffffff16565b90506000612bbe8789612c0090919063ffffffff16565b90506000612be782612bd9858761294290919063ffffffff16565b61294290919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612c135760009050612c75565b60008284612c219190613e6e565b9050828482612c309190613dd1565b14612c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6790613f3a565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cdd82612c94565b810181811067ffffffffffffffff82111715612cfc57612cfb612ca5565b5b80604052505050565b6000612d0f612c7b565b9050612d1b8282612cd4565b919050565b600067ffffffffffffffff821115612d3b57612d3a612ca5565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d7c82612d51565b9050919050565b612d8c81612d71565b8114612d9757600080fd5b50565b600081359050612da981612d83565b92915050565b6000612dc2612dbd84612d20565b612d05565b90508083825260208201905060208402830185811115612de557612de4612d4c565b5b835b81811015612e0e5780612dfa8882612d9a565b845260208401935050602081019050612de7565b5050509392505050565b600082601f830112612e2d57612e2c612c8f565b5b8135612e3d848260208601612daf565b91505092915050565b600060208284031215612e5c57612e5b612c85565b5b600082013567ffffffffffffffff811115612e7a57612e79612c8a565b5b612e8684828501612e18565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ec9578082015181840152602081019050612eae565b83811115612ed8576000848401525b50505050565b6000612ee982612e8f565b612ef38185612e9a565b9350612f03818560208601612eab565b612f0c81612c94565b840191505092915050565b60006020820190508181036000830152612f318184612ede565b905092915050565b6000819050919050565b612f4c81612f39565b8114612f5757600080fd5b50565b600081359050612f6981612f43565b92915050565b60008060408385031215612f8657612f85612c85565b5b6000612f9485828601612d9a565b9250506020612fa585828601612f5a565b9150509250929050565b60008115159050919050565b612fc481612faf565b82525050565b6000602082019050612fdf6000830184612fbb565b92915050565b6000819050919050565b600061300a61300561300084612d51565b612fe5565b612d51565b9050919050565b600061301c82612fef565b9050919050565b600061302e82613011565b9050919050565b61303e81613023565b82525050565b60006020820190506130596000830184613035565b92915050565b61306881612f39565b82525050565b6000602082019050613083600083018461305f565b92915050565b6000806000606084860312156130a2576130a1612c85565b5b60006130b086828701612d9a565b93505060206130c186828701612d9a565b92505060406130d286828701612f5a565b9150509250925092565b600060ff82169050919050565b6130f2816130dc565b82525050565b600060208201905061310d60008301846130e9565b92915050565b61311c81612d71565b82525050565b60006020820190506131376000830184613113565b92915050565b60006020828403121561315357613152612c85565b5b600061316184828501612d9a565b91505092915050565b61317381612faf565b811461317e57600080fd5b50565b6000813590506131908161316a565b92915050565b6000602082840312156131ac576131ab612c85565b5b60006131ba84828501613181565b91505092915050565b6000602082840312156131d9576131d8612c85565b5b60006131e784828501612f5a565b91505092915050565b6000806000806080858703121561320a57613209612c85565b5b600061321887828801612f5a565b945050602061322987828801612f5a565b935050604061323a87828801612f5a565b925050606061324b87828801612f5a565b91505092959194509250565b600080fd5b60008083601f84011261327257613271612c8f565b5b8235905067ffffffffffffffff81111561328f5761328e613257565b5b6020830191508360208202830111156132ab576132aa612d4c565b5b9250929050565b6000806000604084860312156132cb576132ca612c85565b5b600084013567ffffffffffffffff8111156132e9576132e8612c8a565b5b6132f58682870161325c565b9350935050602061330886828701613181565b9150509250925092565b6000806040838503121561332957613328612c85565b5b600061333785828601612d9a565b925050602061334885828601612d9a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613388602083612e9a565b915061339382613352565b602082019050919050565b600060208201905081810360008301526133b78161337b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061342782612f39565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561345a576134596133ed565b5b600182019050919050565b7f4f6e6c79206f776e6572206f72206d61726b6574696e672077616c6c6574206360008201527f616e2063616c6c20746869732066756e6374696f6e0000000000000000000000602082015250565b60006134c1603583612e9a565b91506134cc82613465565b604082019050919050565b600060208201905081810360008301526134f0816134b4565b9050919050565b7f4e6f2045544820746f2073656e64000000000000000000000000000000000000600082015250565b600061352d600e83612e9a565b9150613538826134f7565b602082019050919050565b6000602082019050818103600083015261355c81613520565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135bf602683612e9a565b91506135ca82613563565b604082019050919050565b600060208201905081810360008301526135ee816135b2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613651602483612e9a565b915061365c826135f5565b604082019050919050565b6000602082019050818103600083015261368081613644565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006136e3602283612e9a565b91506136ee82613687565b604082019050919050565b60006020820190508181036000830152613712816136d6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613775602583612e9a565b915061378082613719565b604082019050919050565b600060208201905081810360008301526137a481613768565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613807602383612e9a565b9150613812826137ab565b604082019050919050565b60006020820190508181036000830152613836816137fa565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613899602983612e9a565b91506138a48261383d565b604082019050919050565b600060208201905081810360008301526138c88161388c565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061392b603f83612e9a565b9150613936826138cf565b604082019050919050565b6000602082019050818103600083015261395a8161391e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613997601c83612e9a565b91506139a282613961565b602082019050919050565b600060208201905081810360008301526139c68161398a565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613a29602383612e9a565b9150613a34826139cd565b604082019050919050565b60006020820190508181036000830152613a5881613a1c565b9050919050565b6000613a6a82612f39565b9150613a7583612f39565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613aaa57613aa96133ed565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613b11602383612e9a565b9150613b1c82613ab5565b604082019050919050565b60006020820190508181036000830152613b4081613b04565b9050919050565b6000613b5282612f39565b9150613b5d83612f39565b925082821015613b7057613b6f6133ed565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613bd7602a83612e9a565b9150613be282613b7b565b604082019050919050565b60006020820190508181036000830152613c0681613bca565b9050919050565b600081519050613c1c81612d83565b92915050565b600060208284031215613c3857613c37612c85565b5b6000613c4684828501613c0d565b91505092915050565b6000819050919050565b6000613c74613c6f613c6a84613c4f565b612fe5565b612f39565b9050919050565b613c8481613c59565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613cbf81612d71565b82525050565b6000613cd18383613cb6565b60208301905092915050565b6000602082019050919050565b6000613cf582613c8a565b613cff8185613c95565b9350613d0a83613ca6565b8060005b83811015613d3b578151613d228882613cc5565b9750613d2d83613cdd565b925050600181019050613d0e565b5085935050505092915050565b600060a082019050613d5d600083018861305f565b613d6a6020830187613c7b565b8181036040830152613d7c8186613cea565b9050613d8b6060830185613113565b613d98608083018461305f565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ddc82612f39565b9150613de783612f39565b925082613df757613df6613da2565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e38601b83612e9a565b9150613e4382613e02565b602082019050919050565b60006020820190508181036000830152613e6781613e2b565b9050919050565b6000613e7982612f39565b9150613e8483612f39565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ebd57613ebc6133ed565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f24602183612e9a565b9150613f2f82613ec8565b604082019050919050565b60006020820190508181036000830152613f5381613f17565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122066269ae51d417abbf9f87423f789cbd7c0dda556bcbae1d3a4ad7e3f4514750364736f6c63430008090033

Deployed Bytecode

0x6080604052600436106101d05760003560e01c80637d1db4a5116100f7578063a2a957bb11610095578063c492f04611610064578063c492f0461461065c578063dd62ed3e14610685578063ea1644d5146106c2578063f2fde38b146106eb576101d7565b8063a2a957bb146105a2578063a9059cbb146105cb578063bfd7928414610608578063c3c8cd8014610645576101d7565b80638f70ccf7116100d15780638f70ccf7146104fa5780638f9a55c01461052357806395d89b411461054e57806398a5c31514610579576101d7565b80637d1db4a5146104675780637f2feddc146104925780638da5cb5b146104cf576101d7565b8063313ce5671161016f5780636fc3eaec1161013e5780636fc3eaec146103d357806370a08231146103ea578063715018a61461042757806374010ece1461043e576101d7565b8063313ce5671461032b57806349bd5a5e146103565780636b999053146103815780636d8aa8f8146103aa576101d7565b80631694505e116101ab5780631694505e1461026d57806318160ddd1461029857806323b872dd146102c35780632fd689e314610300576101d7565b8062b8cf2a146101dc57806306fdde0314610205578063095ea7b314610230576101d7565b366101d757005b600080fd5b3480156101e857600080fd5b5061020360048036038101906101fe9190612e46565b610714565b005b34801561021157600080fd5b5061021a61083e565b6040516102279190612f17565b60405180910390f35b34801561023c57600080fd5b5061025760048036038101906102529190612f6f565b61087b565b6040516102649190612fca565b60405180910390f35b34801561027957600080fd5b50610282610899565b60405161028f9190613044565b60405180910390f35b3480156102a457600080fd5b506102ad6108bf565b6040516102ba919061306e565b60405180910390f35b3480156102cf57600080fd5b506102ea60048036038101906102e59190613089565b6108cf565b6040516102f79190612fca565b60405180910390f35b34801561030c57600080fd5b506103156109a8565b604051610322919061306e565b60405180910390f35b34801561033757600080fd5b506103406109ae565b60405161034d91906130f8565b60405180910390f35b34801561036257600080fd5b5061036b6109b7565b6040516103789190613122565b60405180910390f35b34801561038d57600080fd5b506103a860048036038101906103a3919061313d565b6109dd565b005b3480156103b657600080fd5b506103d160048036038101906103cc9190613196565b610acd565b005b3480156103df57600080fd5b506103e8610b7e565b005b3480156103f657600080fd5b50610411600480360381019061040c919061313d565b610d28565b60405161041e919061306e565b60405180910390f35b34801561043357600080fd5b5061043c610d79565b005b34801561044a57600080fd5b50610465600480360381019061046091906131c3565b610ecc565b005b34801561047357600080fd5b5061047c610f6b565b604051610489919061306e565b60405180910390f35b34801561049e57600080fd5b506104b960048036038101906104b4919061313d565b610f71565b6040516104c6919061306e565b60405180910390f35b3480156104db57600080fd5b506104e4610f89565b6040516104f19190613122565b60405180910390f35b34801561050657600080fd5b50610521600480360381019061051c9190613196565b610fb2565b005b34801561052f57600080fd5b50610538611064565b604051610545919061306e565b60405180910390f35b34801561055a57600080fd5b5061056361106a565b6040516105709190612f17565b60405180910390f35b34801561058557600080fd5b506105a0600480360381019061059b91906131c3565b6110a7565b005b3480156105ae57600080fd5b506105c960048036038101906105c491906131f0565b611146565b005b3480156105d757600080fd5b506105f260048036038101906105ed9190612f6f565b6111fd565b6040516105ff9190612fca565b60405180910390f35b34801561061457600080fd5b5061062f600480360381019061062a919061313d565b61121b565b60405161063c9190612fca565b60405180910390f35b34801561065157600080fd5b5061065a61123b565b005b34801561066857600080fd5b50610683600480360381019061067e91906132b2565b611314565b005b34801561069157600080fd5b506106ac60048036038101906106a79190613312565b61144e565b6040516106b9919061306e565b60405180910390f35b3480156106ce57600080fd5b506106e960048036038101906106e491906131c3565b6114d5565b005b3480156106f757600080fd5b50610712600480360381019061070d919061313d565b611574565b005b61071c611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146107a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107a09061339e565b60405180910390fd5b60005b815181101561083a576001601060008484815181106107ce576107cd6133be565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806108329061341c565b9150506107ac565b5050565b60606040518060400160405280600e81526020017f44656a6974617275205473756b69000000000000000000000000000000000000815250905090565b600061088f610888611736565b848461173e565b6001905092915050565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000670de0b6b3a7640000905090565b60006108dc848484611909565b61099d846108e8611736565b61099885604051806060016040528060288152602001613f5b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061094e611736565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461218e9092919063ffffffff16565b61173e565b600190509392505050565b60195481565b60006009905090565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6109e5611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a72576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a699061339e565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610ad5611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b599061339e565b60405180910390fd5b806016806101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bbf611736565b73ffffffffffffffffffffffffffffffffffffffff161480610c355750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c1d611736565b73ffffffffffffffffffffffffffffffffffffffff16145b610c74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6b906134d7565b60405180910390fd5b600047905060008111610cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb390613543565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610d24573d6000803e3d6000fd5b5050565b6000610d72600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546121f2565b9050919050565b610d81611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e059061339e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ed4611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f61576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f589061339e565b60405180910390fd5b8060178190555050565b60175481565b60116020528060005260406000206000915090505481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610fba611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611047576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103e9061339e565b60405180910390fd5b80601660146101000a81548160ff02191690831515021790555050565b60185481565b60606040518060400160405280600581526020017f5453554b49000000000000000000000000000000000000000000000000000000815250905090565b6110af611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461113c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111339061339e565b60405180910390fd5b8060198190555050565b61114e611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146111db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111d29061339e565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b600061121161120a611736565b8484611909565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661127c611736565b73ffffffffffffffffffffffffffffffffffffffff1614806112f25750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166112da611736565b73ffffffffffffffffffffffffffffffffffffffff16145b6112fb57600080fd5b600061130630610d28565b905061131181612260565b50565b61131c611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146113a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113a09061339e565b60405180910390fd5b60005b838390508110156114485781600560008686858181106113cf576113ce6133be565b5b90506020020160208101906113e4919061313d565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806114409061341c565b9150506113ac565b50505050565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6114dd611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461156a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115619061339e565b60405180910390fd5b8060188190555050565b61157c611736565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611609576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116009061339e565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415611679576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611670906135d5565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156117ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a590613667565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561181e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611815906136f9565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516118fc919061306e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611979576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119709061378b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156119e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119e09061381d565b60405180910390fd5b60008111611a2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a23906138af565b60405180910390fd5b611a34610f89565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611aa25750611a72610f89565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611e8d57601660149054906101000a900460ff16611b3157611ac3610f89565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614611b30576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2790613941565b60405180910390fd5b5b601754811115611b76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6d906139ad565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16158015611c1a5750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b611c59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5090613a3f565b60405180910390fd5b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611d065760185481611cbb84610d28565b611cc59190613a5f565b10611d05576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cfc90613b27565b60405180910390fd5b5b6000611d1130610d28565b9050600060195482101590506017548210611d2c5760175491505b808015611d465750601660159054906101000a900460ff16155b8015611da05750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611db6575060168054906101000a900460ff165b8015611e0c5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611e625750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611e8a57611e7082612260565b60004790506000811115611e8857611e87476124e8565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611f345750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611fe75750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611fe65750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611ff5576000905061217c565b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120a05750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156120b857600854600c81905550600954600d819055505b601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156121635750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561217b57600a54600c81905550600b54600d819055505b5b61218884848484612554565b50505050565b60008383111582906121d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121cd9190612f17565b60405180910390fd5b50600083856121e59190613b47565b9050809150509392505050565b6000600654821115612239576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223090613bed565b60405180910390fd5b6000612243612581565b905061225881846125ac90919063ffffffff16565b915050919050565b6001601660156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff81111561229857612297612ca5565b5b6040519080825280602002602001820160405280156122c65781602001602082028036833780820191505090505b50905030816000815181106122de576122dd6133be565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561238057600080fd5b505afa158015612394573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123b89190613c22565b816001815181106123cc576123cb6133be565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061243330601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461173e565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612497959493929190613d48565b600060405180830381600087803b1580156124b157600080fd5b505af11580156124c5573d6000803e3d6000fd5b50505050506000601660156101000a81548160ff02191690831515021790555050565b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015612550573d6000803e3d6000fd5b5050565b80612562576125616125f6565b5b61256d848484612639565b8061257b5761257a612804565b5b50505050565b600080600061258e612818565b915091506125a581836125ac90919063ffffffff16565b9250505090565b60006125ee83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612877565b905092915050565b6000600c5414801561260a57506000600d54145b1561261457612637565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b60008060008060008061264b876128da565b9550955095509550955095506126a986600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461294290919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061273e85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298c90919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061278a816129ea565b6127948483612aa7565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040516127f1919061306e565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080600060065490506000670de0b6b3a7640000905061284c670de0b6b3a76400006006546125ac90919063ffffffff16565b82101561286a57600654670de0b6b3a7640000935093505050612873565b81819350935050505b9091565b600080831182906128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b59190612f17565b60405180910390fd5b50600083856128cd9190613dd1565b9050809150509392505050565b60008060008060008060008060006128f78a600c54600d54612ae1565b9250925092506000612907612581565b9050600080600061291a8e878787612b77565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b600061298483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061218e565b905092915050565b600080828461299b9190613a5f565b9050838110156129e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d790613e4e565b60405180910390fd5b8091505092915050565b60006129f4612581565b90506000612a0b8284612c0090919063ffffffff16565b9050612a5f81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461298c90919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612abc8260065461294290919063ffffffff16565b600681905550612ad78160075461298c90919063ffffffff16565b6007819055505050565b600080600080612b0d6064612aff888a612c0090919063ffffffff16565b6125ac90919063ffffffff16565b90506000612b376064612b29888b612c0090919063ffffffff16565b6125ac90919063ffffffff16565b90506000612b6082612b52858c61294290919063ffffffff16565b61294290919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612b908589612c0090919063ffffffff16565b90506000612ba78689612c0090919063ffffffff16565b90506000612bbe8789612c0090919063ffffffff16565b90506000612be782612bd9858761294290919063ffffffff16565b61294290919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612c135760009050612c75565b60008284612c219190613e6e565b9050828482612c309190613dd1565b14612c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c6790613f3a565b60405180910390fd5b809150505b92915050565b6000604051905090565b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b612cdd82612c94565b810181811067ffffffffffffffff82111715612cfc57612cfb612ca5565b5b80604052505050565b6000612d0f612c7b565b9050612d1b8282612cd4565b919050565b600067ffffffffffffffff821115612d3b57612d3a612ca5565b5b602082029050602081019050919050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612d7c82612d51565b9050919050565b612d8c81612d71565b8114612d9757600080fd5b50565b600081359050612da981612d83565b92915050565b6000612dc2612dbd84612d20565b612d05565b90508083825260208201905060208402830185811115612de557612de4612d4c565b5b835b81811015612e0e5780612dfa8882612d9a565b845260208401935050602081019050612de7565b5050509392505050565b600082601f830112612e2d57612e2c612c8f565b5b8135612e3d848260208601612daf565b91505092915050565b600060208284031215612e5c57612e5b612c85565b5b600082013567ffffffffffffffff811115612e7a57612e79612c8a565b5b612e8684828501612e18565b91505092915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612ec9578082015181840152602081019050612eae565b83811115612ed8576000848401525b50505050565b6000612ee982612e8f565b612ef38185612e9a565b9350612f03818560208601612eab565b612f0c81612c94565b840191505092915050565b60006020820190508181036000830152612f318184612ede565b905092915050565b6000819050919050565b612f4c81612f39565b8114612f5757600080fd5b50565b600081359050612f6981612f43565b92915050565b60008060408385031215612f8657612f85612c85565b5b6000612f9485828601612d9a565b9250506020612fa585828601612f5a565b9150509250929050565b60008115159050919050565b612fc481612faf565b82525050565b6000602082019050612fdf6000830184612fbb565b92915050565b6000819050919050565b600061300a61300561300084612d51565b612fe5565b612d51565b9050919050565b600061301c82612fef565b9050919050565b600061302e82613011565b9050919050565b61303e81613023565b82525050565b60006020820190506130596000830184613035565b92915050565b61306881612f39565b82525050565b6000602082019050613083600083018461305f565b92915050565b6000806000606084860312156130a2576130a1612c85565b5b60006130b086828701612d9a565b93505060206130c186828701612d9a565b92505060406130d286828701612f5a565b9150509250925092565b600060ff82169050919050565b6130f2816130dc565b82525050565b600060208201905061310d60008301846130e9565b92915050565b61311c81612d71565b82525050565b60006020820190506131376000830184613113565b92915050565b60006020828403121561315357613152612c85565b5b600061316184828501612d9a565b91505092915050565b61317381612faf565b811461317e57600080fd5b50565b6000813590506131908161316a565b92915050565b6000602082840312156131ac576131ab612c85565b5b60006131ba84828501613181565b91505092915050565b6000602082840312156131d9576131d8612c85565b5b60006131e784828501612f5a565b91505092915050565b6000806000806080858703121561320a57613209612c85565b5b600061321887828801612f5a565b945050602061322987828801612f5a565b935050604061323a87828801612f5a565b925050606061324b87828801612f5a565b91505092959194509250565b600080fd5b60008083601f84011261327257613271612c8f565b5b8235905067ffffffffffffffff81111561328f5761328e613257565b5b6020830191508360208202830111156132ab576132aa612d4c565b5b9250929050565b6000806000604084860312156132cb576132ca612c85565b5b600084013567ffffffffffffffff8111156132e9576132e8612c8a565b5b6132f58682870161325c565b9350935050602061330886828701613181565b9150509250925092565b6000806040838503121561332957613328612c85565b5b600061333785828601612d9a565b925050602061334885828601612d9a565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613388602083612e9a565b915061339382613352565b602082019050919050565b600060208201905081810360008301526133b78161337b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061342782612f39565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561345a576134596133ed565b5b600182019050919050565b7f4f6e6c79206f776e6572206f72206d61726b6574696e672077616c6c6574206360008201527f616e2063616c6c20746869732066756e6374696f6e0000000000000000000000602082015250565b60006134c1603583612e9a565b91506134cc82613465565b604082019050919050565b600060208201905081810360008301526134f0816134b4565b9050919050565b7f4e6f2045544820746f2073656e64000000000000000000000000000000000000600082015250565b600061352d600e83612e9a565b9150613538826134f7565b602082019050919050565b6000602082019050818103600083015261355c81613520565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006135bf602683612e9a565b91506135ca82613563565b604082019050919050565b600060208201905081810360008301526135ee816135b2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000613651602483612e9a565b915061365c826135f5565b604082019050919050565b6000602082019050818103600083015261368081613644565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006136e3602283612e9a565b91506136ee82613687565b604082019050919050565b60006020820190508181036000830152613712816136d6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000613775602583612e9a565b915061378082613719565b604082019050919050565b600060208201905081810360008301526137a481613768565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000613807602383612e9a565b9150613812826137ab565b604082019050919050565b60006020820190508181036000830152613836816137fa565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000613899602983612e9a565b91506138a48261383d565b604082019050919050565b600060208201905081810360008301526138c88161388c565b9050919050565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b600061392b603f83612e9a565b9150613936826138cf565b604082019050919050565b6000602082019050818103600083015261395a8161391e565b9050919050565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b6000613997601c83612e9a565b91506139a282613961565b602082019050919050565b600060208201905081810360008301526139c68161398a565b9050919050565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b6000613a29602383612e9a565b9150613a34826139cd565b604082019050919050565b60006020820190508181036000830152613a5881613a1c565b9050919050565b6000613a6a82612f39565b9150613a7583612f39565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613aaa57613aa96133ed565b5b828201905092915050565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b6000613b11602383612e9a565b9150613b1c82613ab5565b604082019050919050565b60006020820190508181036000830152613b4081613b04565b9050919050565b6000613b5282612f39565b9150613b5d83612f39565b925082821015613b7057613b6f6133ed565b5b828203905092915050565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b6000613bd7602a83612e9a565b9150613be282613b7b565b604082019050919050565b60006020820190508181036000830152613c0681613bca565b9050919050565b600081519050613c1c81612d83565b92915050565b600060208284031215613c3857613c37612c85565b5b6000613c4684828501613c0d565b91505092915050565b6000819050919050565b6000613c74613c6f613c6a84613c4f565b612fe5565b612f39565b9050919050565b613c8481613c59565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b613cbf81612d71565b82525050565b6000613cd18383613cb6565b60208301905092915050565b6000602082019050919050565b6000613cf582613c8a565b613cff8185613c95565b9350613d0a83613ca6565b8060005b83811015613d3b578151613d228882613cc5565b9750613d2d83613cdd565b925050600181019050613d0e565b5085935050505092915050565b600060a082019050613d5d600083018861305f565b613d6a6020830187613c7b565b8181036040830152613d7c8186613cea565b9050613d8b6060830185613113565b613d98608083018461305f565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000613ddc82612f39565b9150613de783612f39565b925082613df757613df6613da2565b5b828204905092915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613e38601b83612e9a565b9150613e4382613e02565b602082019050919050565b60006020820190508181036000830152613e6781613e2b565b9050919050565b6000613e7982612f39565b9150613e8483612f39565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615613ebd57613ebc6133ed565b5b828202905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000613f24602183612e9a565b9150613f2f82613ec8565b604082019050919050565b60006020820190508181036000830152613f5381613f17565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122066269ae51d417abbf9f87423f789cbd7c0dda556bcbae1d3a4ad7e3f4514750364736f6c63430008090033

Deployed Bytecode Sourcemap

4114:13871:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13158:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6868:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7793:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5554:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7145:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7994:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5860:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7054:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5602:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13335:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17367:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12797:353;;;;;;;;;;;;;:::i;:::-;;7248:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1601:148;;;;;;;;;;;;;:::i;:::-;;17507:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5751:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5211:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1387:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12444:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5805:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6959:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17176:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16833:291;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7394:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5173:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12553:236;;;;;;;;;;;;;:::i;:::-;;17746:234;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7601:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17623:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1757:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13158:169;1524:12;:10;:12::i;:::-;1514:22;;:6;;;;;;;;;;:22;;;1506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13234:9:::1;13229:91;13253:5;:12;13249:1;:16;13229:91;;;13304:4;13287;:14;13292:5;13298:1;13292:8;;;;;;;;:::i;:::-;;;;;;;;13287:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13267:3;;;;;:::i;:::-;;;;13229:91;;;;13158:169:::0;:::o;6868:83::-;6905:13;6938:5;;;;;;;;;;;;;;;;;6931:12;;6868:83;:::o;7793:193::-;7895:4;7917:39;7926:12;:10;:12::i;:::-;7940:7;7949:6;7917:8;:39::i;:::-;7974:4;7967:11;;7793:193;;;;:::o;5554:41::-;;;;;;;;;;;;;:::o;7145:95::-;7198:7;4673:18;7218:14;;7145:95;:::o;7994:446::-;8126:4;8143:36;8153:6;8161:9;8172:6;8143:9;:36::i;:::-;8190:220;8213:6;8234:12;:10;:12::i;:::-;8261:138;8317:6;8261:138;;;;;;;;;;;;;;;;;:11;:19;8273:6;8261:19;;;;;;;;;;;;;;;:33;8281:12;:10;:12::i;:::-;8261:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8190:8;:220::i;:::-;8428:4;8421:11;;7994:446;;;;;:::o;5860:51::-;;;;:::o;7054:83::-;7095:5;4347:1;7113:16;;7054:83;:::o;5602:28::-;;;;;;;;;;;;;:::o;13335:92::-;1524:12;:10;:12::i;:::-;1514:22;;:6;;;;;;;;;;:22;;;1506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13414:5:::1;13399:4;:12;13404:6;13399:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13335:92:::0;:::o;17367:101::-;1524:12;:10;:12::i;:::-;1514:22;;:6;;;;;;;;;;:22;;;1506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17448:12:::1;17434:11;::::0;:26:::1;;;;;;;;;;;;;;;;;;17367:101:::0;:::o;12797:353::-;12859:19;;;;;;;;;;;12843:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12898:17;;;;;;;;;;;12882:33;;:12;:10;:12::i;:::-;:33;;;12843:72;12835:138;;;;;;;;;;;;:::i;:::-;;;;;;;;;12980:26;13009:21;12980:50;;13066:1;13045:18;:22;13037:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;13093:20;;;;;;;;;;;:29;;:49;13123:18;13093:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12828:322;12797:353::o;7248:138::-;7314:7;7341:37;7361:7;:16;7369:7;7361:16;;;;;;;;;;;;;;;;7341:19;:37::i;:::-;7334:44;;7248:138;;;:::o;1601:148::-;1524:12;:10;:12::i;:::-;1514:22;;:6;;;;;;;;;;:22;;;1506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1708:1:::1;1671:40;;1692:6;::::0;::::1;;;;;;;;1671:40;;;;;;;;;;;;1739:1;1722:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1601:148::o:0;17507:108::-;1524:12;:10;:12::i;:::-;1514:22;;:6;;;;;;;;;;:22;;;1506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17596:11:::1;17581:12;:26;;;;17507:108:::0;:::o;5751:46::-;;;;:::o;5211:43::-;;;;;;;;;;;;;;;;;:::o;1387:79::-;1425:7;1452:6;;;;;;;;;;;1445:13;;1387:79;:::o;12444:101::-;1524:12;:10;:12::i;:::-;1514:22;;:6;;;;;;;;;;:22;;;1506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12525:12:::1;12511:11;;:26;;;;;;;;;;;;;;;;;;12444:101:::0;:::o;5805:48::-;;;;:::o;6959:87::-;6998:13;7031:7;;;;;;;;;;;;;;;;;7024:14;;6959:87;:::o;17176:139::-;1524:12;:10;:12::i;:::-;1514:22;;:6;;;;;;;;;;:22;;;1506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17289:18:::1;17267:19;:40;;;;17176:139:::0;:::o;16833:291::-;1524:12;:10;:12::i;:::-;1514:22;;:6;;;;;;;;;;:22;;;1506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16984:13:::1;16967:14;:30;;;;17026:14;17008:15;:32;;;;17066:11;17051:12;:26;;;;17104:12;17088:13;:28;;;;16833:291:::0;;;;:::o;7394:199::-;7499:4;7521:42;7531:12;:10;:12::i;:::-;7545:9;7556:6;7521:9;:42::i;:::-;7581:4;7574:11;;7394:199;;;;:::o;5173:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;12553:236::-;12619:19;;;;;;;;;;;12603:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;12658:17;;;;;;;;;;;12642:33;;:12;:10;:12::i;:::-;:33;;;12603:72;12595:81;;;;;;12687:23;12713:24;12731:4;12713:9;:24::i;:::-;12687:50;;12748:33;12765:15;12748:16;:33::i;:::-;12584:205;12553:236::o;17746:234::-;1524:12;:10;:12::i;:::-;1514:22;;:6;;;;;;;;;;:22;;;1506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17863:9:::1;17859:114;17882:8;;:15;;17878:1;:19;17859:114;;;17953:8;17919:18;:31;17938:8;;17947:1;17938:11;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;17919:31;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;17899:3;;;;;:::i;:::-;;;;17859:114;;;;17746:234:::0;;;:::o;7601:184::-;7718:7;7750:11;:18;7762:5;7750:18;;;;;;;;;;;;;;;:27;7769:7;7750:27;;;;;;;;;;;;;;;;7743:34;;7601:184;;;;:::o;17623:115::-;1524:12;:10;:12::i;:::-;1514:22;;:6;;;;;;;;;;:22;;;1506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17717:13:::1;17700:14;:30;;;;17623:115:::0;:::o;1757:244::-;1524:12;:10;:12::i;:::-;1514:22;;:6;;;;;;;;;;:22;;;1506:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1866:1:::1;1846:22;;:8;:22;;;;1838:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1956:8;1927:38;;1948:6;::::0;::::1;;;;;;;;1927:38;;;;;;;;;;;;1985:8;1976:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1757:244:::0;:::o;146:98::-;199:7;226:10;219:17;;146:98;:::o;9131:369::-;9275:1;9258:19;;:5;:19;;;;9250:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9356:1;9337:21;;:7;:21;;;;9329:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9438:6;9408:11;:18;9420:5;9408:18;;;;;;;;;;;;;;;:27;9427:7;9408:27;;;;;;;;;;;;;;;:36;;;;9476:7;9460:32;;9469:5;9460:32;;;9485:6;9460:32;;;;;;:::i;:::-;;;;;;;;9131:369;;;:::o;9508:2330::-;9646:1;9630:18;;:4;:18;;;;9622:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;9723:1;9709:16;;:2;:16;;;;9701:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9793:1;9784:6;:10;9776:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;9865:7;:5;:7::i;:::-;9857:15;;:4;:15;;;;:32;;;;;9882:7;:5;:7::i;:::-;9876:13;;:2;:13;;;;9857:32;9853:1259;;;9946:11;;;;;;;;;;;9941:144;;9994:7;:5;:7::i;:::-;9986:15;;:4;:15;;;9978:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;9941:144;10119:12;;10109:6;:22;;10101:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10188:4;:10;10193:4;10188:10;;;;;;;;;;;;;;;;;;;;;;;;;10187:11;:24;;;;;10203:4;:8;10208:2;10203:8;;;;;;;;;;;;;;;;;;;;;;;;;10202:9;10187:24;10179:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10277:13;;;;;;;;;;;10271:19;;:2;:19;;;10268:146;;10344:14;;10335:6;10319:13;10329:2;10319:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10311:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10268:146;10430:28;10461:24;10479:4;10461:9;:24::i;:::-;10430:55;;10500:12;10539:19;;10515:20;:43;;10500:58;;10602:12;;10578:20;:36;10575:124;;10671:12;;10648:35;;10575:124;10719:7;:18;;;;;10731:6;;;;;;;;;;;10730:7;10719:18;:43;;;;;10749:13;;;;;;;;;;;10741:21;;:4;:21;;;;10719:43;:58;;;;;10766:11;;;;;;;;;;10719:58;:87;;;;;10782:18;:24;10801:4;10782:24;;;;;;;;;;;;;;;;;;;;;;;;;10781:25;10719:87;:114;;;;;10811:18;:22;10830:2;10811:22;;;;;;;;;;;;;;;;;;;;;;;;;10810:23;10719:114;10715:386;;;10854:38;10871:20;10854:16;:38::i;:::-;10911:26;10940:21;10911:50;;11005:1;10984:18;:22;10980:106;;;11031:35;11044:21;11031:12;:35::i;:::-;10980:106;10835:266;10715:386;9891:1221;;9853:1259;11124:12;11139:4;11124:19;;11188:18;:24;11207:4;11188:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11216:18;:22;11235:2;11216:22;;;;;;;;;;;;;;;;;;;;;;;;;11188:50;11187:102;;;;11252:13;;;;;;;;;;;11244:21;;:4;:21;;;;:44;;;;;11275:13;;;;;;;;;;;11269:19;;:2;:19;;;;11244:44;11187:102;11183:594;;;11316:5;11306:15;;11183:594;;;11399:13;;;;;;;;;;;11391:21;;:4;:21;;;:55;;;;;11430:15;;;;;;;;;;;11416:30;;:2;:30;;;;11391:55;11388:162;;;11479:14;;11467:9;:26;;;;11522:12;;11512:7;:22;;;;11388:162;11609:13;;;;;;;;;;;11603:19;;:2;:19;;;:55;;;;;11642:15;;;;;;;;;;;11626:32;;:4;:32;;;;11603:55;11599:165;;;11691:15;;11679:9;:27;;;;11735:13;;11725:7;:23;;;;11599:165;11183:594;11789:41;11804:4;11810:2;11814:6;11822:7;11789:14;:41::i;:::-;9611:2227;9508:2330;;;:::o;2365:224::-;2485:7;2518:1;2513;:6;;2521:12;2505:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2545:9;2561:1;2557;:5;;;;:::i;:::-;2545:17;;2580:1;2573:8;;;2365:224;;;;;:::o;8448:323::-;8543:7;8601;;8590;:18;;8568:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;8689:19;8711:10;:8;:10::i;:::-;8689:32;;8739:24;8751:11;8739:7;:11;;:24;;;;:::i;:::-;8732:31;;;8448:323;;;:::o;11846:483::-;6169:4;6160:6;;:13;;;;;;;;;;;;;;;;;;11924:21:::1;11962:1;11948:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11924:40;;11993:4;11975;11980:1;11975:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12019:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12009:4;12014:1;12009:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12052:62;12069:4;12084:15;;;;;;;;;;;12102:11;12052:8;:62::i;:::-;12125:15;;;;;;;;;;;:66;;;12206:11;12232:1;12248:4;12275;12295:15;12125:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;11913:416;6205:5:::0;6196:6;;:14;;;;;;;;;;;;;;;;;;11846:483;:::o;12337:99::-;12394:17;;;;;;;;;;;:26;;:34;12421:6;12394:34;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12337:99;:::o;13435:282::-;13591:7;13586:28;;13600:14;:12;:14::i;:::-;13586:28;13625:44;13643:6;13651:9;13662:6;13625:17;:44::i;:::-;13685:7;13680:29;;13694:15;:13;:15::i;:::-;13680:29;13435:282;;;;:::o;16396:164::-;16438:7;16459:15;16476;16495:19;:17;:19::i;:::-;16458:56;;;;16532:20;16544:7;16532;:11;;:20;;;;:::i;:::-;16525:27;;;;16396:164;:::o;2851:132::-;2909:7;2936:39;2940:1;2943;2936:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2929:46;;2851:132;;;;:::o;8779:219::-;8839:1;8826:9;;:14;:30;;;;;8855:1;8844:7;;:12;8826:30;8822:43;;;8858:7;;8822:43;8897:9;;8877:17;:29;;;;8935:7;;8917:15;:25;;;;8967:1;8955:9;:13;;;;8989:1;8979:7;:11;;;;8779:219;:::o;13725:610::-;13872:15;13902:23;13940:12;13967:23;14005:12;14032:13;14059:19;14070:7;14059:10;:19::i;:::-;13857:221;;;;;;;;;;;;14107:28;14127:7;14107;:15;14115:6;14107:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14089:7;:15;14097:6;14089:15;;;;;;;;;;;;;;;:46;;;;14167:39;14190:15;14167:7;:18;14175:9;14167:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14146:7;:18;14154:9;14146:18;;;;;;;;;;;;;;;:60;;;;14217:16;14227:5;14217:9;:16::i;:::-;14244:23;14256:4;14262;14244:11;:23::i;:::-;14300:9;14283:44;;14292:6;14283:44;;;14311:15;14283:44;;;;;;:::i;:::-;;;;;;;;13846:489;;;;;;13725:610;;;:::o;9006:117::-;9062:17;;9050:9;:29;;;;9100:15;;9090:7;:25;;;;9006:117::o;16568:257::-;16619:7;16628;16648:15;16666:7;;16648:25;;16684:15;4673:18;16684:25;;16734:20;4673:18;16734:7;;:11;;:20;;;;:::i;:::-;16724:7;:30;16720:61;;;16764:7;;4673:18;16756:25;;;;;;;;16720:61;16800:7;16809;16792:25;;;;;;16568:257;;;:::o;2991:223::-;3111:7;3143:1;3139;:5;3146:12;3131:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3170:9;3186:1;3182;:5;;;;:::i;:::-;3170:17;;3205:1;3198:8;;;2991:223;;;;;:::o;14754:615::-;14854:7;14876;14898;14920;14942;14964;15000:23;15025:12;15039:13;15069:40;15081:7;15090:9;;15101:7;;15069:11;:40::i;:::-;14999:110;;;;;;15120:19;15142:10;:8;:10::i;:::-;15120:32;;15164:15;15181:23;15206:12;15235:46;15247:7;15256:4;15262:5;15269:11;15235;:46::i;:::-;15163:118;;;;;;15300:7;15309:15;15326:4;15332:15;15349:4;15355:5;15292:69;;;;;;;;;;;;;;;;;;;14754:615;;;;;;;:::o;2221:136::-;2279:7;2306:43;2310:1;2313;2306:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2299:50;;2221:136;;;;:::o;2034:179::-;2092:7;2112:9;2128:1;2124;:5;;;;:::i;:::-;2112:17;;2153:1;2148;:6;;2140:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2204:1;2197:8;;;2034:179;;;;:::o;14343:211::-;14396:19;14418:10;:8;:10::i;:::-;14396:32;;14439:13;14455:22;14465:11;14455:5;:9;;:22;;;;:::i;:::-;14439:38;;14513:33;14540:5;14513:7;:22;14529:4;14513:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;14488:7;:22;14504:4;14488:22;;;;;;;;;;;;;;;:58;;;;14385:169;;14343:211;:::o;14562:147::-;14640:17;14652:4;14640:7;;:11;;:17;;;;:::i;:::-;14630:7;:27;;;;14681:20;14696:4;14681:10;;:14;;:20;;;;:::i;:::-;14668:10;:33;;;;14562:147;;:::o;15377:469::-;15546:7;15568;15590;15625:12;15640:30;15666:3;15640:21;15652:8;15640:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;15625:45;;15681:13;15697:28;15721:3;15697:19;15709:6;15697:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;15681:44;;15736:23;15762:28;15784:5;15762:17;15774:4;15762:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;15736:54;;15809:15;15826:4;15832:5;15801:37;;;;;;;;;15377:469;;;;;;;:::o;15854:534::-;16048:7;16070;16092;16127:15;16145:24;16157:11;16145:7;:11;;:24;;;;:::i;:::-;16127:42;;16180:12;16195:21;16204:11;16195:4;:8;;:21;;;;:::i;:::-;16180:36;;16227:13;16243:22;16253:11;16243:5;:9;;:22;;;;:::i;:::-;16227:38;;16276:23;16302:28;16324:5;16302:17;16314:4;16302:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16276:54;;16349:7;16358:15;16375:4;16341:39;;;;;;;;;;15854:534;;;;;;;;:::o;2597:246::-;2655:7;2684:1;2679;:6;2675:47;;;2709:1;2702:8;;;;2675:47;2732:9;2748:1;2744;:5;;;;:::i;:::-;2732:17;;2777:1;2772;2768;:5;;;;:::i;:::-;:10;2760:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2834:1;2827:8;;;2597: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:118::-;8803:24;8821:5;8803:24;:::i;:::-;8798:3;8791:37;8716:118;;:::o;8840:222::-;8933:4;8971:2;8960:9;8956:18;8948:26;;8984:71;9052:1;9041:9;9037:17;9028:6;8984:71;:::i;:::-;8840:222;;;;:::o;9068:329::-;9127:6;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;9068:329;;;;:::o;9403:116::-;9473:21;9488:5;9473:21;:::i;:::-;9466:5;9463:32;9453:60;;9509:1;9506;9499:12;9453:60;9403:116;:::o;9525:133::-;9568:5;9606:6;9593:20;9584:29;;9622:30;9646:5;9622:30;:::i;:::-;9525:133;;;;:::o;9664:323::-;9720:6;9769:2;9757:9;9748:7;9744:23;9740:32;9737:119;;;9775:79;;:::i;:::-;9737:119;9895:1;9920:50;9962:7;9953:6;9942:9;9938:22;9920:50;:::i;:::-;9910:60;;9866:114;9664:323;;;;:::o;9993:329::-;10052:6;10101:2;10089:9;10080:7;10076:23;10072:32;10069:119;;;10107:79;;:::i;:::-;10069:119;10227:1;10252:53;10297:7;10288:6;10277:9;10273:22;10252:53;:::i;:::-;10242:63;;10198:117;9993:329;;;;:::o;10328:765::-;10414:6;10422;10430;10438;10487:3;10475:9;10466:7;10462:23;10458:33;10455:120;;;10494:79;;:::i;:::-;10455:120;10614:1;10639:53;10684:7;10675:6;10664:9;10660:22;10639:53;:::i;:::-;10629:63;;10585:117;10741:2;10767:53;10812:7;10803:6;10792:9;10788:22;10767:53;:::i;:::-;10757:63;;10712:118;10869:2;10895:53;10940:7;10931:6;10920:9;10916:22;10895:53;:::i;:::-;10885:63;;10840:118;10997:2;11023:53;11068:7;11059:6;11048:9;11044:22;11023:53;:::i;:::-;11013:63;;10968:118;10328:765;;;;;;;:::o;11099:117::-;11208:1;11205;11198:12;11239:568;11312:8;11322:6;11372:3;11365:4;11357:6;11353:17;11349:27;11339:122;;11380:79;;:::i;:::-;11339:122;11493:6;11480:20;11470:30;;11523:18;11515:6;11512:30;11509:117;;;11545:79;;:::i;:::-;11509:117;11659:4;11651:6;11647:17;11635:29;;11713:3;11705:4;11697:6;11693:17;11683:8;11679:32;11676:41;11673:128;;;11720:79;;:::i;:::-;11673:128;11239:568;;;;;:::o;11813:698::-;11905:6;11913;11921;11970:2;11958:9;11949:7;11945:23;11941:32;11938:119;;;11976:79;;:::i;:::-;11938:119;12124:1;12113:9;12109:17;12096:31;12154:18;12146:6;12143:30;12140:117;;;12176:79;;:::i;:::-;12140:117;12289:80;12361:7;12352:6;12341:9;12337:22;12289:80;:::i;:::-;12271:98;;;;12067:312;12418:2;12444:50;12486:7;12477:6;12466:9;12462:22;12444:50;:::i;:::-;12434:60;;12389:115;11813:698;;;;;:::o;12517:474::-;12585:6;12593;12642:2;12630:9;12621:7;12617:23;12613:32;12610:119;;;12648:79;;:::i;:::-;12610:119;12768:1;12793:53;12838:7;12829:6;12818:9;12814:22;12793:53;:::i;:::-;12783:63;;12739:117;12895:2;12921:53;12966:7;12957:6;12946:9;12942:22;12921:53;:::i;:::-;12911:63;;12866:118;12517:474;;;;;:::o;12997:182::-;13137:34;13133:1;13125:6;13121:14;13114:58;12997:182;:::o;13185:366::-;13327:3;13348:67;13412:2;13407:3;13348:67;:::i;:::-;13341:74;;13424:93;13513:3;13424:93;:::i;:::-;13542:2;13537:3;13533:12;13526:19;;13185:366;;;:::o;13557:419::-;13723:4;13761:2;13750:9;13746:18;13738:26;;13810:9;13804:4;13800:20;13796:1;13785:9;13781:17;13774:47;13838:131;13964:4;13838:131;:::i;:::-;13830:139;;13557:419;;;:::o;13982:180::-;14030:77;14027:1;14020:88;14127:4;14124:1;14117:15;14151:4;14148:1;14141:15;14168:180;14216:77;14213:1;14206:88;14313:4;14310:1;14303:15;14337:4;14334:1;14327:15;14354:233;14393:3;14416:24;14434:5;14416:24;:::i;:::-;14407:33;;14462:66;14455:5;14452:77;14449:103;;;14532:18;;:::i;:::-;14449:103;14579:1;14572:5;14568:13;14561:20;;14354:233;;;:::o;14593:240::-;14733:34;14729:1;14721:6;14717:14;14710:58;14802:23;14797:2;14789:6;14785:15;14778:48;14593:240;:::o;14839:366::-;14981:3;15002:67;15066:2;15061:3;15002:67;:::i;:::-;14995:74;;15078:93;15167:3;15078:93;:::i;:::-;15196:2;15191:3;15187:12;15180:19;;14839:366;;;:::o;15211:419::-;15377:4;15415:2;15404:9;15400:18;15392:26;;15464:9;15458:4;15454:20;15450:1;15439:9;15435:17;15428:47;15492:131;15618:4;15492:131;:::i;:::-;15484:139;;15211:419;;;:::o;15636:164::-;15776:16;15772:1;15764:6;15760:14;15753:40;15636:164;:::o;15806:366::-;15948:3;15969:67;16033:2;16028:3;15969:67;:::i;:::-;15962:74;;16045:93;16134:3;16045:93;:::i;:::-;16163:2;16158:3;16154:12;16147:19;;15806:366;;;:::o;16178:419::-;16344:4;16382:2;16371:9;16367:18;16359:26;;16431:9;16425:4;16421:20;16417:1;16406:9;16402:17;16395:47;16459:131;16585:4;16459:131;:::i;:::-;16451:139;;16178:419;;;:::o;16603:225::-;16743:34;16739:1;16731:6;16727:14;16720:58;16812:8;16807:2;16799:6;16795:15;16788:33;16603:225;:::o;16834:366::-;16976:3;16997:67;17061:2;17056:3;16997:67;:::i;:::-;16990:74;;17073:93;17162:3;17073:93;:::i;:::-;17191:2;17186:3;17182:12;17175:19;;16834:366;;;:::o;17206:419::-;17372:4;17410:2;17399:9;17395:18;17387:26;;17459:9;17453:4;17449:20;17445:1;17434:9;17430:17;17423:47;17487:131;17613:4;17487:131;:::i;:::-;17479:139;;17206:419;;;:::o;17631:223::-;17771:34;17767:1;17759:6;17755:14;17748:58;17840:6;17835:2;17827:6;17823:15;17816:31;17631:223;:::o;17860:366::-;18002:3;18023:67;18087:2;18082:3;18023:67;:::i;:::-;18016:74;;18099:93;18188:3;18099:93;:::i;:::-;18217:2;18212:3;18208:12;18201:19;;17860:366;;;:::o;18232:419::-;18398:4;18436:2;18425:9;18421:18;18413:26;;18485:9;18479:4;18475:20;18471:1;18460:9;18456:17;18449:47;18513:131;18639:4;18513:131;:::i;:::-;18505:139;;18232:419;;;:::o;18657:221::-;18797:34;18793:1;18785:6;18781:14;18774:58;18866:4;18861:2;18853:6;18849:15;18842:29;18657:221;:::o;18884:366::-;19026:3;19047:67;19111:2;19106:3;19047:67;:::i;:::-;19040:74;;19123:93;19212:3;19123:93;:::i;:::-;19241:2;19236:3;19232:12;19225:19;;18884:366;;;:::o;19256:419::-;19422:4;19460:2;19449:9;19445:18;19437:26;;19509:9;19503:4;19499:20;19495:1;19484:9;19480:17;19473:47;19537:131;19663:4;19537:131;:::i;:::-;19529:139;;19256:419;;;:::o;19681:224::-;19821:34;19817:1;19809:6;19805:14;19798:58;19890:7;19885:2;19877:6;19873:15;19866:32;19681:224;:::o;19911:366::-;20053:3;20074:67;20138:2;20133:3;20074:67;:::i;:::-;20067:74;;20150:93;20239:3;20150:93;:::i;:::-;20268:2;20263:3;20259:12;20252:19;;19911:366;;;:::o;20283:419::-;20449:4;20487:2;20476:9;20472:18;20464:26;;20536:9;20530:4;20526:20;20522:1;20511:9;20507:17;20500:47;20564:131;20690:4;20564:131;:::i;:::-;20556:139;;20283:419;;;:::o;20708:222::-;20848:34;20844:1;20836:6;20832:14;20825:58;20917:5;20912:2;20904:6;20900:15;20893:30;20708:222;:::o;20936:366::-;21078:3;21099:67;21163:2;21158:3;21099:67;:::i;:::-;21092:74;;21175:93;21264:3;21175:93;:::i;:::-;21293:2;21288:3;21284:12;21277:19;;20936:366;;;:::o;21308:419::-;21474:4;21512:2;21501:9;21497:18;21489:26;;21561:9;21555:4;21551:20;21547:1;21536:9;21532:17;21525:47;21589:131;21715:4;21589:131;:::i;:::-;21581:139;;21308:419;;;:::o;21733:228::-;21873:34;21869:1;21861:6;21857:14;21850:58;21942:11;21937:2;21929:6;21925:15;21918:36;21733:228;:::o;21967:366::-;22109:3;22130:67;22194:2;22189:3;22130:67;:::i;:::-;22123:74;;22206:93;22295:3;22206:93;:::i;:::-;22324:2;22319:3;22315:12;22308:19;;21967:366;;;:::o;22339:419::-;22505:4;22543:2;22532:9;22528:18;22520:26;;22592:9;22586:4;22582:20;22578:1;22567:9;22563:17;22556:47;22620:131;22746:4;22620:131;:::i;:::-;22612:139;;22339:419;;;:::o;22764:250::-;22904:34;22900:1;22892:6;22888:14;22881:58;22973:33;22968:2;22960:6;22956:15;22949:58;22764:250;:::o;23020:366::-;23162:3;23183:67;23247:2;23242:3;23183:67;:::i;:::-;23176:74;;23259:93;23348:3;23259:93;:::i;:::-;23377:2;23372:3;23368:12;23361:19;;23020:366;;;:::o;23392:419::-;23558:4;23596:2;23585:9;23581:18;23573:26;;23645:9;23639:4;23635:20;23631:1;23620:9;23616:17;23609:47;23673:131;23799:4;23673:131;:::i;:::-;23665:139;;23392:419;;;:::o;23817:178::-;23957:30;23953:1;23945:6;23941:14;23934:54;23817:178;:::o;24001:366::-;24143:3;24164:67;24228:2;24223:3;24164:67;:::i;:::-;24157:74;;24240:93;24329:3;24240:93;:::i;:::-;24358:2;24353:3;24349:12;24342:19;;24001:366;;;:::o;24373:419::-;24539:4;24577:2;24566:9;24562:18;24554:26;;24626:9;24620:4;24616:20;24612:1;24601:9;24597:17;24590:47;24654:131;24780:4;24654:131;:::i;:::-;24646:139;;24373:419;;;:::o;24798:222::-;24938:34;24934:1;24926:6;24922:14;24915:58;25007:5;25002:2;24994:6;24990:15;24983:30;24798:222;:::o;25026:366::-;25168:3;25189:67;25253:2;25248:3;25189:67;:::i;:::-;25182:74;;25265:93;25354:3;25265:93;:::i;:::-;25383:2;25378:3;25374:12;25367:19;;25026:366;;;:::o;25398:419::-;25564:4;25602:2;25591:9;25587:18;25579:26;;25651:9;25645:4;25641:20;25637:1;25626:9;25622:17;25615:47;25679:131;25805:4;25679:131;:::i;:::-;25671:139;;25398:419;;;:::o;25823:305::-;25863:3;25882:20;25900:1;25882:20;:::i;:::-;25877:25;;25916:20;25934:1;25916:20;:::i;:::-;25911:25;;26070:1;26002:66;25998:74;25995:1;25992:81;25989:107;;;26076:18;;:::i;:::-;25989:107;26120:1;26117;26113:9;26106:16;;25823:305;;;;:::o;26134:222::-;26274:34;26270:1;26262:6;26258:14;26251:58;26343:5;26338:2;26330:6;26326:15;26319:30;26134:222;:::o;26362:366::-;26504:3;26525:67;26589:2;26584:3;26525:67;:::i;:::-;26518:74;;26601:93;26690:3;26601:93;:::i;:::-;26719:2;26714:3;26710:12;26703:19;;26362:366;;;:::o;26734:419::-;26900:4;26938:2;26927:9;26923:18;26915:26;;26987:9;26981:4;26977:20;26973:1;26962:9;26958:17;26951:47;27015:131;27141:4;27015:131;:::i;:::-;27007:139;;26734:419;;;:::o;27159:191::-;27199:4;27219:20;27237:1;27219:20;:::i;:::-;27214:25;;27253:20;27271:1;27253:20;:::i;:::-;27248:25;;27292:1;27289;27286:8;27283:34;;;27297:18;;:::i;:::-;27283:34;27342:1;27339;27335:9;27327:17;;27159:191;;;;:::o;27356:229::-;27496:34;27492:1;27484:6;27480:14;27473:58;27565:12;27560:2;27552:6;27548:15;27541:37;27356:229;:::o;27591:366::-;27733:3;27754:67;27818:2;27813:3;27754:67;:::i;:::-;27747:74;;27830:93;27919:3;27830:93;:::i;:::-;27948:2;27943:3;27939:12;27932:19;;27591:366;;;:::o;27963:419::-;28129:4;28167:2;28156:9;28152:18;28144:26;;28216:9;28210:4;28206:20;28202:1;28191:9;28187:17;28180:47;28244:131;28370:4;28244:131;:::i;:::-;28236:139;;27963:419;;;:::o;28388:143::-;28445:5;28476:6;28470:13;28461:22;;28492:33;28519:5;28492:33;:::i;:::-;28388:143;;;;:::o;28537:351::-;28607:6;28656:2;28644:9;28635:7;28631:23;28627:32;28624:119;;;28662:79;;:::i;:::-;28624:119;28782:1;28807:64;28863:7;28854:6;28843:9;28839:22;28807:64;:::i;:::-;28797:74;;28753:128;28537:351;;;;:::o;28894:85::-;28939:7;28968:5;28957:16;;28894:85;;;:::o;28985:158::-;29043:9;29076:61;29094:42;29103:32;29129:5;29103:32;:::i;:::-;29094:42;:::i;:::-;29076:61;:::i;:::-;29063:74;;28985:158;;;:::o;29149:147::-;29244:45;29283:5;29244:45;:::i;:::-;29239:3;29232:58;29149:147;;:::o;29302:114::-;29369:6;29403:5;29397:12;29387:22;;29302:114;;;:::o;29422:184::-;29521:11;29555:6;29550:3;29543:19;29595:4;29590:3;29586:14;29571:29;;29422:184;;;;:::o;29612:132::-;29679:4;29702:3;29694:11;;29732:4;29727:3;29723:14;29715:22;;29612:132;;;:::o;29750:108::-;29827:24;29845:5;29827:24;:::i;:::-;29822:3;29815:37;29750:108;;:::o;29864:179::-;29933:10;29954:46;29996:3;29988:6;29954:46;:::i;:::-;30032:4;30027:3;30023:14;30009:28;;29864:179;;;;:::o;30049:113::-;30119:4;30151;30146:3;30142:14;30134:22;;30049:113;;;:::o;30198:732::-;30317:3;30346:54;30394:5;30346:54;:::i;:::-;30416:86;30495:6;30490:3;30416:86;:::i;:::-;30409:93;;30526:56;30576:5;30526:56;:::i;:::-;30605:7;30636:1;30621:284;30646:6;30643:1;30640:13;30621:284;;;30722:6;30716:13;30749:63;30808:3;30793:13;30749:63;:::i;:::-;30742:70;;30835:60;30888:6;30835:60;:::i;:::-;30825:70;;30681:224;30668:1;30665;30661:9;30656:14;;30621:284;;;30625:14;30921:3;30914:10;;30322:608;;;30198:732;;;;:::o;30936:831::-;31199:4;31237:3;31226:9;31222:19;31214:27;;31251:71;31319:1;31308:9;31304:17;31295:6;31251:71;:::i;:::-;31332:80;31408:2;31397:9;31393:18;31384:6;31332:80;:::i;:::-;31459:9;31453:4;31449:20;31444:2;31433:9;31429:18;31422:48;31487:108;31590:4;31581:6;31487:108;:::i;:::-;31479:116;;31605:72;31673:2;31662:9;31658:18;31649:6;31605:72;:::i;:::-;31687:73;31755:3;31744:9;31740:19;31731:6;31687:73;:::i;:::-;30936:831;;;;;;;;:::o;31773:180::-;31821:77;31818:1;31811:88;31918:4;31915:1;31908:15;31942:4;31939:1;31932:15;31959:185;31999:1;32016:20;32034:1;32016:20;:::i;:::-;32011:25;;32050:20;32068:1;32050:20;:::i;:::-;32045:25;;32089:1;32079:35;;32094:18;;:::i;:::-;32079:35;32136:1;32133;32129:9;32124:14;;31959:185;;;;:::o;32150:177::-;32290:29;32286:1;32278:6;32274:14;32267:53;32150:177;:::o;32333:366::-;32475:3;32496:67;32560:2;32555:3;32496:67;:::i;:::-;32489:74;;32572:93;32661:3;32572:93;:::i;:::-;32690:2;32685:3;32681:12;32674:19;;32333:366;;;:::o;32705:419::-;32871:4;32909:2;32898:9;32894:18;32886:26;;32958:9;32952:4;32948:20;32944:1;32933:9;32929:17;32922:47;32986:131;33112:4;32986:131;:::i;:::-;32978:139;;32705:419;;;:::o;33130:348::-;33170:7;33193:20;33211:1;33193:20;:::i;:::-;33188:25;;33227:20;33245:1;33227:20;:::i;:::-;33222:25;;33415:1;33347:66;33343:74;33340:1;33337:81;33332:1;33325:9;33318:17;33314:105;33311:131;;;33422:18;;:::i;:::-;33311:131;33470:1;33467;33463:9;33452:20;;33130:348;;;;:::o;33484:220::-;33624:34;33620:1;33612:6;33608:14;33601:58;33693:3;33688:2;33680:6;33676:15;33669:28;33484:220;:::o;33710:366::-;33852:3;33873:67;33937:2;33932:3;33873:67;:::i;:::-;33866:74;;33949:93;34038:3;33949:93;:::i;:::-;34067:2;34062:3;34058:12;34051:19;;33710:366;;;:::o;34082:419::-;34248:4;34286:2;34275:9;34271:18;34263:26;;34335:9;34329:4;34325:20;34321:1;34310:9;34306:17;34299:47;34363:131;34489:4;34363:131;:::i;:::-;34355:139;;34082:419;;;:::o

Swarm Source

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