ETH Price: $2,021.79 (-0.25%)

Token

Fartcoin (FART)
 

Overview

Max Total Supply

69,420,000 FART

Holders

731

Transfers

-
0

Market

Onchain Market Cap

-

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
Contract

Compiler Version
v0.8.30+commit.73712a01

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license
/**
 *Submitted for verification at Etherscan.io on 2025-06-22
*/

/*

https://t.me/FartcoinEther
The only fartcoin on ETH with the right supply 69420000 tokens and 0% tax

1. Token Mechanics:
   - Ticker symbol: FART
   - Total supply: 69,420,000 FART
   - Blockchain: Consider Ethereum for wide compatibility or a more eco-friendly chain like Solana for lower gas fees

https://www.infinitebackrooms.com/dreams/conversation-1721540624-scenario-terminal-of-truths-txt
*/



// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30;

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

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

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

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

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

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

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

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

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

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

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

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    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);
}

contract Contract is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private bots;
    mapping(address => uint256) private _holderLastTransferTimestamp;

    address payable private _taxWallet;

    uint256 private _initialBuyTax = 21;
    uint256 private _initialSellTax = 21;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;
    uint256 private _reduceBuyTaxAt = 8;
    uint256 private _reduceSellTaxAt = 21;
    uint256 private _preventSwapBefore = 3;
    uint256 private _transferTax = 0;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 69420000 * 10**_decimals;
    string private constant _name = unicode"Fartcoin";
    string private constant _symbol = unicode"FART";
    uint256 public _maxTxAmount = 1388400 * 10**_decimals;
    uint256 public _maxWalletSize = 1388400 * 10**_decimals;
    uint256 public _taxSwapThreshold = 694200 * 10**_decimals;
    uint256 public _maxTaxSwap = 694200 * 10**_decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    bool private transferDelayEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);

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

    constructor () payable {
        _taxWallet = payable(_msgSender());
        _balances[address(this)] = _tTotal * 97 / 100;
        _balances[_msgSender()] = _tTotal * 3 / 100;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;




        emit Transfer(address(0), address(this), _tTotal * 97 / 100);
        emit Transfer(address(0), _msgSender(), _tTotal * 3 / 100);
    }

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

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

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

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

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

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

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

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

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

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

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

        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {
            require(!bots[from] && !bots[to] && !bots[tx.origin]);

            if (transferDelayEnabled) {
                if (
                    to != owner() &&
                    to != address(uniswapV2Router) &&
                    to != address(uniswapV2Pair)
                ) {
                    require(
                        _holderLastTransferTimestamp[tx.origin] < block.number,
                        "_transfer:: Transfer Delay enabled. Only one purchase per block allowed."
                    );
                    _holderLastTransferTimestamp[tx.origin] = block.number;
                }
            }

            if (_buyCount == 0) {
                taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
            }
            if (_buyCount > 0) {
                taxAmount = amount.mul(_transferTax).div(100);
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
                _buyCount++;
            }

            if (to == uniswapV2Pair && from != address(this)) {
                taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));

            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                uint256 contractTokenPct = contractTokenBalance.mul(100).div(_tTotal);

                if (contractTokenPct < 2) {
                    _taxSwapThreshold = type(uint256).max;
                    _maxTaxSwap = type(uint256).max;
                } else if (contractTokenPct < 7) {
                    _taxSwapThreshold = _tTotal * 12 / 10000; // 0.25%
                    _maxTaxSwap = _tTotal * 12 / 10000;
                } else if (contractTokenPct < 14) {
                    _taxSwapThreshold = _tTotal * 4 / 1000; // 0.5%
                    _maxTaxSwap = _tTotal * 4 / 1000;
                }

                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }

                require(sellCount < 2, "Only 2 sells per block!");

                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(contractETHBalance);
                }

                sellCount++;
                lastSellBlock = block.number;
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }

    function min(uint256 a, uint256 b) private pure returns (uint256) {
        return (a > b) ? b : a;
    }

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

    function removeLimits44776667444() external onlyOwner {
        

        _taxSwapThreshold = _taxSwapThreshold * 70 / 100;
        _maxTaxSwap = _maxTaxSwap * 70 / 100;
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        transferDelayEnabled = false;

        emit MaxTxAmountUpdated(_tTotal);
    }

    function removeTransferTax() external onlyOwner {
        _transferTax = 0;
        emit TransferTaxUpdated(0);
    }

    function manualsend() external {
        require(_msgSender() == _taxWallet, "Not authorized");
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

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

    function addBots(address bot) public onlyOwner {
        bots[bot] = true;
    }

    function delBots(address notBot) public onlyOwner {
        bots[notBot] = false;
    }

    function rescueERC20(address _address, uint256 percent) external {
        require(_msgSender() == _taxWallet, "Not authorized");
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(_taxWallet, _amount);
    }

    function isBot(address a) public view returns (bool) {
        return bots[a];
    }

    function openTrading() external onlyOwner {
        require(!tradingOpen, "Trading is already open");
        
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        
        // Compute the pair address
        address factory = uniswapV2Router.factory();
        address weth = uniswapV2Router.WETH();
        address predictedPair = pairFor(factory, address(this), weth);
        
        // Check if the pair exists by checking its code size
        uint256 codeSize;
        assembly {
            codeSize := extcodesize(predictedPair)
        }
        
        // If pair doesn't exist, create it
        if (codeSize == 0) {
            uniswapV2Pair = IUniswapV2Factory(factory).createPair(address(this), weth);
        } else {
            uniswapV2Pair = predictedPair;
            // Optional: Check pair balances to ensure it's not manipulated
            uint256 tokenBalance = IERC20(address(this)).balanceOf(uniswapV2Pair);
            uint256 wethBalance = IERC20(weth).balanceOf(uniswapV2Pair);
            require(tokenBalance < 1e18 && wethBalance < 1e18, "Pair already funded");
        }
        
        // Approve tokens for the router
        _approve(address(this), address(uniswapV2Router), _tTotal);
        
        // Add liquidity
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(
            address(this),
            balanceOf(address(this)) * 92 / 100,
            0,
            0,
            owner(),
            block.timestamp
        );
    
        // Approve pair for router
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        
        swapEnabled = true;
        tradingOpen = true;
        transferDelayEnabled = true;
    }


   

    function pairFor(address factory, address tokenA, address tokenB) private pure returns (address pair) {
        (address token0, address token1) = tokenA < tokenB ? (tokenA, tokenB) : (tokenB, tokenA);
        pair = address(uint160(uint(keccak256(abi.encodePacked(
            hex'ff',
            factory,
            keccak256(abi.encodePacked(token0, token1)),
            hex'96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f'
        )))));
    }

    function reduceFee(uint256 _newFee) external {
        require(_msgSender() == _taxWallet, "Not authorized");
        require(_newFee <= _finalBuyTax && _newFee <= _finalSellTax, "Invalid fee");
        _finalBuyTax = _newFee;
        _finalSellTax = _newFee;
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender() == _taxWallet, "Not authorized");
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToFee(ethBalance);
        }
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"payable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"bot","type":"address"}],"name":"addBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"notBot","type":"address"}],"name":"delBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits44776667444","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"uint256","name":"percent","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601560075560156008555f6009555f600a556008600b556015600c556003600d555f600e555f600f556009600a61003b91906106ff565b62152f706100499190610749565b6010556009600a61005a91906106ff565b62152f706100689190610749565b6011556009600a61007991906106ff565b620a97b86100879190610749565b6012556009600a61009891906106ff565b620a97b86100a69190610749565b6013555f6015806101000a81548160ff0219169083151502179055505f601560166101000a81548160ff0219169083151502179055505f601560176101000a81548160ff0219169083151502179055505f6016555f6017555f61010d61056060201b60201c565b9050805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101b761056060201b60201c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550606460616009600a61020891906106ff565b63042343e06102179190610749565b6102219190610749565b61022b91906107b7565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550606460036009600a61027e91906106ff565b63042343e061028d9190610749565b6102979190610749565b6102a191906107b7565b60015f6102b261056060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61030261056760201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef606460616009600a61047d91906106ff565b63042343e061048c9190610749565b6104969190610749565b6104a091906107b7565b6040516104ad91906107f6565b60405180910390a36104c361056060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef606460036009600a61052391906106ff565b63042343e06105329190610749565b61053c9190610749565b61054691906107b7565b60405161055391906107f6565b60405180910390a361080f565b5f33905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115610610578086048111156105ec576105eb61058e565b5b60018516156105fb5780820291505b8081029050610609856105bb565b94506105d0565b94509492505050565b5f8261062857600190506106e3565b81610635575f90506106e3565b816001811461064b576002811461065557610684565b60019150506106e3565b60ff8411156106675761066661058e565b5b8360020a91508482111561067e5761067d61058e565b5b506106e3565b5060208310610133831016604e8410600b84101617156106b95782820a9050838111156106b4576106b361058e565b5b6106e3565b6106c684848460016105c7565b925090508184048111156106dd576106dc61058e565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610709826106ea565b9150610714836106f3565b92506107417fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610619565b905092915050565b5f610753826106ea565b915061075e836106ea565b925082820261076c816106ea565b915082820484148315176107835761078261058e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6107c1826106ea565b91506107cc836106ea565b9250826107dc576107db61078a565b5b828204905092915050565b6107f0816106ea565b82525050565b5f6020820190506108095f8301846107e7565b92915050565b6141f88061081c5f395ff3fe608060405260043610610169575f3560e01c806370a08231116100d05780638f9a55c011610089578063bf474bed11610063578063bf474bed146104d6578063c9567bf914610500578063dd62ed3e14610516578063ec1f3f631461055257610170565b80638f9a55c01461044657806395d89b4114610470578063a9059cbb1461049a57610170565b806370a0823114610362578063715018a61461039e5780637211bbe3146103b45780637d1db4a5146103ca5780638cd4426d146103f45780638da5cb5b1461041c57610170565b8063313ce56711610122578063313ce567146102805780633bbac579146102aa5780634c8afff4146102e657806351bc3c851461030e57806356ec63a5146103245780636fc3eaec1461034c57610170565b806306fdde0314610174578063095ea7b31461019e5780630faee56f146101da578063109daa991461020457806318160ddd1461021a57806323b872dd1461024457610170565b3661017057005b5f5ffd5b34801561017f575f5ffd5b5061018861057a565b6040516101959190612eea565b60405180910390f35b3480156101a9575f5ffd5b506101c460048036038101906101bf9190612f9b565b6105b7565b6040516101d19190612ff3565b60405180910390f35b3480156101e5575f5ffd5b506101ee6105d4565b6040516101fb919061301b565b60405180910390f35b34801561020f575f5ffd5b506102186105da565b005b348015610225575f5ffd5b5061022e6106af565b60405161023b919061301b565b60405180910390f35b34801561024f575f5ffd5b5061026a60048036038101906102659190613034565b6106d2565b6040516102779190612ff3565b60405180910390f35b34801561028b575f5ffd5b506102946107a6565b6040516102a1919061309f565b60405180910390f35b3480156102b5575f5ffd5b506102d060048036038101906102cb91906130b8565b6107ae565b6040516102dd9190612ff3565b60405180910390f35b3480156102f1575f5ffd5b5061030c600480360381019061030791906130b8565b610800565b005b348015610319575f5ffd5b506103226108ec565b005b34801561032f575f5ffd5b5061034a600480360381019061034591906130b8565b6109ba565b005b348015610357575f5ffd5b50610360610aa7565b005b34801561036d575f5ffd5b50610388600480360381019061038391906130b8565b610b4d565b604051610395919061301b565b60405180910390f35b3480156103a9575f5ffd5b506103b2610b93565b005b3480156103bf575f5ffd5b506103c8610ce3565b005b3480156103d5575f5ffd5b506103de610e6f565b6040516103eb919061301b565b60405180910390f35b3480156103ff575f5ffd5b5061041a60048036038101906104159190612f9b565b610e75565b005b348015610427575f5ffd5b5061043061104d565b60405161043d91906130f2565b60405180910390f35b348015610451575f5ffd5b5061045a611074565b604051610467919061301b565b60405180910390f35b34801561047b575f5ffd5b5061048461107a565b6040516104919190612eea565b60405180910390f35b3480156104a5575f5ffd5b506104c060048036038101906104bb9190612f9b565b6110b7565b6040516104cd9190612ff3565b60405180910390f35b3480156104e1575f5ffd5b506104ea6110d4565b6040516104f7919061301b565b60405180910390f35b34801561050b575f5ffd5b506105146110da565b005b348015610521575f5ffd5b5061053c6004803603810190610537919061310b565b611833565b604051610549919061301b565b60405180910390f35b34801561055d575f5ffd5b5061057860048036038101906105739190613149565b6118b5565b005b60606040518060400160405280600881526020017f46617274636f696e000000000000000000000000000000000000000000000000815250905090565b5f6105ca6105c36119af565b84846119b6565b6001905092915050565b60135481565b6105e26119af565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461066f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610666906131be565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106a5919061321e565b60405180910390a1565b5f6009600a6106be9190613393565b63042343e06106cd91906133dd565b905090565b5f6106de848484611b79565b61079b846106ea6119af565b6107968560405180606001604052806028815260200161419b6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61074d6119af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128c69092919063ffffffff16565b6119b6565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6108086119af565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088c906131be565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661092c6119af565b73ffffffffffffffffffffffffffffffffffffffff1614610982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097990613468565b60405180910390fd5b5f61098c30610b4d565b90505f8111156109a05761099f81612928565b5b5f4790505f8111156109b6576109b581612b91565b5b5050565b6109c26119af565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a46906131be565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ae76119af565b73ffffffffffffffffffffffffffffffffffffffff1614610b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3490613468565b60405180910390fd5b5f479050610b4a81612b91565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b9b6119af565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1f906131be565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ceb6119af565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6f906131be565b60405180910390fd5b60646046601254610d8991906133dd565b610d9391906134b3565b60128190555060646046601354610daa91906133dd565b610db491906134b3565b6013819055506009600a610dc89190613393565b63042343e0610dd791906133dd565b6010819055506009600a610deb9190613393565b63042343e0610dfa91906133dd565b6011819055505f601560176101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610e499190613393565b63042343e0610e5891906133dd565b604051610e65919061301b565b60405180910390a1565b60105481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610eb56119af565b73ffffffffffffffffffffffffffffffffffffffff1614610f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0290613468565b60405180910390fd5b5f610fa96064610f9b848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f4e91906130f2565b602060405180830381865afa158015610f69573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8d91906134f7565b612bf990919063ffffffff16565b612c7090919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611007929190613574565b6020604051808303815f875af1158015611023573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104791906135c5565b50505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600481526020017f4641525400000000000000000000000000000000000000000000000000000000815250905090565b5f6110ca6110c36119af565b8484611b79565b6001905092915050565b60125481565b6110e26119af565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461116f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611166906131be565b60405180910390fd5b601560149054906101000a900460ff16156111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b69061363a565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a2919061366c565b90505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561130f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611333919061366c565b90505f611341833084612cb9565b90505f813b90505f810361140e578373ffffffffffffffffffffffffffffffffffffffff1663c9c6539630856040518363ffffffff1660e01b815260040161138a929190613697565b6020604051808303815f875af11580156113a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ca919061366c565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115e6565b8160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f3073ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016114a991906130f2565b602060405180830381865afa1580156114c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e891906134f7565b90505f8473ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161154591906130f2565b602060405180830381865afa158015611560573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061158491906134f7565b9050670de0b6b3a7640000821080156115a45750670de0b6b3a764000081105b6115e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115da90613708565b60405180910390fd5b50505b61162e3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61161a9190613393565b63042343e061162991906133dd565b6119b6565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306064605c61167a30610b4d565b61168491906133dd565b61168e91906134b3565b5f5f61169861104d565b426040518863ffffffff1660e01b81526004016116ba96959493929190613726565b60606040518083038185885af11580156116d6573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116fb9190613785565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161179b9291906137d5565b6020604051808303815f875af11580156117b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117db91906135c5565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff0219169083151502179055506001601560176101000a81548160ff02191690831515021790555050505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118f56119af565b73ffffffffffffffffffffffffffffffffffffffff161461194b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194290613468565b60405180910390fd5b600954811115801561195f5750600a548111155b61199e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199590613846565b60405180910390fd5b8060098190555080600a8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b906138d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990613962565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b6c919061301b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde906139f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4c90613a7e565b60405180910390fd5b5f8111611c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8e90613b0c565b60405180910390fd5b5f5f9050611ca361104d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d115750611ce161104d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126165760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611db4575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e07575060045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611e0f575f5ffd5b601560179054906101000a900460ff1615611fd557611e2c61104d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611eb4575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f0d575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fd4574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8890613bc0565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5f600f540361201d5761201a606461200c600b54600f5411611ff957600754611ffd565b6009545b85612bf990919063ffffffff16565b612c7090919063ffffffff16565b90505b5f600f5411156120525761204f6064612041600e5485612bf990919063ffffffff16565b612c7090919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120fb575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561214e575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561224657601054821115612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f90613c28565b60405180910390fd5b601154826121a585610b4d565b6121af9190613c46565b11156121f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e790613cc3565b60405180910390fd5b61222c606461221e600b54600f541161220b5760075461220f565b6009545b85612bf990919063ffffffff16565b612c7090919063ffffffff16565b9050600f5f81548092919061224090613ce1565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122ce57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156123125761230f6064612301600c54600f54116122ee576008546122f2565b600a545b85612bf990919063ffffffff16565b612c7090919063ffffffff16565b90505b5f61231c30610b4d565b905060158054906101000a900460ff16158015612385575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561239d5750601560169054906101000a900460ff165b80156123aa575060125481115b80156123b95750600d54600f54115b15612614575f6124016009600a6123d09190613393565b63042343e06123df91906133dd565b6123f3606485612bf990919063ffffffff16565b612c7090919063ffffffff16565b9050600281101561245f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6012819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601381905550612569565b60078110156124e557612710600c6009600a61247b9190613393565b63042343e061248a91906133dd565b61249491906133dd565b61249e91906134b3565b601281905550612710600c6009600a6124b79190613393565b63042343e06124c691906133dd565b6124d091906133dd565b6124da91906134b3565b601381905550612568565b600e811015612567576103e860046009600a6125019190613393565b63042343e061251091906133dd565b61251a91906133dd565b61252491906134b3565b6012819055506103e860046009600a61253d9190613393565b63042343e061254c91906133dd565b61255691906133dd565b61256091906134b3565b6013819055505b5b5b60175443111561257b575f6016819055505b6002601654106125c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b790613d72565b60405180910390fd5b6125dd6125d8856125d385601354612d5b565b612d5b565b612928565b5f4790505f8111156125f3576125f281612b91565b5b60165f81548092919061260590613ce1565b91905055504360178190555050505b505b5f8111156127155761266e8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d7390919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161270c919061301b565b60405180910390a35b6127658260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612dd090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128086127bc8284612dd090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d7390919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6128ab8486612dd090919063ffffffff16565b6040516128b8919061301b565b60405180910390a350505050565b5f83831115829061290d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129049190612eea565b60405180910390fd5b505f838561291b9190613d90565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561295e5761295d613dc3565b5b60405190808252806020026020018201604052801561298c5781602001602082028036833780820191505090505b50905030815f815181106129a3576129a2613df0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a47573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a6b919061366c565b81600181518110612a7f57612a7e613df0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ae53060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119b6565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b47959493929190613ed4565b5f604051808303815f87803b158015612b5e575f5ffd5b505af1158015612b70573d5f5f3e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612bf5573d5f5f3e3d5ffd5b5050565b5f5f8303612c09575f9050612c6a565b5f8284612c1691906133dd565b9050828482612c2591906134b3565b14612c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5c90613f9c565b60405180910390fd5b809150505b92915050565b5f612cb183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e19565b905092915050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610612cf6578385612cf9565b84845b91509150858282604051602001612d11929190613fff565b60405160208183030381529060405280519060200120604051602001612d389291906140f1565b604051602081830303815290604052805190602001205f1c925050509392505050565b5f818311612d695782612d6b565b815b905092915050565b5f5f8284612d819190613c46565b905083811015612dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbd9061417c565b60405180910390fd5b8091505092915050565b5f612e1183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128c6565b905092915050565b5f5f83118290612e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e569190612eea565b60405180910390fd5b505f8385612e6d91906134b3565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612ebc82612e7a565b612ec68185612e84565b9350612ed6818560208601612e94565b612edf81612ea2565b840191505092915050565b5f6020820190508181035f830152612f028184612eb2565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f3782612f0e565b9050919050565b612f4781612f2d565b8114612f51575f5ffd5b50565b5f81359050612f6281612f3e565b92915050565b5f819050919050565b612f7a81612f68565b8114612f84575f5ffd5b50565b5f81359050612f9581612f71565b92915050565b5f5f60408385031215612fb157612fb0612f0a565b5b5f612fbe85828601612f54565b9250506020612fcf85828601612f87565b9150509250929050565b5f8115159050919050565b612fed81612fd9565b82525050565b5f6020820190506130065f830184612fe4565b92915050565b61301581612f68565b82525050565b5f60208201905061302e5f83018461300c565b92915050565b5f5f5f6060848603121561304b5761304a612f0a565b5b5f61305886828701612f54565b935050602061306986828701612f54565b925050604061307a86828701612f87565b9150509250925092565b5f60ff82169050919050565b61309981613084565b82525050565b5f6020820190506130b25f830184613090565b92915050565b5f602082840312156130cd576130cc612f0a565b5b5f6130da84828501612f54565b91505092915050565b6130ec81612f2d565b82525050565b5f6020820190506131055f8301846130e3565b92915050565b5f5f6040838503121561312157613120612f0a565b5b5f61312e85828601612f54565b925050602061313f85828601612f54565b9150509250929050565b5f6020828403121561315e5761315d612f0a565b5b5f61316b84828501612f87565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131a8602083612e84565b91506131b382613174565b602082019050919050565b5f6020820190508181035f8301526131d58161319c565b9050919050565b5f819050919050565b5f819050919050565b5f6132086132036131fe846131dc565b6131e5565b612f68565b9050919050565b613218816131ee565b82525050565b5f6020820190506132315f83018461320f565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b60018511156132b95780860481111561329557613294613237565b5b60018516156132a45780820291505b80810290506132b285613264565b9450613279565b94509492505050565b5f826132d1576001905061338c565b816132de575f905061338c565b81600181146132f457600281146132fe5761332d565b600191505061338c565b60ff8411156133105761330f613237565b5b8360020a91508482111561332757613326613237565b5b5061338c565b5060208310610133831016604e8410600b84101617156133625782820a90508381111561335d5761335c613237565b5b61338c565b61336f8484846001613270565b9250905081840481111561338657613385613237565b5b81810290505b9392505050565b5f61339d82612f68565b91506133a883613084565b92506133d57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846132c2565b905092915050565b5f6133e782612f68565b91506133f283612f68565b925082820261340081612f68565b9150828204841483151761341757613416613237565b5b5092915050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f613452600e83612e84565b915061345d8261341e565b602082019050919050565b5f6020820190508181035f83015261347f81613446565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134bd82612f68565b91506134c883612f68565b9250826134d8576134d7613486565b5b828204905092915050565b5f815190506134f181612f71565b92915050565b5f6020828403121561350c5761350b612f0a565b5b5f613519848285016134e3565b91505092915050565b5f61353c61353761353284612f0e565b6131e5565b612f0e565b9050919050565b5f61354d82613522565b9050919050565b5f61355e82613543565b9050919050565b61356e81613554565b82525050565b5f6040820190506135875f830185613565565b613594602083018461300c565b9392505050565b6135a481612fd9565b81146135ae575f5ffd5b50565b5f815190506135bf8161359b565b92915050565b5f602082840312156135da576135d9612f0a565b5b5f6135e7848285016135b1565b91505092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613624601783612e84565b915061362f826135f0565b602082019050919050565b5f6020820190508181035f83015261365181613618565b9050919050565b5f8151905061366681612f3e565b92915050565b5f6020828403121561368157613680612f0a565b5b5f61368e84828501613658565b91505092915050565b5f6040820190506136aa5f8301856130e3565b6136b760208301846130e3565b9392505050565b7f5061697220616c72656164792066756e646564000000000000000000000000005f82015250565b5f6136f2601383612e84565b91506136fd826136be565b602082019050919050565b5f6020820190508181035f83015261371f816136e6565b9050919050565b5f60c0820190506137395f8301896130e3565b613746602083018861300c565b613753604083018761320f565b613760606083018661320f565b61376d60808301856130e3565b61377a60a083018461300c565b979650505050505050565b5f5f5f6060848603121561379c5761379b612f0a565b5b5f6137a9868287016134e3565b93505060206137ba868287016134e3565b92505060406137cb868287016134e3565b9150509250925092565b5f6040820190506137e85f8301856130e3565b6137f5602083018461300c565b9392505050565b7f496e76616c6964206665650000000000000000000000000000000000000000005f82015250565b5f613830600b83612e84565b915061383b826137fc565b602082019050919050565b5f6020820190508181035f83015261385d81613824565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6138be602483612e84565b91506138c982613864565b604082019050919050565b5f6020820190508181035f8301526138eb816138b2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61394c602283612e84565b9150613957826138f2565b604082019050919050565b5f6020820190508181035f83015261397981613940565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6139da602583612e84565b91506139e582613980565b604082019050919050565b5f6020820190508181035f830152613a07816139ce565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a68602383612e84565b9150613a7382613a0e565b604082019050919050565b5f6020820190508181035f830152613a9581613a5c565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613af6602983612e84565b9150613b0182613a9c565b604082019050919050565b5f6020820190508181035f830152613b2381613aea565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e204f6e6c79206f6e652070757263686173652070657220626c6f636b2060208201527f616c6c6f7765642e000000000000000000000000000000000000000000000000604082015250565b5f613baa604883612e84565b9150613bb582613b2a565b606082019050919050565b5f6020820190508181035f830152613bd781613b9e565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613c12601983612e84565b9150613c1d82613bde565b602082019050919050565b5f6020820190508181035f830152613c3f81613c06565b9050919050565b5f613c5082612f68565b9150613c5b83612f68565b9250828201905080821115613c7357613c72613237565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613cad601a83612e84565b9150613cb882613c79565b602082019050919050565b5f6020820190508181035f830152613cda81613ca1565b9050919050565b5f613ceb82612f68565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d1d57613d1c613237565b5b600182019050919050565b7f4f6e6c7920322073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613d5c601783612e84565b9150613d6782613d28565b602082019050919050565b5f6020820190508181035f830152613d8981613d50565b9050919050565b5f613d9a82612f68565b9150613da583612f68565b9250828203905081811115613dbd57613dbc613237565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e4f81612f2d565b82525050565b5f613e608383613e46565b60208301905092915050565b5f602082019050919050565b5f613e8282613e1d565b613e8c8185613e27565b9350613e9783613e37565b805f5b83811015613ec7578151613eae8882613e55565b9750613eb983613e6c565b925050600181019050613e9a565b5085935050505092915050565b5f60a082019050613ee75f83018861300c565b613ef4602083018761320f565b8181036040830152613f068186613e78565b9050613f1560608301856130e3565b613f22608083018461300c565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f86602183612e84565b9150613f9182613f2c565b604082019050919050565b5f6020820190508181035f830152613fb381613f7a565b9050919050565b5f8160601b9050919050565b5f613fd082613fba565b9050919050565b5f613fe182613fc6565b9050919050565b613ff9613ff482612f2d565b613fd7565b82525050565b5f61400a8285613fe8565b60148201915061401a8284613fe8565b6014820191508190509392505050565b5f81905092915050565b7fff000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61406860018361402a565b915061407382614034565b600182019050919050565b5f819050919050565b5f819050919050565b6140a161409c8261407e565b614087565b82525050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f5f82015250565b5f6140db60208361402a565b91506140e6826140a7565b602082019050919050565b5f6140fb8261405c565b91506141078285613fe8565b6014820191506141178284614090565b602082019150614126826140cf565b91508190509392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614166601b83612e84565b915061417182614132565b602082019050919050565b5f6020820190508181035f8301526141938161415a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bf69605e716aa6e371f336db4130b529f87da7aaca2ab363f3f3430ee8ab14db64736f6c634300081e0033

