ETH Price: $3,307.26 (-4.12%)

Token

ArtemisAI (ATAI)
 

Overview

Max Total Supply

1,000,000,000 ATAI

Holders

2,018 (0.00%)

Total Transfers

-

Market

Price

$0.00 @ 0.000000 ETH (-8.04%)

Onchain Market Cap

$293,890.00

Circulating Supply Market Cap

$0.00

Other Info

Token Contract (WITH 18 Decimals)

Loading...
Loading
Loading...
Loading
Loading...
Loading

OVERVIEW

Artemis AI is an project offering a suite of crypto trading tools. Our project is committed to helping users navigate the complex world of blockchain technology and cryptocurrency trading with clarity and accuracy.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
ArtemisAI

Compiler Version
v0.8.22+commit.4fc1097e

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-01-02
*/

// SPDX-License-Identifier: MIT

/*

   █████╗ ██████╗ ████████╗███████╗███╗   ███╗██╗███████╗     █████╗ ██╗
  ██╔══██╗██╔══██╗╚══██╔══╝██╔════╝████╗ ████║██║██╔════╝    ██╔══██╗██║
  ███████║██████╔╝   ██║   █████╗  ██╔████╔██║██║███████╗    ███████║██║
  ██╔══██║██╔══██╗   ██║   ██╔══╝  ██║╚██╔╝██║██║╚════██║    ██╔══██║██║
  ██║  ██║██║  ██║   ██║   ███████╗██║ ╚═╝ ██║██║███████║    ██║  ██║██║
  ╚═╝  ╚═╝╚═╝  ╚═╝   ╚═╝   ╚══════╝╚═╝     ╚═╝╚═╝╚══════╝    ╚═╝  ╚═╝╚═╝
                                                                     
  Telegram: https://t.me/artemisai_erc
  X: https://twitter.com/artemisai_erc
  Website: https://artemisai.tech
  Whitepaper: https://docs.artemisai.tech

*/

pragma solidity 0.8.22;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; 
        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);
}

interface IERC20Metadata is IERC20 {

    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}


contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping (address => uint256) internal _balances;

    mapping (address => mapping (address => uint256)) internal _allowances;

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    constructor (string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }


    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function _transfer(address sender, address recipient, uint256 amount) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);
    }

    function _approve(address owner, address spender, uint256 amount) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual { }
}

library Address{
    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

    constructor() {
        _setOwner(_msgSender());
    }

    function owner() public view virtual returns (address) {
        return _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);
    }
}

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

interface IRouter {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract ArtemisAI is ERC20, Ownable{
    using Address for address payable;
    
    IRouter public router;
    address public pair;
    
    bool private swapping;
    bool public swapEnabled;
    bool public launched;


    modifier lockSwapping() {
        swapping = true;
        _;
        swapping = false;
    }
    
    event TransferForeignToken(address token, uint256 amount);
    event Launched();
    event SwapEnabled();
    event SwapThresholdUpdated();
    event BuyTaxesUpdated();
    event SellTaxesUpdated();
    event MarketingWalletUpdated();
    event DevelopmentWalletUpdated();
    event ExcludedFromFeesUpdated();
    event MaxTxAmountUpdated();
    event MaxWalletAmountUpdated();
    event StuckEthersCleared();
    
    uint256 public swapThreshold = 1000000 * 10**18; //0.1% of total supply
    uint256 public maxTxAmount = 10000000 * 10**18; //1% of total supply 
    uint256 public maxWalletAmount = 20000000 * 10**18; //2% of total supply
    
    address public marketingWallet = 0x00ed21ad010247b699719C97e62E1058F156fe11;
    address public developmentWallet = 0x8b6Ebe5e8a24A3A4a4d9761B04CA32Ce0A883df3;
    
    struct Taxes {
        uint256 marketing;
        uint256 development;
     }
    
    Taxes public buyTaxes = Taxes(25,25);
    Taxes public sellTaxes = Taxes(25,25);
    uint256 private totBuyTax = 50; //5% as denominator is 1,000
    uint256 private totSellTax = 50; //5% as denominator is 1,000
    
    mapping (address => bool) public excludedFromFees;
    
    modifier inSwap() {
        if (!swapping) {
            swapping = true;
            _;
            swapping = false;
        }
    }

    constructor() ERC20("ArtemisAI", "ATAI") {
        _mint(msg.sender, 1000000000 * 10 ** decimals());
        excludedFromFees[msg.sender] = true;

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        excludedFromFees[address(this)] = true;
        excludedFromFees[marketingWallet] = true;
        excludedFromFees[developmentWallet] = true;
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");
                
        
        if(!excludedFromFees[sender] && !excludedFromFees[recipient] && !swapping){
            require(launched, "Trading not active yet");
            require(amount <= maxTxAmount, "You are exceeding maxTxAmount");
            if(recipient != pair){
                require(balanceOf(recipient) + amount <= maxWalletAmount, "You are exceeding maxWalletAmount");
            }
        }

        uint256 fee;
          
        if (swapping || excludedFromFees[sender] || excludedFromFees[recipient]) fee = 0;
         
        else{
            if(recipient == pair) fee = amount * totSellTax / 1000;
            else if(sender == pair) fee = amount * totBuyTax / 1000;
            else fee = 0;
        }
        
        if (swapEnabled && !swapping && sender != pair && fee > 0) swapForFees();

        super._transfer(sender, recipient, amount - fee);
        if(fee > 0) super._transfer(sender, address(this) ,fee);
    }

    function swapForFees() private inSwap {
        uint256 contractBalance = balanceOf(address(this));

        if (contractBalance >= swapThreshold) {
            uint256 toSwap = contractBalance;
    
            uint256 initialBalance = address(this).balance;
    
            swapTokensForETH(toSwap);
    
            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 marketingAmt = deltaBalance * 50 / 100; 
            uint256 developmentAmt = deltaBalance - marketingAmt;

            if(marketingAmt > 0){
                payable(marketingWallet).sendValue(marketingAmt);
            }

            if(developmentAmt > 0){
                payable(developmentWallet).sendValue(developmentAmt);
            }
        }
    }
    
    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(tokenAmount, 0, path, address(this), block.timestamp);
    }

