ETH Price: $3,388.87 (+1.27%)

Token

PEPE MAGIC (MAGIC)
 

Overview

Max Total Supply

1,000,000,000 MAGIC

Holders

191

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
1,260,131.297231326037452293 MAGIC

Value
$0.00
0xa78570329849ac5596b83f16f3a6bd685505b647
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:
MAGIC

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

/*
Telegram: https://t.me/PepeMagicerc
Twitter : https://x.com/PepeMagicerc
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.20;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

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
    );
}

abstract contract Ownable is Context {

    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _setOwner(_msgSender());
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view virtual returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any _account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, 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;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

}

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

interface IDexSwapRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

error ERC20InvalidSender(address sender);
error ERC20InvalidReceiver(address receiver);
error ERC20InvalidApprover(address approver);
error ERC20InvalidSpender(address spender);
error ERC20TransferFailed();
error ERC20ZeroTransfer();
error PaymentFailed();

contract MAGIC is Context, IERC20, Ownable {

    using SafeMath for uint256;

    address private developmentWallet;

    uint256 initalBuyTax  = 30;
    uint256 initalSellTax = 30;
    uint256 finalBuyTax   = 2;
    uint256 finalSellTax   = 2;
    
    string private _name = "PEPE MAGIC";
    string private _symbol = "MAGIC";
    uint8 private _decimals = 18; 

    uint256 private _totalSupply = 1_000_000_000 * 10**_decimals;

    // Max Tx amount on buy and sell
    uint256 public maxBuyAmount = _totalSupply.mul(2).div(100);            // 2%   max buy tx
    uint256 public maxSellAmount = _totalSupply.mul(5).div(1000);          // 0.5% max sell tx

    uint256 public maxWalletLimit = _totalSupply.mul(2).div(100);          // 2%   max wallet limit
    
    uint256 public swapThreshold = _totalSupply.mul(1).div(100);    // 1%   swap protection

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) private _allowances;

    mapping (address => bool) public isPair;
    mapping (address => bool) public isExcludedFromFee;
    mapping (address => bool) public _isExcludedFromMaxWallet;
    mapping(address => uint256) public _holderCooldownTimer; 

    bool swapEnabled = true;
    bool swapbylimit = true;
    bool DumpProtected = true;

    uint public buyTax;    
    uint public sellTax;

    IDexSwapRouter public dexRouter;
    address public dexPair;

    uint256 public cooldownTime  = 30 minutes;
    bool inSwap;   

    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }
    
    event SwapTokensForETH(
        uint256 amountIn,
        address[] path
    );

    constructor() {

        developmentWallet = msg.sender;

        IDexSwapRouter _dexRouter = IDexSwapRouter(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );

        dexPair = IDexSwapFactory(_dexRouter.factory())
            .createPair(address(this), _dexRouter.WETH());

        dexRouter = _dexRouter;

        buyTax = initalBuyTax;    
        sellTax = initalSellTax;  

        isExcludedFromFee[address(this)] = true;
        isExcludedFromFee[msg.sender] = true;
        isExcludedFromFee[address(dexRouter)] = true;

        _isExcludedFromMaxWallet[address(this)] = true;
        _isExcludedFromMaxWallet[address(dexPair)] = true;
        _isExcludedFromMaxWallet[address(_dexRouter)] = true;
        _isExcludedFromMaxWallet[address(0xdead)] = true;
        _isExcludedFromMaxWallet[address(msg.sender)] = true;
        
        isPair[address(dexPair)] = true;

        _balances[msg.sender] = _totalSupply;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }

    function name() external view returns (string memory) {
        return _name;
    }

    function symbol() external view returns (string memory) {
        return _symbol;
    }

    function decimals() external view returns (uint8) {
        return _decimals;
    }

    function totalSupply() external view returns (uint256) {
        return _totalSupply;
    }

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

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

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

    function _approve(address owner, address spender, uint256 amount) private {
        if (owner == address(0)) {
            revert ERC20InvalidApprover(address(0));
        }
        if (spender == address(0)) {
            revert ERC20InvalidSpender(address(0));
        }

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    receive() external payable {}

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

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

    function _transfer(address sender, address recipient, uint256 amount) private returns (bool) {
        if (sender == address(0)) {
            revert ERC20InvalidSender(address(0));
        }
        if (recipient == address(0)) {
            revert ERC20InvalidReceiver(address(0));
        }
        if(amount == 0) {
            revert ERC20ZeroTransfer();
        }
    
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }
        else {

            if (!isExcludedFromFee[sender] && !isExcludedFromFee[recipient]) {
                
                bool restricted;

                if (isPair[recipient]) {   //sell
                    require(
                        amount <= maxSellAmount,
                        "maxSellAmount Exceeded!"
                    );
                    restricted = true;
                } 
                else if (isPair[sender]) {  // buy
                    require(
                        amount <= maxBuyAmount,
                        "maxBuyAmount Exceeded!"
                    );
                    restricted = false;
                }
                else {
                    restricted = true;
                }

                if (!_isExcludedFromMaxWallet[recipient]) {
                    require(
                        amount + balanceOf(recipient) <= maxWalletLimit,
                        "Max Wallet Exceeded!"
                    );
                }

                if(restricted && DumpProtected) {
                    require(
                          _holderCooldownTimer[tx.origin] < block.timestamp,
                          "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                      );
                      _holderCooldownTimer[tx.origin] = block.timestamp + cooldownTime;
                }

            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool overMinimumTokenBalance = contractTokenBalance >= swapThreshold;

            if (
                overMinimumTokenBalance && 
                !inSwap && 
                !isPair[sender] && 
                swapEnabled &&
                !isExcludedFromFee[sender] &&
                !isExcludedFromFee[recipient]
                ) {
                swapBack(contractTokenBalance);
            }
            
            _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

            uint256 finalAmount = shouldNotTakeFee(sender,recipient) ? amount : takeFee(sender, recipient, amount);

            _balances[recipient] = _balances[recipient].add(finalAmount);

            emit Transfer(sender, recipient, finalAmount);
            return true;

        }

    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }
    
    function shouldNotTakeFee(address sender, address recipient) internal view returns (bool) {
        if(isExcludedFromFee[sender] || isExcludedFromFee[recipient]) {
            return true;
        }
        else if (isPair[sender] || isPair[recipient]) {
            return false;
        }
        else {
            return false;
        }
    }

    function takeFee(address sender, address recipient, uint256 amount) internal returns (uint256) {
        
        uint feeAmount;

        unchecked {

            if(isPair[sender]) { 
                feeAmount = amount.mul(buyTax).div(100);
            } 
            else if(isPair[recipient]) { 
                feeAmount = amount.mul(sellTax).div(100);
            }

            if(feeAmount > 0) {
                _balances[address(this)] = _balances[address(this)].add(feeAmount);
                emit Transfer(sender, address(this), feeAmount);
            }

            return amount.sub(feeAmount);
        }
        
    }

    function swapBack(uint contractBalance) internal swapping {
        if(swapbylimit) contractBalance = swapThreshold;
        swapTokensForEth(contractBalance,developmentWallet);
    }

    function swapTokensForEth(uint256 tokenAmount, address _recipient) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = dexRouter.WETH();

        _approve(address(this), address(dexRouter), tokenAmount);

        // make the swap
        dexRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(_recipient), // The contract
            block.timestamp
        );
        
        emit SwapTokensForETH(tokenAmount, path);
    }

    function rescueFunds() external { 
        require(msg.sender == developmentWallet,"Unauthorized!");
        (bool os,) = payable(msg.sender).call{value: address(this).balance}("");
        if(!os) revert PaymentFailed();
    }

    function rescueTokens(address _token,address recipient,uint _amount) external {
        require(msg.sender == developmentWallet,"Unauthorized!");
        (bool success, ) = address(_token).call(abi.encodeWithSignature('transfer(address,uint256)',  recipient, _amount));
        if(!success) revert ERC20TransferFailed();
    }

    function setTxLimit(uint onBuy, uint onSell) external onlyOwner {   
        maxBuyAmount = onBuy * 10**_decimals;
        maxSellAmount  = onSell * 10**_decimals;
    }

    function setMaxWalletLimit(uint _newLimit) external onlyOwner {   
        maxWalletLimit = _newLimit * 10**_decimals;
    }

    function excludeFromMaxWallet(address account, bool excluded)
        public
        onlyOwner
    {
        _isExcludedFromMaxWallet[account] = excluded;
    }

    function setFee(uint _buySide, uint _sellSide) external onlyOwner {    
        buyTax = _buySide;
        sellTax = _sellSide;
    }

    function excludeFromFee(address _adr,bool _status) external onlyOwner {
        isExcludedFromFee[_adr] = _status;
    }
    
    function setDevelopmentWallet(address _newWallet) external onlyOwner {
        developmentWallet = _newWallet;
    }

    function setSwapBackSettings(uint _threshold, bool _enabled, bool _dProtection, bool _limited)
        external
        onlyOwner
    {
        swapEnabled = _enabled;
        swapbylimit = _limited;
        DumpProtected = _dProtection;
        swapThreshold = _threshold * 10 ** _decimals;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[{"internalType":"address","name":"approver","type":"address"}],"name":"ERC20InvalidApprover","type":"error"},{"inputs":[{"internalType":"address","name":"receiver","type":"address"}],"name":"ERC20InvalidReceiver","type":"error"},{"inputs":[{"internalType":"address","name":"sender","type":"address"}],"name":"ERC20InvalidSender","type":"error"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"ERC20InvalidSpender","type":"error"},{"inputs":[],"name":"ERC20TransferFailed","type":"error"},{"inputs":[],"name":"ERC20ZeroTransfer","type":"error"},{"inputs":[],"name":"PaymentFailed","type":"error"},{"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":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountIn","type":"uint256"},{"indexed":false,"internalType":"address[]","name":"path","type":"address[]"}],"name":"SwapTokensForETH","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":"_holderCooldownTimer","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromMaxWallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cooldownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexPair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dexRouter","outputs":[{"internalType":"contract IDexSwapRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_adr","type":"address"},{"internalType":"bool","name":"_status","type":"bool"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromMaxWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxBuyAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSellAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueFunds","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newWallet","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buySide","type":"uint256"},{"internalType":"uint256","name":"_sellSide","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newLimit","type":"uint256"}],"name":"setMaxWalletLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_threshold","type":"uint256"},{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"bool","name":"_dProtection","type":"bool"},{"internalType":"bool","name":"_limited","type":"bool"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"onBuy","type":"uint256"},{"internalType":"uint256","name":"onSell","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"},{"stateMutability":"payable","type":"receive"}]

6080604052601e600255601e600355600260045560026005556040518060400160405280600a81526020017f50455045204d4147494300000000000000000000000000000000000000000000815250600690816200005e919062000cf6565b506040518060400160405280600581526020017f4d4147494300000000000000000000000000000000000000000000000000000081525060079081620000a5919062000cf6565b50601260085f6101000a81548160ff021916908360ff16021790555060085f9054906101000a900460ff16600a620000de919062000f63565b633b9aca00620000ef919062000fb3565b6009556200011f60646200011060026009546200089360201b90919060201c565b6200091360201b90919060201c565b600a55620001506103e86200014160056009546200089360201b90919060201c565b6200091360201b90919060201c565b600b556200018060646200017160026009546200089360201b90919060201c565b6200091360201b90919060201c565b600c55620001b06064620001a160016009546200089360201b90919060201c565b6200091360201b90919060201c565b600d55600160145f6101000a81548160ff0219169083151502179055506001601460016101000a81548160ff0219169083151502179055506001601460026101000a81548160ff02191690831515021790555061070860195534801562000215575f80fd5b50620002366200022a6200096460201b60201c565b6200096b60201b60201c565b3360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002d8573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002fe919062001062565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000364573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200038a919062001062565b6040518363ffffffff1660e01b8152600401620003a9929190620010a3565b6020604051808303815f875af1158015620003c6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003ec919062001062565b60185f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060175f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600254601581905550600354601681905550600160115f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160115f60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160125f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160105f60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600954600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600954604051620008849190620010df565b60405180910390a3506200129e565b5f808303620008a5575f90506200090d565b5f8284620008b4919062000fb3565b9050828482620008c5919062001127565b1462000908576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620008ff90620011e2565b60405180910390fd5b809150505b92915050565b5f6200095c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525062000a2c60201b60201c565b905092915050565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f808311829062000a75576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000a6c91906200127c565b60405180910390fd5b505f838562000a85919062001127565b9050809150509392505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168062000b0e57607f821691505b60208210810362000b245762000b2362000ac9565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000b887fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000b4b565b62000b94868362000b4b565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f62000bde62000bd862000bd28462000bac565b62000bb5565b62000bac565b9050919050565b5f819050919050565b62000bf98362000bbe565b62000c1162000c088262000be5565b84845462000b57565b825550505050565b5f90565b62000c2762000c19565b62000c3481848462000bee565b505050565b5b8181101562000c5b5762000c4f5f8262000c1d565b60018101905062000c3a565b5050565b601f82111562000caa5762000c748162000b2a565b62000c7f8462000b3c565b8101602085101562000c8f578190505b62000ca762000c9e8562000b3c565b83018262000c39565b50505b505050565b5f82821c905092915050565b5f62000ccc5f198460080262000caf565b1980831691505092915050565b5f62000ce6838362000cbb565b9150826002028217905092915050565b62000d018262000a92565b67ffffffffffffffff81111562000d1d5762000d1c62000a9c565b5b62000d29825462000af6565b62000d3682828562000c5f565b5f60209050601f83116001811462000d6c575f841562000d57578287015190505b62000d63858262000cd9565b86555062000dd2565b601f19841662000d7c8662000b2a565b5f5b8281101562000da55784890151825560018201915060208501945060208101905062000d7e565b8683101562000dc5578489015162000dc1601f89168262000cbb565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000e645780860481111562000e3c5762000e3b62000dda565b5b600185161562000e4c5780820291505b808102905062000e5c8562000e07565b945062000e1c565b94509492505050565b5f8262000e7e576001905062000f50565b8162000e8d575f905062000f50565b816001811462000ea6576002811462000eb15762000ee7565b600191505062000f50565b60ff84111562000ec65762000ec562000dda565b5b8360020a91508482111562000ee05762000edf62000dda565b5b5062000f50565b5060208310610133831016604e8410600b841016171562000f215782820a90508381111562000f1b5762000f1a62000dda565b5b62000f50565b62000f30848484600162000e13565b9250905081840481111562000f4a5762000f4962000dda565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000f6f8262000bac565b915062000f7c8362000f57565b925062000fab7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000e6d565b905092915050565b5f62000fbf8262000bac565b915062000fcc8362000bac565b925082820262000fdc8162000bac565b9150828204841483151762000ff65762000ff562000dda565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6200102c8262001001565b9050919050565b6200103e8162001020565b811462001049575f80fd5b50565b5f815190506200105c8162001033565b92915050565b5f602082840312156200107a576200107962000ffd565b5b5f62001089848285016200104c565b91505092915050565b6200109d8162001020565b82525050565b5f604082019050620010b85f83018562001092565b620010c7602083018462001092565b9392505050565b620010d98162000bac565b82525050565b5f602082019050620010f45f830184620010ce565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f620011338262000bac565b9150620011408362000bac565b925082620011535762001152620010fa565b5b828204905092915050565b5f82825260208201905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f620011ca6021836200115e565b9150620011d7826200116e565b604082019050919050565b5f6020820190508181035f830152620011fb81620011bc565b9050919050565b5f5b838110156200122157808201518184015260208101905062001204565b5f8484015250505050565b5f601f19601f8301169050919050565b5f620012488262000a92565b6200125481856200115e565b93506200126681856020860162001202565b62001271816200122c565b840191505092915050565b5f6020820190508181035f8301526200129681846200123c565b905092915050565b6139ce80620012ac5f395ff3fe6080604052600436106101fc575f3560e01c806372ac24861161010c578063cea9d26f1161009f578063df8408fe1161006e578063df8408fe14610737578063e5e31b131461075f578063e6b2603b1461079b578063f242ab41146107b1578063f2fde38b146107db57610203565b8063cea9d26f1461066f578063d1d7d7ef14610697578063d2fcc001146106d3578063dd62ed3e146106fb57610203565b8063a9059cbb116100db578063a9059cbb146105a3578063b319c6b7146105df578063bfd70bba14610609578063cc1776d31461064557610203565b806372ac2486146104fd57806388e765ff146105255780638da5cb5b1461054f57806395d89b411461057957610203565b8063313ce5671161018f57806366a88d961161015e57806366a88d961461042f57806366d602ae1461045957806370a0823114610483578063715018a6146104bf578063728d41c9146104d557610203565b8063313ce567146103775780634f7041a5146103a157806352f7c988146103cb5780635342acb4146103f357610203565b80631786a094116101cb5780631786a094146102c157806318160ddd146102e95780631faf723b1461031357806323b872dd1461033b57610203565b80630445b6671461020757806306fdde03146102315780630758d9241461025b578063095ea7b31461028557610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b610803565b6040516102289190612b10565b60405180910390f35b34801561023c575f80fd5b50610245610809565b6040516102529190612bb3565b60405180910390f35b348015610266575f80fd5b5061026f610899565b60405161027c9190612c4d565b60405180910390f35b348015610290575f80fd5b506102ab60048036038101906102a69190612ccf565b6108be565b6040516102b89190612d27565b60405180910390f35b3480156102cc575f80fd5b506102e760048036038101906102e29190612d6a565b6108db565b005b3480156102f4575f80fd5b506102fd6109d6565b60405161030a9190612b10565b60405180910390f35b34801561031e575f80fd5b5061033960048036038101906103349190612dce565b6109df565b005b348015610346575f80fd5b50610361600480360381019061035c9190612e0c565b610ab7565b60405161036e9190612d27565b60405180910390f35b348015610382575f80fd5b5061038b610ba9565b6040516103989190612e77565b60405180910390f35b3480156103ac575f80fd5b506103b5610bbe565b6040516103c29190612b10565b60405180910390f35b3480156103d6575f80fd5b506103f160048036038101906103ec9190612dce565b610bc4565b005b3480156103fe575f80fd5b5061041960048036038101906104149190612e90565b610c52565b6040516104269190612d27565b60405180910390f35b34801561043a575f80fd5b50610443610c6f565b6040516104509190612b10565b60405180910390f35b348015610464575f80fd5b5061046d610c75565b60405161047a9190612b10565b60405180910390f35b34801561048e575f80fd5b506104a960048036038101906104a49190612e90565b610c7b565b6040516104b69190612b10565b60405180910390f35b3480156104ca575f80fd5b506104d3610cc1565b005b3480156104e0575f80fd5b506104fb60048036038101906104f69190612ebb565b610d48565b005b348015610508575f80fd5b50610523600480360381019061051e9190612e90565b610df3565b005b348015610530575f80fd5b50610539610eb2565b6040516105469190612b10565b60405180910390f35b34801561055a575f80fd5b50610563610eb8565b6040516105709190612ef5565b60405180910390f35b348015610584575f80fd5b5061058d610edf565b60405161059a9190612bb3565b60405180910390f35b3480156105ae575f80fd5b506105c960048036038101906105c49190612ccf565b610f6f565b6040516105d69190612d27565b60405180910390f35b3480156105ea575f80fd5b506105f3610f8d565b6040516106009190612b10565b60405180910390f35b348015610614575f80fd5b5061062f600480360381019061062a9190612e90565b610f93565b60405161063c9190612b10565b60405180910390f35b348015610650575f80fd5b50610659610fa8565b6040516106669190612b10565b60405180910390f35b34801561067a575f80fd5b5061069560048036038101906106909190612e0c565b610fae565b005b3480156106a2575f80fd5b506106bd60048036038101906106b89190612e90565b611171565b6040516106ca9190612d27565b60405180910390f35b3480156106de575f80fd5b506106f960048036038101906106f49190612f0e565b61118e565b005b348015610706575f80fd5b50610721600480360381019061071c9190612f4c565b611262565b60405161072e9190612b10565b60405180910390f35b348015610742575f80fd5b5061075d60048036038101906107589190612f0e565b6112e4565b005b34801561076a575f80fd5b5061078560048036038101906107809190612e90565b6113b8565b6040516107929190612d27565b60405180910390f35b3480156107a6575f80fd5b506107af6113d5565b005b3480156107bc575f80fd5b506107c5611506565b6040516107d29190612ef5565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc9190612e90565b61152b565b005b600d5481565b60606006805461081890612fb7565b80601f016020809104026020016040519081016040528092919081815260200182805461084490612fb7565b801561088f5780601f106108665761010080835404028352916020019161088f565b820191905f5260205f20905b81548152906001019060200180831161087257829003601f168201915b5050505050905090565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6108d16108ca611621565b8484611628565b6001905092915050565b6108e3611621565b73ffffffffffffffffffffffffffffffffffffffff16610901610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90613031565b60405180910390fd5b8260145f6101000a81548160ff02191690831515021790555080601460016101000a81548160ff02191690831515021790555081601460026101000a81548160ff02191690831515021790555060085f9054906101000a900460ff16600a6109bf91906131ab565b846109ca91906131f5565b600d8190555050505050565b5f600954905090565b6109e7611621565b73ffffffffffffffffffffffffffffffffffffffff16610a05610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5290613031565b60405180910390fd5b60085f9054906101000a900460ff16600a610a7691906131ab565b82610a8191906131f5565b600a8190555060085f9054906101000a900460ff16600a610aa291906131ab565b81610aad91906131f5565b600b819055505050565b5f610ac38484846117ef565b50610b9e84610ad0611621565b610b99856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e63650000000000000000815250600f5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b50611621565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fe59092919063ffffffff16565b611628565b600190509392505050565b5f60085f9054906101000a900460ff16905090565b60155481565b610bcc611621565b73ffffffffffffffffffffffffffffffffffffffff16610bea610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3790613031565b60405180910390fd5b81601581905550806016819055505050565b6011602052805f5260405f205f915054906101000a900460ff1681565b600c5481565b600b5481565b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cc9611621565b73ffffffffffffffffffffffffffffffffffffffff16610ce7610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3490613031565b60405180910390fd5b610d465f612047565b565b610d50611621565b73ffffffffffffffffffffffffffffffffffffffff16610d6e610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb90613031565b60405180910390fd5b60085f9054906101000a900460ff16600a610ddf91906131ab565b81610dea91906131f5565b600c8190555050565b610dfb611621565b73ffffffffffffffffffffffffffffffffffffffff16610e19610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6690613031565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060078054610eee90612fb7565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1a90612fb7565b8015610f655780601f10610f3c57610100808354040283529160200191610f65565b820191905f5260205f20905b815481529060010190602001808311610f4857829003601f168201915b5050505050905090565b5f610f82610f7b611621565b84846117ef565b506001905092915050565b60195481565b6013602052805f5260405f205f915090505481565b60165481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103490613280565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff16838360405160240161106892919061329e565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516110f29190613309565b5f604051808303815f865af19150503d805f811461112b576040519150601f19603f3d011682016040523d82523d5f602084013e611130565b606091505b505090508061116b576040517ff27f64e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6012602052805f5260405f205f915054906101000a900460ff1681565b611196611621565b73ffffffffffffffffffffffffffffffffffffffff166111b4610eb8565b73ffffffffffffffffffffffffffffffffffffffff161461120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190613031565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6112ec611621565b73ffffffffffffffffffffffffffffffffffffffff1661130a610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135790613031565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90613280565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161148990613342565b5f6040518083038185875af1925050503d805f81146114c3576040519150601f19603f3d011682016040523d82523d5f602084013e6114c8565b606091505b5050905080611503576040517ff499da2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611533611621565b73ffffffffffffffffffffffffffffffffffffffff16611551610eb8565b73ffffffffffffffffffffffffffffffffffffffff16146115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e90613031565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c906133c6565b60405180910390fd5b61161e81612047565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611698575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161168f9190612ef5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611708575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016116ff9190612ef5565b60405180910390fd5b80600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117e29190612b10565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611860575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016118579190612ef5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d0575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016118c79190612ef5565b60405180910390fd5b5f8203611909576040517f67c8957700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a5f9054906101000a900460ff161561192f57611928848484612108565b9050611fde565b60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119cd575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ca8575f60105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611a7057600b54831115611a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5e9061342e565b60405180910390fd5b60019050611b12565b60105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611b0c57600a54831115611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb90613496565b60405180910390fd5b5f9050611b11565b600190505b5b60125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611bb957600c54611b6c85610c7b565b84611b7791906134b4565b1115611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90613531565b60405180910390fd5b5b808015611bd25750601460029054906101000a900460ff165b15611ca6574260135f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d906135e5565b60405180910390fd5b60195442611c6491906134b4565b60135f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b505b5f611cb230610c7b565b90505f600d548210159050808015611cd65750601a5f9054906101000a900460ff16155b8015611d29575060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d40575060145f9054906101000a900460ff165b8015611d93575060115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611de6575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611df557611df4826122d2565b5b611e7c846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600e5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fe59092919063ffffffff16565b600e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611ec8878761234e565b611edc57611ed78787876124aa565b611ede565b845b9050611f3081600e5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126c190919063ffffffff16565b600e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fce9190612b10565b60405180910390a3600193505050505b9392505050565b5f83831115829061202c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120239190612bb3565b60405180910390fd5b505f838561203a9190613603565b9050809150509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f612190826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fe59092919063ffffffff16565b600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061222182600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126c190919063ffffffff16565b600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122bf9190612b10565b60405180910390a3600190509392505050565b6001601a5f6101000a81548160ff021916908315150217905550601460019054906101000a900460ff161561230757600d5490505b6123328160015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661271e565b5f601a5f6101000a81548160ff02191690831515021790555050565b5f60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806123ea575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156123f857600190506124a4565b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612493575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156124a0575f90506124a4565b5f90505b92915050565b5f8060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561252a5761252360646125156015548661298e90919063ffffffff16565b612a0590919063ffffffff16565b90506125a5565b60105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156125a4576125a160646125936016548661298e90919063ffffffff16565b612a0590919063ffffffff16565b90505b5b5f8111156126a4576125fd81600e5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126c190919063ffffffff16565b600e5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161269b9190612b10565b60405180910390a35b6126b78184612a4e90919063ffffffff16565b9150509392505050565b5f8082846126cf91906134b4565b905083811015612714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270b90613680565b60405180910390fd5b8091505092915050565b5f600267ffffffffffffffff81111561273a5761273961369e565b5b6040519080825280602002602001820160405280156127685781602001602082028036833780820191505090505b50905030815f8151811061277f5761277e6136cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612823573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612847919061370c565b8160018151811061285b5761285a6136cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128c13060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611628565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8486426040518663ffffffff1660e01b8152600401612923959493929190613827565b5f604051808303815f87803b15801561293a575f80fd5b505af115801561294c573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7838260405161298192919061387f565b60405180910390a1505050565b5f80830361299e575f90506129ff565b5f82846129ab91906131f5565b90508284826129ba91906138da565b146129fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f19061397a565b60405180910390fd5b809150505b92915050565b5f612a4683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a97565b905092915050565b5f612a8f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fe5565b905092915050565b5f8083118290612add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad49190612bb3565b60405180910390fd5b505f8385612aeb91906138da565b9050809150509392505050565b5f819050919050565b612b0a81612af8565b82525050565b5f602082019050612b235f830184612b01565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b60578082015181840152602081019050612b45565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b8582612b29565b612b8f8185612b33565b9350612b9f818560208601612b43565b612ba881612b6b565b840191505092915050565b5f6020820190508181035f830152612bcb8184612b7b565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f612c15612c10612c0b84612bd3565b612bf2565b612bd3565b9050919050565b5f612c2682612bfb565b9050919050565b5f612c3782612c1c565b9050919050565b612c4781612c2d565b82525050565b5f602082019050612c605f830184612c3e565b92915050565b5f80fd5b5f612c7482612bd3565b9050919050565b612c8481612c6a565b8114612c8e575f80fd5b50565b5f81359050612c9f81612c7b565b92915050565b612cae81612af8565b8114612cb8575f80fd5b50565b5f81359050612cc981612ca5565b92915050565b5f8060408385031215612ce557612ce4612c66565b5b5f612cf285828601612c91565b9250506020612d0385828601612cbb565b9150509250929050565b5f8115159050919050565b612d2181612d0d565b82525050565b5f602082019050612d3a5f830184612d18565b92915050565b612d4981612d0d565b8114612d53575f80fd5b50565b5f81359050612d6481612d40565b92915050565b5f805f8060808587031215612d8257612d81612c66565b5b5f612d8f87828801612cbb565b9450506020612da087828801612d56565b9350506040612db187828801612d56565b9250506060612dc287828801612d56565b91505092959194509250565b5f8060408385031215612de457612de3612c66565b5b5f612df185828601612cbb565b9250506020612e0285828601612cbb565b9150509250929050565b5f805f60608486031215612e2357612e22612c66565b5b5f612e3086828701612c91565b9350506020612e4186828701612c91565b9250506040612e5286828701612cbb565b9150509250925092565b5f60ff82169050919050565b612e7181612e5c565b82525050565b5f602082019050612e8a5f830184612e68565b92915050565b5f60208284031215612ea557612ea4612c66565b5b5f612eb284828501612c91565b91505092915050565b5f60208284031215612ed057612ecf612c66565b5b5f612edd84828501612cbb565b91505092915050565b612eef81612c6a565b82525050565b5f602082019050612f085f830184612ee6565b92915050565b5f8060408385031215612f2457612f23612c66565b5b5f612f3185828601612c91565b9250506020612f4285828601612d56565b9150509250929050565b5f8060408385031215612f6257612f61612c66565b5b5f612f6f85828601612c91565b9250506020612f8085828601612c91565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612fce57607f821691505b602082108103612fe157612fe0612f8a565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61301b602083612b33565b915061302682612fe7565b602082019050919050565b5f6020820190508181035f8301526130488161300f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156130d1578086048111156130ad576130ac61304f565b5b60018516156130bc5780820291505b80810290506130ca8561307c565b9450613091565b94509492505050565b5f826130e957600190506131a4565b816130f6575f90506131a4565b816001811461310c576002811461311657613145565b60019150506131a4565b60ff8411156131285761312761304f565b5b8360020a91508482111561313f5761313e61304f565b5b506131a4565b5060208310610133831016604e8410600b841016171561317a5782820a9050838111156131755761317461304f565b5b6131a4565b6131878484846001613088565b9250905081840481111561319e5761319d61304f565b5b81810290505b9392505050565b5f6131b582612af8565b91506131c083612e5c565b92506131ed7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846130da565b905092915050565b5f6131ff82612af8565b915061320a83612af8565b925082820261321881612af8565b9150828204841483151761322f5761322e61304f565b5b5092915050565b7f556e617574686f72697a656421000000000000000000000000000000000000005f82015250565b5f61326a600d83612b33565b915061327582613236565b602082019050919050565b5f6020820190508181035f8301526132978161325e565b9050919050565b5f6040820190506132b15f830185612ee6565b6132be6020830184612b01565b9392505050565b5f81519050919050565b5f81905092915050565b5f6132e3826132c5565b6132ed81856132cf565b93506132fd818560208601612b43565b80840191505092915050565b5f61331482846132d9565b915081905092915050565b50565b5f61332d5f836132cf565b91506133388261331f565b5f82019050919050565b5f61334c82613322565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133b0602683612b33565b91506133bb82613356565b604082019050919050565b5f6020820190508181035f8301526133dd816133a4565b9050919050565b7f6d617853656c6c416d6f756e74204578636565646564210000000000000000005f82015250565b5f613418601783612b33565b9150613423826133e4565b602082019050919050565b5f6020820190508181035f8301526134458161340c565b9050919050565b7f6d6178427579416d6f756e7420457863656564656421000000000000000000005f82015250565b5f613480601683612b33565b915061348b8261344c565b602082019050919050565b5f6020820190508181035f8301526134ad81613474565b9050919050565b5f6134be82612af8565b91506134c983612af8565b92508282019050808211156134e1576134e061304f565b5b92915050565b7f4d61782057616c6c6574204578636565646564210000000000000000000000005f82015250565b5f61351b601483612b33565b9150613526826134e7565b602082019050919050565b5f6020820190508181035f8301526135488161350f565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6135cf604983612b33565b91506135da8261354f565b606082019050919050565b5f6020820190508181035f8301526135fc816135c3565b9050919050565b5f61360d82612af8565b915061361883612af8565b92508282039050818111156136305761362f61304f565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61366a601b83612b33565b915061367582613636565b602082019050919050565b5f6020820190508181035f8301526136978161365e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061370681612c7b565b92915050565b5f6020828403121561372157613720612c66565b5b5f61372e848285016136f8565b91505092915050565b5f819050919050565b5f61375a61375561375084613737565b612bf2565b612af8565b9050919050565b61376a81613740565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137a281612c6a565b82525050565b5f6137b38383613799565b60208301905092915050565b5f602082019050919050565b5f6137d582613770565b6137df818561377a565b93506137ea8361378a565b805f5b8381101561381a57815161380188826137a8565b975061380c836137bf565b9250506001810190506137ed565b5085935050505092915050565b5f60a08201905061383a5f830188612b01565b6138476020830187613761565b818103604083015261385981866137cb565b90506138686060830185612ee6565b6138756080830184612b01565b9695505050505050565b5f6040820190506138925f830185612b01565b81810360208301526138a481846137cb565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6138e482612af8565b91506138ef83612af8565b9250826138ff576138fe6138ad565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613964602183612b33565b915061396f8261390a565b604082019050919050565b5f6020820190508181035f83015261399181613958565b905091905056fea26469706673582212208fc973fd7d8be96bd5d7ebaaebdbfddefb1c5e10071a161848bb2ed7f2d2517164736f6c63430008170033

Deployed Bytecode

0x6080604052600436106101fc575f3560e01c806372ac24861161010c578063cea9d26f1161009f578063df8408fe1161006e578063df8408fe14610737578063e5e31b131461075f578063e6b2603b1461079b578063f242ab41146107b1578063f2fde38b146107db57610203565b8063cea9d26f1461066f578063d1d7d7ef14610697578063d2fcc001146106d3578063dd62ed3e146106fb57610203565b8063a9059cbb116100db578063a9059cbb146105a3578063b319c6b7146105df578063bfd70bba14610609578063cc1776d31461064557610203565b806372ac2486146104fd57806388e765ff146105255780638da5cb5b1461054f57806395d89b411461057957610203565b8063313ce5671161018f57806366a88d961161015e57806366a88d961461042f57806366d602ae1461045957806370a0823114610483578063715018a6146104bf578063728d41c9146104d557610203565b8063313ce567146103775780634f7041a5146103a157806352f7c988146103cb5780635342acb4146103f357610203565b80631786a094116101cb5780631786a094146102c157806318160ddd146102e95780631faf723b1461031357806323b872dd1461033b57610203565b80630445b6671461020757806306fdde03146102315780630758d9241461025b578063095ea7b31461028557610203565b3661020357005b5f80fd5b348015610212575f80fd5b5061021b610803565b6040516102289190612b10565b60405180910390f35b34801561023c575f80fd5b50610245610809565b6040516102529190612bb3565b60405180910390f35b348015610266575f80fd5b5061026f610899565b60405161027c9190612c4d565b60405180910390f35b348015610290575f80fd5b506102ab60048036038101906102a69190612ccf565b6108be565b6040516102b89190612d27565b60405180910390f35b3480156102cc575f80fd5b506102e760048036038101906102e29190612d6a565b6108db565b005b3480156102f4575f80fd5b506102fd6109d6565b60405161030a9190612b10565b60405180910390f35b34801561031e575f80fd5b5061033960048036038101906103349190612dce565b6109df565b005b348015610346575f80fd5b50610361600480360381019061035c9190612e0c565b610ab7565b60405161036e9190612d27565b60405180910390f35b348015610382575f80fd5b5061038b610ba9565b6040516103989190612e77565b60405180910390f35b3480156103ac575f80fd5b506103b5610bbe565b6040516103c29190612b10565b60405180910390f35b3480156103d6575f80fd5b506103f160048036038101906103ec9190612dce565b610bc4565b005b3480156103fe575f80fd5b5061041960048036038101906104149190612e90565b610c52565b6040516104269190612d27565b60405180910390f35b34801561043a575f80fd5b50610443610c6f565b6040516104509190612b10565b60405180910390f35b348015610464575f80fd5b5061046d610c75565b60405161047a9190612b10565b60405180910390f35b34801561048e575f80fd5b506104a960048036038101906104a49190612e90565b610c7b565b6040516104b69190612b10565b60405180910390f35b3480156104ca575f80fd5b506104d3610cc1565b005b3480156104e0575f80fd5b506104fb60048036038101906104f69190612ebb565b610d48565b005b348015610508575f80fd5b50610523600480360381019061051e9190612e90565b610df3565b005b348015610530575f80fd5b50610539610eb2565b6040516105469190612b10565b60405180910390f35b34801561055a575f80fd5b50610563610eb8565b6040516105709190612ef5565b60405180910390f35b348015610584575f80fd5b5061058d610edf565b60405161059a9190612bb3565b60405180910390f35b3480156105ae575f80fd5b506105c960048036038101906105c49190612ccf565b610f6f565b6040516105d69190612d27565b60405180910390f35b3480156105ea575f80fd5b506105f3610f8d565b6040516106009190612b10565b60405180910390f35b348015610614575f80fd5b5061062f600480360381019061062a9190612e90565b610f93565b60405161063c9190612b10565b60405180910390f35b348015610650575f80fd5b50610659610fa8565b6040516106669190612b10565b60405180910390f35b34801561067a575f80fd5b5061069560048036038101906106909190612e0c565b610fae565b005b3480156106a2575f80fd5b506106bd60048036038101906106b89190612e90565b611171565b6040516106ca9190612d27565b60405180910390f35b3480156106de575f80fd5b506106f960048036038101906106f49190612f0e565b61118e565b005b348015610706575f80fd5b50610721600480360381019061071c9190612f4c565b611262565b60405161072e9190612b10565b60405180910390f35b348015610742575f80fd5b5061075d60048036038101906107589190612f0e565b6112e4565b005b34801561076a575f80fd5b5061078560048036038101906107809190612e90565b6113b8565b6040516107929190612d27565b60405180910390f35b3480156107a6575f80fd5b506107af6113d5565b005b3480156107bc575f80fd5b506107c5611506565b6040516107d29190612ef5565b60405180910390f35b3480156107e6575f80fd5b5061080160048036038101906107fc9190612e90565b61152b565b005b600d5481565b60606006805461081890612fb7565b80601f016020809104026020016040519081016040528092919081815260200182805461084490612fb7565b801561088f5780601f106108665761010080835404028352916020019161088f565b820191905f5260205f20905b81548152906001019060200180831161087257829003601f168201915b5050505050905090565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f6108d16108ca611621565b8484611628565b6001905092915050565b6108e3611621565b73ffffffffffffffffffffffffffffffffffffffff16610901610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610957576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161094e90613031565b60405180910390fd5b8260145f6101000a81548160ff02191690831515021790555080601460016101000a81548160ff02191690831515021790555081601460026101000a81548160ff02191690831515021790555060085f9054906101000a900460ff16600a6109bf91906131ab565b846109ca91906131f5565b600d8190555050505050565b5f600954905090565b6109e7611621565b73ffffffffffffffffffffffffffffffffffffffff16610a05610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610a5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5290613031565b60405180910390fd5b60085f9054906101000a900460ff16600a610a7691906131ab565b82610a8191906131f5565b600a8190555060085f9054906101000a900460ff16600a610aa291906131ab565b81610aad91906131f5565b600b819055505050565b5f610ac38484846117ef565b50610b9e84610ad0611621565b610b99856040518060400160405280601881526020017f45524332303a204578636565647320616c6c6f77616e63650000000000000000815250600f5f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b50611621565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fe59092919063ffffffff16565b611628565b600190509392505050565b5f60085f9054906101000a900460ff16905090565b60155481565b610bcc611621565b73ffffffffffffffffffffffffffffffffffffffff16610bea610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610c40576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3790613031565b60405180910390fd5b81601581905550806016819055505050565b6011602052805f5260405f205f915054906101000a900460ff1681565b600c5481565b600b5481565b5f600e5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610cc9611621565b73ffffffffffffffffffffffffffffffffffffffff16610ce7610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610d3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3490613031565b60405180910390fd5b610d465f612047565b565b610d50611621565b73ffffffffffffffffffffffffffffffffffffffff16610d6e610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610dc4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dbb90613031565b60405180910390fd5b60085f9054906101000a900460ff16600a610ddf91906131ab565b81610dea91906131f5565b600c8190555050565b610dfb611621565b73ffffffffffffffffffffffffffffffffffffffff16610e19610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614610e6f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6690613031565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060078054610eee90612fb7565b80601f0160208091040260200160405190810160405280929190818152602001828054610f1a90612fb7565b8015610f655780601f10610f3c57610100808354040283529160200191610f65565b820191905f5260205f20905b815481529060010190602001808311610f4857829003601f168201915b5050505050905090565b5f610f82610f7b611621565b84846117ef565b506001905092915050565b60195481565b6013602052805f5260405f205f915090505481565b60165481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461103d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161103490613280565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff16838360405160240161106892919061329e565b6040516020818303038152906040527fa9059cbb000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19166020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff83818316178352505050506040516110f29190613309565b5f604051808303815f865af19150503d805f811461112b576040519150601f19603f3d011682016040523d82523d5f602084013e611130565b606091505b505090508061116b576040517ff27f64e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50505050565b6012602052805f5260405f205f915054906101000a900460ff1681565b611196611621565b73ffffffffffffffffffffffffffffffffffffffff166111b4610eb8565b73ffffffffffffffffffffffffffffffffffffffff161461120a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120190613031565b60405180910390fd5b8060125f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f600f5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b6112ec611621565b73ffffffffffffffffffffffffffffffffffffffff1661130a610eb8565b73ffffffffffffffffffffffffffffffffffffffff1614611360576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135790613031565b60405180910390fd5b8060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b6010602052805f5260405f205f915054906101000a900460ff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611464576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161145b90613280565b60405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff164760405161148990613342565b5f6040518083038185875af1925050503d805f81146114c3576040519150601f19603f3d011682016040523d82523d5f602084013e6114c8565b606091505b5050905080611503576040517ff499da2000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b50565b60185f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611533611621565b73ffffffffffffffffffffffffffffffffffffffff16611551610eb8565b73ffffffffffffffffffffffffffffffffffffffff16146115a7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159e90613031565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611615576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160c906133c6565b60405180910390fd5b61161e81612047565b50565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611698575f6040517fe602df0500000000000000000000000000000000000000000000000000000000815260040161168f9190612ef5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611708575f6040517f94280d620000000000000000000000000000000000000000000000000000000081526004016116ff9190612ef5565b60405180910390fd5b80600f5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516117e29190612b10565b60405180910390a3505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611860575f6040517f96c6fd1e0000000000000000000000000000000000000000000000000000000081526004016118579190612ef5565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036118d0575f6040517fec442f050000000000000000000000000000000000000000000000000000000081526004016118c79190612ef5565b60405180910390fd5b5f8203611909576040517f67c8957700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b601a5f9054906101000a900460ff161561192f57611928848484612108565b9050611fde565b60115f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161580156119cd575060115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ca8575f60105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611a7057600b54831115611a67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a5e9061342e565b60405180910390fd5b60019050611b12565b60105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611b0c57600a54831115611b04576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611afb90613496565b60405180910390fd5b5f9050611b11565b600190505b5b60125f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16611bb957600c54611b6c85610c7b565b84611b7791906134b4565b1115611bb8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baf90613531565b60405180910390fd5b5b808015611bd25750601460029054906101000a900460ff165b15611ca6574260135f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611c56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4d906135e5565b60405180910390fd5b60195442611c6491906134b4565b60135f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b505b5f611cb230610c7b565b90505f600d548210159050808015611cd65750601a5f9054906101000a900460ff16155b8015611d29575060105f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611d40575060145f9054906101000a900460ff165b8015611d93575060115f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611de6575060115f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611df557611df4826122d2565b5b611e7c846040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600e5f8a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fe59092919063ffffffff16565b600e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505f611ec8878761234e565b611edc57611ed78787876124aa565b611ede565b845b9050611f3081600e5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126c190919063ffffffff16565b600e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508573ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611fce9190612b10565b60405180910390a3600193505050505b9392505050565b5f83831115829061202c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120239190612bb3565b60405180910390fd5b505f838561203a9190613603565b9050809150509392505050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f612190826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600e5f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611fe59092919063ffffffff16565b600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061222182600e5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126c190919063ffffffff16565b600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516122bf9190612b10565b60405180910390a3600190509392505050565b6001601a5f6101000a81548160ff021916908315150217905550601460019054906101000a900460ff161561230757600d5490505b6123328160015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1661271e565b5f601a5f6101000a81548160ff02191690831515021790555050565b5f60115f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16806123ea575060115f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156123f857600190506124a4565b60105f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680612493575060105f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156124a0575f90506124a4565b5f90505b92915050565b5f8060105f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff161561252a5761252360646125156015548661298e90919063ffffffff16565b612a0590919063ffffffff16565b90506125a5565b60105f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16156125a4576125a160646125936016548661298e90919063ffffffff16565b612a0590919063ffffffff16565b90505b5b5f8111156126a4576125fd81600e5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546126c190919063ffffffff16565b600e5f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161269b9190612b10565b60405180910390a35b6126b78184612a4e90919063ffffffff16565b9150509392505050565b5f8082846126cf91906134b4565b905083811015612714576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161270b90613680565b60405180910390fd5b8091505092915050565b5f600267ffffffffffffffff81111561273a5761273961369e565b5b6040519080825280602002602001820160405280156127685781602001602082028036833780820191505090505b50905030815f8151811061277f5761277e6136cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612823573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612847919061370c565b8160018151811061285b5761285a6136cb565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506128c13060175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685611628565b60175f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947845f8486426040518663ffffffff1660e01b8152600401612923959493929190613827565b5f604051808303815f87803b15801561293a575f80fd5b505af115801561294c573d5f803e3d5ffd5b505050507f32cde87eb454f3a0b875ab23547023107cfad454363ec88ba5695e2c24aa52a7838260405161298192919061387f565b60405180910390a1505050565b5f80830361299e575f90506129ff565b5f82846129ab91906131f5565b90508284826129ba91906138da565b146129fa576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129f19061397a565b60405180910390fd5b809150505b92915050565b5f612a4683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612a97565b905092915050565b5f612a8f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611fe5565b905092915050565b5f8083118290612add576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad49190612bb3565b60405180910390fd5b505f8385612aeb91906138da565b9050809150509392505050565b5f819050919050565b612b0a81612af8565b82525050565b5f602082019050612b235f830184612b01565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015612b60578082015181840152602081019050612b45565b5f8484015250505050565b5f601f19601f8301169050919050565b5f612b8582612b29565b612b8f8185612b33565b9350612b9f818560208601612b43565b612ba881612b6b565b840191505092915050565b5f6020820190508181035f830152612bcb8184612b7b565b905092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f612c15612c10612c0b84612bd3565b612bf2565b612bd3565b9050919050565b5f612c2682612bfb565b9050919050565b5f612c3782612c1c565b9050919050565b612c4781612c2d565b82525050565b5f602082019050612c605f830184612c3e565b92915050565b5f80fd5b5f612c7482612bd3565b9050919050565b612c8481612c6a565b8114612c8e575f80fd5b50565b5f81359050612c9f81612c7b565b92915050565b612cae81612af8565b8114612cb8575f80fd5b50565b5f81359050612cc981612ca5565b92915050565b5f8060408385031215612ce557612ce4612c66565b5b5f612cf285828601612c91565b9250506020612d0385828601612cbb565b9150509250929050565b5f8115159050919050565b612d2181612d0d565b82525050565b5f602082019050612d3a5f830184612d18565b92915050565b612d4981612d0d565b8114612d53575f80fd5b50565b5f81359050612d6481612d40565b92915050565b5f805f8060808587031215612d8257612d81612c66565b5b5f612d8f87828801612cbb565b9450506020612da087828801612d56565b9350506040612db187828801612d56565b9250506060612dc287828801612d56565b91505092959194509250565b5f8060408385031215612de457612de3612c66565b5b5f612df185828601612cbb565b9250506020612e0285828601612cbb565b9150509250929050565b5f805f60608486031215612e2357612e22612c66565b5b5f612e3086828701612c91565b9350506020612e4186828701612c91565b9250506040612e5286828701612cbb565b9150509250925092565b5f60ff82169050919050565b612e7181612e5c565b82525050565b5f602082019050612e8a5f830184612e68565b92915050565b5f60208284031215612ea557612ea4612c66565b5b5f612eb284828501612c91565b91505092915050565b5f60208284031215612ed057612ecf612c66565b5b5f612edd84828501612cbb565b91505092915050565b612eef81612c6a565b82525050565b5f602082019050612f085f830184612ee6565b92915050565b5f8060408385031215612f2457612f23612c66565b5b5f612f3185828601612c91565b9250506020612f4285828601612d56565b9150509250929050565b5f8060408385031215612f6257612f61612c66565b5b5f612f6f85828601612c91565b9250506020612f8085828601612c91565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680612fce57607f821691505b602082108103612fe157612fe0612f8a565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f61301b602083612b33565b915061302682612fe7565b602082019050919050565b5f6020820190508181035f8301526130488161300f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156130d1578086048111156130ad576130ac61304f565b5b60018516156130bc5780820291505b80810290506130ca8561307c565b9450613091565b94509492505050565b5f826130e957600190506131a4565b816130f6575f90506131a4565b816001811461310c576002811461311657613145565b60019150506131a4565b60ff8411156131285761312761304f565b5b8360020a91508482111561313f5761313e61304f565b5b506131a4565b5060208310610133831016604e8410600b841016171561317a5782820a9050838111156131755761317461304f565b5b6131a4565b6131878484846001613088565b9250905081840481111561319e5761319d61304f565b5b81810290505b9392505050565b5f6131b582612af8565b91506131c083612e5c565b92506131ed7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846130da565b905092915050565b5f6131ff82612af8565b915061320a83612af8565b925082820261321881612af8565b9150828204841483151761322f5761322e61304f565b5b5092915050565b7f556e617574686f72697a656421000000000000000000000000000000000000005f82015250565b5f61326a600d83612b33565b915061327582613236565b602082019050919050565b5f6020820190508181035f8301526132978161325e565b9050919050565b5f6040820190506132b15f830185612ee6565b6132be6020830184612b01565b9392505050565b5f81519050919050565b5f81905092915050565b5f6132e3826132c5565b6132ed81856132cf565b93506132fd818560208601612b43565b80840191505092915050565b5f61331482846132d9565b915081905092915050565b50565b5f61332d5f836132cf565b91506133388261331f565b5f82019050919050565b5f61334c82613322565b9150819050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f6133b0602683612b33565b91506133bb82613356565b604082019050919050565b5f6020820190508181035f8301526133dd816133a4565b9050919050565b7f6d617853656c6c416d6f756e74204578636565646564210000000000000000005f82015250565b5f613418601783612b33565b9150613423826133e4565b602082019050919050565b5f6020820190508181035f8301526134458161340c565b9050919050565b7f6d6178427579416d6f756e7420457863656564656421000000000000000000005f82015250565b5f613480601683612b33565b915061348b8261344c565b602082019050919050565b5f6020820190508181035f8301526134ad81613474565b9050919050565b5f6134be82612af8565b91506134c983612af8565b92508282019050808211156134e1576134e061304f565b5b92915050565b7f4d61782057616c6c6574204578636565646564210000000000000000000000005f82015250565b5f61351b601483612b33565b9150613526826134e7565b602082019050919050565b5f6020820190508181035f8301526135488161350f565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f6135cf604983612b33565b91506135da8261354f565b606082019050919050565b5f6020820190508181035f8301526135fc816135c3565b9050919050565b5f61360d82612af8565b915061361883612af8565b92508282039050818111156136305761362f61304f565b5b92915050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f61366a601b83612b33565b915061367582613636565b602082019050919050565b5f6020820190508181035f8301526136978161365e565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061370681612c7b565b92915050565b5f6020828403121561372157613720612c66565b5b5f61372e848285016136f8565b91505092915050565b5f819050919050565b5f61375a61375561375084613737565b612bf2565b612af8565b9050919050565b61376a81613740565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6137a281612c6a565b82525050565b5f6137b38383613799565b60208301905092915050565b5f602082019050919050565b5f6137d582613770565b6137df818561377a565b93506137ea8361378a565b805f5b8381101561381a57815161380188826137a8565b975061380c836137bf565b9250506001810190506137ed565b5085935050505092915050565b5f60a08201905061383a5f830188612b01565b6138476020830187613761565b818103604083015261385981866137cb565b90506138686060830185612ee6565b6138756080830184612b01565b9695505050505050565b5f6040820190506138925f830185612b01565b81810360208301526138a481846137cb565b90509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6138e482612af8565b91506138ef83612af8565b9250826138ff576138fe6138ad565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613964602183612b33565b915061396f8261390a565b604082019050919050565b5f6020820190508181035f83015261399181613958565b905091905056fea26469706673582212208fc973fd7d8be96bd5d7ebaaebdbfddefb1c5e10071a161848bb2ed7f2d2517164736f6c63430008170033

Deployed Bytecode Sourcemap

4435:11332:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5227:59;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7204:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5828:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7854:154;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15457:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7487:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14566:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8611:290;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7394:85;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5771:18;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15053:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5491:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5120:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5022;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7588:114;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1925:94;;;;;;;;;;;;;:::i;:::-;;14746:126;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15331:118;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4927:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1616:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7297:89;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8443:160;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5897:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5612:55;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5800:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14228:330;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5548:57;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14880:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7710:136;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15197:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5445:39;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13989:231;;;;;;;;;;;;;:::i;:::-;;5866:22;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2027:229;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5227:59;;;;:::o;7204:85::-;7243:13;7276:5;7269:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7204:85;:::o;5828:31::-;;;;;;;;;;;;;:::o;7854:154::-;7922:4;7939:39;7948:12;:10;:12::i;:::-;7962:7;7971:6;7939:8;:39::i;:::-;7996:4;7989:11;;7854:154;;;;:::o;15457:305::-;1848:12;:10;:12::i;:::-;1837:23;;:7;:5;:7::i;:::-;:23;;;1829:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15619:8:::1;15605:11;;:22;;;;;;;;;;;;;;;;;;15652:8;15638:11;;:22;;;;;;;;;;;;;;;;;;15687:12;15671:13;;:28;;;;;;;;;;;;;;;;;;15745:9;;;;;;;;;;;15739:2;:15;;;;:::i;:::-;15726:10;:28;;;;:::i;:::-;15710:13;:44;;;;15457:305:::0;;;;:::o;7487:93::-;7533:7;7560:12;;7553:19;;7487:93;:::o;14566:172::-;1848:12;:10;:12::i;:::-;1837:23;;:7;:5;:7::i;:::-;:23;;;1829:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14671:9:::1;;;;;;;;;;;14667:2;:13;;;;:::i;:::-;14659:5;:21;;;;:::i;:::-;14644:12;:36;;;;14721:9;;;;;;;;;;;14717:2;:13;;;;:::i;:::-;14708:6;:22;;;;:::i;:::-;14691:13;:39;;;;14566:172:::0;;:::o;8611:290::-;8702:4;8719:36;8729:6;8737:9;8748:6;8719:9;:36::i;:::-;;8766:105;8775:6;8783:12;:10;:12::i;:::-;8797:73;8835:6;8797:73;;;;;;;;;;;;;;;;;:11;:19;8809:6;8797:19;;;;;;;;;;;;;;;:33;8817:12;:10;:12::i;:::-;8797:33;;;;;;;;;;;;;;;;:37;;:73;;;;;:::i;:::-;8766:8;:105::i;:::-;8889:4;8882:11;;8611:290;;;;;:::o;7394:85::-;7437:5;7462:9;;;;;;;;;;;7455:16;;7394:85;:::o;5771:18::-;;;;:::o;15053:136::-;1848:12;:10;:12::i;:::-;1837:23;;:7;:5;:7::i;:::-;:23;;;1829:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15143:8:::1;15134:6;:17;;;;15172:9;15162:7;:19;;;;15053:136:::0;;:::o;5491:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;5120:60::-;;;;:::o;5022:::-;;;;:::o;7588:114::-;7645:7;7671:9;:18;7681:7;7671:18;;;;;;;;;;;;;;;;7664:25;;7588:114;;;:::o;1925:94::-;1848:12;:10;:12::i;:::-;1837:23;;:7;:5;:7::i;:::-;:23;;;1829:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;1990:21:::1;2008:1;1990:9;:21::i;:::-;1925:94::o:0;14746:126::-;1848:12;:10;:12::i;:::-;1837:23;;:7;:5;:7::i;:::-;:23;;;1829:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14855:9:::1;;;;;;;;;;;14851:2;:13;;;;:::i;:::-;14839:9;:25;;;;:::i;:::-;14822:14;:42;;;;14746:126:::0;:::o;15331:118::-;1848:12;:10;:12::i;:::-;1837:23;;:7;:5;:7::i;:::-;:23;;;1829:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15431:10:::1;15411:17;;:30;;;;;;;;;;;;;;;;;;15331:118:::0;:::o;4927:58::-;;;;:::o;1616:87::-;1662:7;1689:6;;;;;;;;;;;1682:13;;1616:87;:::o;7297:89::-;7338:13;7371:7;7364:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7297:89;:::o;8443:160::-;8514:4;8531:42;8541:12;:10;:12::i;:::-;8555:9;8566:6;8531:9;:42::i;:::-;;8591:4;8584:11;;8443:160;;;;:::o;5897:41::-;;;;:::o;5612:55::-;;;;;;;;;;;;;;;;;:::o;5800:19::-;;;;:::o;14228:330::-;14339:17;;;;;;;;;;;14325:31;;:10;:31;;;14317:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;14385:12;14411:6;14403:20;;14478:9;14489:7;14424:73;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14403:95;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14384:114;;;14513:7;14509:41;;14529:21;;;;;;;;;;;;;;14509:41;14306:252;14228:330;;;:::o;5548:57::-;;;;;;;;;;;;;;;;;;;;;;:::o;14880:165::-;1848:12;:10;:12::i;:::-;1837:23;;:7;:5;:7::i;:::-;:23;;;1829:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15029:8:::1;14993:24;:33;15018:7;14993:33;;;;;;;;;;;;;;;;:44;;;;;;;;;;;;;;;;;;14880:165:::0;;:::o;7710:136::-;7784:7;7811:11;:18;7823:5;7811:18;;;;;;;;;;;;;;;:27;7830:7;7811:27;;;;;;;;;;;;;;;;7804:34;;7710:136;;;;:::o;15197:122::-;1848:12;:10;:12::i;:::-;1837:23;;:7;:5;:7::i;:::-;:23;;;1829:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15304:7:::1;15278:17;:23;15296:4;15278:23;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;15197:122:::0;;:::o;5445:39::-;;;;;;;;;;;;;;;;;;;;;;:::o;13989:231::-;14055:17;;;;;;;;;;;14041:31;;:10;:31;;;14033:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;14101:7;14121:10;14113:24;;14145:21;14113:58;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14100:71;;;14186:2;14182:30;;14197:15;;;;;;;;;;;;;;14182:30;14021:199;13989:231::o;5866:22::-;;;;;;;;;;;;;:::o;2027:229::-;1848:12;:10;:12::i;:::-;1837:23;;:7;:5;:7::i;:::-;:23;;;1829:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2150:1:::1;2130:22;;:8;:22;;::::0;2108:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2229:19;2239:8;2229:9;:19::i;:::-;2027:229:::0;:::o;181:98::-;234:7;261:10;254:17;;181:98;:::o;8016:382::-;8122:1;8105:19;;:5;:19;;;8101:91;;8177:1;8148:32;;;;;;;;;;;:::i;:::-;;;;;;;;8101:91;8225:1;8206:21;;:7;:21;;;8202:92;;8279:1;8251:31;;;;;;;;;;;:::i;:::-;;;;;;;;8202:92;8336:6;8306:11;:18;8318:5;8306:18;;;;;;;;;;;;;;;:27;8325:7;8306:27;;;;;;;;;;;;;;;:36;;;;8374:7;8358:32;;8367:5;8358:32;;;8383:6;8358:32;;;;;;:::i;:::-;;;;;;;;8016:382;;;:::o;8909:2825::-;8996:4;9035:1;9017:20;;:6;:20;;;9013:90;;9088:1;9061:30;;;;;;;;;;;:::i;:::-;;;;;;;;9013:90;9138:1;9117:23;;:9;:23;;;9113:95;;9193:1;9164:32;;;;;;;;;;;:::i;:::-;;;;;;;;9113:95;9231:1;9221:6;:11;9218:69;;9256:19;;;;;;;;;;;;;;9218:69;9307:6;;;;;;;;;;;9303:2422;;;9337:41;9352:6;9360:9;9371:6;9337:14;:41::i;:::-;9330:48;;;;9303:2422;9427:17;:25;9445:6;9427:25;;;;;;;;;;;;;;;;;;;;;;;;;9426:26;:59;;;;;9457:17;:28;9475:9;9457:28;;;;;;;;;;;;;;;;;;;;;;;;;9456:29;9426:59;9422:1407;;;9524:15;9564:6;:17;9571:9;9564:17;;;;;;;;;;;;;;;;;;;;;;;;;9560:596;;;9659:13;;9649:6;:23;;9615:132;;;;;;;;;;;;:::i;:::-;;;;;;;;;9783:4;9770:17;;9560:596;;;9835:6;:14;9842:6;9835:14;;;;;;;;;;;;;;;;;;;;;;;;;9831:325;;;9926:12;;9916:6;:22;;9882:130;;;;;;;;;;;;:::i;:::-;;;;;;;;;10048:5;10035:18;;9831:325;;;10132:4;10119:17;;9831:325;9560:596;10181:24;:35;10206:9;10181:35;;;;;;;;;;;;;;;;;;;;;;;;;10176:238;;10308:14;;10284:20;10294:9;10284;:20::i;:::-;10275:6;:29;;;;:::i;:::-;:47;;10241:153;;;;;;;;;;;;:::i;:::-;;;;;;;;;10176:238;10437:10;:27;;;;;10451:13;;;;;;;;;;;10437:27;10434:378;;;10559:15;10525:20;:31;10546:9;10525:31;;;;;;;;;;;;;;;;:49;10489:214;;;;;;;;;;;;:::i;:::-;;;;;;;;;10780:12;;10762:15;:30;;;;:::i;:::-;10728:20;:31;10749:9;10728:31;;;;;;;;;;;;;;;:64;;;;10434:378;9487:1342;9422:1407;10845:28;10876:24;10894:4;10876:9;:24::i;:::-;10845:55;;10915:28;10970:13;;10946:20;:37;;10915:68;;11022:23;:52;;;;;11068:6;;;;;;;;;;;11067:7;11022:52;:89;;;;;11097:6;:14;11104:6;11097:14;;;;;;;;;;;;;;;;;;;;;;;;;11096:15;11022:89;:122;;;;;11133:11;;;;;;;;;;;11022:122;:169;;;;;11166:17;:25;11184:6;11166:25;;;;;;;;;;;;;;;;;;;;;;;;;11165:26;11022:169;:219;;;;;11213:17;:28;11231:9;11213:28;;;;;;;;;;;;;;;;;;;;;;;;;11212:29;11022:219;11000:326;;;11280:30;11289:20;11280:8;:30::i;:::-;11000:326;11374:53;11396:6;11374:53;;;;;;;;;;;;;;;;;:9;:17;11384:6;11374:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11354:9;:17;11364:6;11354:17;;;;;;;;;;;;;;;:73;;;;11444:19;11466:34;11483:6;11490:9;11466:16;:34::i;:::-;:80;;11512:34;11520:6;11528:9;11539:6;11512:7;:34::i;:::-;11466:80;;;11503:6;11466:80;11444:102;;11586:37;11611:11;11586:9;:20;11596:9;11586:20;;;;;;;;;;;;;;;;:24;;:37;;;;:::i;:::-;11563:9;:20;11573:9;11563:20;;;;;;;;;;;;;;;:60;;;;11662:9;11645:40;;11654:6;11645:40;;;11673:11;11645:40;;;;;;:::i;:::-;;;;;;;;11707:4;11700:11;;;;;8909:2825;;;;;;:::o;2803:192::-;2889:7;2922:1;2917;:6;;2925:12;2909:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2949:9;2965:1;2961;:5;;;;:::i;:::-;2949:17;;2986:1;2979:8;;;2803:192;;;;;:::o;2264:173::-;2320:16;2339:6;;;;;;;;;;;2320:25;;2365:8;2356:6;;:17;;;;;;;;;;;;;;;;;;2420:8;2389:40;;2410:8;2389:40;;;;;;;;;;;;2309:128;2264:173;:::o;11742:330::-;11835:4;11872:53;11894:6;11872:53;;;;;;;;;;;;;;;;;:9;:17;11882:6;11872:17;;;;;;;;;;;;;;;;:21;;:53;;;;;:::i;:::-;11852:9;:17;11862:6;11852:17;;;;;;;;;;;;;;;:73;;;;11959:32;11984:6;11959:9;:20;11969:9;11959:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;11936:9;:20;11946:9;11936:20;;;;;;;;;;;;;;;:55;;;;12024:9;12007:35;;12016:6;12007:35;;;12035:6;12007:35;;;;;;:::i;:::-;;;;;;;;12060:4;12053:11;;11742:330;;;;;:::o;13113:186::-;6008:4;5999:6;;:13;;;;;;;;;;;;;;;;;;13185:11:::1;;;;;;;;;;;13182:47;;;13216:13;;13198:31;;13182:47;13240:51;13257:15;13273:17;;;;;;;;;;;13240:16;:51::i;:::-;6044:5:::0;6035:6;;:14;;;;;;;;;;;;;;;;;;13113:186;:::o;12084:357::-;12168:4;12188:17;:25;12206:6;12188:25;;;;;;;;;;;;;;;;;;;;;;;;;:57;;;;12217:17;:28;12235:9;12217:28;;;;;;;;;;;;;;;;;;;;;;;;;12188:57;12185:249;;;12269:4;12262:11;;;;12185:249;12304:6;:14;12311:6;12304:14;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;;12322:6;:17;12329:9;12322:17;;;;;;;;;;;;;;;;;;;;;;;;;12304:35;12300:134;;;12363:5;12356:12;;;;12300:134;12417:5;12410:12;;12084:357;;;;;:::o;12449:656::-;12535:7;12565:14;12622:6;:14;12629:6;12622:14;;;;;;;;;;;;;;;;;;;;;;;;;12619:212;;;12670:27;12693:3;12670:18;12681:6;;12670;:10;;:18;;;;:::i;:::-;:22;;:27;;;;:::i;:::-;12658:39;;12619:212;;;12736:6;:17;12743:9;12736:17;;;;;;;;;;;;;;;;;;;;;;;;;12733:98;;;12787:28;12811:3;12787:19;12798:7;;12787:6;:10;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;12775:40;;12733:98;12619:212;12862:1;12850:9;:13;12847:185;;;12911:39;12940:9;12911;:24;12929:4;12911:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;12884:9;:24;12902:4;12884:24;;;;;;;;;;;;;;;:66;;;;12999:4;12974:42;;12983:6;12974:42;;;13006:9;12974:42;;;;;;:::i;:::-;;;;;;;;12847:185;13055:21;13066:9;13055:6;:10;;:21;;;;:::i;:::-;13048:28;;;12449:656;;;;;:::o;2470:181::-;2528:7;2548:9;2564:1;2560;:5;;;;:::i;:::-;2548:17;;2589:1;2584;:6;;2576:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2642:1;2635:8;;;2470:181;;;;:::o;13307:674::-;13453:21;13491:1;13477:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13453:40;;13522:4;13504;13509:1;13504:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13548:9;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13538:4;13543:1;13538:7;;;;;;;;:::i;:::-;;;;;;;:26;;;;;;;;;;;13577:56;13594:4;13609:9;;;;;;;;;;;13621:11;13577:8;:56::i;:::-;13672:9;;;;;;;;;;;:60;;;13747:11;13773:1;13817:4;13844:10;13886:15;13672:240;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13938:35;13955:11;13968:4;13938:35;;;;;;;:::i;:::-;;;;;;;;13382:599;13307:674;;:::o;3003:250::-;3061:7;3090:1;3085;:6;3081:47;;3115:1;3108:8;;;;3081:47;3140:9;3156:1;3152;:5;;;;:::i;:::-;3140:17;;3185:1;3180;3176;:5;;;;:::i;:::-;:10;3168:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;3244:1;3237:8;;;3003:250;;;;;:::o;3261:132::-;3319:7;3346:39;3350:1;3353;3346:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3339:46;;3261:132;;;;:::o;2659:136::-;2717:7;2744:43;2748:1;2751;2744:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2737:50;;2659:136;;;;:::o;3401:278::-;3487:7;3519:1;3515;:5;3522:12;3507:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3546:9;3562:1;3558;:5;;;;:::i;:::-;3546:17;;3670:1;3663:8;;;3401:278;;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1784:126::-;1821:7;1861:42;1854:5;1850:54;1839:65;;1784:126;;;:::o;1916:60::-;1944:3;1965:5;1958:12;;1916:60;;;:::o;1982:142::-;2032:9;2065:53;2083:34;2092:24;2110:5;2092:24;:::i;:::-;2083:34;:::i;:::-;2065:53;:::i;:::-;2052:66;;1982:142;;;:::o;2130:126::-;2180:9;2213:37;2244:5;2213:37;:::i;:::-;2200:50;;2130:126;;;:::o;2262:148::-;2334:9;2367:37;2398:5;2367:37;:::i;:::-;2354:50;;2262:148;;;:::o;2416:175::-;2525:59;2578:5;2525:59;:::i;:::-;2520:3;2513:72;2416:175;;:::o;2597:266::-;2712:4;2750:2;2739:9;2735:18;2727:26;;2763:93;2853:1;2842:9;2838:17;2829:6;2763:93;:::i;:::-;2597:266;;;;:::o;2950:117::-;3059:1;3056;3049:12;3196:96;3233:7;3262:24;3280:5;3262:24;:::i;:::-;3251:35;;3196:96;;;:::o;3298:122::-;3371:24;3389:5;3371:24;:::i;:::-;3364:5;3361:35;3351:63;;3410:1;3407;3400:12;3351:63;3298:122;:::o;3426:139::-;3472:5;3510:6;3497:20;3488:29;;3526:33;3553:5;3526:33;:::i;:::-;3426:139;;;;:::o;3571:122::-;3644:24;3662:5;3644:24;:::i;:::-;3637:5;3634:35;3624:63;;3683:1;3680;3673:12;3624:63;3571:122;:::o;3699:139::-;3745:5;3783:6;3770:20;3761:29;;3799:33;3826:5;3799:33;:::i;:::-;3699:139;;;;:::o;3844:474::-;3912:6;3920;3969:2;3957:9;3948:7;3944:23;3940:32;3937:119;;;3975:79;;:::i;:::-;3937:119;4095:1;4120:53;4165:7;4156:6;4145:9;4141:22;4120:53;:::i;:::-;4110:63;;4066:117;4222:2;4248:53;4293:7;4284:6;4273:9;4269:22;4248:53;:::i;:::-;4238:63;;4193:118;3844:474;;;;;:::o;4324:90::-;4358:7;4401:5;4394:13;4387:21;4376:32;;4324:90;;;:::o;4420:109::-;4501:21;4516:5;4501:21;:::i;:::-;4496:3;4489:34;4420:109;;:::o;4535:210::-;4622:4;4660:2;4649:9;4645:18;4637:26;;4673:65;4735:1;4724:9;4720:17;4711:6;4673:65;:::i;:::-;4535:210;;;;:::o;4751:116::-;4821:21;4836:5;4821:21;:::i;:::-;4814:5;4811:32;4801:60;;4857:1;4854;4847:12;4801:60;4751:116;:::o;4873:133::-;4916:5;4954:6;4941:20;4932:29;;4970:30;4994:5;4970:30;:::i;:::-;4873:133;;;;:::o;5012:747::-;5089:6;5097;5105;5113;5162:3;5150:9;5141:7;5137:23;5133:33;5130:120;;;5169:79;;:::i;:::-;5130:120;5289:1;5314:53;5359:7;5350:6;5339:9;5335:22;5314:53;:::i;:::-;5304:63;;5260:117;5416:2;5442:50;5484:7;5475:6;5464:9;5460:22;5442:50;:::i;:::-;5432:60;;5387:115;5541:2;5567:50;5609:7;5600:6;5589:9;5585:22;5567:50;:::i;:::-;5557:60;;5512:115;5666:2;5692:50;5734:7;5725:6;5714:9;5710:22;5692:50;:::i;:::-;5682:60;;5637:115;5012:747;;;;;;;:::o;5765:474::-;5833:6;5841;5890:2;5878:9;5869:7;5865:23;5861:32;5858:119;;;5896:79;;:::i;:::-;5858:119;6016:1;6041:53;6086:7;6077:6;6066:9;6062:22;6041:53;:::i;:::-;6031:63;;5987:117;6143:2;6169:53;6214:7;6205:6;6194:9;6190:22;6169:53;:::i;:::-;6159:63;;6114:118;5765:474;;;;;:::o;6245:619::-;6322:6;6330;6338;6387:2;6375:9;6366:7;6362:23;6358:32;6355:119;;;6393:79;;:::i;:::-;6355:119;6513:1;6538:53;6583:7;6574:6;6563:9;6559:22;6538:53;:::i;:::-;6528:63;;6484:117;6640:2;6666:53;6711:7;6702:6;6691:9;6687:22;6666:53;:::i;:::-;6656:63;;6611:118;6768:2;6794:53;6839:7;6830:6;6819:9;6815:22;6794:53;:::i;:::-;6784:63;;6739:118;6245:619;;;;;:::o;6870:86::-;6905:7;6945:4;6938:5;6934:16;6923:27;;6870:86;;;:::o;6962:112::-;7045:22;7061:5;7045:22;:::i;:::-;7040:3;7033:35;6962:112;;:::o;7080:214::-;7169:4;7207:2;7196:9;7192:18;7184:26;;7220:67;7284:1;7273:9;7269:17;7260:6;7220:67;:::i;:::-;7080:214;;;;:::o;7300:329::-;7359:6;7408:2;7396:9;7387:7;7383:23;7379:32;7376:119;;;7414:79;;:::i;:::-;7376:119;7534:1;7559:53;7604:7;7595:6;7584:9;7580:22;7559:53;:::i;:::-;7549:63;;7505:117;7300:329;;;;:::o;7635:::-;7694:6;7743:2;7731:9;7722:7;7718:23;7714:32;7711:119;;;7749:79;;:::i;:::-;7711:119;7869:1;7894:53;7939:7;7930:6;7919:9;7915:22;7894:53;:::i;:::-;7884:63;;7840:117;7635:329;;;;:::o;7970:118::-;8057:24;8075:5;8057:24;:::i;:::-;8052:3;8045:37;7970:118;;:::o;8094:222::-;8187:4;8225:2;8214:9;8210:18;8202:26;;8238:71;8306:1;8295:9;8291:17;8282:6;8238:71;:::i;:::-;8094:222;;;;:::o;8322:468::-;8387:6;8395;8444:2;8432:9;8423:7;8419:23;8415:32;8412:119;;;8450:79;;:::i;:::-;8412:119;8570:1;8595:53;8640:7;8631:6;8620:9;8616:22;8595:53;:::i;:::-;8585:63;;8541:117;8697:2;8723:50;8765:7;8756:6;8745:9;8741:22;8723:50;:::i;:::-;8713:60;;8668:115;8322:468;;;;;:::o;8796:474::-;8864:6;8872;8921:2;8909:9;8900:7;8896:23;8892:32;8889:119;;;8927:79;;:::i;:::-;8889:119;9047:1;9072:53;9117:7;9108:6;9097:9;9093:22;9072:53;:::i;:::-;9062:63;;9018:117;9174:2;9200:53;9245:7;9236:6;9225:9;9221:22;9200:53;:::i;:::-;9190:63;;9145:118;8796:474;;;;;:::o;9276:180::-;9324:77;9321:1;9314:88;9421:4;9418:1;9411:15;9445:4;9442:1;9435:15;9462:320;9506:6;9543:1;9537:4;9533:12;9523:22;;9590:1;9584:4;9580:12;9611:18;9601:81;;9667:4;9659:6;9655:17;9645:27;;9601:81;9729:2;9721:6;9718:14;9698:18;9695:38;9692:84;;9748:18;;:::i;:::-;9692:84;9513:269;9462:320;;;:::o;9788:182::-;9928:34;9924:1;9916:6;9912:14;9905:58;9788:182;:::o;9976:366::-;10118:3;10139:67;10203:2;10198:3;10139:67;:::i;:::-;10132:74;;10215:93;10304:3;10215:93;:::i;:::-;10333:2;10328:3;10324:12;10317:19;;9976:366;;;:::o;10348:419::-;10514:4;10552:2;10541:9;10537:18;10529:26;;10601:9;10595:4;10591:20;10587:1;10576:9;10572:17;10565:47;10629:131;10755:4;10629:131;:::i;:::-;10621:139;;10348:419;;;:::o;10773:180::-;10821:77;10818:1;10811:88;10918:4;10915:1;10908:15;10942:4;10939:1;10932:15;10959:102;11001:8;11048:5;11045:1;11041:13;11020:34;;10959:102;;;:::o;11067:848::-;11128:5;11135:4;11159:6;11150:15;;11183:5;11174:14;;11197:712;11218:1;11208:8;11205:15;11197:712;;;11313:4;11308:3;11304:14;11298:4;11295:24;11292:50;;;11322:18;;:::i;:::-;11292:50;11372:1;11362:8;11358:16;11355:451;;;11787:4;11780:5;11776:16;11767:25;;11355:451;11837:4;11831;11827:15;11819:23;;11867:32;11890:8;11867:32;:::i;:::-;11855:44;;11197:712;;;11067:848;;;;;;;:::o;11921:1073::-;11975:5;12166:8;12156:40;;12187:1;12178:10;;12189:5;;12156:40;12215:4;12205:36;;12232:1;12223:10;;12234:5;;12205:36;12301:4;12349:1;12344:27;;;;12385:1;12380:191;;;;12294:277;;12344:27;12362:1;12353:10;;12364:5;;;12380:191;12425:3;12415:8;12412:17;12409:43;;;12432:18;;:::i;:::-;12409:43;12481:8;12478:1;12474:16;12465:25;;12516:3;12509:5;12506:14;12503:40;;;12523:18;;:::i;:::-;12503:40;12556:5;;;12294:277;;12680:2;12670:8;12667:16;12661:3;12655:4;12652:13;12648:36;12630:2;12620:8;12617:16;12612:2;12606:4;12603:12;12599:35;12583:111;12580:246;;;12736:8;12730:4;12726:19;12717:28;;12771:3;12764:5;12761:14;12758:40;;;12778:18;;:::i;:::-;12758:40;12811:5;;12580:246;12851:42;12889:3;12879:8;12873:4;12870:1;12851:42;:::i;:::-;12836:57;;;;12925:4;12920:3;12916:14;12909:5;12906:25;12903:51;;;12934:18;;:::i;:::-;12903:51;12983:4;12976:5;12972:16;12963:25;;11921:1073;;;;;;:::o;13000:281::-;13058:5;13082:23;13100:4;13082:23;:::i;:::-;13074:31;;13126:25;13142:8;13126:25;:::i;:::-;13114:37;;13170:104;13207:66;13197:8;13191:4;13170:104;:::i;:::-;13161:113;;13000:281;;;;:::o;13287:410::-;13327:7;13350:20;13368:1;13350:20;:::i;:::-;13345:25;;13384:20;13402:1;13384:20;:::i;:::-;13379:25;;13439:1;13436;13432:9;13461:30;13479:11;13461:30;:::i;:::-;13450:41;;13640:1;13631:7;13627:15;13624:1;13621:22;13601:1;13594:9;13574:83;13551:139;;13670:18;;:::i;:::-;13551:139;13335:362;13287:410;;;;:::o;13703:163::-;13843:15;13839:1;13831:6;13827:14;13820:39;13703:163;:::o;13872:366::-;14014:3;14035:67;14099:2;14094:3;14035:67;:::i;:::-;14028:74;;14111:93;14200:3;14111:93;:::i;:::-;14229:2;14224:3;14220:12;14213:19;;13872:366;;;:::o;14244:419::-;14410:4;14448:2;14437:9;14433:18;14425:26;;14497:9;14491:4;14487:20;14483:1;14472:9;14468:17;14461:47;14525:131;14651:4;14525:131;:::i;:::-;14517:139;;14244:419;;;:::o;14669:332::-;14790:4;14828:2;14817:9;14813:18;14805:26;;14841:71;14909:1;14898:9;14894:17;14885:6;14841:71;:::i;:::-;14922:72;14990:2;14979:9;14975:18;14966:6;14922:72;:::i;:::-;14669:332;;;;;:::o;15007:98::-;15058:6;15092:5;15086:12;15076:22;;15007:98;;;:::o;15111:147::-;15212:11;15249:3;15234:18;;15111:147;;;;:::o;15264:386::-;15368:3;15396:38;15428:5;15396:38;:::i;:::-;15450:88;15531:6;15526:3;15450:88;:::i;:::-;15443:95;;15547:65;15605:6;15600:3;15593:4;15586:5;15582:16;15547:65;:::i;:::-;15637:6;15632:3;15628:16;15621:23;;15372:278;15264:386;;;;:::o;15656:271::-;15786:3;15808:93;15897:3;15888:6;15808:93;:::i;:::-;15801:100;;15918:3;15911:10;;15656:271;;;;:::o;15933:114::-;;:::o;16053:398::-;16212:3;16233:83;16314:1;16309:3;16233:83;:::i;:::-;16226:90;;16325:93;16414:3;16325:93;:::i;:::-;16443:1;16438:3;16434:11;16427:18;;16053:398;;;:::o;16457:379::-;16641:3;16663:147;16806:3;16663:147;:::i;:::-;16656:154;;16827:3;16820:10;;16457:379;;;:::o;16842:225::-;16982:34;16978:1;16970:6;16966:14;16959:58;17051:8;17046:2;17038:6;17034:15;17027:33;16842:225;:::o;17073:366::-;17215:3;17236:67;17300:2;17295:3;17236:67;:::i;:::-;17229:74;;17312:93;17401:3;17312:93;:::i;:::-;17430:2;17425:3;17421:12;17414:19;;17073:366;;;:::o;17445:419::-;17611:4;17649:2;17638:9;17634:18;17626:26;;17698:9;17692:4;17688:20;17684:1;17673:9;17669:17;17662:47;17726:131;17852:4;17726:131;:::i;:::-;17718:139;;17445:419;;;:::o;17870:173::-;18010:25;18006:1;17998:6;17994:14;17987:49;17870:173;:::o;18049:366::-;18191:3;18212:67;18276:2;18271:3;18212:67;:::i;:::-;18205:74;;18288:93;18377:3;18288:93;:::i;:::-;18406:2;18401:3;18397:12;18390:19;;18049:366;;;:::o;18421:419::-;18587:4;18625:2;18614:9;18610:18;18602:26;;18674:9;18668:4;18664:20;18660:1;18649:9;18645:17;18638:47;18702:131;18828:4;18702:131;:::i;:::-;18694:139;;18421:419;;;:::o;18846:172::-;18986:24;18982:1;18974:6;18970:14;18963:48;18846:172;:::o;19024:366::-;19166:3;19187:67;19251:2;19246:3;19187:67;:::i;:::-;19180:74;;19263:93;19352:3;19263:93;:::i;:::-;19381:2;19376:3;19372:12;19365:19;;19024:366;;;:::o;19396:419::-;19562:4;19600:2;19589:9;19585:18;19577:26;;19649:9;19643:4;19639:20;19635:1;19624:9;19620:17;19613:47;19677:131;19803:4;19677:131;:::i;:::-;19669:139;;19396:419;;;:::o;19821:191::-;19861:3;19880:20;19898:1;19880:20;:::i;:::-;19875:25;;19914:20;19932:1;19914:20;:::i;:::-;19909:25;;19957:1;19954;19950:9;19943:16;;19978:3;19975:1;19972:10;19969:36;;;19985:18;;:::i;:::-;19969:36;19821:191;;;;:::o;20018:170::-;20158:22;20154:1;20146:6;20142:14;20135:46;20018:170;:::o;20194:366::-;20336:3;20357:67;20421:2;20416:3;20357:67;:::i;:::-;20350:74;;20433:93;20522:3;20433:93;:::i;:::-;20551:2;20546:3;20542:12;20535:19;;20194:366;;;:::o;20566:419::-;20732:4;20770:2;20759:9;20755:18;20747:26;;20819:9;20813:4;20809:20;20805:1;20794:9;20790:17;20783:47;20847:131;20973:4;20847:131;:::i;:::-;20839:139;;20566:419;;;:::o;20991:297::-;21131:34;21127:1;21119:6;21115:14;21108:58;21200:34;21195:2;21187:6;21183:15;21176:59;21269:11;21264:2;21256:6;21252:15;21245:36;20991:297;:::o;21294:366::-;21436:3;21457:67;21521:2;21516:3;21457:67;:::i;:::-;21450:74;;21533:93;21622:3;21533:93;:::i;:::-;21651:2;21646:3;21642:12;21635:19;;21294:366;;;:::o;21666:419::-;21832:4;21870:2;21859:9;21855:18;21847:26;;21919:9;21913:4;21909:20;21905:1;21894:9;21890:17;21883:47;21947:131;22073:4;21947:131;:::i;:::-;21939:139;;21666:419;;;:::o;22091:194::-;22131:4;22151:20;22169:1;22151:20;:::i;:::-;22146:25;;22185:20;22203:1;22185:20;:::i;:::-;22180:25;;22229:1;22226;22222:9;22214:17;;22253:1;22247:4;22244:11;22241:37;;;22258:18;;:::i;:::-;22241:37;22091:194;;;;:::o;22291:177::-;22431:29;22427:1;22419:6;22415:14;22408:53;22291:177;:::o;22474:366::-;22616:3;22637:67;22701:2;22696:3;22637:67;:::i;:::-;22630:74;;22713:93;22802:3;22713:93;:::i;:::-;22831:2;22826:3;22822:12;22815:19;;22474:366;;;:::o;22846:419::-;23012:4;23050:2;23039:9;23035:18;23027:26;;23099:9;23093:4;23089:20;23085:1;23074:9;23070:17;23063:47;23127:131;23253:4;23127:131;:::i;:::-;23119:139;;22846:419;;;:::o;23271:180::-;23319:77;23316:1;23309:88;23416:4;23413:1;23406:15;23440:4;23437:1;23430:15;23457:180;23505:77;23502:1;23495:88;23602:4;23599:1;23592:15;23626:4;23623:1;23616:15;23643:143;23700:5;23731:6;23725:13;23716:22;;23747:33;23774:5;23747:33;:::i;:::-;23643:143;;;;:::o;23792:351::-;23862:6;23911:2;23899:9;23890:7;23886:23;23882:32;23879:119;;;23917:79;;:::i;:::-;23879:119;24037:1;24062:64;24118:7;24109:6;24098:9;24094:22;24062:64;:::i;:::-;24052:74;;24008:128;23792:351;;;;:::o;24149:85::-;24194:7;24223:5;24212:16;;24149:85;;;:::o;24240:158::-;24298:9;24331:61;24349:42;24358:32;24384:5;24358:32;:::i;:::-;24349:42;:::i;:::-;24331:61;:::i;:::-;24318:74;;24240:158;;;:::o;24404:147::-;24499:45;24538:5;24499:45;:::i;:::-;24494:3;24487:58;24404:147;;:::o;24557:114::-;24624:6;24658:5;24652:12;24642:22;;24557:114;;;:::o;24677:184::-;24776:11;24810:6;24805:3;24798:19;24850:4;24845:3;24841:14;24826:29;;24677:184;;;;:::o;24867:132::-;24934:4;24957:3;24949:11;;24987:4;24982:3;24978:14;24970:22;;24867:132;;;:::o;25005:108::-;25082:24;25100:5;25082:24;:::i;:::-;25077:3;25070:37;25005:108;;:::o;25119:179::-;25188:10;25209:46;25251:3;25243:6;25209:46;:::i;:::-;25287:4;25282:3;25278:14;25264:28;;25119:179;;;;:::o;25304:113::-;25374:4;25406;25401:3;25397:14;25389:22;;25304:113;;;:::o;25453:732::-;25572:3;25601:54;25649:5;25601:54;:::i;:::-;25671:86;25750:6;25745:3;25671:86;:::i;:::-;25664:93;;25781:56;25831:5;25781:56;:::i;:::-;25860:7;25891:1;25876:284;25901:6;25898:1;25895:13;25876:284;;;25977:6;25971:13;26004:63;26063:3;26048:13;26004:63;:::i;:::-;25997:70;;26090:60;26143:6;26090:60;:::i;:::-;26080:70;;25936:224;25923:1;25920;25916:9;25911:14;;25876:284;;;25880:14;26176:3;26169:10;;25577:608;;;25453:732;;;;:::o;26191:831::-;26454:4;26492:3;26481:9;26477:19;26469:27;;26506:71;26574:1;26563:9;26559:17;26550:6;26506:71;:::i;:::-;26587:80;26663:2;26652:9;26648:18;26639:6;26587:80;:::i;:::-;26714:9;26708:4;26704:20;26699:2;26688:9;26684:18;26677:48;26742:108;26845:4;26836:6;26742:108;:::i;:::-;26734:116;;26860:72;26928:2;26917:9;26913:18;26904:6;26860:72;:::i;:::-;26942:73;27010:3;26999:9;26995:19;26986:6;26942:73;:::i;:::-;26191:831;;;;;;;;:::o;27028:483::-;27199:4;27237:2;27226:9;27222:18;27214:26;;27250:71;27318:1;27307:9;27303:17;27294:6;27250:71;:::i;:::-;27368:9;27362:4;27358:20;27353:2;27342:9;27338:18;27331:48;27396:108;27499:4;27490:6;27396:108;:::i;:::-;27388:116;;27028:483;;;;;:::o;27517:180::-;27565:77;27562:1;27555:88;27662:4;27659:1;27652:15;27686:4;27683:1;27676:15;27703:185;27743:1;27760:20;27778:1;27760:20;:::i;:::-;27755:25;;27794:20;27812:1;27794:20;:::i;:::-;27789:25;;27833:1;27823:35;;27838:18;;:::i;:::-;27823:35;27880:1;27877;27873:9;27868:14;;27703:185;;;;:::o;27894:220::-;28034:34;28030:1;28022:6;28018:14;28011:58;28103:3;28098:2;28090:6;28086:15;28079:28;27894:220;:::o;28120:366::-;28262:3;28283:67;28347:2;28342:3;28283:67;:::i;:::-;28276:74;;28359:93;28448:3;28359:93;:::i;:::-;28477:2;28472:3;28468:12;28461:19;;28120:366;;;:::o;28492:419::-;28658:4;28696:2;28685:9;28681:18;28673:26;;28745:9;28739:4;28735:20;28731:1;28720:9;28716:17;28709:47;28773:131;28899:4;28773:131;:::i;:::-;28765:139;;28492:419;;;:::o

Swarm Source

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