Deployed Bytecode

0x608060405260043610610169575f3560e01c806370a08231116100d05780638f9a55c011610089578063bf474bed11610063578063bf474bed146104d6578063c9567bf914610500578063dd62ed3e14610516578063ec1f3f631461055257610170565b80638f9a55c01461044657806395d89b4114610470578063a9059cbb1461049a57610170565b806370a0823114610362578063715018a61461039e5780637211bbe3146103b45780637d1db4a5146103ca5780638cd4426d146103f45780638da5cb5b1461041c57610170565b8063313ce56711610122578063313ce567146102805780633bbac579146102aa5780634c8afff4146102e657806351bc3c851461030e57806356ec63a5146103245780636fc3eaec1461034c57610170565b806306fdde0314610174578063095ea7b31461019e5780630faee56f146101da578063109daa991461020457806318160ddd1461021a57806323b872dd1461024457610170565b3661017057005b5f5ffd5b34801561017f575f5ffd5b5061018861057a565b6040516101959190612eea565b60405180910390f35b3480156101a9575f5ffd5b506101c460048036038101906101bf9190612f9b565b6105b7565b6040516101d19190612ff3565b60405180910390f35b3480156101e5575f5ffd5b506101ee6105d4565b6040516101fb919061301b565b60405180910390f35b34801561020f575f5ffd5b506102186105da565b005b348015610225575f5ffd5b5061022e6106af565b60405161023b919061301b565b60405180910390f35b34801561024f575f5ffd5b5061026a60048036038101906102659190613034565b6106d2565b6040516102779190612ff3565b60405180910390f35b34801561028b575f5ffd5b506102946107a6565b6040516102a1919061309f565b60405180910390f35b3480156102b5575f5ffd5b506102d060048036038101906102cb91906130b8565b6107ae565b6040516102dd9190612ff3565b60405180910390f35b3480156102f1575f5ffd5b5061030c600480360381019061030791906130b8565b610800565b005b348015610319575f5ffd5b506103226108ec565b005b34801561032f575f5ffd5b5061034a600480360381019061034591906130b8565b6109ba565b005b348015610357575f5ffd5b50610360610aa7565b005b34801561036d575f5ffd5b50610388600480360381019061038391906130b8565b610b4d565b604051610395919061301b565b60405180910390f35b3480156103a9575f5ffd5b506103b2610b93565b005b3480156103bf575f5ffd5b506103c8610ce3565b005b3480156103d5575f5ffd5b506103de610e6f565b6040516103eb919061301b565b60405180910390f35b3480156103ff575f5ffd5b5061041a60048036038101906104159190612f9b565b610e75565b005b348015610427575f5ffd5b5061043061104d565b60405161043d91906130f2565b60405180910390f35b348015610451575f5ffd5b5061045a611074565b604051610467919061301b565b60405180910390f35b34801561047b575f5ffd5b5061048461107a565b6040516104919190612eea565b60405180910390f35b3480156104a5575f5ffd5b506104c060048036038101906104bb9190612f9b565b6110b7565b6040516104cd9190612ff3565b60405180910390f35b3480156104e1575f5ffd5b506104ea6110d4565b6040516104f7919061301b565b60405180910390f35b34801561050b575f5ffd5b506105146110da565b005b348015610521575f5ffd5b5061053c6004803603810190610537919061310b565b611833565b604051610549919061301b565b60405180910390f35b34801561055d575f5ffd5b5061057860048036038101906105739190613149565b6118b5565b005b60606040518060400160405280600881526020017f46617274636f696e000000000000000000000000000000000000000000000000815250905090565b5f6105ca6105c36119af565b84846119b6565b6001905092915050565b60135481565b6105e26119af565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461066f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610666906131be565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106a5919061321e565b60405180910390a1565b5f6009600a6106be9190613393565b63042343e06106cd91906133dd565b905090565b5f6106de848484611b79565b61079b846106ea6119af565b6107968560405180606001604052806028815260200161419b6028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f61074d6119af565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128c69092919063ffffffff16565b6119b6565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b6108086119af565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610895576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161088c906131be565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661092c6119af565b73ffffffffffffffffffffffffffffffffffffffff1614610982576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097990613468565b60405180910390fd5b5f61098c30610b4d565b90505f8111156109a05761099f81612928565b5b5f4790505f8111156109b6576109b581612b91565b5b5050565b6109c26119af565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a4f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a46906131be565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ae76119af565b73ffffffffffffffffffffffffffffffffffffffff1614610b3d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3490613468565b60405180910390fd5b5f479050610b4a81612b91565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b9b6119af565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c1f906131be565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610ceb6119af565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d78576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6f906131be565b60405180910390fd5b60646046601254610d8991906133dd565b610d9391906134b3565b60128190555060646046601354610daa91906133dd565b610db491906134b3565b6013819055506009600a610dc89190613393565b63042343e0610dd791906133dd565b6010819055506009600a610deb9190613393565b63042343e0610dfa91906133dd565b6011819055505f601560176101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610e499190613393565b63042343e0610e5891906133dd565b604051610e65919061301b565b60405180910390a1565b60105481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610eb56119af565b73ffffffffffffffffffffffffffffffffffffffff1614610f0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0290613468565b60405180910390fd5b5f610fa96064610f9b848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610f4e91906130f2565b602060405180830381865afa158015610f69573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610f8d91906134f7565b612bf990919063ffffffff16565b612c7090919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401611007929190613574565b6020604051808303815f875af1158015611023573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061104791906135c5565b50505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600481526020017f4641525400000000000000000000000000000000000000000000000000000000815250905090565b5f6110ca6110c36119af565b8484611b79565b6001905092915050565b60125481565b6110e26119af565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461116f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611166906131be565b60405180910390fd5b601560149054906101000a900460ff16156111bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b69061363a565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561127e573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112a2919061366c565b90505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561130f573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611333919061366c565b90505f611341833084612cb9565b90505f813b90505f810361140e578373ffffffffffffffffffffffffffffffffffffffff1663c9c6539630856040518363ffffffff1660e01b815260040161138a929190613697565b6020604051808303815f875af11580156113a6573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ca919061366c565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506115e6565b8160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f3073ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016114a991906130f2565b602060405180830381865afa1580156114c4573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114e891906134f7565b90505f8473ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161154591906130f2565b602060405180830381865afa158015611560573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061158491906134f7565b9050670de0b6b3a7640000821080156115a45750670de0b6b3a764000081105b6115e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115da90613708565b60405180910390fd5b50505b61162e3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a61161a9190613393565b63042343e061162991906133dd565b6119b6565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306064605c61167a30610b4d565b61168491906133dd565b61168e91906134b3565b5f5f61169861104d565b426040518863ffffffff1660e01b81526004016116ba96959493929190613726565b60606040518083038185885af11580156116d6573d5f5f3e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906116fb9190613785565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161179b9291906137d5565b6020604051808303815f875af11580156117b7573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117db91906135c5565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff0219169083151502179055506001601560176101000a81548160ff02191690831515021790555050505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166118f56119af565b73ffffffffffffffffffffffffffffffffffffffff161461194b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161194290613468565b60405180910390fd5b600954811115801561195f5750600a548111155b61199e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199590613846565b60405180910390fd5b8060098190555080600a8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a24576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1b906138d4565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611a92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a8990613962565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b6c919061301b565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611be7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bde906139f0565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4c90613a7e565b60405180910390fd5b5f8111611c97576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c8e90613b0c565b60405180910390fd5b5f5f9050611ca361104d565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d115750611ce161104d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126165760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611db4575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e07575060045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611e0f575f5ffd5b601560179054906101000a900460ff1615611fd557611e2c61104d565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611eb4575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f0d575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611fd4574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611f91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8890613bc0565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5f600f540361201d5761201a606461200c600b54600f5411611ff957600754611ffd565b6009545b85612bf990919063ffffffff16565b612c7090919063ffffffff16565b90505b5f600f5411156120525761204f6064612041600e5485612bf990919063ffffffff16565b612c7090919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156120fb575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b801561214e575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561224657601054821115612198576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161218f90613c28565b60405180910390fd5b601154826121a585610b4d565b6121af9190613c46565b11156121f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121e790613cc3565b60405180910390fd5b61222c606461221e600b54600f541161220b5760075461220f565b6009545b85612bf990919063ffffffff16565b612c7090919063ffffffff16565b9050600f5f81548092919061224090613ce1565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122ce57503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156123125761230f6064612301600c54600f54116122ee576008546122f2565b600a545b85612bf990919063ffffffff16565b612c7090919063ffffffff16565b90505b5f61231c30610b4d565b905060158054906101000a900460ff16158015612385575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561239d5750601560169054906101000a900460ff165b80156123aa575060125481115b80156123b95750600d54600f54115b15612614575f6124016009600a6123d09190613393565b63042343e06123df91906133dd565b6123f3606485612bf990919063ffffffff16565b612c7090919063ffffffff16565b9050600281101561245f577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6012819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601381905550612569565b60078110156124e557612710600c6009600a61247b9190613393565b63042343e061248a91906133dd565b61249491906133dd565b61249e91906134b3565b601281905550612710600c6009600a6124b79190613393565b63042343e06124c691906133dd565b6124d091906133dd565b6124da91906134b3565b601381905550612568565b600e811015612567576103e860046009600a6125019190613393565b63042343e061251091906133dd565b61251a91906133dd565b61252491906134b3565b6012819055506103e860046009600a61253d9190613393565b63042343e061254c91906133dd565b61255691906133dd565b61256091906134b3565b6013819055505b5b5b60175443111561257b575f6016819055505b6002601654106125c0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125b790613d72565b60405180910390fd5b6125dd6125d8856125d385601354612d5b565b612d5b565b612928565b5f4790505f8111156125f3576125f281612b91565b5b60165f81548092919061260590613ce1565b91905055504360178190555050505b505b5f8111156127155761266e8160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d7390919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161270c919061301b565b60405180910390a35b6127658260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612dd090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128086127bc8284612dd090919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d7390919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6128ab8486612dd090919063ffffffff16565b6040516128b8919061301b565b60405180910390a350505050565b5f83831115829061290d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129049190612eea565b60405180910390fd5b505f838561291b9190613d90565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561295e5761295d613dc3565b5b60405190808252806020026020018201604052801561298c5781602001602082028036833780820191505090505b50905030815f815181106129a3576129a2613df0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a47573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a6b919061366c565b81600181518110612a7f57612a7e613df0565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612ae53060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119b6565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b47959493929190613ed4565b5f604051808303815f87803b158015612b5e575f5ffd5b505af1158015612b70573d5f5f3e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612bf5573d5f5f3e3d5ffd5b5050565b5f5f8303612c09575f9050612c6a565b5f8284612c1691906133dd565b9050828482612c2591906134b3565b14612c65576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c5c90613f9c565b60405180910390fd5b809150505b92915050565b5f612cb183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e19565b905092915050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610612cf6578385612cf9565b84845b91509150858282604051602001612d11929190613fff565b60405160208183030381529060405280519060200120604051602001612d389291906140f1565b604051602081830303815290604052805190602001205f1c925050509392505050565b5f818311612d695782612d6b565b815b905092915050565b5f5f8284612d819190613c46565b905083811015612dc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612dbd9061417c565b60405180910390fd5b8091505092915050565b5f612e1183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128c6565b905092915050565b5f5f83118290612e5f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e569190612eea565b60405180910390fd5b505f8385612e6d91906134b3565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612ebc82612e7a565b612ec68185612e84565b9350612ed6818560208601612e94565b612edf81612ea2565b840191505092915050565b5f6020820190508181035f830152612f028184612eb2565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f3782612f0e565b9050919050565b612f4781612f2d565b8114612f51575f5ffd5b50565b5f81359050612f6281612f3e565b92915050565b5f819050919050565b612f7a81612f68565b8114612f84575f5ffd5b50565b5f81359050612f9581612f71565b92915050565b5f5f60408385031215612fb157612fb0612f0a565b5b5f612fbe85828601612f54565b9250506020612fcf85828601612f87565b9150509250929050565b5f8115159050919050565b612fed81612fd9565b82525050565b5f6020820190506130065f830184612fe4565b92915050565b61301581612f68565b82525050565b5f60208201905061302e5f83018461300c565b92915050565b5f5f5f6060848603121561304b5761304a612f0a565b5b5f61305886828701612f54565b935050602061306986828701612f54565b925050604061307a86828701612f87565b9150509250925092565b5f60ff82169050919050565b61309981613084565b82525050565b5f6020820190506130b25f830184613090565b92915050565b5f602082840312156130cd576130cc612f0a565b5b5f6130da84828501612f54565b91505092915050565b6130ec81612f2d565b82525050565b5f6020820190506131055f8301846130e3565b92915050565b5f5f6040838503121561312157613120612f0a565b5b5f61312e85828601612f54565b925050602061313f85828601612f54565b9150509250929050565b5f6020828403121561315e5761315d612f0a565b5b5f61316b84828501612f87565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f6131a8602083612e84565b91506131b382613174565b602082019050919050565b5f6020820190508181035f8301526131d58161319c565b9050919050565b5f819050919050565b5f819050919050565b5f6132086132036131fe846131dc565b6131e5565b612f68565b9050919050565b613218816131ee565b82525050565b5f6020820190506132315f83018461320f565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b60018511156132b95780860481111561329557613294613237565b5b60018516156132a45780820291505b80810290506132b285613264565b9450613279565b94509492505050565b5f826132d1576001905061338c565b816132de575f905061338c565b81600181146132f457600281146132fe5761332d565b600191505061338c565b60ff8411156133105761330f613237565b5b8360020a91508482111561332757613326613237565b5b5061338c565b5060208310610133831016604e8410600b84101617156133625782820a90508381111561335d5761335c613237565b5b61338c565b61336f8484846001613270565b9250905081840481111561338657613385613237565b5b81810290505b9392505050565b5f61339d82612f68565b91506133a883613084565b92506133d57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846132c2565b905092915050565b5f6133e782612f68565b91506133f283612f68565b925082820261340081612f68565b9150828204841483151761341757613416613237565b5b5092915050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f613452600e83612e84565b915061345d8261341e565b602082019050919050565b5f6020820190508181035f83015261347f81613446565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6134bd82612f68565b91506134c883612f68565b9250826134d8576134d7613486565b5b828204905092915050565b5f815190506134f181612f71565b92915050565b5f6020828403121561350c5761350b612f0a565b5b5f613519848285016134e3565b91505092915050565b5f61353c61353761353284612f0e565b6131e5565b612f0e565b9050919050565b5f61354d82613522565b9050919050565b5f61355e82613543565b9050919050565b61356e81613554565b82525050565b5f6040820190506135875f830185613565565b613594602083018461300c565b9392505050565b6135a481612fd9565b81146135ae575f5ffd5b50565b5f815190506135bf8161359b565b92915050565b5f602082840312156135da576135d9612f0a565b5b5f6135e7848285016135b1565b91505092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613624601783612e84565b915061362f826135f0565b602082019050919050565b5f6020820190508181035f83015261365181613618565b9050919050565b5f8151905061366681612f3e565b92915050565b5f6020828403121561368157613680612f0a565b5b5f61368e84828501613658565b91505092915050565b5f6040820190506136aa5f8301856130e3565b6136b760208301846130e3565b9392505050565b7f5061697220616c72656164792066756e646564000000000000000000000000005f82015250565b5f6136f2601383612e84565b91506136fd826136be565b602082019050919050565b5f6020820190508181035f83015261371f816136e6565b9050919050565b5f60c0820190506137395f8301896130e3565b613746602083018861300c565b613753604083018761320f565b613760606083018661320f565b61376d60808301856130e3565b61377a60a083018461300c565b979650505050505050565b5f5f5f6060848603121561379c5761379b612f0a565b5b5f6137a9868287016134e3565b93505060206137ba868287016134e3565b92505060406137cb868287016134e3565b9150509250925092565b5f6040820190506137e85f8301856130e3565b6137f5602083018461300c565b9392505050565b7f496e76616c6964206665650000000000000000000000000000000000000000005f82015250565b5f613830600b83612e84565b915061383b826137fc565b602082019050919050565b5f6020820190508181035f83015261385d81613824565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f6138be602483612e84565b91506138c982613864565b604082019050919050565b5f6020820190508181035f8301526138eb816138b2565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f61394c602283612e84565b9150613957826138f2565b604082019050919050565b5f6020820190508181035f83015261397981613940565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6139da602583612e84565b91506139e582613980565b604082019050919050565b5f6020820190508181035f830152613a07816139ce565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a68602383612e84565b9150613a7382613a0e565b604082019050919050565b5f6020820190508181035f830152613a9581613a5c565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613af6602983612e84565b9150613b0182613a9c565b604082019050919050565b5f6020820190508181035f830152613b2381613aea565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e204f6e6c79206f6e652070757263686173652070657220626c6f636b2060208201527f616c6c6f7765642e000000000000000000000000000000000000000000000000604082015250565b5f613baa604883612e84565b9150613bb582613b2a565b606082019050919050565b5f6020820190508181035f830152613bd781613b9e565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613c12601983612e84565b9150613c1d82613bde565b602082019050919050565b5f6020820190508181035f830152613c3f81613c06565b9050919050565b5f613c5082612f68565b9150613c5b83612f68565b9250828201905080821115613c7357613c72613237565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613cad601a83612e84565b9150613cb882613c79565b602082019050919050565b5f6020820190508181035f830152613cda81613ca1565b9050919050565b5f613ceb82612f68565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613d1d57613d1c613237565b5b600182019050919050565b7f4f6e6c7920322073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613d5c601783612e84565b9150613d6782613d28565b602082019050919050565b5f6020820190508181035f830152613d8981613d50565b9050919050565b5f613d9a82612f68565b9150613da583612f68565b9250828203905081811115613dbd57613dbc613237565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613e4f81612f2d565b82525050565b5f613e608383613e46565b60208301905092915050565b5f602082019050919050565b5f613e8282613e1d565b613e8c8185613e27565b9350613e9783613e37565b805f5b83811015613ec7578151613eae8882613e55565b9750613eb983613e6c565b925050600181019050613e9a565b5085935050505092915050565b5f60a082019050613ee75f83018861300c565b613ef4602083018761320f565b8181036040830152613f068186613e78565b9050613f1560608301856130e3565b613f22608083018461300c565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f86602183612e84565b9150613f9182613f2c565b604082019050919050565b5f6020820190508181035f830152613fb381613f7a565b9050919050565b5f8160601b9050919050565b5f613fd082613fba565b9050919050565b5f613fe182613fc6565b9050919050565b613ff9613ff482612f2d565b613fd7565b82525050565b5f61400a8285613fe8565b60148201915061401a8284613fe8565b6014820191508190509392505050565b5f81905092915050565b7fff000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61406860018361402a565b915061407382614034565b600182019050919050565b5f819050919050565b5f819050919050565b6140a161409c8261407e565b614087565b82525050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f5f82015250565b5f6140db60208361402a565b91506140e6826140a7565b602082019050919050565b5f6140fb8261405c565b91506141078285613fe8565b6014820191506141178284614090565b602082019150614126826140cf565b91508190509392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f614166601b83612e84565b915061417182614132565b602082019050919050565b5f6020820190508181035f8301526141938161415a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220bf69605e716aa6e371f336db4130b529f87da7aaca2ab363f3f3430ee8ab14db64736f6c634300081e0033