    function addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: bnbAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(0xdead),
            block.timestamp
        );
    }
    function setSwapEnabled(bool state) external onlyOwner { // to be used only in case of dire emergency
        swapEnabled = state;
        emit SwapEnabled();
    }

    function setSwapThreshold(uint256 new_amount) external onlyOwner {
        require(new_amount >= 10000, "Swap amount cannot be lower than 0.001% total supply.");
        require(new_amount <= 30000000, "Swap amount cannot be higher than 3% total supply.");
        swapThreshold = new_amount * (10**18);
        emit SwapThresholdUpdated();
    }

    function launch() external onlyOwner{
        require(!launched, "Trading already active");
        launched = true;
        swapEnabled = true;
        emit Launched();
    }

    function setBuyTaxes(uint256 _marketing, uint256 _development) external onlyOwner{
        buyTaxes = Taxes(_marketing, _development);
        totBuyTax = _marketing + _development;
        require(totBuyTax <= 401,"Total buy fees cannot be greater than 40%");
        emit BuyTaxesUpdated();
    }

    function setSellTaxes(uint256 _marketing, uint256 _development) external onlyOwner{
        sellTaxes = Taxes(_marketing, _development);
        totSellTax = _marketing + _development;
        require(totSellTax <= 401,"Total sell fees cannot be greater than 40%");
        require(totSellTax >= 10,"Total sell fees cannot beless  than 1%");
        emit SellTaxesUpdated();
    }
    
    function setMarketingWallet(address newWallet) external onlyOwner{
        excludedFromFees[marketingWallet] = false;
        require(newWallet != address(0), "Marketing Wallet cannot be zero address");
        marketingWallet = newWallet;
        emit MarketingWalletUpdated();     
    }
   
    function setDevelopmentWallet(address newWallet) external onlyOwner{
        excludedFromFees[developmentWallet] = false;
        require(newWallet != address(0), "Development Wallet cannot be zero address");
        developmentWallet = newWallet;
        emit DevelopmentWalletUpdated();
    }

    function setExcludedFromFees(address _address, bool state) external onlyOwner {
        excludedFromFees[_address] = state;
        emit ExcludedFromFeesUpdated();
    }
    
    function setMaxTxAmount(uint256 amount) external onlyOwner{
        require(amount >= 2500000, "Cannot set maxSell lower than 0.25%");
        maxTxAmount = amount * (10**18);
        emit MaxTxAmountUpdated();
    }
    
    function setMaxWalletAmount(uint256 amount) external onlyOwner{
        require(amount >= 2500000, "Cannot set maxSell lower than 0.25%");
        maxWalletAmount = amount * (10**18);
        emit MaxWalletAmountUpdated();
    }

    function withdrawStuckTokens(address _token, address _to) external onlyOwner returns (bool _sent) {
        uint256 _contractBalance = IERC20(_token).balanceOf(address(this));
        _sent = IERC20(_token).transfer(_to, _contractBalance);
        emit TransferForeignToken(_token, _contractBalance);
    }

    function clearStuckEthers(uint256 amountPercentage) external onlyOwner {
        uint256 amountETH = address(this).balance;
        payable(msg.sender).transfer((amountETH * amountPercentage) / 100);
        emit StuckEthersCleared();
    }

    function unclog() public onlyOwner lockSwapping {
        swapTokensForETH(
            balanceOf(address(this))
        );

        uint256 ethBalance = address(this).balance;
        uint256 ethMarketing = ethBalance / 2;
        uint256 ethDevelopment = ethBalance - ethMarketing;

        bool success;
        (success, ) = address(marketingWallet).call{value: ethMarketing}("");

        (success, ) = address(developmentWallet).call{value: ethDevelopment}(
            ""
        );
    }

    // fallbacks
    receive() external payable {}
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"BuyTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"DevelopmentWalletUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"ExcludedFromFeesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"Launched","type":"event"},{"anonymous":false,"inputs":[],"name":"MarketingWalletUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"MaxWalletAmountUpdated","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":[],"name":"SellTaxesUpdated","type":"event"},{"anonymous":false,"inputs":[],"name":"StuckEthersCleared","type":"event"},{"anonymous":false,"inputs":[],"name":"SwapEnabled","type":"event"},{"anonymous":false,"inputs":[],"name":"SwapThresholdUpdated","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"TransferForeignToken","type":"event"},{"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":"buyTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckEthers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"developmentWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"launched","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWalletAmount","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":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"development","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setDevelopmentWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setExcludedFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"setMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxTxAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setMaxWalletAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_development","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"state","type":"bool"}],"name":"setSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"setSwapThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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"},{"inputs":[],"name":"unclog","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"address","name":"_to","type":"address"}],"name":"withdrawStuckTokens","outputs":[{"internalType":"bool","name":"_sent","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405269d3c21bcecceda10000006008556a084595161401484a0000006009556a108b2a2c28029094000000600a5572ed21ad010247b699719c97e62e1058f156fe11600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550738b6ebe5e8a24a3a4a4d9761b04ca32ce0a883df3600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280601981526020016019815250600d5f820151815f01556020820151816001015550506040518060400160405280601981526020016019815250600f5f820151815f01556020820151816001015550506032601155603260125534801562000147575f80fd5b506040518060400160405280600981526020017f417274656d6973414900000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f41544149000000000000000000000000000000000000000000000000000000008152508160039081620001c5919062000a69565b508060049081620001d7919062000a69565b505050620001fa620001ee620005d160201b60201c565b620005d860201b60201c565b6200023a336200020f6200069b60201b60201c565b600a6200021d919062000cd6565b633b9aca006200022e919062000d26565b620006a360201b60201c565b600160135f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f737a250d5630b4cf539739df2c5dacb4c659f2488d90505f8173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620002f2573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000318919062000dd5565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308473ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200037e573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620003a4919062000dd5565b6040518363ffffffff1660e01b8152600401620003c392919062000e16565b6020604051808303815f875af1158015620003e0573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000406919062000dd5565b90508160065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508060075f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160135f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160135f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550505062000f25565b5f33905090565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6012905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160362000714576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200070b9062000e9f565b60405180910390fd5b620007275f83836200080060201b60201c565b8060025f8282546200073a919062000ebf565b92505081905550805f808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546200078e919062000ebf565b925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051620007f4919062000f0a565b60405180910390a35050565b505050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200088157607f821691505b6020821081036200089757620008966200083c565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620008fb7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620008be565b620009078683620008be565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620009516200094b62000945846200091f565b62000928565b6200091f565b9050919050565b5f819050919050565b6200096c8362000931565b620009846200097b8262000958565b848454620008ca565b825550505050565b5f90565b6200099a6200098c565b620009a781848462000961565b505050565b5b81811015620009ce57620009c25f8262000990565b600181019050620009ad565b5050565b601f82111562000a1d57620009e7816200089d565b620009f284620008af565b8101602085101562000a02578190505b62000a1a62000a1185620008af565b830182620009ac565b50505b505050565b5f82821c905092915050565b5f62000a3f5f198460080262000a22565b1980831691505092915050565b5f62000a59838362000a2e565b9150826002028217905092915050565b62000a748262000805565b67ffffffffffffffff81111562000a905762000a8f6200080f565b5b62000a9c825462000869565b62000aa9828285620009d2565b5f60209050601f83116001811462000adf575f841562000aca578287015190505b62000ad6858262000a4c565b86555062000b45565b601f19841662000aef866200089d565b5f5b8281101562000b185784890151825560018201915060208501945060208101905062000af1565b8683101562000b38578489015162000b34601f89168262000a2e565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000bd75780860481111562000baf5762000bae62000b4d565b5b600185161562000bbf5780820291505b808102905062000bcf8562000b7a565b945062000b8f565b94509492505050565b5f8262000bf1576001905062000cc3565b8162000c00575f905062000cc3565b816001811462000c19576002811462000c245762000c5a565b600191505062000cc3565b60ff84111562000c395762000c3862000b4d565b5b8360020a91508482111562000c535762000c5262000b4d565b5b5062000cc3565b5060208310610133831016604e8410600b841016171562000c945782820a90508381111562000c8e5762000c8d62000b4d565b5b62000cc3565b62000ca3848484600162000b86565b9250905081840481111562000cbd5762000cbc62000b4d565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000ce2826200091f565b915062000cef8362000cca565b925062000d1e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000be0565b905092915050565b5f62000d32826200091f565b915062000d3f836200091f565b925082820262000d4f816200091f565b9150828204841483151762000d695762000d6862000b4d565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000d9f8262000d74565b9050919050565b62000db18162000d93565b811462000dbc575f80fd5b50565b5f8151905062000dcf8162000da6565b92915050565b5f6020828403121562000ded5762000dec62000d70565b5b5f62000dfc8482850162000dbf565b91505092915050565b62000e108162000d93565b82525050565b5f60408201905062000e2b5f83018562000e05565b62000e3a602083018462000e05565b9392505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000e87601f8362000e41565b915062000e948262000e51565b602082019050919050565b5f6020820190508181035f83015262000eb88162000e79565b9050919050565b5f62000ecb826200091f565b915062000ed8836200091f565b925082820190508082111562000ef35762000ef262000b4d565b5b92915050565b62000f04816200091f565b82525050565b5f60208201905062000f1f5f83018462000ef9565b92915050565b6145a68062000f335f395ff3fe608060405260043610610233575f3560e01c8063864701a51161012d578063aa35822c116100aa578063e01af92c1161006e578063e01af92c14610829578063ec28438a14610851578063f2fde38b14610879578063f66895a3146108a1578063f887ea40146108cc5761023a565b8063aa35822c14610735578063aa4bde281461075d578063c04a541414610787578063dbe66ca0146107b1578063dd62ed3e146107ed5761023a565b80639d0014b1116100f15780639d0014b114610643578063a11a16821461066b578063a457c2d714610693578063a8aa1b31146106cf578063a9059cbb146106f95761023a565b8063864701a5146105725780638c0b5e221461059d5780638da5cb5b146105c757806395d89b41146105f15780639aed73701461061b5761023a565b806339509351116101bb57806370a082311161017f57806370a08231146104a4578063715018a6146104e057806372ac2486146104f657806375f0a8741461051e5780638091f3bf146105485761023a565b806339509351146103d8578063590ffdce146104145780635d098b381461043c57806367c45349146104645780636ddd17131461047a5761023a565b806318160ddd1161020257806318160ddd146102e457806323b872dd1461030e57806325b86edf1461034a57806327a14fc214610386578063313ce567146103ae5761023a565b806301339c211461023e5780630445b6671461025457806306fdde031461027e578063095ea7b3146102a85761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b506102526108f6565b005b34801561025f575f80fd5b50610268610a26565b6040516102759190613021565b60405180910390f35b348015610289575f80fd5b50610292610a2c565b60405161029f91906130c4565b60405180910390f35b3480156102b3575f80fd5b506102ce60048036038101906102c9919061316c565b610abc565b6040516102db91906131c4565b60405180910390f35b3480156102ef575f80fd5b506102f8610ad9565b6040516103059190613021565b60405180910390f35b348015610319575f80fd5b50610334600480360381019061032f91906131dd565b610ae2565b60405161034191906131c4565b60405180910390f35b348015610355575f80fd5b50610370600480360381019061036b919061322d565b610bdd565b60405161037d91906131c4565b60405180910390f35b348015610391575f80fd5b506103ac60048036038101906103a7919061326b565b610d92565b005b3480156103b9575f80fd5b506103c2610e9d565b6040516103cf91906132b1565b60405180910390f35b3480156103e3575f80fd5b506103fe60048036038101906103f9919061316c565b610ea5565b60405161040b91906131c4565b60405180910390f35b34801561041f575f80fd5b5061043a600480360381019061043591906132f4565b610f4c565b005b348015610447575f80fd5b50610462600480360381019061045d9190613332565b61104c565b005b34801561046f575f80fd5b5061047861121a565b005b348015610485575f80fd5b5061048e61141a565b60405161049b91906131c4565b60405180910390f35b3480156104af575f80fd5b506104ca60048036038101906104c59190613332565b61142d565b6040516104d79190613021565b60405180910390f35b3480156104eb575f80fd5b506104f4611472565b005b348015610501575f80fd5b5061051c60048036038101906105179190613332565b6114f9565b005b348015610529575f80fd5b506105326116c7565b60405161053f919061336c565b60405180910390f35b348015610553575f80fd5b5061055c6116ec565b60405161056991906131c4565b60405180910390f35b34801561057d575f80fd5b506105866116ff565b604051610594929190613385565b60405180910390f35b3480156105a8575f80fd5b506105b1611710565b6040516105be9190613021565b60405180910390f35b3480156105d2575f80fd5b506105db611716565b6040516105e8919061336c565b60405180910390f35b3480156105fc575f80fd5b5061060561173e565b60405161061291906130c4565b60405180910390f35b348015610626575f80fd5b50610641600480360381019061063c919061326b565b6117ce565b005b34801561064e575f80fd5b506106696004803603810190610664919061326b565b6118d9565b005b348015610676575f80fd5b50610691600480360381019061068c91906133ac565b611a29565b005b34801561069e575f80fd5b506106b960048036038101906106b4919061316c565b611ba0565b6040516106c691906131c4565b60405180910390f35b3480156106da575f80fd5b506106e3611c8f565b6040516106f0919061336c565b60405180910390f35b348015610704575f80fd5b5061071f600480360381019061071a919061316c565b611cb4565b60405161072c91906131c4565b60405180910390f35b348015610740575f80fd5b5061075b600480360381019061075691906133ac565b611cd1565b005b348015610768575f80fd5b50610771611e02565b60405161077e9190613021565b60405180910390f35b348015610792575f80fd5b5061079b611e08565b6040516107a8919061336c565b60405180910390f35b3480156107bc575f80fd5b506107d760048036038101906107d29190613332565b611e2d565b6040516107e491906131c4565b60405180910390f35b3480156107f8575f80fd5b50610813600480360381019061080e919061322d565b611e4a565b6040516108209190613021565b60405180910390f35b348015610834575f80fd5b5061084f600480360381019061084a91906133ea565b611ecc565b005b34801561085c575f80fd5b506108776004803603810190610872919061326b565b611f91565b005b348015610884575f80fd5b5061089f600480360381019061089a9190613332565b61209c565b005b3480156108ac575f80fd5b506108b5612192565b6040516108c3929190613385565b60405180910390f35b3480156108d7575f80fd5b506108e06121a3565b6040516108ed9190613470565b60405180910390f35b6108fe6121c8565b73ffffffffffffffffffffffffffffffffffffffff1661091c611716565b73ffffffffffffffffffffffffffffffffffffffff1614610972576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610969906134d3565b60405180910390fd5b600760169054906101000a900460ff16156109c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b99061353b565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055507fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c860405160405180910390a1565b60085481565b606060038054610a3b90613586565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6790613586565b8015610ab25780601f10610a8957610100808354040283529160200191610ab2565b820191905f5260205f20905b815481529060010190602001808311610a9557829003601f168201915b5050505050905090565b5f610acf610ac86121c8565b84846121cf565b6001905092915050565b5f600254905090565b5f610aee848484612392565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b356121c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bab90613626565b60405180910390fd5b610bd185610bc06121c8565b8584610bcc9190613671565b6121cf565b60019150509392505050565b5f610be66121c8565b73ffffffffffffffffffffffffffffffffffffffff16610c04611716565b73ffffffffffffffffffffffffffffffffffffffff1614610c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c51906134d3565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c94919061336c565b602060405180830381865afa158015610caf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd391906136b8565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401610d109291906136e3565b6020604051808303815f875af1158015610d2c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d50919061371e565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051610d839291906136e3565b60405180910390a15092915050565b610d9a6121c8565b73ffffffffffffffffffffffffffffffffffffffff16610db8611716565b73ffffffffffffffffffffffffffffffffffffffff1614610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e05906134d3565b60405180910390fd5b622625a0811015610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b906137b9565b60405180910390fd5b670de0b6b3a764000081610e6891906137d7565b600a819055507f49b5ebe6b6bd29b732eb93789df6cb9d7d384e64ab8600b8ab879f82a4fb1dec60405160405180910390a150565b5f6012905090565b5f610f42610eb16121c8565b848460015f610ebe6121c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f3d9190613818565b6121cf565b6001905092915050565b610f546121c8565b73ffffffffffffffffffffffffffffffffffffffff16610f72611716565b73ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf906134d3565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fd03e5aecc1463f851cb441202cc200cd8754891d6b125b332588db1948d4cbed60405160405180910390a15050565b6110546121c8565b73ffffffffffffffffffffffffffffffffffffffff16611072611716565b73ffffffffffffffffffffffffffffffffffffffff16146110c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bf906134d3565b60405180910390fd5b5f60135f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a2906138bb565b60405180910390fd5b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fecc84d499d57318161ab7effa4a1797c7500e9cce582fce989611566acadb0e060405160405180910390a150565b6112226121c8565b73ffffffffffffffffffffffffffffffffffffffff16611240611716565b73ffffffffffffffffffffffffffffffffffffffff1614611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d906134d3565b60405180910390fd5b6001600760146101000a81548160ff0219169083151502179055506112c26112bd3061142d565b61284f565b5f4790505f6002826112d49190613906565b90505f81836112e39190613671565b90505f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161132b90613963565b5f6040518083038185875af1925050503d805f8114611365576040519150601f19603f3d011682016040523d82523d5f602084013e61136a565b606091505b505080915050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516113b590613963565b5f6040518083038185875af1925050503d805f81146113ef576040519150601f19603f3d011682016040523d82523d5f602084013e6113f4565b606091505b505080915050505050505f600760146101000a81548160ff021916908315150217905550565b600760159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61147a6121c8565b73ffffffffffffffffffffffffffffffffffffffff16611498611716565b73ffffffffffffffffffffffffffffffffffffffff16146114ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e5906134d3565b60405180910390fd5b6114f75f612a85565b565b6115016121c8565b73ffffffffffffffffffffffffffffffffffffffff1661151f611716565b73ffffffffffffffffffffffffffffffffffffffff1614611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c906134d3565b60405180910390fd5b5f60135f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f906139e7565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f56c050a659ad3741e0a2373000420a1c3c060f7f39c95458be197a36a6e61ec260405160405180910390a150565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760169054906101000a900460ff1681565b600d805f0154908060010154905082565b60095481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461174d90613586565b80601f016020809104026020016040519081016040528092919081815260200182805461177990613586565b80156117c45780601f1061179b576101008083540402835291602001916117c4565b820191905f5260205f20905b8154815290600101906020018083116117a757829003601f168201915b5050505050905090565b6117d66121c8565b73ffffffffffffffffffffffffffffffffffffffff166117f4611716565b73ffffffffffffffffffffffffffffffffffffffff161461184a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611841906134d3565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc6064848461187691906137d7565b6118809190613906565b90811502906040515f60405180830381858888f193505050501580156118a8573d5f803e3d5ffd5b507ff20a449062e534a116785d71bddf65609cfc0bc86030f808c97d76660ddb4bf960405160405180910390a15050565b6118e16121c8565b73ffffffffffffffffffffffffffffffffffffffff166118ff611716565b73ffffffffffffffffffffffffffffffffffffffff1614611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194c906134d3565b60405180910390fd5b61271081101561199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199190613a75565b60405180910390fd5b6301c9c3808111156119e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d890613b03565b60405180910390fd5b670de0b6b3a7640000816119f591906137d7565b6008819055507ee5ce26a39fffb27e333aa941bc88d6cc7491c7ad00e1dc92cae29c83aec93d60405160405180910390a150565b611a316121c8565b73ffffffffffffffffffffffffffffffffffffffff16611a4f611716565b73ffffffffffffffffffffffffffffffffffffffff1614611aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9c906134d3565b60405180910390fd5b604051806040016040528083815260200182815250600f5f820151815f0155602082015181600101559050508082611add9190613818565b6012819055506101916012541115611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2190613b91565b60405180910390fd5b600a6012541015611b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6790613c1f565b60405180910390fd5b7f13f91d6936cb30f23ecef75125dc94fead23e2cb4beb9d95058df43aa8c3078560405160405180910390a15050565b5f8060015f611bad6121c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5e90613cad565b60405180910390fd5b611c84611c726121c8565b858584611c7f9190613671565b6121cf565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611cc7611cc06121c8565b8484612392565b6001905092915050565b611cd96121c8565b73ffffffffffffffffffffffffffffffffffffffff16611cf7611716565b73ffffffffffffffffffffffffffffffffffffffff1614611d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d44906134d3565b60405180910390fd5b604051806040016040528083815260200182815250600d5f820151815f0155602082015181600101559050508082611d859190613818565b6011819055506101916011541115611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc990613d3b565b60405180910390fd5b7f5603f0cab8983038ffb2c31e46a497a67322819231397b1a4eff19e46e39851d60405160405180910390a15050565b600a5481565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6013602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611ed46121c8565b73ffffffffffffffffffffffffffffffffffffffff16611ef2611716565b73ffffffffffffffffffffffffffffffffffffffff1614611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f906134d3565b60405180910390fd5b80600760156101000a81548160ff0219169083151502179055507f41c787961cb389554b90a8dbfb700790a3f278f50ba1d330c0b555d884789b5a60405160405180910390a150565b611f996121c8565b73ffffffffffffffffffffffffffffffffffffffff16611fb7611716565b73ffffffffffffffffffffffffffffffffffffffff161461200d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612004906134d3565b60405180910390fd5b622625a0811015612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204a906137b9565b60405180910390fd5b670de0b6b3a76400008161206791906137d7565b6009819055507f3fb2441f7fb0cf4882020ee77c4b9fb347bdbbf2fa439c76ca667e1b55f18b2b60405160405180910390a150565b6120a46121c8565b73ffffffffffffffffffffffffffffffffffffffff166120c2611716565b73ffffffffffffffffffffffffffffffffffffffff1614612118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210f906134d3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217d90613dc9565b60405180910390fd5b61218f81612a85565b50565b600f805f0154908060010154905082565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361223d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223490613e57565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a290613ee5565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123859190613021565b60405180910390a3505050565b5f81116123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cb90613f73565b60405180910390fd5b60135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612472575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561248b5750600760149054906101000a900460ff16155b156125d257600760169054906101000a900460ff166124df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d690613fdb565b60405180910390fd5b600954811115612524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251b90614043565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125d157600a54816125858461142d565b61258f9190613818565b11156125d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c7906140d1565b60405180910390fd5b5b5b5f600760149054906101000a900460ff1680612634575060135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612685575060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612692575f9050612784565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612708576103e8601254836126f791906137d7565b6127019190613906565b9050612783565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361277e576103e86011548361276d91906137d7565b6127779190613906565b9050612782565b5f90505b5b5b600760159054906101000a900460ff1680156127ad5750600760149054906101000a900460ff16155b8015612806575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561281157505f81115b1561281f5761281e612b48565b5b612835848483856128309190613671565b612ca1565b5f81111561284957612848843083612ca1565b5b50505050565b5f600267ffffffffffffffff81111561286b5761286a6140ef565b5b6040519080825280602002602001820160405280156128995781602001602082028036833780820191505090505b50905030815f815181106128b0576128af61411c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612954573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612978919061415d565b8160018151811061298c5761298b61411c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129f23060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121cf565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612a54959493929190614278565b5f604051808303815f87803b158015612a6b575f80fd5b505af1158015612a7d573d5f803e3d5ffd5b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612c9f576001600760146101000a81548160ff0219169083151502179055505f612b813061142d565b90506008548110612c83575f8190505f479050612b9d8261284f565b5f8147612baa9190613671565b90505f6064603283612bbc91906137d7565b612bc69190613906565b90505f8183612bd59190613671565b90505f821115612c2a57612c2982600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b5b5f811115612c7d57612c7c81600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b5b50505050505b505f600760146101000a81548160ff0219169083151502179055505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0690614340565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d74906143ce565b60405180910390fd5b612d88838383613004565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e029061445c565b60405180910390fd5b8181612e179190613671565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612ea29190613818565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f069190613021565b60405180910390a350505050565b80471015612f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4e906144c4565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051612f7c90613963565b5f6040518083038185875af1925050503d805f8114612fb6576040519150601f19603f3d011682016040523d82523d5f602084013e612fbb565b606091505b5050905080612fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff690614552565b60405180910390fd5b505050565b505050565b5f819050919050565b61301b81613009565b82525050565b5f6020820190506130345f830184613012565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613071578082015181840152602081019050613056565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6130968261303a565b6130a08185613044565b93506130b0818560208601613054565b6130b98161307c565b840191505092915050565b5f6020820190508181035f8301526130dc818461308c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613111826130e8565b9050919050565b61312181613107565b811461312b575f80fd5b50565b5f8135905061313c81613118565b92915050565b61314b81613009565b8114613155575f80fd5b50565b5f8135905061316681613142565b92915050565b5f8060408385031215613182576131816130e4565b5b5f61318f8582860161312e565b92505060206131a085828601613158565b9150509250929050565b5f8115159050919050565b6131be816131aa565b82525050565b5f6020820190506131d75f8301846131b5565b92915050565b5f805f606084860312156131f4576131f36130e4565b5b5f6132018682870161312e565b93505060206132128682870161312e565b925050604061322386828701613158565b9150509250925092565b5f8060408385031215613243576132426130e4565b5b5f6132508582860161312e565b92505060206132618582860161312e565b9150509250929050565b5f602082840312156132805761327f6130e4565b5b5f61328d84828501613158565b91505092915050565b5f60ff82169050919050565b6132ab81613296565b82525050565b5f6020820190506132c45f8301846132a2565b92915050565b6132d3816131aa565b81146132dd575f80fd5b50565b5f813590506132ee816132ca565b92915050565b5f806040838503121561330a576133096130e4565b5b5f6133178582860161312e565b9250506020613328858286016132e0565b9150509250929050565b5f60208284031215613347576133466130e4565b5b5f6133548482850161312e565b91505092915050565b61336681613107565b82525050565b5f60208201905061337f5f83018461335d565b92915050565b5f6040820190506133985f830185613012565b6133a56020830184613012565b9392505050565b5f80604083850312156133c2576133c16130e4565b5b5f6133cf85828601613158565b92505060206133e085828601613158565b9150509250929050565b5f602082840312156133ff576133fe6130e4565b5b5f61340c848285016132e0565b91505092915050565b5f819050919050565b5f61343861343361342e846130e8565b613415565b6130e8565b9050919050565b5f6134498261341e565b9050919050565b5f61345a8261343f565b9050919050565b61346a81613450565b82525050565b5f6020820190506134835f830184613461565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6134bd602083613044565b91506134c882613489565b602082019050919050565b5f6020820190508181035f8301526134ea816134b1565b9050919050565b7f54726164696e6720616c726561647920616374697665000000000000000000005f82015250565b5f613525601683613044565b9150613530826134f1565b602082019050919050565b5f6020820190508181035f83015261355281613519565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061359d57607f821691505b6020821081036135b0576135af613559565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613610602883613044565b915061361b826135b6565b604082019050919050565b5f6020820190508181035f83015261363d81613604565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61367b82613009565b915061368683613009565b925082820390508181111561369e5761369d613644565b5b92915050565b5f815190506136b281613142565b92915050565b5f602082840312156136cd576136cc6130e4565b5b5f6136da848285016136a4565b91505092915050565b5f6040820190506136f65f83018561335d565b6137036020830184613012565b9392505050565b5f81519050613718816132ca565b92915050565b5f60208284031215613733576137326130e4565b5b5f6137408482850161370a565b91505092915050565b7f43616e6e6f7420736574206d617853656c6c206c6f776572207468616e20302e5f8201527f3235250000000000000000000000000000000000000000000000000000000000602082015250565b5f6137a3602383613044565b91506137ae82613749565b604082019050919050565b5f6020820190508181035f8301526137d081613797565b9050919050565b5f6137e182613009565b91506137ec83613009565b92508282026137fa81613009565b9150828204841483151761381157613810613644565b5b5092915050565b5f61382282613009565b915061382d83613009565b925082820190508082111561384557613844613644565b5b92915050565b7f4d61726b6574696e672057616c6c65742063616e6e6f74206265207a65726f205f8201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b5f6138a5602783613044565b91506138b08261384b565b604082019050919050565b5f6020820190508181035f8301526138d281613899565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61391082613009565b915061391b83613009565b92508261392b5761392a6138d9565b5b828204905092915050565b5f81905092915050565b50565b5f61394e5f83613936565b915061395982613940565b5f82019050919050565b5f61396d82613943565b9150819050919050565b7f446576656c6f706d656e742057616c6c65742063616e6e6f74206265207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f6139d1602983613044565b91506139dc82613977565b604082019050919050565b5f6020820190508181035f8301526139fe816139c5565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613a5f603583613044565b9150613a6a82613a05565b604082019050919050565b5f6020820190508181035f830152613a8c81613a53565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20332520746f74616c20737570706c792e0000000000000000000000000000602082015250565b5f613aed603283613044565b9150613af882613a93565b604082019050919050565b5f6020820190508181035f830152613b1a81613ae1565b9050919050565b7f546f74616c2073656c6c20666565732063616e6e6f74206265206772656174655f8201527f72207468616e2034302500000000000000000000000000000000000000000000602082015250565b5f613b7b602a83613044565b9150613b8682613b21565b604082019050919050565b5f6020820190508181035f830152613ba881613b6f565b9050919050565b7f546f74616c2073656c6c20666565732063616e6e6f742062656c6573732020745f8201527f68616e2031250000000000000000000000000000000000000000000000000000602082015250565b5f613c09602683613044565b9150613c1482613baf565b604082019050919050565b5f6020820190508181035f830152613c3681613bfd565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613c97602583613044565b9150613ca282613c3d565b604082019050919050565b5f6020820190508181035f830152613cc481613c8b565b9050919050565b7f546f74616c2062757920666565732063616e6e6f7420626520677265617465725f8201527f207468616e203430250000000000000000000000000000000000000000000000602082015250565b5f613d25602983613044565b9150613d3082613ccb565b604082019050919050565b5f6020820190508181035f830152613d5281613d19565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613db3602683613044565b9150613dbe82613d59565b604082019050919050565b5f6020820190508181035f830152613de081613da7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613e41602483613044565b9150613e4c82613de7565b604082019050919050565b5f6020820190508181035f830152613e6e81613e35565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ecf602283613044565b9150613eda82613e75565b604082019050919050565b5f6020820190508181035f830152613efc81613ec3565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613f5d602983613044565b9150613f6882613f03565b604082019050919050565b5f6020820190508181035f830152613f8a81613f51565b9050919050565b7f54726164696e67206e6f742061637469766520796574000000000000000000005f82015250565b5f613fc5601683613044565b9150613fd082613f91565b602082019050919050565b5f6020820190508181035f830152613ff281613fb9565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e740000005f82015250565b5f61402d601d83613044565b915061403882613ff9565b602082019050919050565b5f6020820190508181035f83015261405a81614021565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e5f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140bb602183613044565b91506140c682614061565b604082019050919050565b5f6020820190508181035f8301526140e8816140af565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061415781613118565b92915050565b5f60208284031215614172576141716130e4565b5b5f61417f84828501614149565b91505092915050565b5f819050919050565b5f6141ab6141a66141a184614188565b613415565b613009565b9050919050565b6141bb81614191565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6141f381613107565b82525050565b5f61420483836141ea565b60208301905092915050565b5f602082019050919050565b5f614226826141c1565b61423081856141cb565b935061423b836141db565b805f5b8381101561426b57815161425288826141f9565b975061425d83614210565b92505060018101905061423e565b5085935050505092915050565b5f60a08201905061428b5f830188613012565b61429860208301876141b2565b81810360408301526142aa818661421c565b90506142b9606083018561335d565b6142c66080830184613012565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61432a602583613044565b9150614335826142d0565b604082019050919050565b5f6020820190508181035f8301526143578161431e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6143b8602383613044565b91506143c38261435e565b604082019050919050565b5f6020820190508181035f8301526143e5816143ac565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614446602683613044565b9150614451826143ec565b604082019050919050565b5f6020820190508181035f8301526144738161443a565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f6144ae601d83613044565b91506144b98261447a565b602082019050919050565b5f6020820190508181035f8301526144db816144a2565b9050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f61453c603a83613044565b9150614547826144e2565b604082019050919050565b5f6020820190508181035f83015261456981614530565b905091905056fea26469706673582212208a9b3a5b1c414621f17a068ed33ace3a7583bc1de22946e2b8173d85be9f2fa064736f6c63430008160033

Deployed Bytecode

0x608060405260043610610233575f3560e01c8063864701a51161012d578063aa35822c116100aa578063e01af92c1161006e578063e01af92c14610829578063ec28438a14610851578063f2fde38b14610879578063f66895a3146108a1578063f887ea40146108cc5761023a565b8063aa35822c14610735578063aa4bde281461075d578063c04a541414610787578063dbe66ca0146107b1578063dd62ed3e146107ed5761023a565b80639d0014b1116100f15780639d0014b114610643578063a11a16821461066b578063a457c2d714610693578063a8aa1b31146106cf578063a9059cbb146106f95761023a565b8063864701a5146105725780638c0b5e221461059d5780638da5cb5b146105c757806395d89b41146105f15780639aed73701461061b5761023a565b806339509351116101bb57806370a082311161017f57806370a08231146104a4578063715018a6146104e057806372ac2486146104f657806375f0a8741461051e5780638091f3bf146105485761023a565b806339509351146103d8578063590ffdce146104145780635d098b381461043c57806367c45349146104645780636ddd17131461047a5761023a565b806318160ddd1161020257806318160ddd146102e457806323b872dd1461030e57806325b86edf1461034a57806327a14fc214610386578063313ce567146103ae5761023a565b806301339c211461023e5780630445b6671461025457806306fdde031461027e578063095ea7b3146102a85761023a565b3661023a57005b5f80fd5b348015610249575f80fd5b506102526108f6565b005b34801561025f575f80fd5b50610268610a26565b6040516102759190613021565b60405180910390f35b348015610289575f80fd5b50610292610a2c565b60405161029f91906130c4565b60405180910390f35b3480156102b3575f80fd5b506102ce60048036038101906102c9919061316c565b610abc565b6040516102db91906131c4565b60405180910390f35b3480156102ef575f80fd5b506102f8610ad9565b6040516103059190613021565b60405180910390f35b348015610319575f80fd5b50610334600480360381019061032f91906131dd565b610ae2565b60405161034191906131c4565b60405180910390f35b348015610355575f80fd5b50610370600480360381019061036b919061322d565b610bdd565b60405161037d91906131c4565b60405180910390f35b348015610391575f80fd5b506103ac60048036038101906103a7919061326b565b610d92565b005b3480156103b9575f80fd5b506103c2610e9d565b6040516103cf91906132b1565b60405180910390f35b3480156103e3575f80fd5b506103fe60048036038101906103f9919061316c565b610ea5565b60405161040b91906131c4565b60405180910390f35b34801561041f575f80fd5b5061043a600480360381019061043591906132f4565b610f4c565b005b348015610447575f80fd5b50610462600480360381019061045d9190613332565b61104c565b005b34801561046f575f80fd5b5061047861121a565b005b348015610485575f80fd5b5061048e61141a565b60405161049b91906131c4565b60405180910390f35b3480156104af575f80fd5b506104ca60048036038101906104c59190613332565b61142d565b6040516104d79190613021565b60405180910390f35b3480156104eb575f80fd5b506104f4611472565b005b348015610501575f80fd5b5061051c60048036038101906105179190613332565b6114f9565b005b348015610529575f80fd5b506105326116c7565b60405161053f919061336c565b60405180910390f35b348015610553575f80fd5b5061055c6116ec565b60405161056991906131c4565b60405180910390f35b34801561057d575f80fd5b506105866116ff565b604051610594929190613385565b60405180910390f35b3480156105a8575f80fd5b506105b1611710565b6040516105be9190613021565b60405180910390f35b3480156105d2575f80fd5b506105db611716565b6040516105e8919061336c565b60405180910390f35b3480156105fc575f80fd5b5061060561173e565b60405161061291906130c4565b60405180910390f35b348015610626575f80fd5b50610641600480360381019061063c919061326b565b6117ce565b005b34801561064e575f80fd5b506106696004803603810190610664919061326b565b6118d9565b005b348015610676575f80fd5b50610691600480360381019061068c91906133ac565b611a29565b005b34801561069e575f80fd5b506106b960048036038101906106b4919061316c565b611ba0565b6040516106c691906131c4565b60405180910390f35b3480156106da575f80fd5b506106e3611c8f565b6040516106f0919061336c565b60405180910390f35b348015610704575f80fd5b5061071f600480360381019061071a919061316c565b611cb4565b60405161072c91906131c4565b60405180910390f35b348015610740575f80fd5b5061075b600480360381019061075691906133ac565b611cd1565b005b348015610768575f80fd5b50610771611e02565b60405161077e9190613021565b60405180910390f35b348015610792575f80fd5b5061079b611e08565b6040516107a8919061336c565b60405180910390f35b3480156107bc575f80fd5b506107d760048036038101906107d29190613332565b611e2d565b6040516107e491906131c4565b60405180910390f35b3480156107f8575f80fd5b50610813600480360381019061080e919061322d565b611e4a565b6040516108209190613021565b60405180910390f35b348015610834575f80fd5b5061084f600480360381019061084a91906133ea565b611ecc565b005b34801561085c575f80fd5b506108776004803603810190610872919061326b565b611f91565b005b348015610884575f80fd5b5061089f600480360381019061089a9190613332565b61209c565b005b3480156108ac575f80fd5b506108b5612192565b6040516108c3929190613385565b60405180910390f35b3480156108d7575f80fd5b506108e06121a3565b6040516108ed9190613470565b60405180910390f35b6108fe6121c8565b73ffffffffffffffffffffffffffffffffffffffff1661091c611716565b73ffffffffffffffffffffffffffffffffffffffff1614610972576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610969906134d3565b60405180910390fd5b600760169054906101000a900460ff16156109c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109b99061353b565b60405180910390fd5b6001600760166101000a81548160ff0219169083151502179055506001600760156101000a81548160ff0219169083151502179055507fba61a96074b3d636edeee92caddc86293c917d5b6818b7d3698bb52e02ec86c860405160405180910390a1565b60085481565b606060038054610a3b90613586565b80601f0160208091040260200160405190810160405280929190818152602001828054610a6790613586565b8015610ab25780601f10610a8957610100808354040283529160200191610ab2565b820191905f5260205f20905b815481529060010190602001808311610a9557829003601f168201915b5050505050905090565b5f610acf610ac86121c8565b84846121cf565b6001905092915050565b5f600254905090565b5f610aee848484612392565b5f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f610b356121c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015610bb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bab90613626565b60405180910390fd5b610bd185610bc06121c8565b8584610bcc9190613671565b6121cf565b60019150509392505050565b5f610be66121c8565b73ffffffffffffffffffffffffffffffffffffffff16610c04611716565b73ffffffffffffffffffffffffffffffffffffffff1614610c5a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c51906134d3565b60405180910390fd5b5f8373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c94919061336c565b602060405180830381865afa158015610caf573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cd391906136b8565b90508373ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84836040518363ffffffff1660e01b8152600401610d109291906136e3565b6020604051808303815f875af1158015610d2c573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d50919061371e565b91507fdeda980967fcead7b61e78ac46a4da14274af29e894d4d61e8b81ec38ab3e4388482604051610d839291906136e3565b60405180910390a15092915050565b610d9a6121c8565b73ffffffffffffffffffffffffffffffffffffffff16610db8611716565b73ffffffffffffffffffffffffffffffffffffffff1614610e0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e05906134d3565b60405180910390fd5b622625a0811015610e54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4b906137b9565b60405180910390fd5b670de0b6b3a764000081610e6891906137d7565b600a819055507f49b5ebe6b6bd29b732eb93789df6cb9d7d384e64ab8600b8ab879f82a4fb1dec60405160405180910390a150565b5f6012905090565b5f610f42610eb16121c8565b848460015f610ebe6121c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610f3d9190613818565b6121cf565b6001905092915050565b610f546121c8565b73ffffffffffffffffffffffffffffffffffffffff16610f72611716565b73ffffffffffffffffffffffffffffffffffffffff1614610fc8576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fbf906134d3565b60405180910390fd5b8060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055507fd03e5aecc1463f851cb441202cc200cd8754891d6b125b332588db1948d4cbed60405160405180910390a15050565b6110546121c8565b73ffffffffffffffffffffffffffffffffffffffff16611072611716565b73ffffffffffffffffffffffffffffffffffffffff16146110c8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110bf906134d3565b60405180910390fd5b5f60135f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036111ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111a2906138bb565b60405180910390fd5b80600b5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fecc84d499d57318161ab7effa4a1797c7500e9cce582fce989611566acadb0e060405160405180910390a150565b6112226121c8565b73ffffffffffffffffffffffffffffffffffffffff16611240611716565b73ffffffffffffffffffffffffffffffffffffffff1614611296576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161128d906134d3565b60405180910390fd5b6001600760146101000a81548160ff0219169083151502179055506112c26112bd3061142d565b61284f565b5f4790505f6002826112d49190613906565b90505f81836112e39190613671565b90505f600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168360405161132b90613963565b5f6040518083038185875af1925050503d805f8114611365576040519150601f19603f3d011682016040523d82523d5f602084013e61136a565b606091505b505080915050600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16826040516113b590613963565b5f6040518083038185875af1925050503d805f81146113ef576040519150601f19603f3d011682016040523d82523d5f602084013e6113f4565b606091505b505080915050505050505f600760146101000a81548160ff021916908315150217905550565b600760159054906101000a900460ff1681565b5f805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b61147a6121c8565b73ffffffffffffffffffffffffffffffffffffffff16611498611716565b73ffffffffffffffffffffffffffffffffffffffff16146114ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114e5906134d3565b60405180910390fd5b6114f75f612a85565b565b6115016121c8565b73ffffffffffffffffffffffffffffffffffffffff1661151f611716565b73ffffffffffffffffffffffffffffffffffffffff1614611575576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156c906134d3565b60405180910390fd5b5f60135f600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611658576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161164f906139e7565b60405180910390fd5b80600c5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f56c050a659ad3741e0a2373000420a1c3c060f7f39c95458be197a36a6e61ec260405160405180910390a150565b600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600760169054906101000a900460ff1681565b600d805f0154908060010154905082565b60095481565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461174d90613586565b80601f016020809104026020016040519081016040528092919081815260200182805461177990613586565b80156117c45780601f1061179b576101008083540402835291602001916117c4565b820191905f5260205f20905b8154815290600101906020018083116117a757829003601f168201915b5050505050905090565b6117d66121c8565b73ffffffffffffffffffffffffffffffffffffffff166117f4611716565b73ffffffffffffffffffffffffffffffffffffffff161461184a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611841906134d3565b60405180910390fd5b5f4790503373ffffffffffffffffffffffffffffffffffffffff166108fc6064848461187691906137d7565b6118809190613906565b90811502906040515f60405180830381858888f193505050501580156118a8573d5f803e3d5ffd5b507ff20a449062e534a116785d71bddf65609cfc0bc86030f808c97d76660ddb4bf960405160405180910390a15050565b6118e16121c8565b73ffffffffffffffffffffffffffffffffffffffff166118ff611716565b73ffffffffffffffffffffffffffffffffffffffff1614611955576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194c906134d3565b60405180910390fd5b61271081101561199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199190613a75565b60405180910390fd5b6301c9c3808111156119e1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119d890613b03565b60405180910390fd5b670de0b6b3a7640000816119f591906137d7565b6008819055507ee5ce26a39fffb27e333aa941bc88d6cc7491c7ad00e1dc92cae29c83aec93d60405160405180910390a150565b611a316121c8565b73ffffffffffffffffffffffffffffffffffffffff16611a4f611716565b73ffffffffffffffffffffffffffffffffffffffff1614611aa5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a9c906134d3565b60405180910390fd5b604051806040016040528083815260200182815250600f5f820151815f0155602082015181600101559050508082611add9190613818565b6012819055506101916012541115611b2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b2190613b91565b60405180910390fd5b600a6012541015611b70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6790613c1f565b60405180910390fd5b7f13f91d6936cb30f23ecef75125dc94fead23e2cb4beb9d95058df43aa8c3078560405160405180910390a15050565b5f8060015f611bad6121c8565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905082811015611c67576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c5e90613cad565b60405180910390fd5b611c84611c726121c8565b858584611c7f9190613671565b6121cf565b600191505092915050565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f611cc7611cc06121c8565b8484612392565b6001905092915050565b611cd96121c8565b73ffffffffffffffffffffffffffffffffffffffff16611cf7611716565b73ffffffffffffffffffffffffffffffffffffffff1614611d4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d44906134d3565b60405180910390fd5b604051806040016040528083815260200182815250600d5f820151815f0155602082015181600101559050508082611d859190613818565b6011819055506101916011541115611dd2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dc990613d3b565b60405180910390fd5b7f5603f0cab8983038ffb2c31e46a497a67322819231397b1a4eff19e46e39851d60405160405180910390a15050565b600a5481565b600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6013602052805f5260405f205f915054906101000a900460ff1681565b5f60015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611ed46121c8565b73ffffffffffffffffffffffffffffffffffffffff16611ef2611716565b73ffffffffffffffffffffffffffffffffffffffff1614611f48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3f906134d3565b60405180910390fd5b80600760156101000a81548160ff0219169083151502179055507f41c787961cb389554b90a8dbfb700790a3f278f50ba1d330c0b555d884789b5a60405160405180910390a150565b611f996121c8565b73ffffffffffffffffffffffffffffffffffffffff16611fb7611716565b73ffffffffffffffffffffffffffffffffffffffff161461200d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612004906134d3565b60405180910390fd5b622625a0811015612053576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161204a906137b9565b60405180910390fd5b670de0b6b3a76400008161206791906137d7565b6009819055507f3fb2441f7fb0cf4882020ee77c4b9fb347bdbbf2fa439c76ca667e1b55f18b2b60405160405180910390a150565b6120a46121c8565b73ffffffffffffffffffffffffffffffffffffffff166120c2611716565b73ffffffffffffffffffffffffffffffffffffffff1614612118576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161210f906134d3565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612186576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161217d90613dc9565b60405180910390fd5b61218f81612a85565b50565b600f805f0154908060010154905082565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361223d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161223490613e57565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036122ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122a290613ee5565b60405180910390fd5b8060015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516123859190613021565b60405180910390a3505050565b5f81116123d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123cb90613f73565b60405180910390fd5b60135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015612472575060135f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561248b5750600760149054906101000a900460ff16155b156125d257600760169054906101000a900460ff166124df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016124d690613fdb565b60405180910390fd5b600954811115612524576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251b90614043565b60405180910390fd5b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16146125d157600a54816125858461142d565b61258f9190613818565b11156125d0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125c7906140d1565b60405180910390fd5b5b5b5f600760149054906101000a900460ff1680612634575060135f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b80612685575060135f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15612692575f9050612784565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612708576103e8601254836126f791906137d7565b6127019190613906565b9050612783565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff160361277e576103e86011548361276d91906137d7565b6127779190613906565b9050612782565b5f90505b5b5b600760159054906101000a900460ff1680156127ad5750600760149054906101000a900460ff16155b8015612806575060075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b801561281157505f81115b1561281f5761281e612b48565b5b612835848483856128309190613671565b612ca1565b5f81111561284957612848843083612ca1565b5b50505050565b5f600267ffffffffffffffff81111561286b5761286a6140ef565b5b6040519080825280602002602001820160405280156128995781602001602082028036833780820191505090505b50905030815f815181106128b0576128af61411c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612954573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612978919061415d565b8160018151811061298c5761298b61411c565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506129f23060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846121cf565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612a54959493929190614278565b5f604051808303815f87803b158015612a6b575f80fd5b505af1158015612a7d573d5f803e3d5ffd5b505050505050565b5f60055f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508160055f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600760149054906101000a900460ff16612c9f576001600760146101000a81548160ff0219169083151502179055505f612b813061142d565b90506008548110612c83575f8190505f479050612b9d8261284f565b5f8147612baa9190613671565b90505f6064603283612bbc91906137d7565b612bc69190613906565b90505f8183612bd59190613671565b90505f821115612c2a57612c2982600b5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b5b5f811115612c7d57612c7c81600c5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612f1490919063ffffffff16565b5b50505050505b505f600760146101000a81548160ff0219169083151502179055505b565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612d0f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d0690614340565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612d7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612d74906143ce565b60405180910390fd5b612d88838383613004565b5f805f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015612e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e029061445c565b60405180910390fd5b8181612e179190613671565b5f808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550815f808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612ea29190613818565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612f069190613021565b60405180910390a350505050565b80471015612f57576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4e906144c4565b60405180910390fd5b5f8273ffffffffffffffffffffffffffffffffffffffff1682604051612f7c90613963565b5f6040518083038185875af1925050503d805f8114612fb6576040519150601f19603f3d011682016040523d82523d5f602084013e612fbb565b606091505b5050905080612fff576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff690614552565b60405180910390fd5b505050565b505050565b5f819050919050565b61301b81613009565b82525050565b5f6020820190506130345f830184613012565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015613071578082015181840152602081019050613056565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6130968261303a565b6130a08185613044565b93506130b0818560208601613054565b6130b98161307c565b840191505092915050565b5f6020820190508181035f8301526130dc818461308c565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613111826130e8565b9050919050565b61312181613107565b811461312b575f80fd5b50565b5f8135905061313c81613118565b92915050565b61314b81613009565b8114613155575f80fd5b50565b5f8135905061316681613142565b92915050565b5f8060408385031215613182576131816130e4565b5b5f61318f8582860161312e565b92505060206131a085828601613158565b9150509250929050565b5f8115159050919050565b6131be816131aa565b82525050565b5f6020820190506131d75f8301846131b5565b92915050565b5f805f606084860312156131f4576131f36130e4565b5b5f6132018682870161312e565b93505060206132128682870161312e565b925050604061322386828701613158565b9150509250925092565b5f8060408385031215613243576132426130e4565b5b5f6132508582860161312e565b92505060206132618582860161312e565b9150509250929050565b5f602082840312156132805761327f6130e4565b5b5f61328d84828501613158565b91505092915050565b5f60ff82169050919050565b6132ab81613296565b82525050565b5f6020820190506132c45f8301846132a2565b92915050565b6132d3816131aa565b81146132dd575f80fd5b50565b5f813590506132ee816132ca565b92915050565b5f806040838503121561330a576133096130e4565b5b5f6133178582860161312e565b9250506020613328858286016132e0565b9150509250929050565b5f60208284031215613347576133466130e4565b5b5f6133548482850161312e565b91505092915050565b61336681613107565b82525050565b5f60208201905061337f5f83018461335d565b92915050565b5f6040820190506133985f830185613012565b6133a56020830184613012565b9392505050565b5f80604083850312156133c2576133c16130e4565b5b5f6133cf85828601613158565b92505060206133e085828601613158565b9150509250929050565b5f602082840312156133ff576133fe6130e4565b5b5f61340c848285016132e0565b91505092915050565b5f819050919050565b5f61343861343361342e846130e8565b613415565b6130e8565b9050919050565b5f6134498261341e565b9050919050565b5f61345a8261343f565b9050919050565b61346a81613450565b82525050565b5f6020820190506134835f830184613461565b92915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6134bd602083613044565b91506134c882613489565b602082019050919050565b5f6020820190508181035f8301526134ea816134b1565b9050919050565b7f54726164696e6720616c726561647920616374697665000000000000000000005f82015250565b5f613525601683613044565b9150613530826134f1565b602082019050919050565b5f6020820190508181035f83015261355281613519565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061359d57607f821691505b6020821081036135b0576135af613559565b5b50919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320615f8201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b5f613610602883613044565b915061361b826135b6565b604082019050919050565b5f6020820190508181035f83015261363d81613604565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61367b82613009565b915061368683613009565b925082820390508181111561369e5761369d613644565b5b92915050565b5f815190506136b281613142565b92915050565b5f602082840312156136cd576136cc6130e4565b5b5f6136da848285016136a4565b91505092915050565b5f6040820190506136f65f83018561335d565b6137036020830184613012565b9392505050565b5f81519050613718816132ca565b92915050565b5f60208284031215613733576137326130e4565b5b5f6137408482850161370a565b91505092915050565b7f43616e6e6f7420736574206d617853656c6c206c6f776572207468616e20302e5f8201527f3235250000000000000000000000000000000000000000000000000000000000602082015250565b5f6137a3602383613044565b91506137ae82613749565b604082019050919050565b5f6020820190508181035f8301526137d081613797565b9050919050565b5f6137e182613009565b91506137ec83613009565b92508282026137fa81613009565b9150828204841483151761381157613810613644565b5b5092915050565b5f61382282613009565b915061382d83613009565b925082820190508082111561384557613844613644565b5b92915050565b7f4d61726b6574696e672057616c6c65742063616e6e6f74206265207a65726f205f8201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b5f6138a5602783613044565b91506138b08261384b565b604082019050919050565b5f6020820190508181035f8301526138d281613899565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f61391082613009565b915061391b83613009565b92508261392b5761392a6138d9565b5b828204905092915050565b5f81905092915050565b50565b5f61394e5f83613936565b915061395982613940565b5f82019050919050565b5f61396d82613943565b9150819050919050565b7f446576656c6f706d656e742057616c6c65742063616e6e6f74206265207a65725f8201527f6f20616464726573730000000000000000000000000000000000000000000000602082015250565b5f6139d1602983613044565b91506139dc82613977565b604082019050919050565b5f6020820190508181035f8301526139fe816139c5565b9050919050565b7f5377617020616d6f756e742063616e6e6f74206265206c6f776572207468616e5f8201527f20302e3030312520746f74616c20737570706c792e0000000000000000000000602082015250565b5f613a5f603583613044565b9150613a6a82613a05565b604082019050919050565b5f6020820190508181035f830152613a8c81613a53565b9050919050565b7f5377617020616d6f756e742063616e6e6f7420626520686967686572207468615f8201527f6e20332520746f74616c20737570706c792e0000000000000000000000000000602082015250565b5f613aed603283613044565b9150613af882613a93565b604082019050919050565b5f6020820190508181035f830152613b1a81613ae1565b9050919050565b7f546f74616c2073656c6c20666565732063616e6e6f74206265206772656174655f8201527f72207468616e2034302500000000000000000000000000000000000000000000602082015250565b5f613b7b602a83613044565b9150613b8682613b21565b604082019050919050565b5f6020820190508181035f830152613ba881613b6f565b9050919050565b7f546f74616c2073656c6c20666565732063616e6e6f742062656c6573732020745f8201527f68616e2031250000000000000000000000000000000000000000000000000000602082015250565b5f613c09602683613044565b9150613c1482613baf565b604082019050919050565b5f6020820190508181035f830152613c3681613bfd565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f613c97602583613044565b9150613ca282613c3d565b604082019050919050565b5f6020820190508181035f830152613cc481613c8b565b9050919050565b7f546f74616c2062757920666565732063616e6e6f7420626520677265617465725f8201527f207468616e203430250000000000000000000000000000000000000000000000602082015250565b5f613d25602983613044565b9150613d3082613ccb565b604082019050919050565b5f6020820190508181035f830152613d5281613d19565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f613db3602683613044565b9150613dbe82613d59565b604082019050919050565b5f6020820190508181035f830152613de081613da7565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613e41602483613044565b9150613e4c82613de7565b604082019050919050565b5f6020820190508181035f830152613e6e81613e35565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f613ecf602283613044565b9150613eda82613e75565b604082019050919050565b5f6020820190508181035f830152613efc81613ec3565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613f5d602983613044565b9150613f6882613f03565b604082019050919050565b5f6020820190508181035f830152613f8a81613f51565b9050919050565b7f54726164696e67206e6f742061637469766520796574000000000000000000005f82015250565b5f613fc5601683613044565b9150613fd082613f91565b602082019050919050565b5f6020820190508181035f830152613ff281613fb9565b9050919050565b7f596f752061726520657863656564696e67206d61785478416d6f756e740000005f82015250565b5f61402d601d83613044565b915061403882613ff9565b602082019050919050565b5f6020820190508181035f83015261405a81614021565b9050919050565b7f596f752061726520657863656564696e67206d617857616c6c6574416d6f756e5f8201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b5f6140bb602183613044565b91506140c682614061565b604082019050919050565b5f6020820190508181035f8301526140e8816140af565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f8151905061415781613118565b92915050565b5f60208284031215614172576141716130e4565b5b5f61417f84828501614149565b91505092915050565b5f819050919050565b5f6141ab6141a66141a184614188565b613415565b613009565b9050919050565b6141bb81614191565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6141f381613107565b82525050565b5f61420483836141ea565b60208301905092915050565b5f602082019050919050565b5f614226826141c1565b61423081856141cb565b935061423b836141db565b805f5b8381101561426b57815161425288826141f9565b975061425d83614210565b92505060018101905061423e565b5085935050505092915050565b5f60a08201905061428b5f830188613012565b61429860208301876141b2565b81810360408301526142aa818661421c565b90506142b9606083018561335d565b6142c66080830184613012565b9695505050505050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f61432a602583613044565b9150614335826142d0565b604082019050919050565b5f6020820190508181035f8301526143578161431e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f6143b8602383613044565b91506143c38261435e565b604082019050919050565b5f6020820190508181035f8301526143e5816143ac565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f614446602683613044565b9150614451826143ec565b604082019050919050565b5f6020820190508181035f8301526144738161443a565b9050919050565b7f416464726573733a20696e73756666696369656e742062616c616e63650000005f82015250565b5f6144ae601d83613044565b91506144b98261447a565b602082019050919050565b5f6020820190508181035f8301526144db816144a2565b9050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c20725f8201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b5f61453c603a83613044565b9150614547826144e2565b604082019050919050565b5f6020820190508181035f83015261456981614530565b905091905056fea26469706673582212208a9b3a5b1c414621f17a068ed33ace3a7583bc1de22946e2b8173d85be9f2fa064736f6c63430008160033

Deployed Bytecode Sourcemap

8623:8978:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14298:180;;;;;;;;;;;;;:::i;:::-;;9402:47;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3060:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3974:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3381:108;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4151:422;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16463:310;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16223:232;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;3280:93;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4581:215;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15807:172;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15195:294;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17033:510;;;;;;;;;;;;;:::i;:::-;;8800:23;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3497:127;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7400:94;;;;;;;;;;;;;:::i;:::-;;15500:299;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9638:75;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8830:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9902:36;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;9479:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7177:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3168:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16781:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13939:351;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14797:386;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4804:377;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8740:19;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3632:175;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14486:303;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9554:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9720:77;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10128:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3815:151;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13764:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15991:220;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7502:192;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9945:37;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;8712:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14298:180;7323:12;:10;:12::i;:::-;7312:23;;:7;:5;:7::i;:::-;:23;;;7304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14354:8:::1;;;;;;;;;;;14353:9;14345:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;14411:4;14400:8;;:15;;;;;;;;;;;;;;;;;;14440:4;14426:11;;:18;;;;;;;;;;;;;;;;;;14460:10;;;;;;;;;;14298:180::o:0;9402:47::-;;;;:::o;3060:100::-;3114:13;3147:5;3140:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3060:100;:::o;3974:169::-;4057:4;4074:39;4083:12;:10;:12::i;:::-;4097:7;4106:6;4074:8;:39::i;:::-;4131:4;4124:11;;3974:169;;;;:::o;3381:108::-;3442:7;3469:12;;3462:19;;3381:108;:::o;4151:422::-;4257:4;4274:36;4284:6;4292:9;4303:6;4274:9;:36::i;:::-;4323:24;4350:11;:19;4362:6;4350:19;;;;;;;;;;;;;;;:33;4370:12;:10;:12::i;:::-;4350:33;;;;;;;;;;;;;;;;4323:60;;4422:6;4402:16;:26;;4394:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;4484:57;4493:6;4501:12;:10;:12::i;:::-;4534:6;4515:16;:25;;;;:::i;:::-;4484:8;:57::i;:::-;4561:4;4554:11;;;4151:422;;;;;:::o;16463:310::-;16549:10;7323:12;:10;:12::i;:::-;7312:23;;:7;:5;:7::i;:::-;:23;;;7304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16572:24:::1;16606:6;16599:24;;;16632:4;16599:39;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16572:66;;16664:6;16657:23;;;16681:3;16686:16;16657:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16649:54;;16719:46;16740:6;16748:16;16719:46;;;;;;;:::i;:::-;;;;;;;;16561:212;16463:310:::0;;;;:::o;16223:232::-;7323:12;:10;:12::i;:::-;7312:23;;:7;:5;:7::i;:::-;:23;;;7304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16314:7:::1;16304:6;:17;;16296:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;16400:6;16390;:17;;;;:::i;:::-;16372:15;:35;;;;16423:24;;;;;;;;;;16223:232:::0;:::o;3280:93::-;3338:5;3363:2;3356:9;;3280:93;:::o;4581:215::-;4669:4;4686:80;4695:12;:10;:12::i;:::-;4709:7;4755:10;4718:11;:25;4730:12;:10;:12::i;:::-;4718:25;;;;;;;;;;;;;;;:34;4744:7;4718:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;4686:8;:80::i;:::-;4784:4;4777:11;;4581:215;;;;:::o;15807:172::-;7323:12;:10;:12::i;:::-;7312:23;;:7;:5;:7::i;:::-;:23;;;7304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15925:5:::1;15896:16;:26;15913:8;15896:26;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;15946:25;;;;;;;;;;15807:172:::0;;:::o;15195:294::-;7323:12;:10;:12::i;:::-;7312:23;;:7;:5;:7::i;:::-;:23;;;7304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15307:5:::1;15271:16;:33;15288:15;;;;;;;;;;;15271:33;;;;;;;;;;;;;;;;:41;;;;;;;;;;;;;;;;;;15352:1;15331:23;;:9;:23;;::::0;15323:75:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15427:9;15409:15;;:27;;;;;;;;;;;;;;;;;;15452:24;;;;;;;;;;15195:294:::0;:::o;17033:510::-;7323:12;:10;:12::i;:::-;7312:23;;:7;:5;:7::i;:::-;:23;;;7304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8907:4:::1;8896:8;;:15;;;;;;;;;;;;;;;;;;17092:66:::2;17123:24;17141:4;17123:9;:24::i;:::-;17092:16;:66::i;:::-;17171:18;17192:21;17171:42;;17224:20;17260:1;17247:10;:14;;;;:::i;:::-;17224:37;;17272:22;17310:12;17297:10;:25;;;;:::i;:::-;17272:50;;17335:12;17380:15;;;;;;;;;;;17372:29;;17409:12;17372:54;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17358:68;;;;;17461:17;;;;;;;;;;;17453:31;;17492:14;17453:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17439:96;;;;;17081:462;;;;8945:5:::1;8934:8;;:16;;;;;;;;;;;;;;;;;;17033:510::o:0;8800:23::-;;;;;;;;;;;;;:::o;3497:127::-;3571:7;3598:9;:18;3608:7;3598:18;;;;;;;;;;;;;;;;3591:25;;3497:127;;;:::o;7400:94::-;7323:12;:10;:12::i;:::-;7312:23;;:7;:5;:7::i;:::-;:23;;;7304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7465:21:::1;7483:1;7465:9;:21::i;:::-;7400:94::o:0;15500:299::-;7323:12;:10;:12::i;:::-;7312:23;;:7;:5;:7::i;:::-;:23;;;7304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15616:5:::1;15578:16;:35;15595:17;;;;;;;;;;;15578:35;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;15661:1;15640:23;;:9;:23;;::::0;15632:77:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;15740:9;15720:17;;:29;;;;;;;;;;;;;;;;;;15765:26;;;;;;;;;;15500:299:::0;:::o;9638:75::-;;;;;;;;;;;;;:::o;8830:20::-;;;;;;;;;;;;;:::o;9902:36::-;;;;;;;;;;;;;;:::o;9479:46::-;;;;:::o;7177:87::-;7223:7;7250:6;;;;;;;;;;;7243:13;;7177:87;:::o;3168:104::-;3224:13;3257:7;3250:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3168:104;:::o;16781:244::-;7323:12;:10;:12::i;:::-;7312:23;;:7;:5;:7::i;:::-;:23;;;7304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16863:17:::1;16883:21;16863:41;;16923:10;16915:28;;:66;16977:3;16957:16;16945:9;:28;;;;:::i;:::-;16944:36;;;;:::i;:::-;16915:66;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;16997:20;;;;;;;;;;16852:173;16781:244:::0;:::o;13939:351::-;7323:12;:10;:12::i;:::-;7312:23;;:7;:5;:7::i;:::-;:23;;;7304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14037:5:::1;14023:10;:19;;14015:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14133:8;14119:10;:22;;14111:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14237:6;14223:10;:21;;;;:::i;:::-;14207:13;:37;;;;14260:22;;;;;;;;;;13939:351:::0;:::o;14797:386::-;7323:12;:10;:12::i;:::-;7312:23;;:7;:5;:7::i;:::-;:23;;;7304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14902:31:::1;;;;;;;;14908:10;14902:31;;;;14920:12;14902:31;;::::0;14890:9:::1;:43;;;;;;;;;;;;;;;;;;;14970:12;14957:10;:25;;;;:::i;:::-;14944:10;:38;;;;15015:3;15001:10;;:17;;14993:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;15097:2;15083:10;;:16;;15075:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;15157:18;;;;;;;;;;14797:386:::0;;:::o;4804:377::-;4897:4;4914:24;4941:11;:25;4953:12;:10;:12::i;:::-;4941:25;;;;;;;;;;;;;;;:34;4967:7;4941:34;;;;;;;;;;;;;;;;4914:61;;5014:15;4994:16;:35;;4986:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;5082:67;5091:12;:10;:12::i;:::-;5105:7;5133:15;5114:16;:34;;;;:::i;:::-;5082:8;:67::i;:::-;5169:4;5162:11;;;4804:377;;;;:::o;8740:19::-;;;;;;;;;;;;;:::o;3632:175::-;3718:4;3735:42;3745:12;:10;:12::i;:::-;3759:9;3770:6;3735:9;:42::i;:::-;3795:4;3788:11;;3632:175;;;;:::o;14486:303::-;7323:12;:10;:12::i;:::-;7312:23;;:7;:5;:7::i;:::-;:23;;;7304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;14589:31:::1;;;;;;;;14595:10;14589:31;;;;14607:12;14589:31;;::::0;14578:8:::1;:42;;;;;;;;;;;;;;;;;;;14656:12;14643:10;:25;;;;:::i;:::-;14631:9;:37;;;;14700:3;14687:9;;:16;;14679:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;14764:17;;;;;;;;;;14486:303:::0;;:::o;9554:50::-;;;;:::o;9720:77::-;;;;;;;;;;;;;:::o;10128:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;3815:151::-;3904:7;3931:11;:18;3943:5;3931:18;;;;;;;;;;;;;;;:27;3950:7;3931:27;;;;;;;;;;;;;;;;3924:34;;3815:151;;;;:::o;13764:167::-;7323:12;:10;:12::i;:::-;7312:23;;:7;:5;:7::i;:::-;:23;;;7304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;13889:5:::1;13875:11;;:19;;;;;;;;;;;;;;;;;;13910:13;;;;;;;;;;13764:167:::0;:::o;15991:220::-;7323:12;:10;:12::i;:::-;7312:23;;:7;:5;:7::i;:::-;:23;;;7304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;16078:7:::1;16068:6;:17;;16060:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;16160:6;16150;:17;;;;:::i;:::-;16136:11;:31;;;;16183:20;;;;;;;;;;15991:220:::0;:::o;7502:192::-;7323:12;:10;:12::i;:::-;7312:23;;:7;:5;:7::i;:::-;:23;;;7304:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7611:1:::1;7591:22;;:8;:22;;::::0;7583:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;7667:19;7677:8;7667:9;:19::i;:::-;7502:192:::0;:::o;9945:37::-;;;;;;;;;;;;;;:::o;8712:21::-;;;;;;;;;;;;;:::o;1462:98::-;1515:7;1542:10;1535:17;;1462:98;:::o;6147:346::-;6266:1;6249:19;;:5;:19;;;6241:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6347:1;6328:21;;:7;:21;;;6320:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6431:6;6401:11;:18;6413:5;6401:18;;;;;;;;;;;;;;;:27;6420:7;6401:27;;;;;;;;;;;;;;;:36;;;;6469:7;6453:32;;6462:5;6453:32;;;6478:6;6453:32;;;;;;:::i;:::-;;;;;;;;6147:346;;;:::o;10901:1145::-;11017:1;11008:6;:10;11000:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;11107:16;:24;11124:6;11107:24;;;;;;;;;;;;;;;;;;;;;;;;;11106:25;:57;;;;;11136:16;:27;11153:9;11136:27;;;;;;;;;;;;;;;;;;;;;;;;;11135:28;11106:57;:70;;;;;11168:8;;;;;;;;;;;11167:9;11106:70;11103:386;;;11200:8;;;;;;;;;;;11192:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;11268:11;;11258:6;:21;;11250:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;11344:4;;;;;;;;;;;11331:17;;:9;:17;;;11328:150;;11409:15;;11399:6;11376:20;11386:9;11376;:20::i;:::-;:29;;;;:::i;:::-;:48;;11368:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;11328:150;11103:386;11501:11;11539:8;;;;;;;;;;;:36;;;;11551:16;:24;11568:6;11551:24;;;;;;;;;;;;;;;;;;;;;;;;;11539:36;:67;;;;11579:16;:27;11596:9;11579:27;;;;;;;;;;;;;;;;;;;;;;;;;11539:67;11535:284;;;11614:1;11608:7;;11535:284;;;11672:4;;;;;;;;;;;11659:17;;:9;:17;;;11656:151;;11706:4;11693:10;;11684:6;:19;;;;:::i;:::-;:26;;;;:::i;:::-;11678:32;;11656:151;;;11743:4;;;;;;;;;;;11733:14;;:6;:14;;;11730:77;;11776:4;11764:9;;11755:6;:18;;;;:::i;:::-;:25;;;;:::i;:::-;11749:31;;11730:77;;;11806:1;11800:7;;11730:77;11656:151;11535:284;11843:11;;;;;;;;;;;:24;;;;;11859:8;;;;;;;;;;;11858:9;11843:24;:42;;;;;11881:4;;;;;;;;;;;11871:14;;:6;:14;;;;11843:42;:53;;;;;11895:1;11889:3;:7;11843:53;11839:72;;;11898:13;:11;:13::i;:::-;11839:72;11924:48;11940:6;11948:9;11968:3;11959:6;:12;;;;:::i;:::-;11924:15;:48::i;:::-;11992:1;11986:3;:7;11983:55;;;11995:43;12011:6;12027:4;12034:3;11995:15;:43::i;:::-;11983:55;10989:1057;10901:1145;;;:::o;12849:398::-;12915:21;12953:1;12939:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12915:40;;12984:4;12966;12971:1;12966:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13010:6;;;;;;;;;;;:11;;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13000:4;13005:1;13000:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;13036:53;13053:4;13068:6;;;;;;;;;;;13077:11;13036:8;:53::i;:::-;13128:6;;;;;;;;;;;:57;;;13186:11;13199:1;13202:4;13216;13223:15;13128:111;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12904:343;12849:398;:::o;7702:173::-;7758:16;7777:6;;;;;;;;;;;7758:25;;7803:8;7794:6;;:17;;;;;;;;;;;;;;;;;;7858:8;7827:40;;7848:8;7827:40;;;;;;;;;;;;7747:128;7702:173;:::o;12054:783::-;10224:8;;;;;;;;;;;10219:104;;10260:4;10249:8;;:15;;;;;;;;;;;;;;;;;;12103:23:::1;12129:24;12147:4;12129:9;:24::i;:::-;12103:50;;12189:13;;12170:15;:32;12166:664;;12219:14;12236:15;12219:32;;12272:22;12297:21;12272:46;;12339:24;12356:6;12339:16;:24::i;:::-;12384:20;12431:14;12407:21;:38;;;;:::i;:::-;12384:61;;12460:20;12503:3;12498:2;12483:12;:17;;;;:::i;:::-;:23;;;;:::i;:::-;12460:46;;12522:22;12562:12;12547;:27;;;;:::i;:::-;12522:52;;12609:1;12594:12;:16;12591:103;;;12630:48;12665:12;12638:15;;;;;;;;;;;12630:34;;;;:48;;;;:::i;:::-;12591:103;12730:1;12713:14;:18;12710:109;;;12751:52;12788:14;12759:17;;;;;;;;;;;12751:36;;;;:52;;;;:::i;:::-;12710:109;12204:626;;;;;12166:664;12092:745;10306:5:::0;10295:8;;:16;;;;;;;;;;;;;;;;;;10219:104;12054:783::o;5189:604::-;5313:1;5295:20;;:6;:20;;;5287:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;5397:1;5376:23;;:9;:23;;;5368:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;5452:47;5473:6;5481:9;5492:6;5452:20;:47::i;:::-;5512:21;5536:9;:17;5546:6;5536:17;;;;;;;;;;;;;;;;5512:41;;5589:6;5572:13;:23;;5564:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5685:6;5669:13;:22;;;;:::i;:::-;5649:9;:17;5659:6;5649:17;;;;;;;;;;;;;;;:42;;;;5726:6;5702:9;:20;5712:9;5702:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;5767:9;5750:35;;5759:6;5750:35;;;5778:6;5750:35;;;;;;:::i;:::-;;;;;;;;5276:517;5189:604;;;:::o;6622:317::-;6737:6;6712:21;:31;;6704:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;6791:12;6809:9;:14;;6831:6;6809:33;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6790:52;;;6861:7;6853:78;;;;;;;;;;;;:::i;:::-;;;;;;;;;6693:246;6622:317;;:::o;6501:92::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:474::-;4491:6;4499;4548:2;4536:9;4527:7;4523:23;4519:32;4516:119;;;4554:79;;:::i;:::-;4516:119;4674:1;4699:53;4744:7;4735:6;4724:9;4720:22;4699:53;:::i;:::-;4689:63;;4645:117;4801:2;4827:53;4872:7;4863:6;4852:9;4848:22;4827:53;:::i;:::-;4817:63;;4772:118;4423:474;;;;;:::o;4903:329::-;4962:6;5011:2;4999:9;4990:7;4986:23;4982:32;4979:119;;;5017:79;;:::i;:::-;4979:119;5137:1;5162:53;5207:7;5198:6;5187:9;5183:22;5162:53;:::i;:::-;5152:63;;5108:117;4903:329;;;;:::o;5238:86::-;5273:7;5313:4;5306:5;5302:16;5291:27;;5238:86;;;:::o;5330:112::-;5413:22;5429:5;5413:22;:::i;:::-;5408:3;5401:35;5330:112;;:::o;5448:214::-;5537:4;5575:2;5564:9;5560:18;5552:26;;5588:67;5652:1;5641:9;5637:17;5628:6;5588:67;:::i;:::-;5448:214;;;;:::o;5668:116::-;5738:21;5753:5;5738:21;:::i;:::-;5731:5;5728:32;5718:60;;5774:1;5771;5764:12;5718:60;5668:116;:::o;5790:133::-;5833:5;5871:6;5858:20;5849:29;;5887:30;5911:5;5887:30;:::i;:::-;5790:133;;;;:::o;5929:468::-;5994:6;6002;6051:2;6039:9;6030:7;6026:23;6022:32;6019:119;;;6057:79;;:::i;:::-;6019:119;6177:1;6202:53;6247:7;6238:6;6227:9;6223:22;6202:53;:::i;:::-;6192:63;;6148:117;6304:2;6330:50;6372:7;6363:6;6352:9;6348:22;6330:50;:::i;:::-;6320:60;;6275:115;5929:468;;;;;:::o;6403:329::-;6462:6;6511:2;6499:9;6490:7;6486:23;6482:32;6479:119;;;6517:79;;:::i;:::-;6479:119;6637:1;6662:53;6707:7;6698:6;6687:9;6683:22;6662:53;:::i;:::-;6652:63;;6608:117;6403:329;;;;:::o;6738:118::-;6825:24;6843:5;6825:24;:::i;:::-;6820:3;6813:37;6738:118;;:::o;6862:222::-;6955:4;6993:2;6982:9;6978:18;6970:26;;7006:71;7074:1;7063:9;7059:17;7050:6;7006:71;:::i;:::-;6862:222;;;;:::o;7090:332::-;7211:4;7249:2;7238:9;7234:18;7226:26;;7262:71;7330:1;7319:9;7315:17;7306:6;7262:71;:::i;:::-;7343:72;7411:2;7400:9;7396:18;7387:6;7343:72;:::i;:::-;7090:332;;;;;:::o;7428:474::-;7496:6;7504;7553:2;7541:9;7532:7;7528:23;7524:32;7521:119;;;7559:79;;:::i;:::-;7521:119;7679:1;7704:53;7749:7;7740:6;7729:9;7725:22;7704:53;:::i;:::-;7694:63;;7650:117;7806:2;7832:53;7877:7;7868:6;7857:9;7853:22;7832:53;:::i;:::-;7822:63;;7777:118;7428:474;;;;;:::o;7908:323::-;7964:6;8013:2;8001:9;7992:7;7988:23;7984:32;7981:119;;;8019:79;;:::i;:::-;7981:119;8139:1;8164:50;8206:7;8197:6;8186:9;8182:22;8164:50;:::i;:::-;8154:60;;8110:114;7908:323;;;;:::o;8237:60::-;8265:3;8286:5;8279:12;;8237:60;;;:::o;8303:142::-;8353:9;8386:53;8404:34;8413:24;8431:5;8413:24;:::i;:::-;8404:34;:::i;:::-;8386:53;:::i;:::-;8373:66;;8303:142;;;:::o;8451:126::-;8501:9;8534:37;8565:5;8534:37;:::i;:::-;8521:50;;8451:126;;;:::o;8583:141::-;8648:9;8681:37;8712:5;8681:37;:::i;:::-;8668:50;;8583:141;;;:::o;8730:161::-;8832:52;8878:5;8832:52;:::i;:::-;8827:3;8820:65;8730:161;;:::o;8897:252::-;9005:4;9043:2;9032:9;9028:18;9020:26;;9056:86;9139:1;9128:9;9124:17;9115:6;9056:86;:::i;:::-;8897:252;;;;:::o;9155:182::-;9295:34;9291:1;9283:6;9279:14;9272:58;9155:182;:::o;9343:366::-;9485:3;9506:67;9570:2;9565:3;9506:67;:::i;:::-;9499:74;;9582:93;9671:3;9582:93;:::i;:::-;9700:2;9695:3;9691:12;9684:19;;9343:366;;;:::o;9715:419::-;9881:4;9919:2;9908:9;9904:18;9896:26;;9968:9;9962:4;9958:20;9954:1;9943:9;9939:17;9932:47;9996:131;10122:4;9996:131;:::i;:::-;9988:139;;9715:419;;;:::o;10140:172::-;10280:24;10276:1;10268:6;10264:14;10257:48;10140:172;:::o;10318:366::-;10460:3;10481:67;10545:2;10540:3;10481:67;:::i;:::-;10474:74;;10557:93;10646:3;10557:93;:::i;:::-;10675:2;10670:3;10666:12;10659:19;;10318:366;;;:::o;10690:419::-;10856:4;10894:2;10883:9;10879:18;10871:26;;10943:9;10937:4;10933:20;10929:1;10918:9;10914:17;10907:47;10971:131;11097:4;10971:131;:::i;:::-;10963:139;;10690:419;;;:::o;11115:180::-;11163:77;11160:1;11153:88;11260:4;11257:1;11250:15;11284:4;11281:1;11274:15;11301:320;11345:6;11382:1;11376:4;11372:12;11362:22;;11429:1;11423:4;11419:12;11450:18;11440:81;;11506:4;11498:6;11494:17;11484:27;;11440:81;11568:2;11560:6;11557:14;11537:18;11534:38;11531:84;;11587:18;;:::i;:::-;11531:84;11352:269;11301:320;;;:::o;11627:227::-;11767:34;11763:1;11755:6;11751:14;11744:58;11836:10;11831:2;11823:6;11819:15;11812:35;11627:227;:::o;11860:366::-;12002:3;12023:67;12087:2;12082:3;12023:67;:::i;:::-;12016:74;;12099:93;12188:3;12099:93;:::i;:::-;12217:2;12212:3;12208:12;12201:19;;11860:366;;;:::o;12232:419::-;12398:4;12436:2;12425:9;12421:18;12413:26;;12485:9;12479:4;12475:20;12471:1;12460:9;12456:17;12449:47;12513:131;12639:4;12513:131;:::i;:::-;12505:139;;12232:419;;;:::o;12657:180::-;12705:77;12702:1;12695:88;12802:4;12799:1;12792:15;12826:4;12823:1;12816:15;12843:194;12883:4;12903:20;12921:1;12903:20;:::i;:::-;12898:25;;12937:20;12955:1;12937:20;:::i;:::-;12932:25;;12981:1;12978;12974:9;12966:17;;13005:1;12999:4;12996:11;12993:37;;;13010:18;;:::i;:::-;12993:37;12843:194;;;;:::o;13043:143::-;13100:5;13131:6;13125:13;13116:22;;13147:33;13174:5;13147:33;:::i;:::-;13043:143;;;;:::o;13192:351::-;13262:6;13311:2;13299:9;13290:7;13286:23;13282:32;13279:119;;;13317:79;;:::i;:::-;13279:119;13437:1;13462:64;13518:7;13509:6;13498:9;13494:22;13462:64;:::i;:::-;13452:74;;13408:128;13192:351;;;;:::o;13549:332::-;13670:4;13708:2;13697:9;13693:18;13685:26;;13721:71;13789:1;13778:9;13774:17;13765:6;13721:71;:::i;:::-;13802:72;13870:2;13859:9;13855:18;13846:6;13802:72;:::i;:::-;13549:332;;;;;:::o;13887:137::-;13941:5;13972:6;13966:13;13957:22;;13988:30;14012:5;13988:30;:::i;:::-;13887:137;;;;:::o;14030:345::-;14097:6;14146:2;14134:9;14125:7;14121:23;14117:32;14114:119;;;14152:79;;:::i;:::-;14114:119;14272:1;14297:61;14350:7;14341:6;14330:9;14326:22;14297:61;:::i;:::-;14287:71;;14243:125;14030:345;;;;:::o;14381:222::-;14521:34;14517:1;14509:6;14505:14;14498:58;14590:5;14585:2;14577:6;14573:15;14566:30;14381:222;:::o;14609:366::-;14751:3;14772:67;14836:2;14831:3;14772:67;:::i;:::-;14765:74;;14848:93;14937:3;14848:93;:::i;:::-;14966:2;14961:3;14957:12;14950:19;;14609:366;;;:::o;14981:419::-;15147:4;15185:2;15174:9;15170:18;15162:26;;15234:9;15228:4;15224:20;15220:1;15209:9;15205:17;15198:47;15262:131;15388:4;15262:131;:::i;:::-;15254:139;;14981:419;;;:::o;15406:410::-;15446:7;15469:20;15487:1;15469:20;:::i;:::-;15464:25;;15503:20;15521:1;15503:20;:::i;:::-;15498:25;;15558:1;15555;15551:9;15580:30;15598:11;15580:30;:::i;:::-;15569:41;;15759:1;15750:7;15746:15;15743:1;15740:22;15720:1;15713:9;15693:83;15670:139;;15789:18;;:::i;:::-;15670:139;15454:362;15406:410;;;;:::o;15822:191::-;15862:3;15881:20;15899:1;15881:20;:::i;:::-;15876:25;;15915:20;15933:1;15915:20;:::i;:::-;15910:25;;15958:1;15955;15951:9;15944:16;;15979:3;15976:1;15973:10;15970:36;;;15986:18;;:::i;:::-;15970:36;15822:191;;;;:::o;16019:226::-;16159:34;16155:1;16147:6;16143:14;16136:58;16228:9;16223:2;16215:6;16211:15;16204:34;16019:226;:::o;16251:366::-;16393:3;16414:67;16478:2;16473:3;16414:67;:::i;:::-;16407:74;;16490:93;16579:3;16490:93;:::i;:::-;16608:2;16603:3;16599:12;16592:19;;16251:366;;;:::o;16623:419::-;16789:4;16827:2;16816:9;16812:18;16804:26;;16876:9;16870:4;16866:20;16862:1;16851:9;16847:17;16840:47;16904:131;17030:4;16904:131;:::i;:::-;16896:139;;16623:419;;;:::o;17048:180::-;17096:77;17093:1;17086:88;17193:4;17190:1;17183:15;17217:4;17214:1;17207:15;17234:185;17274:1;17291:20;17309:1;17291:20;:::i;:::-;17286:25;;17325:20;17343:1;17325:20;:::i;:::-;17320:25;;17364:1;17354:35;;17369:18;;:::i;:::-;17354:35;17411:1;17408;17404:9;17399:14;;17234:185;;;;:::o;17425:147::-;17526:11;17563:3;17548:18;;17425:147;;;;:::o;17578:114::-;;:::o;17698:398::-;17857:3;17878:83;17959:1;17954:3;17878:83;:::i;:::-;17871:90;;17970:93;18059:3;17970:93;:::i;:::-;18088:1;18083:3;18079:11;18072:18;;17698:398;;;:::o;18102:379::-;18286:3;18308:147;18451:3;18308:147;:::i;:::-;18301:154;;18472:3;18465:10;;18102:379;;;:::o;18487:228::-;18627:34;18623:1;18615:6;18611:14;18604:58;18696:11;18691:2;18683:6;18679:15;18672:36;18487:228;:::o;18721:366::-;18863:3;18884:67;18948:2;18943:3;18884:67;:::i;:::-;18877:74;;18960:93;19049:3;18960:93;:::i;:::-;19078:2;19073:3;19069:12;19062:19;;18721:366;;;:::o;19093:419::-;19259:4;19297:2;19286:9;19282:18;19274:26;;19346:9;19340:4;19336:20;19332:1;19321:9;19317:17;19310:47;19374:131;19500:4;19374:131;:::i;:::-;19366:139;;19093:419;;;:::o;19518:240::-;19658:34;19654:1;19646:6;19642:14;19635:58;19727:23;19722:2;19714:6;19710:15;19703:48;19518:240;:::o;19764:366::-;19906:3;19927:67;19991:2;19986:3;19927:67;:::i;:::-;19920:74;;20003:93;20092:3;20003:93;:::i;:::-;20121:2;20116:3;20112:12;20105:19;;19764:366;;;:::o;20136:419::-;20302:4;20340:2;20329:9;20325:18;20317:26;;20389:9;20383:4;20379:20;20375:1;20364:9;20360:17;20353:47;20417:131;20543:4;20417:131;:::i;:::-;20409:139;;20136:419;;;:::o;20561:237::-;20701:34;20697:1;20689:6;20685:14;20678:58;20770:20;20765:2;20757:6;20753:15;20746:45;20561:237;:::o;20804:366::-;20946:3;20967:67;21031:2;21026:3;20967:67;:::i;:::-;20960:74;;21043:93;21132:3;21043:93;:::i;:::-;21161:2;21156:3;21152:12;21145:19;;20804:366;;;:::o;21176:419::-;21342:4;21380:2;21369:9;21365:18;21357:26;;21429:9;21423:4;21419:20;21415:1;21404:9;21400:17;21393:47;21457:131;21583:4;21457:131;:::i;:::-;21449:139;;21176:419;;;:::o;21601:229::-;21741:34;21737:1;21729:6;21725:14;21718:58;21810:12;21805:2;21797:6;21793:15;21786:37;21601:229;:::o;21836:366::-;21978:3;21999:67;22063:2;22058:3;21999:67;:::i;:::-;21992:74;;22075:93;22164:3;22075:93;:::i;:::-;22193:2;22188:3;22184:12;22177:19;;21836:366;;;:::o;22208:419::-;22374:4;22412:2;22401:9;22397:18;22389:26;;22461:9;22455:4;22451:20;22447:1;22436:9;22432:17;22425:47;22489:131;22615:4;22489:131;:::i;:::-;22481:139;;22208:419;;;:::o;22633:225::-;22773:34;22769:1;22761:6;22757:14;22750:58;22842:8;22837:2;22829:6;22825:15;22818:33;22633:225;:::o;22864:366::-;23006:3;23027:67;23091:2;23086:3;23027:67;:::i;:::-;23020:74;;23103:93;23192:3;23103:93;:::i;:::-;23221:2;23216:3;23212:12;23205:19;;22864:366;;;:::o;23236:419::-;23402:4;23440:2;23429:9;23425:18;23417:26;;23489:9;23483:4;23479:20;23475:1;23464:9;23460:17;23453:47;23517:131;23643:4;23517:131;:::i;:::-;23509:139;;23236:419;;;:::o;23661:224::-;23801:34;23797:1;23789:6;23785:14;23778:58;23870:7;23865:2;23857:6;23853:15;23846:32;23661:224;:::o;23891:366::-;24033:3;24054:67;24118:2;24113:3;24054:67;:::i;:::-;24047:74;;24130:93;24219:3;24130:93;:::i;:::-;24248:2;24243:3;24239:12;24232:19;;23891:366;;;:::o;24263:419::-;24429:4;24467:2;24456:9;24452:18;24444:26;;24516:9;24510:4;24506:20;24502:1;24491:9;24487:17;24480:47;24544:131;24670:4;24544:131;:::i;:::-;24536:139;;24263:419;;;:::o;24688:228::-;24828:34;24824:1;24816:6;24812:14;24805:58;24897:11;24892:2;24884:6;24880:15;24873:36;24688:228;:::o;24922:366::-;25064:3;25085:67;25149:2;25144:3;25085:67;:::i;:::-;25078:74;;25161:93;25250:3;25161:93;:::i;:::-;25279:2;25274:3;25270:12;25263:19;;24922:366;;;:::o;25294:419::-;25460:4;25498:2;25487:9;25483:18;25475:26;;25547:9;25541:4;25537:20;25533:1;25522:9;25518:17;25511:47;25575:131;25701:4;25575:131;:::i;:::-;25567:139;;25294:419;;;:::o;25719:225::-;25859:34;25855:1;25847:6;25843:14;25836:58;25928:8;25923:2;25915:6;25911:15;25904:33;25719:225;:::o;25950:366::-;26092:3;26113:67;26177:2;26172:3;26113:67;:::i;:::-;26106:74;;26189:93;26278:3;26189:93;:::i;:::-;26307:2;26302:3;26298:12;26291:19;;25950:366;;;:::o;26322:419::-;26488:4;26526:2;26515:9;26511:18;26503:26;;26575:9;26569:4;26565:20;26561:1;26550:9;26546:17;26539:47;26603:131;26729:4;26603:131;:::i;:::-;26595:139;;26322:419;;;:::o;26747:223::-;26887:34;26883:1;26875:6;26871:14;26864:58;26956:6;26951:2;26943:6;26939:15;26932:31;26747:223;:::o;26976:366::-;27118:3;27139:67;27203:2;27198:3;27139:67;:::i;:::-;27132:74;;27215:93;27304:3;27215:93;:::i;:::-;27333:2;27328:3;27324:12;27317:19;;26976:366;;;:::o;27348:419::-;27514:4;27552:2;27541:9;27537:18;27529:26;;27601:9;27595:4;27591:20;27587:1;27576:9;27572:17;27565:47;27629:131;27755:4;27629:131;:::i;:::-;27621:139;;27348:419;;;:::o;27773:221::-;27913:34;27909:1;27901:6;27897:14;27890:58;27982:4;27977:2;27969:6;27965:15;27958:29;27773:221;:::o;28000:366::-;28142:3;28163:67;28227:2;28222:3;28163:67;:::i;:::-;28156:74;;28239:93;28328:3;28239:93;:::i;:::-;28357:2;28352:3;28348:12;28341:19;;28000:366;;;:::o;28372:419::-;28538:4;28576:2;28565:9;28561:18;28553:26;;28625:9;28619:4;28615:20;28611:1;28600:9;28596:17;28589:47;28653:131;28779:4;28653:131;:::i;:::-;28645:139;;28372:419;;;:::o;28797:228::-;28937:34;28933:1;28925:6;28921:14;28914:58;29006:11;29001:2;28993:6;28989:15;28982:36;28797:228;:::o;29031:366::-;29173:3;29194:67;29258:2;29253:3;29194:67;:::i;:::-;29187:74;;29270:93;29359:3;29270:93;:::i;:::-;29388:2;29383:3;29379:12;29372:19;;29031:366;;;:::o;29403:419::-;29569:4;29607:2;29596:9;29592:18;29584:26;;29656:9;29650:4;29646:20;29642:1;29631:9;29627:17;29620:47;29684:131;29810:4;29684:131;:::i;:::-;29676:139;;29403:419;;;:::o;29828:172::-;29968:24;29964:1;29956:6;29952:14;29945:48;29828:172;:::o;30006:366::-;30148:3;30169:67;30233:2;30228:3;30169:67;:::i;:::-;30162:74;;30245:93;30334:3;30245:93;:::i;:::-;30363:2;30358:3;30354:12;30347:19;;30006:366;;;:::o;30378:419::-;30544:4;30582:2;30571:9;30567:18;30559:26;;30631:9;30625:4;30621:20;30617:1;30606:9;30602:17;30595:47;30659:131;30785:4;30659:131;:::i;:::-;30651:139;;30378:419;;;:::o;30803:179::-;30943:31;30939:1;30931:6;30927:14;30920:55;30803:179;:::o;30988:366::-;31130:3;31151:67;31215:2;31210:3;31151:67;:::i;:::-;31144:74;;31227:93;31316:3;31227:93;:::i;:::-;31345:2;31340:3;31336:12;31329:19;;30988:366;;;:::o;31360:419::-;31526:4;31564:2;31553:9;31549:18;31541:26;;31613:9;31607:4;31603:20;31599:1;31588:9;31584:17;31577:47;31641:131;31767:4;31641:131;:::i;:::-;31633:139;;31360:419;;;:::o;31785:220::-;31925:34;31921:1;31913:6;31909:14;31902:58;31994:3;31989:2;31981:6;31977:15;31970:28;31785:220;:::o;32011:366::-;32153:3;32174:67;32238:2;32233:3;32174:67;:::i;:::-;32167:74;;32250:93;32339:3;32250:93;:::i;:::-;32368:2;32363:3;32359:12;32352:19;;32011:366;;;:::o;32383:419::-;32549:4;32587:2;32576:9;32572:18;32564:26;;32636:9;32630:4;32626:20;32622:1;32611:9;32607:17;32600:47;32664:131;32790:4;32664:131;:::i;:::-;32656:139;;32383:419;;;:::o;32808:180::-;32856:77;32853:1;32846:88;32953:4;32950:1;32943:15;32977:4;32974:1;32967:15;32994:180;33042:77;33039:1;33032:88;33139:4;33136:1;33129:15;33163:4;33160:1;33153:15;33180:143;33237:5;33268:6;33262:13;33253:22;;33284:33;33311:5;33284:33;:::i;:::-;33180:143;;;;:::o;33329:351::-;33399:6;33448:2;33436:9;33427:7;33423:23;33419:32;33416:119;;;33454:79;;:::i;:::-;33416:119;33574:1;33599:64;33655:7;33646:6;33635:9;33631:22;33599:64;:::i;:::-;33589:74;;33545:128;33329:351;;;;:::o;33686:85::-;33731:7;33760:5;33749:16;;33686:85;;;:::o;33777:158::-;33835:9;33868:61;33886:42;33895:32;33921:5;33895:32;:::i;:::-;33886:42;:::i;:::-;33868:61;:::i;:::-;33855:74;;33777:158;;;:::o;33941:147::-;34036:45;34075:5;34036:45;:::i;:::-;34031:3;34024:58;33941:147;;:::o;34094:114::-;34161:6;34195:5;34189:12;34179:22;;34094:114;;;:::o;34214:184::-;34313:11;34347:6;34342:3;34335:19;34387:4;34382:3;34378:14;34363:29;;34214:184;;;;:::o;34404:132::-;34471:4;34494:3;34486:11;;34524:4;34519:3;34515:14;34507:22;;34404:132;;;:::o;34542:108::-;34619:24;34637:5;34619:24;:::i;:::-;34614:3;34607:37;34542:108;;:::o;34656:179::-;34725:10;34746:46;34788:3;34780:6;34746:46;:::i;:::-;34824:4;34819:3;34815:14;34801:28;;34656:179;;;;:::o;34841:113::-;34911:4;34943;34938:3;34934:14;34926:22;;34841:113;;;:::o;34990:732::-;35109:3;35138:54;35186:5;35138:54;:::i;:::-;35208:86;35287:6;35282:3;35208:86;:::i;:::-;35201:93;;35318:56;35368:5;35318:56;:::i;:::-;35397:7;35428:1;35413:284;35438:6;35435:1;35432:13;35413:284;;;35514:6;35508:13;35541:63;35600:3;35585:13;35541:63;:::i;:::-;35534:70;;35627:60;35680:6;35627:60;:::i;:::-;35617:70;;35473:224;35460:1;35457;35453:9;35448:14;;35413:284;;;35417:14;35713:3;35706:10;;35114:608;;;34990:732;;;;:::o;35728:831::-;35991:4;36029:3;36018:9;36014:19;36006:27;;36043:71;36111:1;36100:9;36096:17;36087:6;36043:71;:::i;:::-;36124:80;36200:2;36189:9;36185:18;36176:6;36124:80;:::i;:::-;36251:9;36245:4;36241:20;36236:2;36225:9;36221:18;36214:48;36279:108;36382:4;36373:6;36279:108;:::i;:::-;36271:116;;36397:72;36465:2;36454:9;36450:18;36441:6;36397:72;:::i;:::-;36479:73;36547:3;36536:9;36532:19;36523:6;36479:73;:::i;:::-;35728:831;;;;;;;;:::o;36565:224::-;36705:34;36701:1;36693:6;36689:14;36682:58;36774:7;36769:2;36761:6;36757:15;36750:32;36565:224;:::o;36795:366::-;36937:3;36958:67;37022:2;37017:3;36958:67;:::i;:::-;36951:74;;37034:93;37123:3;37034:93;:::i;:::-;37152:2;37147:3;37143:12;37136:19;;36795:366;;;:::o;37167:419::-;37333:4;37371:2;37360:9;37356:18;37348:26;;37420:9;37414:4;37410:20;37406:1;37395:9;37391:17;37384:47;37448:131;37574:4;37448:131;:::i;:::-;37440:139;;37167:419;;;:::o;37592:222::-;37732:34;37728:1;37720:6;37716:14;37709:58;37801:5;37796:2;37788:6;37784:15;37777:30;37592:222;:::o;37820:366::-;37962:3;37983:67;38047:2;38042:3;37983:67;:::i;:::-;37976:74;;38059:93;38148:3;38059:93;:::i;:::-;38177:2;38172:3;38168:12;38161:19;;37820:366;;;:::o;38192:419::-;38358:4;38396:2;38385:9;38381:18;38373:26;;38445:9;38439:4;38435:20;38431:1;38420:9;38416:17;38409:47;38473:131;38599:4;38473:131;:::i;:::-;38465:139;;38192:419;;;:::o;38617:225::-;38757:34;38753:1;38745:6;38741:14;38734:58;38826:8;38821:2;38813:6;38809:15;38802:33;38617:225;:::o;38848:366::-;38990:3;39011:67;39075:2;39070:3;39011:67;:::i;:::-;39004:74;;39087:93;39176:3;39087:93;:::i;:::-;39205:2;39200:3;39196:12;39189:19;;38848:366;;;:::o;39220:419::-;39386:4;39424:2;39413:9;39409:18;39401:26;;39473:9;39467:4;39463:20;39459:1;39448:9;39444:17;39437:47;39501:131;39627:4;39501:131;:::i;:::-;39493:139;;39220:419;;;:::o;39645:179::-;39785:31;39781:1;39773:6;39769:14;39762:55;39645:179;:::o;39830:366::-;39972:3;39993:67;40057:2;40052:3;39993:67;:::i;:::-;39986:74;;40069:93;40158:3;40069:93;:::i;:::-;40187:2;40182:3;40178:12;40171:19;;39830:366;;;:::o;40202:419::-;40368:4;40406:2;40395:9;40391:18;40383:26;;40455:9;40449:4;40445:20;40441:1;40430:9;40426:17;40419:47;40483:131;40609:4;40483:131;:::i;:::-;40475:139;;40202:419;;;:::o;40627:245::-;40767:34;40763:1;40755:6;40751:14;40744:58;40836:28;40831:2;40823:6;40819:15;40812:53;40627:245;:::o;40878:366::-;41020:3;41041:67;41105:2;41100:3;41041:67;:::i;:::-;41034:74;;41117:93;41206:3;41117:93;:::i;:::-;41235:2;41230:3;41226:12;41219:19;;40878:366;;;:::o;41250:419::-;41416:4;41454:2;41443:9;41439:18;41431:26;;41503:9;41497:4;41493:20;41489:1;41478:9;41474:17;41467:47;41531:131;41657:4;41531:131;:::i;:::-;41523:139;;41250:419;;;:::o

Swarm Source

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