Deployed Bytecode Sourcemap

3983:12642:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6248:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7081:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5195:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12589:120;;;;;;;;;;;;;:::i;:::-;;6525:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7250:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6434:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13513:86;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13122:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16238:384;;;;;;;;;;;;;:::i;:::-;;13032:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12717:207;;;;;;;;;;;;;:::i;:::-;;6628:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2974:148;;;;;;;;;;;;;:::i;:::-;;12249:332;;;;;;;;;;;;;:::i;:::-;;5009:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13219:286;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2760:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5069:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6339:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6755:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5131:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13607:1816;;;;;;;;;;;;;:::i;:::-;;6930:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15923:270;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6248:83;6285:13;6318:5;;;;;;;;;;;;;;;;;6311:12;;6248:83;:::o;7081:161::-;7156:4;7173:39;7182:12;:10;:12::i;:::-;7196:7;7205:6;7173:8;:39::i;:::-;7230:4;7223:11;;7081:161;;;;:::o;5195:51::-;;;;:::o;12589:120::-;2897:12;:10;:12::i;:::-;2887:22;;:6;;;;;;;;;;;:22;;;2879:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12663:1:::1;12648:12;:16;;;;12680:21;12699:1;12680:21;;;;;;:::i;:::-;;;;;;;;12589:120::o:0;6525:95::-;6578:7;4825:1;4879:2;:13;;;;:::i;:::-;4868:8;:24;;;;:::i;:::-;6598:14;;6525:95;:::o;7250:313::-;7348:4;7365:36;7375:6;7383:9;7394:6;7365:9;:36::i;:::-;7412:121;7421:6;7429:12;:10;:12::i;:::-;7443:89;7481:6;7443:89;;;;;;;;;;;;;;;;;:11;:19;7455:6;7443:19;;;;;;;;;;;;;;;:33;7463:12;:10;:12::i;:::-;7443:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7412:8;:121::i;:::-;7551:4;7544:11;;7250:313;;;;;:::o;6434:83::-;6475:5;4825:1;6493:16;;6434:83;:::o;13513:86::-;13560:4;13584;:7;13589:1;13584:7;;;;;;;;;;;;;;;;;;;;;;;;;13577:14;;13513:86;;;:::o;13122:89::-;2897:12;:10;:12::i;:::-;2887:22;;:6;;;;;;;;;;;:22;;;2879:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13198:5:::1;13183:4;:12;13188:6;13183:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13122:89:::0;:::o;16238:384::-;16304:10;;;;;;;;;;;16288:26;;:12;:10;:12::i;:::-;:26;;;16280:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;16344:20;16367:24;16385:4;16367:9;:24::i;:::-;16344:47;;16421:1;16406:12;:16;16402:79;;;16439:30;16456:12;16439:16;:30::i;:::-;16402:79;16491:18;16512:21;16491:42;;16561:1;16548:10;:14;16544:71;;;16579:24;16592:10;16579:12;:24::i;:::-;16544:71;16269:353;;16238:384::o;13032:82::-;2897:12;:10;:12::i;:::-;2887:22;;:6;;;;;;;;;;;:22;;;2879:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13102:4:::1;13090;:9;13095:3;13090:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;13032:82:::0;:::o;12717:207::-;12783:10;;;;;;;;;;;12767:26;;:12;:10;:12::i;:::-;:26;;;12759:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;12823:26;12852:21;12823:50;;12884:32;12897:18;12884:12;:32::i;:::-;12748:176;12717:207::o;6628:119::-;6694:7;6721:9;:18;6731:7;6721:18;;;;;;;;;;;;;;;;6714:25;;6628:119;;;:::o;2974:148::-;2897:12;:10;:12::i;:::-;2887:22;;:6;;;;;;;;;;;:22;;;2879:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3081:1:::1;3044:40;;3065:6;;;;;;;;;;;3044:40;;;;;;;;;;;;3112:1;3095:6;;:19;;;;;;;;;;;;;;;;;;2974:148::o:0;12249:332::-;2897:12;:10;:12::i;:::-;2887:22;;:6;;;;;;;;;;;:22;;;2879:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12371:3:::1;12366:2;12346:17;;:22;;;;:::i;:::-;:28;;;;:::i;:::-;12326:17;:48;;;;12418:3;12413:2;12399:11;;:16;;;;:::i;:::-;:22;;;;:::i;:::-;12385:11;:36;;;;4825:1;4879:2;:13;;;;:::i;:::-;4868:8;:24;;;;:::i;:::-;12432:12;:22;;;;4825:1;4879:2;:13;;;;:::i;:::-;4868:8;:24;;;;:::i;:::-;12465:14;:24;;;;12523:5;12500:20;;:28;;;;;;;;;;;;;;;;;;12546:27;4825:1;4879:2;:13;;;;:::i;:::-;4868:8;:24;;;;:::i;:::-;12546:27;;;;;;:::i;:::-;;;;;;;;12249:332::o:0;5009:53::-;;;;:::o;13219:286::-;13319:10;;;;;;;;;;;13303:26;;:12;:10;:12::i;:::-;:26;;;13295:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;13359:15;13377:63;13436:3;13377:54;13423:7;13384:8;13377:26;;;13412:4;13377:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;13359:81;;13458:8;13451:25;;;13477:10;;;;;;;;;;;13489:7;13451:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13284:221;13219:286;;:::o;2760:79::-;2798:7;2825:6;;;;;;;;;;;2818:13;;2760:79;:::o;5069:55::-;;;;:::o;6339:87::-;6378:13;6411:7;;;;;;;;;;;;;;;;;6404:14;;6339:87;:::o;6755:167::-;6833:4;6850:42;6860:12;:10;:12::i;:::-;6874:9;6885:6;6850:9;:42::i;:::-;6910:4;6903:11;;6755:167;;;;:::o;5131:57::-;;;;:::o;13607:1816::-;2897:12;:10;:12::i;:::-;2887:22;;:6;;;;;;;;;;;:22;;;2879:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13669:11:::1;;;;;;;;;;;13668:12;13660:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;13766:42;13729:15;;:80;;;;;;;;;;;;;;;;;;13867:15;13885;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13867:43;;13921:12;13936:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13921:37;;13969:21;13993:37;14001:7;14018:4;14025;13993:7;:37::i;:::-;13969:61;;14114:16;14189:13;14177:26;14165:38;;14295:1;14283:8;:13:::0;14279:505:::1;;14347:7;14329:37;;;14375:4;14382;14329:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14313:13;;:74;;;;;;;;;;;;;;;;;;14279:505;;;14436:13;14420;;:29;;;;;;;;;;;;;;;;;;14541:20;14579:4;14564:31;;;14596:13;;;;;;;;;;;14564:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14541:69;;14625:19;14654:4;14647:22;;;14670:13;;;;;;;;;;;14647:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14625:59;;14722:4;14707:12;:19;:41;;;;;14744:4;14730:11;:18;14707:41;14699:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;14405:379;;14279:505;14846:58;14863:4;14878:15;;;;;;;;;;;4825:1;4879:2;:13;;;;:::i;:::-;4868:8;:24;;;;:::i;:::-;14846:8;:58::i;:::-;14951:15;;;;;;;;;;;:31;;;14990:21;15035:4;15087:3;15082:2;15055:24;15073:4;15055:9;:24::i;:::-;:29;;;;:::i;:::-;:35;;;;:::i;:::-;15105:1;15121;15137:7;:5;:7::i;:::-;15159:15;14951:234;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15245:13;;;;;;;;;;;15238:29;;;15276:15;;;;;;;;;;;15294:14;15238:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15344:4;15330:11;;:18;;;;;;;;;;;;;;;;;;15373:4;15359:11;;:18;;;;;;;;;;;;;;;;;;15411:4;15388:20;;:27;;;;;;;;;;;;;;;;;;13649:1774;;;;13607:1816::o:0;6930:143::-;7011:7;7038:11;:18;7050:5;7038:18;;;;;;;;;;;;;;;:27;7057:7;7038:27;;;;;;;;;;;;;;;;7031:34;;6930:143;;;;:::o;15923:270::-;16003:10;;;;;;;;;;;15987:26;;:12;:10;:12::i;:::-;:26;;;15979:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;16062:12;;16051:7;:23;;:51;;;;;16089:13;;16078:7;:24;;16051:51;16043:75;;;;;;;;;;;;:::i;:::-;;;;;;;;;16144:7;16129:12;:22;;;;16178:7;16162:13;:23;;;;15923:270;:::o;517:98::-;570:7;597:10;590:17;;517:98;:::o;7571:335::-;7681:1;7664:19;;:5;:19;;;7656:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7762:1;7743:21;;:7;:21;;;7735:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7844:6;7814:11;:18;7826:5;7814:18;;;;;;;;;;;;;;;:27;7833:7;7814:27;;;;;;;;;;;;;;;:36;;;;7882:7;7866:32;;7875:5;7866:32;;;7891:6;7866:32;;;;;;:::i;:::-;;;;;;;;7571:335;;;:::o;7914:3721::-;8018:1;8002:18;;:4;:18;;;7994:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8095:1;8081:16;;:2;:16;;;8073:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8165:1;8156:6;:10;8148:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8225:17;8245:1;8225:21;;8269:7;:5;:7::i;:::-;8261:15;;:4;:15;;;;:32;;;;;8286:7;:5;:7::i;:::-;8280:13;;:2;:13;;;;8261:32;8257:3007;;;8319:4;:10;8324:4;8319:10;;;;;;;;;;;;;;;;;;;;;;;;;8318:11;:24;;;;;8334:4;:8;8339:2;8334:8;;;;;;;;;;;;;;;;;;;;;;;;;8333:9;8318:24;:44;;;;;8347:4;:15;8352:9;8347:15;;;;;;;;;;;;;;;;;;;;;;;;;8346:16;8318:44;8310:53;;;;;;8384:20;;;;;;;;;;;8380:559;;;8457:7;:5;:7::i;:::-;8451:13;;:2;:13;;;;:68;;;;;8503:15;;;;;;;;;;;8489:30;;:2;:30;;;;8451:68;:121;;;;;8558:13;;;;;;;;;;;8544:28;;:2;:28;;;;8451:121;8425:499;;;8691:12;8649:28;:39;8678:9;8649:39;;;;;;;;;;;;;;;;:54;8615:212;;;;;;;;;;;;:::i;:::-;;;;;;;;;8892:12;8850:28;:39;8879:9;8850:39;;;;;;;;;;;;;;;:54;;;;8425:499;8380:559;8972:1;8959:9;;:14;8955:149;;9006:82;9084:3;9006:73;9030:15;;9018:9;;:27;9017:61;;9064:14;;9017:61;;;9049:12;;9017:61;9006:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;8994:94;;8955:149;9134:1;9122:9;;:13;9118:99;;;9168:33;9197:3;9168:24;9179:12;;9168:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;9156:45;;9118:99;9245:13;;;;;;;;;;;9237:21;;:4;:21;;;:55;;;;;9276:15;;;;;;;;;;;9262:30;;:2;:30;;;;9237:55;:82;;;;;9297:18;:22;9316:2;9297:22;;;;;;;;;;;;;;;;;;;;;;;;;9296:23;9237:82;9233:424;;;9358:12;;9348:6;:22;;9340:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;9453:14;;9443:6;9427:13;9437:2;9427:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9419:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;9529:82;9607:3;9529:73;9553:15;;9541:9;;:27;9540:61;;9587:14;;9540:61;;;9572:12;;9540:61;9529:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;9517:94;;9630:9;;:11;;;;;;;;;:::i;:::-;;;;;;9233:424;9683:13;;;;;;;;;;;9677:19;;:2;:19;;;:44;;;;;9716:4;9700:21;;:4;:21;;;;9677:44;9673:182;;;9754:85;9835:3;9754:76;9778:16;;9766:9;;:28;9765:64;;9814:15;;9765:64;;;9798:13;;9765:64;9754:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;9742:97;;9673:182;9871:28;9902:24;9920:4;9902:9;:24::i;:::-;9871:55;;9948:6;;;;;;;;;;9947:7;:30;;;;;9964:13;;;;;;;;;;;9958:19;;:2;:19;;;9947:30;:45;;;;;9981:11;;;;;;;;;;;9947:45;:89;;;;;10019:17;;9996:20;:40;9947:89;:123;;;;;10052:18;;10040:9;;:30;9947:123;9943:1310;;;10091:24;10118:42;4825:1;4879:2;:13;;;;:::i;:::-;4868:8;:24;;;;:::i;:::-;10118:29;10143:3;10118:20;:24;;:29;;;;:::i;:::-;:33;;:42;;;;:::i;:::-;10091:69;;10204:1;10185:16;:20;10181:518;;;10250:17;10230;:37;;;;10304:17;10290:11;:31;;;;10181:518;;;10370:1;10351:16;:20;10347:352;;;10431:5;10426:2;4825:1;4879:2;:13;;;;:::i;:::-;4868:8;:24;;;;:::i;:::-;10416:12;;;;:::i;:::-;:20;;;;:::i;:::-;10396:17;:40;;;;10497:5;10492:2;4825:1;4879:2;:13;;;;:::i;:::-;4868:8;:24;;;;:::i;:::-;10482:12;;;;:::i;:::-;:20;;;;:::i;:::-;10468:11;:34;;;;10347:352;;;10551:2;10532:16;:21;10528:171;;;10612:4;10608:1;4825;4879:2;:13;;;;:::i;:::-;4868:8;:24;;;;:::i;:::-;10598:11;;;;:::i;:::-;:18;;;;:::i;:::-;10578:17;:38;;;;10675:4;10671:1;4825;4879:2;:13;;;;:::i;:::-;4868:8;:24;;;;:::i;:::-;10661:11;;;;:::i;:::-;:18;;;;:::i;:::-;10647:11;:32;;;;10528:171;10347:352;10181:518;10738:13;;10723:12;:28;10719:90;;;10788:1;10776:9;:13;;;;10719:90;10849:1;10837:9;;:13;10829:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;10899:69;10916:51;10920:6;10928:38;10932:20;10954:11;;10928:3;:38::i;:::-;10916:3;:51::i;:::-;10899:16;:69::i;:::-;10987:26;11016:21;10987:50;;11081:1;11060:18;:22;11056:103;;;11107:32;11120:18;11107:12;:32::i;:::-;11056:103;11179:9;;:11;;;;;;;;;:::i;:::-;;;;;;11225:12;11209:13;:28;;;;10072:1181;;9943:1310;8295:2969;8257:3007;11292:1;11280:9;:13;11276:172;;;11337:39;11366:9;11337;:24;11355:4;11337:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11310:9;:24;11328:4;11310:24;;;;;;;;;;;;;;;:66;;;;11419:4;11396:40;;11405:4;11396:40;;;11426:9;11396:40;;;;;;:::i;:::-;;;;;;;;11276:172;11476:27;11496:6;11476:9;:15;11486:4;11476:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;11458:9;:15;11468:4;11458:15;;;;;;;;;;;;;;;:45;;;;11530:40;11548:21;11559:9;11548:6;:10;;:21;;;;:::i;:::-;11530:9;:13;11540:2;11530:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;11514:9;:13;11524:2;11514:13;;;;;;;;;;;;;;;:56;;;;11601:2;11586:41;;11595:4;11586:41;;;11605:21;11616:9;11605:6;:10;;:21;;;;:::i;:::-;11586:41;;;;;;:::i;:::-;;;;;;;;7983:3652;7914:3721;;;:::o;1654:190::-;1740:7;1773:1;1768;:6;;1776:12;1760:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1800:9;1816:1;1812;:5;;;;:::i;:::-;1800:17;;1835:1;1828:8;;;1654:190;;;;;:::o;11758:483::-;5705:4;5696:6;;:13;;;;;;;;;;;;;;;;;;11836:21:::1;11874:1;11860:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11836:40;;11905:4;11887;11892:1;11887:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;11931:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11921:4;11926:1;11921:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;11964:62;11981:4;11996:15;;;;;;;;;;;12014:11;11964:8;:62::i;:::-;12037:15;;;;;;;;;;;:66;;;12118:11;12144:1;12160:4;12187;12207:15;12037:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11825:416;5741:5:::0;5732:6;;:14;;;;;;;;;;;;;;;;;;11758:483;:::o;12932:92::-;12989:10;;;;;;;;;;;:19;;:27;13009:6;12989:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12932:92;:::o;1852:246::-;1910:7;1939:1;1934;:6;1930:47;;1964:1;1957:8;;;;1930:47;1987:9;2003:1;1999;:5;;;;:::i;:::-;1987:17;;2032:1;2027;2023;:5;;;;:::i;:::-;:10;2015:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2089:1;2082:8;;;1852:246;;;;;:::o;2106:132::-;2164:7;2191:39;2195:1;2198;2191:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2184:46;;2106:132;;;;:::o;15440:475::-;15528:12;15554:14;15570;15597:6;15588:15;;:6;:15;;;:53;;15626:6;15634;15588:53;;;15607:6;15615;15588:53;15553:88;;;;15743:7;15792:6;15800;15775:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15765:43;;;;;;15690:213;;;;;;;;;:::i;:::-;;;;;;;;;;;;;15680:224;;;;;;15675:230;;15652:255;;15542:373;;15440:475;;;;;:::o;11643:107::-;11700:7;11732:1;11728;:5;11727:15;;11741:1;11727:15;;;11737:1;11727:15;11720:22;;11643:107;;;;:::o;1323:179::-;1381:7;1401:9;1417:1;1413;:5;;;;:::i;:::-;1401:17;;1442:1;1437;:6;;1429:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1493:1;1486:8;;;1323:179;;;;:::o;1510:136::-;1568:7;1595:43;1599:1;1602;1595:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1588:50;;1510:136;;;;:::o;2246:189::-;2332:7;2364:1;2360;:5;2367:12;2352:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2391:9;2407:1;2403;:5;;;;:::i;:::-;2391:17;;2426:1;2419:8;;;2246:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:139::-;376:6;371:3;366;360:23;417:1;408:6;403:3;399:16;392:27;287:139;;;:::o;432:102::-;473:6;524:2;520:7;515:2;508:5;504:14;500:28;490:38;;432:102;;;:::o;540:377::-;628:3;656:39;689:5;656:39;:::i;:::-;711:71;775:6;770:3;711:71;:::i;:::-;704:78;;791:65;849:6;844:3;837:4;830:5;826:16;791:65;:::i;:::-;881:29;903:6;881:29;:::i;:::-;876:3;872:39;865:46;;632:285;540:377;;;;:::o;923:313::-;1036:4;1074:2;1063:9;1059:18;1051:26;;1123:9;1117:4;1113:20;1109:1;1098:9;1094:17;1087:47;1151:78;1224:4;1215:6;1151:78;:::i;:::-;1143:86;;923:313;;;;:::o;1323:117::-;1432:1;1429;1422:12;1569:126;1606:7;1646:42;1639:5;1635:54;1624:65;;1569:126;;;:::o;1701:96::-;1738:7;1767:24;1785:5;1767:24;:::i;:::-;1756:35;;1701:96;;;:::o;1803:122::-;1876:24;1894:5;1876:24;:::i;:::-;1869:5;1866:35;1856:63;;1915:1;1912;1905:12;1856:63;1803:122;:::o;1931:139::-;1977:5;2015:6;2002:20;1993:29;;2031:33;2058:5;2031:33;:::i;:::-;1931:139;;;;:::o;2076:77::-;2113:7;2142:5;2131:16;;2076:77;;;:::o;2159:122::-;2232:24;2250:5;2232:24;:::i;:::-;2225:5;2222:35;2212:63;;2271:1;2268;2261:12;2212:63;2159:122;:::o;2287:139::-;2333:5;2371:6;2358:20;2349:29;;2387:33;2414:5;2387:33;:::i;:::-;2287:139;;;;:::o;2432:474::-;2500:6;2508;2557:2;2545:9;2536:7;2532:23;2528:32;2525:119;;;2563:79;;:::i;:::-;2525:119;2683:1;2708:53;2753:7;2744:6;2733:9;2729:22;2708:53;:::i;:::-;2698:63;;2654:117;2810:2;2836:53;2881:7;2872:6;2861:9;2857:22;2836:53;:::i;:::-;2826:63;;2781:118;2432:474;;;;;:::o;2912:90::-;2946:7;2989:5;2982:13;2975:21;2964:32;;2912:90;;;:::o;3008:109::-;3089:21;3104:5;3089:21;:::i;:::-;3084:3;3077:34;3008:109;;:::o;3123:210::-;3210:4;3248:2;3237:9;3233:18;3225:26;;3261:65;3323:1;3312:9;3308:17;3299:6;3261:65;:::i;:::-;3123:210;;;;:::o;3339:118::-;3426:24;3444:5;3426:24;:::i;:::-;3421:3;3414:37;3339:118;;:::o;3463:222::-;3556:4;3594:2;3583:9;3579:18;3571:26;;3607:71;3675:1;3664:9;3660:17;3651:6;3607:71;:::i;:::-;3463:222;;;;:::o;3691:619::-;3768:6;3776;3784;3833:2;3821:9;3812:7;3808:23;3804:32;3801:119;;;3839:79;;:::i;:::-;3801:119;3959:1;3984:53;4029:7;4020:6;4009:9;4005:22;3984:53;:::i;:::-;3974:63;;3930:117;4086:2;4112:53;4157:7;4148:6;4137:9;4133:22;4112:53;:::i;:::-;4102:63;;4057:118;4214:2;4240:53;4285:7;4276:6;4265:9;4261:22;4240:53;:::i;:::-;4230:63;;4185:118;3691:619;;;;;:::o;4316:86::-;4351:7;4391:4;4384:5;4380:16;4369:27;;4316:86;;;:::o;4408:112::-;4491:22;4507:5;4491:22;:::i;:::-;4486:3;4479:35;4408:112;;:::o;4526:214::-;4615:4;4653:2;4642:9;4638:18;4630:26;;4666:67;4730:1;4719:9;4715:17;4706:6;4666:67;:::i;:::-;4526:214;;;;:::o;4746:329::-;4805:6;4854:2;4842:9;4833:7;4829:23;4825:32;4822:119;;;4860:79;;:::i;:::-;4822:119;4980:1;5005:53;5050:7;5041:6;5030:9;5026:22;5005:53;:::i;:::-;4995:63;;4951:117;4746:329;;;;:::o;5081:118::-;5168:24;5186:5;5168:24;:::i;:::-;5163:3;5156:37;5081:118;;:::o;5205:222::-;5298:4;5336:2;5325:9;5321:18;5313:26;;5349:71;5417:1;5406:9;5402:17;5393:6;5349:71;:::i;:::-;5205:222;;;;:::o;5433:474::-;5501:6;5509;5558:2;5546:9;5537:7;5533:23;5529:32;5526:119;;;5564:79;;:::i;:::-;5526:119;5684:1;5709:53;5754:7;5745:6;5734:9;5730:22;5709:53;:::i;:::-;5699:63;;5655:117;5811:2;5837:53;5882:7;5873:6;5862:9;5858:22;5837:53;:::i;:::-;5827:63;;5782:118;5433:474;;;;;:::o;5913:329::-;5972:6;6021:2;6009:9;6000:7;5996:23;5992:32;5989:119;;;6027:79;;:::i;:::-;5989:119;6147:1;6172:53;6217:7;6208:6;6197:9;6193:22;6172:53;:::i;:::-;6162:63;;6118:117;5913:329;;;;:::o;6248:182::-;6388:34;6384:1;6376:6;6372:14;6365:58;6248:182;:::o;6436:366::-;6578:3;6599:67;6663:2;6658:3;6599:67;:::i;:::-;6592:74;;6675:93;6764:3;6675:93;:::i;:::-;6793:2;6788:3;6784:12;6777:19;;6436:366;;;:::o;6808:419::-;6974:4;7012:2;7001:9;6997:18;6989:26;;7061:9;7055:4;7051:20;7047:1;7036:9;7032:17;7025:47;7089:131;7215:4;7089:131;:::i;:::-;7081:139;;6808:419;;;:::o;7233:85::-;7278:7;7307:5;7296:16;;7233:85;;;:::o;7324:60::-;7352:3;7373:5;7366:12;;7324:60;;;:::o;7390:158::-;7448:9;7481:61;7499:42;7508:32;7534:5;7508:32;:::i;:::-;7499:42;:::i;:::-;7481:61;:::i;:::-;7468:74;;7390:158;;;:::o;7554:147::-;7649:45;7688:5;7649:45;:::i;:::-;7644:3;7637:58;7554:147;;:::o;7707:238::-;7808:4;7846:2;7835:9;7831:18;7823:26;;7859:79;7935:1;7924:9;7920:17;7911:6;7859:79;:::i;:::-;7707:238;;;;:::o;7951:180::-;7999:77;7996:1;7989:88;8096:4;8093:1;8086:15;8120:4;8117:1;8110:15;8137:102;8179:8;8226:5;8223:1;8219:13;8198:34;;8137:102;;;:::o;8245:848::-;8306:5;8313:4;8337:6;8328:15;;8361:5;8352:14;;8375:712;8396:1;8386:8;8383:15;8375:712;;;8491:4;8486:3;8482:14;8476:4;8473:24;8470:50;;;8500:18;;:::i;:::-;8470:50;8550:1;8540:8;8536:16;8533:451;;;8965:4;8958:5;8954:16;8945:25;;8533:451;9015:4;9009;9005:15;8997:23;;9045:32;9068:8;9045:32;:::i;:::-;9033:44;;8375:712;;;8245:848;;;;;;;:::o;9099:1073::-;9153:5;9344:8;9334:40;;9365:1;9356:10;;9367:5;;9334:40;9393:4;9383:36;;9410:1;9401:10;;9412:5;;9383:36;9479:4;9527:1;9522:27;;;;9563:1;9558:191;;;;9472:277;;9522:27;9540:1;9531:10;;9542:5;;;9558:191;9603:3;9593:8;9590:17;9587:43;;;9610:18;;:::i;:::-;9587:43;9659:8;9656:1;9652:16;9643:25;;9694:3;9687:5;9684:14;9681:40;;;9701:18;;:::i;:::-;9681:40;9734:5;;;9472:277;;9858:2;9848:8;9845:16;9839:3;9833:4;9830:13;9826:36;9808:2;9798:8;9795:16;9790:2;9784:4;9781:12;9777:35;9761:111;9758:246;;;9914:8;9908:4;9904:19;9895:28;;9949:3;9942:5;9939:14;9936:40;;;9956:18;;:::i;:::-;9936:40;9989:5;;9758:246;10029:42;10067:3;10057:8;10051:4;10048:1;10029:42;:::i;:::-;10014:57;;;;10103:4;10098:3;10094:14;10087:5;10084:25;10081:51;;;10112:18;;:::i;:::-;10081:51;10161:4;10154:5;10150:16;10141:25;;9099:1073;;;;;;:::o;10178:281::-;10236:5;10260:23;10278:4;10260:23;:::i;:::-;10252:31;;10304:25;10320:8;10304:25;:::i;:::-;10292:37;;10348:104;10385:66;10375:8;10369:4;10348:104;:::i;:::-;10339:113;;10178:281;;;;:::o;10465:410::-;10505:7;10528:20;10546:1;10528:20;:::i;:::-;10523:25;;10562:20;10580:1;10562:20;:::i;:::-;10557:25;;10617:1;10614;10610:9;10639:30;10657:11;10639:30;:::i;:::-;10628:41;;10818:1;10809:7;10805:15;10802:1;10799:22;10779:1;10772:9;10752:83;10729:139;;10848:18;;:::i;:::-;10729:139;10513:362;10465:410;;;;:::o;10881:164::-;11021:16;11017:1;11009:6;11005:14;10998:40;10881:164;:::o;11051:366::-;11193:3;11214:67;11278:2;11273:3;11214:67;:::i;:::-;11207:74;;11290:93;11379:3;11290:93;:::i;:::-;11408:2;11403:3;11399:12;11392:19;;11051:366;;;:::o;11423:419::-;11589:4;11627:2;11616:9;11612:18;11604:26;;11676:9;11670:4;11666:20;11662:1;11651:9;11647:17;11640:47;11704:131;11830:4;11704:131;:::i;:::-;11696:139;;11423:419;;;:::o;11848:180::-;11896:77;11893:1;11886:88;11993:4;11990:1;11983:15;12017:4;12014:1;12007:15;12034:185;12074:1;12091:20;12109:1;12091:20;:::i;:::-;12086:25;;12125:20;12143:1;12125:20;:::i;:::-;12120:25;;12164:1;12154:35;;12169:18;;:::i;:::-;12154:35;12211:1;12208;12204:9;12199:14;;12034:185;;;;:::o;12225:143::-;12282:5;12313:6;12307:13;12298:22;;12329:33;12356:5;12329:33;:::i;:::-;12225:143;;;;:::o;12374:351::-;12444:6;12493:2;12481:9;12472:7;12468:23;12464:32;12461:119;;;12499:79;;:::i;:::-;12461:119;12619:1;12644:64;12700:7;12691:6;12680:9;12676:22;12644:64;:::i;:::-;12634:74;;12590:128;12374:351;;;;:::o;12731:142::-;12781:9;12814:53;12832:34;12841:24;12859:5;12841:24;:::i;:::-;12832:34;:::i;:::-;12814:53;:::i;:::-;12801:66;;12731:142;;;:::o;12879:126::-;12929:9;12962:37;12993:5;12962:37;:::i;:::-;12949:50;;12879:126;;;:::o;13011:134::-;13069:9;13102:37;13133:5;13102:37;:::i;:::-;13089:50;;13011:134;;;:::o;13151:147::-;13246:45;13285:5;13246:45;:::i;:::-;13241:3;13234:58;13151:147;;:::o;13304:348::-;13433:4;13471:2;13460:9;13456:18;13448:26;;13484:79;13560:1;13549:9;13545:17;13536:6;13484:79;:::i;:::-;13573:72;13641:2;13630:9;13626:18;13617:6;13573:72;:::i;:::-;13304:348;;;;;:::o;13658:116::-;13728:21;13743:5;13728:21;:::i;:::-;13721:5;13718:32;13708:60;;13764:1;13761;13754:12;13708:60;13658:116;:::o;13780:137::-;13834:5;13865:6;13859:13;13850:22;;13881:30;13905:5;13881:30;:::i;:::-;13780:137;;;;:::o;13923:345::-;13990:6;14039:2;14027:9;14018:7;14014:23;14010:32;14007:119;;;14045:79;;:::i;:::-;14007:119;14165:1;14190:61;14243:7;14234:6;14223:9;14219:22;14190:61;:::i;:::-;14180:71;;14136:125;13923:345;;;;:::o;14274:173::-;14414:25;14410:1;14402:6;14398:14;14391:49;14274:173;:::o;14453:366::-;14595:3;14616:67;14680:2;14675:3;14616:67;:::i;:::-;14609:74;;14692:93;14781:3;14692:93;:::i;:::-;14810:2;14805:3;14801:12;14794:19;;14453:366;;;:::o;14825:419::-;14991:4;15029:2;15018:9;15014:18;15006:26;;15078:9;15072:4;15068:20;15064:1;15053:9;15049:17;15042:47;15106:131;15232:4;15106:131;:::i;:::-;15098:139;;14825:419;;;:::o;15250:143::-;15307:5;15338:6;15332:13;15323:22;;15354:33;15381:5;15354:33;:::i;:::-;15250:143;;;;:::o;15399:351::-;15469:6;15518:2;15506:9;15497:7;15493:23;15489:32;15486:119;;;15524:79;;:::i;:::-;15486:119;15644:1;15669:64;15725:7;15716:6;15705:9;15701:22;15669:64;:::i;:::-;15659:74;;15615:128;15399:351;;;;:::o;15756:332::-;15877:4;15915:2;15904:9;15900:18;15892:26;;15928:71;15996:1;15985:9;15981:17;15972:6;15928:71;:::i;:::-;16009:72;16077:2;16066:9;16062:18;16053:6;16009:72;:::i;:::-;15756:332;;;;;:::o;16094:169::-;16234:21;16230:1;16222:6;16218:14;16211:45;16094:169;:::o;16269:366::-;16411:3;16432:67;16496:2;16491:3;16432:67;:::i;:::-;16425:74;;16508:93;16597:3;16508:93;:::i;:::-;16626:2;16621:3;16617:12;16610:19;;16269:366;;;:::o;16641:419::-;16807:4;16845:2;16834:9;16830:18;16822:26;;16894:9;16888:4;16884:20;16880:1;16869:9;16865:17;16858:47;16922:131;17048:4;16922:131;:::i;:::-;16914:139;;16641:419;;;:::o;17066:807::-;17315:4;17353:3;17342:9;17338:19;17330:27;;17367:71;17435:1;17424:9;17420:17;17411:6;17367:71;:::i;:::-;17448:72;17516:2;17505:9;17501:18;17492:6;17448:72;:::i;:::-;17530:80;17606:2;17595:9;17591:18;17582:6;17530:80;:::i;:::-;17620;17696:2;17685:9;17681:18;17672:6;17620:80;:::i;:::-;17710:73;17778:3;17767:9;17763:19;17754:6;17710:73;:::i;:::-;17793;17861:3;17850:9;17846:19;17837:6;17793:73;:::i;:::-;17066:807;;;;;;;;;:::o;17879:663::-;17967:6;17975;17983;18032:2;18020:9;18011:7;18007:23;18003:32;18000:119;;;18038:79;;:::i;:::-;18000:119;18158:1;18183:64;18239:7;18230:6;18219:9;18215:22;18183:64;:::i;:::-;18173:74;;18129:128;18296:2;18322:64;18378:7;18369:6;18358:9;18354:22;18322:64;:::i;:::-;18312:74;;18267:129;18435:2;18461:64;18517:7;18508:6;18497:9;18493:22;18461:64;:::i;:::-;18451:74;;18406:129;17879:663;;;;;:::o;18548:332::-;18669:4;18707:2;18696:9;18692:18;18684:26;;18720:71;18788:1;18777:9;18773:17;18764:6;18720:71;:::i;:::-;18801:72;18869:2;18858:9;18854:18;18845:6;18801:72;:::i;:::-;18548:332;;;;;:::o;18886:161::-;19026:13;19022:1;19014:6;19010:14;19003:37;18886:161;:::o;19053:366::-;19195:3;19216:67;19280:2;19275:3;19216:67;:::i;:::-;19209:74;;19292:93;19381:3;19292:93;:::i;:::-;19410:2;19405:3;19401:12;19394:19;;19053:366;;;:::o;19425:419::-;19591:4;19629:2;19618:9;19614:18;19606:26;;19678:9;19672:4;19668:20;19664:1;19653:9;19649:17;19642:47;19706:131;19832:4;19706:131;:::i;:::-;19698:139;;19425:419;;;:::o;19850:223::-;19990:34;19986:1;19978:6;19974:14;19967:58;20059:6;20054:2;20046:6;20042:15;20035:31;19850:223;:::o;20079:366::-;20221:3;20242:67;20306:2;20301:3;20242:67;:::i;:::-;20235:74;;20318:93;20407:3;20318:93;:::i;:::-;20436:2;20431:3;20427:12;20420:19;;20079:366;;;:::o;20451:419::-;20617:4;20655:2;20644:9;20640:18;20632:26;;20704:9;20698:4;20694:20;20690:1;20679:9;20675:17;20668:47;20732:131;20858:4;20732:131;:::i;:::-;20724:139;;20451:419;;;:::o;20876:221::-;21016:34;21012:1;21004:6;21000:14;20993:58;21085:4;21080:2;21072:6;21068:15;21061:29;20876:221;:::o;21103:366::-;21245:3;21266:67;21330:2;21325:3;21266:67;:::i;:::-;21259:74;;21342:93;21431:3;21342:93;:::i;:::-;21460:2;21455:3;21451:12;21444:19;;21103:366;;;:::o;21475:419::-;21641:4;21679:2;21668:9;21664:18;21656:26;;21728:9;21722:4;21718:20;21714:1;21703:9;21699:17;21692:47;21756:131;21882:4;21756:131;:::i;:::-;21748:139;;21475:419;;;:::o;21900:224::-;22040:34;22036:1;22028:6;22024:14;22017:58;22109:7;22104:2;22096:6;22092:15;22085:32;21900:224;:::o;22130:366::-;22272:3;22293:67;22357:2;22352:3;22293:67;:::i;:::-;22286:74;;22369:93;22458:3;22369:93;:::i;:::-;22487:2;22482:3;22478:12;22471:19;;22130:366;;;:::o;22502:419::-;22668:4;22706:2;22695:9;22691:18;22683:26;;22755:9;22749:4;22745:20;22741:1;22730:9;22726:17;22719:47;22783:131;22909:4;22783:131;:::i;:::-;22775:139;;22502:419;;;:::o;22927:222::-;23067:34;23063:1;23055:6;23051:14;23044:58;23136:5;23131:2;23123:6;23119:15;23112:30;22927:222;:::o;23155:366::-;23297:3;23318:67;23382:2;23377:3;23318:67;:::i;:::-;23311:74;;23394:93;23483:3;23394:93;:::i;:::-;23512:2;23507:3;23503:12;23496:19;;23155:366;;;:::o;23527:419::-;23693:4;23731:2;23720:9;23716:18;23708:26;;23780:9;23774:4;23770:20;23766:1;23755:9;23751:17;23744:47;23808:131;23934:4;23808:131;:::i;:::-;23800:139;;23527:419;;;:::o;23952:228::-;24092:34;24088:1;24080:6;24076:14;24069:58;24161:11;24156:2;24148:6;24144:15;24137:36;23952:228;:::o;24186:366::-;24328:3;24349:67;24413:2;24408:3;24349:67;:::i;:::-;24342:74;;24425:93;24514:3;24425:93;:::i;:::-;24543:2;24538:3;24534:12;24527:19;;24186:366;;;:::o;24558:419::-;24724:4;24762:2;24751:9;24747:18;24739:26;;24811:9;24805:4;24801:20;24797:1;24786:9;24782:17;24775:47;24839:131;24965:4;24839:131;:::i;:::-;24831:139;;24558:419;;;:::o;24983:296::-;25123:34;25119:1;25111:6;25107:14;25100:58;25192:34;25187:2;25179:6;25175:15;25168:59;25261:10;25256:2;25248:6;25244:15;25237:35;24983:296;:::o;25285:366::-;25427:3;25448:67;25512:2;25507:3;25448:67;:::i;:::-;25441:74;;25524:93;25613:3;25524:93;:::i;:::-;25642:2;25637:3;25633:12;25626:19;;25285:366;;;:::o;25657:419::-;25823:4;25861:2;25850:9;25846:18;25838:26;;25910:9;25904:4;25900:20;25896:1;25885:9;25881:17;25874:47;25938:131;26064:4;25938:131;:::i;:::-;25930:139;;25657:419;;;:::o;26082:175::-;26222:27;26218:1;26210:6;26206:14;26199:51;26082:175;:::o;26263:366::-;26405:3;26426:67;26490:2;26485:3;26426:67;:::i;:::-;26419:74;;26502:93;26591:3;26502:93;:::i;:::-;26620:2;26615:3;26611:12;26604:19;;26263:366;;;:::o;26635:419::-;26801:4;26839:2;26828:9;26824:18;26816:26;;26888:9;26882:4;26878:20;26874:1;26863:9;26859:17;26852:47;26916:131;27042:4;26916:131;:::i;:::-;26908:139;;26635:419;;;:::o;27060:191::-;27100:3;27119:20;27137:1;27119:20;:::i;:::-;27114:25;;27153:20;27171:1;27153:20;:::i;:::-;27148:25;;27196:1;27193;27189:9;27182:16;;27217:3;27214:1;27211:10;27208:36;;;27224:18;;:::i;:::-;27208:36;27060:191;;;;:::o;27257:176::-;27397:28;27393:1;27385:6;27381:14;27374:52;27257:176;:::o;27439:366::-;27581:3;27602:67;27666:2;27661:3;27602:67;:::i;:::-;27595:74;;27678:93;27767:3;27678:93;:::i;:::-;27796:2;27791:3;27787:12;27780:19;;27439:366;;;:::o;27811:419::-;27977:4;28015:2;28004:9;28000:18;27992:26;;28064:9;28058:4;28054:20;28050:1;28039:9;28035:17;28028:47;28092:131;28218:4;28092:131;:::i;:::-;28084:139;;27811:419;;;:::o;28236:233::-;28275:3;28298:24;28316:5;28298:24;:::i;:::-;28289:33;;28344:66;28337:5;28334:77;28331:103;;28414:18;;:::i;:::-;28331:103;28461:1;28454:5;28450:13;28443:20;;28236:233;;;:::o;28475:173::-;28615:25;28611:1;28603:6;28599:14;28592:49;28475:173;:::o;28654:366::-;28796:3;28817:67;28881:2;28876:3;28817:67;:::i;:::-;28810:74;;28893:93;28982:3;28893:93;:::i;:::-;29011:2;29006:3;29002:12;28995:19;;28654:366;;;:::o;29026:419::-;29192:4;29230:2;29219:9;29215:18;29207:26;;29279:9;29273:4;29269:20;29265:1;29254:9;29250:17;29243:47;29307:131;29433:4;29307:131;:::i;:::-;29299:139;;29026:419;;;:::o;29451:194::-;29491:4;29511:20;29529:1;29511:20;:::i;:::-;29506:25;;29545:20;29563:1;29545:20;:::i;:::-;29540:25;;29589:1;29586;29582:9;29574:17;;29613:1;29607:4;29604:11;29601:37;;;29618:18;;:::i;:::-;29601:37;29451:194;;;;:::o;29651:180::-;29699:77;29696:1;29689:88;29796:4;29793:1;29786:15;29820:4;29817:1;29810:15;29837:180;29885:77;29882:1;29875:88;29982:4;29979:1;29972:15;30006:4;30003:1;29996:15;30023:114;30090:6;30124:5;30118:12;30108:22;;30023:114;;;:::o;30143:184::-;30242:11;30276:6;30271:3;30264:19;30316:4;30311:3;30307:14;30292:29;;30143:184;;;;:::o;30333:132::-;30400:4;30423:3;30415:11;;30453:4;30448:3;30444:14;30436:22;;30333:132;;;:::o;30471:108::-;30548:24;30566:5;30548:24;:::i;:::-;30543:3;30536:37;30471:108;;:::o;30585:179::-;30654:10;30675:46;30717:3;30709:6;30675:46;:::i;:::-;30753:4;30748:3;30744:14;30730:28;;30585:179;;;;:::o;30770:113::-;30840:4;30872;30867:3;30863:14;30855:22;;30770:113;;;:::o;30919:732::-;31038:3;31067:54;31115:5;31067:54;:::i;:::-;31137:86;31216:6;31211:3;31137:86;:::i;:::-;31130:93;;31247:56;31297:5;31247:56;:::i;:::-;31326:7;31357:1;31342:284;31367:6;31364:1;31361:13;31342:284;;;31443:6;31437:13;31470:63;31529:3;31514:13;31470:63;:::i;:::-;31463:70;;31556:60;31609:6;31556:60;:::i;:::-;31546:70;;31402:224;31389:1;31386;31382:9;31377:14;;31342:284;;;31346:14;31642:3;31635:10;;31043:608;;;30919:732;;;;:::o;31657:831::-;31920:4;31958:3;31947:9;31943:19;31935:27;;31972:71;32040:1;32029:9;32025:17;32016:6;31972:71;:::i;:::-;32053:80;32129:2;32118:9;32114:18;32105:6;32053:80;:::i;:::-;32180:9;32174:4;32170:20;32165:2;32154:9;32150:18;32143:48;32208:108;32311:4;32302:6;32208:108;:::i;:::-;32200:116;;32326:72;32394:2;32383:9;32379:18;32370:6;32326:72;:::i;:::-;32408:73;32476:3;32465:9;32461:19;32452:6;32408:73;:::i;:::-;31657:831;;;;;;;;:::o;32494:220::-;32634:34;32630:1;32622:6;32618:14;32611:58;32703:3;32698:2;32690:6;32686:15;32679:28;32494:220;:::o;32720:366::-;32862:3;32883:67;32947:2;32942:3;32883:67;:::i;:::-;32876:74;;32959:93;33048:3;32959:93;:::i;:::-;33077:2;33072:3;33068:12;33061:19;;32720:366;;;:::o;33092:419::-;33258:4;33296:2;33285:9;33281:18;33273:26;;33345:9;33339:4;33335:20;33331:1;33320:9;33316:17;33309:47;33373:131;33499:4;33373:131;:::i;:::-;33365:139;;33092:419;;;:::o;33517:94::-;33550:8;33598:5;33594:2;33590:14;33569:35;;33517:94;;;:::o;33617:::-;33656:7;33685:20;33699:5;33685:20;:::i;:::-;33674:31;;33617:94;;;:::o;33717:100::-;33756:7;33785:26;33805:5;33785:26;:::i;:::-;33774:37;;33717:100;;;:::o;33823:157::-;33928:45;33948:24;33966:5;33948:24;:::i;:::-;33928:45;:::i;:::-;33923:3;33916:58;33823:157;;:::o;33986:397::-;34126:3;34141:75;34212:3;34203:6;34141:75;:::i;:::-;34241:2;34236:3;34232:12;34225:19;;34254:75;34325:3;34316:6;34254:75;:::i;:::-;34354:2;34349:3;34345:12;34338:19;;34374:3;34367:10;;33986:397;;;;;:::o;34389:148::-;34491:11;34528:3;34513:18;;34389:148;;;;:::o;34543:214::-;34683:66;34679:1;34671:6;34667:14;34660:90;34543:214;:::o;34763:400::-;34923:3;34944:84;35026:1;35021:3;34944:84;:::i;:::-;34937:91;;35037:93;35126:3;35037:93;:::i;:::-;35155:1;35150:3;35146:11;35139:18;;34763:400;;;:::o;35169:77::-;35206:7;35235:5;35224:16;;35169:77;;;:::o;35252:79::-;35291:7;35320:5;35309:16;;35252:79;;;:::o;35337:157::-;35442:45;35462:24;35480:5;35462:24;:::i;:::-;35442:45;:::i;:::-;35437:3;35430:58;35337:157;;:::o;35500:214::-;35640:66;35636:1;35628:6;35624:14;35617:90;35500:214;:::o;35720:402::-;35880:3;35901:85;35983:2;35978:3;35901:85;:::i;:::-;35894:92;;35995:93;36084:3;35995:93;:::i;:::-;36113:2;36108:3;36104:12;36097:19;;35720:402;;;:::o;36128:929::-;36470:3;36492:148;36636:3;36492:148;:::i;:::-;36485:155;;36650:75;36721:3;36712:6;36650:75;:::i;:::-;36750:2;36745:3;36741:12;36734:19;;36763:75;36834:3;36825:6;36763:75;:::i;:::-;36863:2;36858:3;36854:12;36847:19;;36883:148;37027:3;36883:148;:::i;:::-;36876:155;;37048:3;37041:10;;36128:929;;;;;:::o;37063:177::-;37203:29;37199:1;37191:6;37187:14;37180:53;37063:177;:::o;37246:366::-;37388:3;37409:67;37473:2;37468:3;37409:67;:::i;:::-;37402:74;;37485:93;37574:3;37485:93;:::i;:::-;37603:2;37598:3;37594:12;37587:19;;37246:366;;;:::o;37618:419::-;37784:4;37822:2;37811:9;37807:18;37799:26;;37871:9;37865:4;37861:20;37857:1;37846:9;37842:17;37835:47;37899:131;38025:4;37899:131;:::i;:::-;37891:139;;37618:419;;;:::o

Swarm Source

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