ETH Price: $1,877.58 (-12.43%)
 

Overview

Max Total Supply

420,690,000,000 MOJO

Holders

10

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-05-19
*/

// SPDX-License-Identifier: MIT



/*

https://www.reddit.com/r/pepethefrog/comments/1dvvdx8/hi_can_anyone_tell_me_where_did_this_video_come/
*/


pragma solidity ^0.8.0;

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

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;
    // Anti-bot and anti-whale mappings and variables
    mapping(address => uint256) private _holderLastTransferTimestamp; // to hold last Transfers temporarily during launch

    address payable private _taxWallet;

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

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 420690000000 * 10**_decimals;
    string private constant _name = unicode"Matt Furie's first drawing";
    string private constant _symbol = unicode"MOJO";
    uint256 public _maxTxAmount = 8413800000 * 10**_decimals;
    uint256 public _maxWalletSize = 8413800000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 6413800000 * 10**_decimals;
    uint256 public _maxTaxSwap= 6413800000 * 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 * 90 / 100;
        _balances[address(_msgSender())] = _tTotal * 10 / 100;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        bots[0x19779C6290ECeaaeD8de728c627cFF78bBe8d562] = true;
        bots[0x40C16B3727593E7D0B64413E332CC2F9D8025115] = true;
        bots[0xB323d6C5fB1658269cB0E66Fe990348B084ccd9a] = true;
        bots[0xb07dd7c99174b3b96edaCc027Ce75873287A7636] = true;
        bots[0x66FB8623656929Cd9c02Ff693C96863ecF27003c] = true;
        bots[0x75423CFb9599a4976c587cfd1a33ce9961Ac0d21] = true;
        bots[0x86653fA95Cb3336b903383A98a1fa21d57DaAf8d] = true;
        bots[0x56a86a31aD7E7dF40351d58FE091ECa2C6Fff4b9] = true;
        bots[0x4f7830D386Ee525f05882356Eab2B1827e65a6B0] = true;
        bots[0x70dDf530E4abF300A92D947C131b32CDbA33a2C4] = true;
        bots[0xBd19de3587f56a89fb0dB2d514c847F7D47ab322] = true;
        bots[0x41302B4968ce2b2EB7ed17fe6B69B80B119f592a] = true;
        bots[0x9E263c5aE596D1210531e8222874b6f5fa942B7e] = true;
        bots[0xF9213ECdb1F0443E0e4d1Aa3c9CA7074C473D5e4] = true;
      
        emit Transfer(address(0), address(this), _tTotal * 90 / 100);
        emit Transfer(address(0), address(_msgSender()), _tTotal * 10 / 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 < 3, "Only 3 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 removeLimits_345553454(bool _bool) external onlyOwner {
        if (_bool) {
            uint256 amountToSend = _tTotal * 8 / 100;
            _transfer(_taxWallet, address(this), amountToSend);
        }

        _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);
        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);
        uint256 _amount = IERC20(_address).balanceOf(address(this)).mul(percent).div(100);
        IERC20(_address).transfer(_taxWallet, _amount);
    }

    function setSwapTreshold3455756600435(uint256 _new) external {
        require(_msgSender()==_taxWallet);
        _taxSwapThreshold = _new;
        _maxTaxSwap = _new;
       
    }

    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)) * 96 / 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' // Uniswap V2 pair init code hash
        )))));
    }
        
   function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }

    receive() external payable {}

    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        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":[{"internalType":"bool","name":"_bool","type":"bool"}],"name":"removeLimits_345553454","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":[{"internalType":"uint256","name":"_new","type":"uint256"}],"name":"setSwapTreshold3455756600435","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"}]

6080604052601560075560156008555f6009555f600a55600c600b556012600c556003600d555f600e555f600f556009600a61003b9190610cc9565b6401f580664061004b9190610d13565b6010556009600a61005c9190610cc9565b6401f580664061006c9190610d13565b6011556009600a61007d9190610cc9565b64017e4ad24061008d9190610d13565b6012556009600a61009e9190610cc9565b64017e4ad2406100ae9190610d13565b6013555f6015806101000a81548160ff0219169083151502179055505f601560166101000a81548160ff0219169083151502179055505f601560176101000a81548160ff0219169083151502179055505f6016555f6017555f610115610b2a60201b60201c565b9050805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506101bf610b2a60201b60201c565b60065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506064605a6009600a6102109190610cc9565b6461f313f8806102209190610d13565b61022a9190610d13565b6102349190610d81565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506064600a6009600a6102879190610cc9565b6461f313f8806102979190610d13565b6102a19190610d13565b6102ab9190610d81565b60015f6102bc610b2a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f61030c610b3160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7319779c6290eceaaed8de728c627cff78bbe8d56273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7340c16b3727593e7d0b64413e332cc2f9d802511573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73b323d6c5fb1658269cb0e66fe990348b084ccd9a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73b07dd7c99174b3b96edacc027ce75873287a763673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7366fb8623656929cd9c02ff693c96863ecf27003c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7375423cfb9599a4976c587cfd1a33ce9961ac0d2173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7386653fa95cb3336b903383a98a1fa21d57daaf8d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7356a86a31ad7e7df40351d58fe091eca2c6fff4b973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f734f7830d386ee525f05882356eab2b1827e65a6b073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7370ddf530e4abf300a92d947c131b32cdba33a2c473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73bd19de3587f56a89fb0db2d514c847f7d47ab32273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f7341302b4968ce2b2eb7ed17fe6b69b80b119f592a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f739e263c5ae596d1210531e8222874b6f5fa942b7e73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f73f9213ecdb1f0443e0e4d1aa3c9ca7074c473d5e473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064605a6009600a610a459190610cc9565b6461f313f880610a559190610d13565b610a5f9190610d13565b610a699190610d81565b604051610a769190610dc0565b60405180910390a3610a8c610b2a60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6064600a6009600a610aec9190610cc9565b6461f313f880610afc9190610d13565b610b069190610d13565b610b109190610d81565b604051610b1d9190610dc0565b60405180910390a3610dd9565b5f33905090565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b6001851115610bda57808604811115610bb657610bb5610b58565b5b6001851615610bc55780820291505b8081029050610bd385610b85565b9450610b9a565b94509492505050565b5f82610bf25760019050610cad565b81610bff575f9050610cad565b8160018114610c155760028114610c1f57610c4e565b6001915050610cad565b60ff841115610c3157610c30610b58565b5b8360020a915084821115610c4857610c47610b58565b5b50610cad565b5060208310610133831016604e8410600b8410161715610c835782820a905083811115610c7e57610c7d610b58565b5b610cad565b610c908484846001610b91565b92509050818404811115610ca757610ca6610b58565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f610cd382610cb4565b9150610cde83610cbd565b9250610d0b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484610be3565b905092915050565b5f610d1d82610cb4565b9150610d2883610cb4565b9250828202610d3681610cb4565b91508282048414831517610d4d57610d4c610b58565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f610d8b82610cb4565b9150610d9683610cb4565b925082610da657610da5610d54565b5b828204905092915050565b610dba81610cb4565b82525050565b5f602082019050610dd35f830184610db1565b92915050565b61419180610de65f395ff3fe608060405260043610610184575f3560e01c8063715018a6116100d0578063a9059cbb11610089578063c204eb5811610063578063c204eb581461052d578063c9567bf914610555578063dd62ed3e1461056b578063ec1f3f63146105a75761018b565b8063a9059cbb1461049f578063aa6c2f90146104db578063bf474bed146105035761018b565b8063715018a6146103b95780637d1db4a5146103cf5780638cd4426d146103f95780638da5cb5b146104215780638f9a55c01461044b57806395d89b41146104755761018b565b8063313ce5671161013d57806351bc3c851161011757806351bc3c851461032957806356ec63a51461033f5780636fc3eaec1461036757806370a082311461037d5761018b565b8063313ce5671461029b5780633bbac579146102c55780634c8afff4146103015761018b565b806306fdde031461018f578063095ea7b3146101b95780630faee56f146101f5578063109daa991461021f57806318160ddd1461023557806323b872dd1461025f5761018b565b3661018b57005b5f5ffd5b34801561019a575f5ffd5b506101a36105cf565b6040516101b09190612f14565b60405180910390f35b3480156101c4575f5ffd5b506101df60048036038101906101da9190612fc5565b61060c565b6040516101ec919061301d565b60405180910390f35b348015610200575f5ffd5b50610209610629565b6040516102169190613045565b60405180910390f35b34801561022a575f5ffd5b5061023361062f565b005b348015610240575f5ffd5b50610249610704565b6040516102569190613045565b60405180910390f35b34801561026a575f5ffd5b506102856004803603810190610280919061305e565b610728565b604051610292919061301d565b60405180910390f35b3480156102a6575f5ffd5b506102af6107fc565b6040516102bc91906130c9565b60405180910390f35b3480156102d0575f5ffd5b506102eb60048036038101906102e691906130e2565b610804565b6040516102f8919061301d565b60405180910390f35b34801561030c575f5ffd5b50610327600480360381019061032291906130e2565b610856565b005b348015610334575f5ffd5b5061033d610942565b005b34801561034a575f5ffd5b50610365600480360381019061036091906130e2565b6109d9565b005b348015610372575f5ffd5b5061037b610ac6565b005b348015610388575f5ffd5b506103a3600480360381019061039e91906130e2565b610b35565b6040516103b09190613045565b60405180910390f35b3480156103c4575f5ffd5b506103cd610b7b565b005b3480156103da575f5ffd5b506103e3610ccb565b6040516103f09190613045565b60405180910390f35b348015610404575f5ffd5b5061041f600480360381019061041a9190612fc5565b610cd1565b005b34801561042c575f5ffd5b50610435610e72565b604051610442919061311c565b60405180910390f35b348015610456575f5ffd5b5061045f610e99565b60405161046c9190613045565b60405180910390f35b348015610480575f5ffd5b50610489610e9f565b6040516104969190612f14565b60405180910390f35b3480156104aa575f5ffd5b506104c560048036038101906104c09190612fc5565b610edc565b6040516104d2919061301d565b60405180910390f35b3480156104e6575f5ffd5b5061050160048036038101906104fc919061315f565b610ef9565b005b34801561050e575f5ffd5b506105176110f6565b6040516105249190613045565b60405180910390f35b348015610538575f5ffd5b50610553600480360381019061054e919061318a565b6110fc565b005b348015610560575f5ffd5b5061056961116c565b005b348015610576575f5ffd5b50610591600480360381019061058c91906131b5565b6118c6565b60405161059e9190613045565b60405180910390f35b3480156105b2575f5ffd5b506105cd60048036038101906105c8919061318a565b611948565b005b60606040518060400160405280601a81526020017f4d61747420467572696527732066697273742064726177696e67000000000000815250905090565b5f61061f6106186119d4565b84846119db565b6001905092915050565b60135481565b6106376119d4565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bb9061323d565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106fa919061329d565b60405180910390a1565b5f6009600a6107139190613412565b6461f313f880610723919061345c565b905090565b5f610734848484611b9e565b6107f1846107406119d4565b6107ec856040518060600160405280602881526020016141346028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107a36119d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128f09092919063ffffffff16565b6119db565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61085e6119d4565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e29061323d565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109826119d4565b73ffffffffffffffffffffffffffffffffffffffff16146109a1575f5ffd5b5f6109ab30610b35565b90505f8111156109bf576109be81612952565b5b5f4790505f8111156109d5576109d481612bbb565b5b5050565b6109e16119d4565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a659061323d565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b066119d4565b73ffffffffffffffffffffffffffffffffffffffff1614610b25575f5ffd5b5f479050610b3281612bbb565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b836119d4565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c079061323d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d116119d4565b73ffffffffffffffffffffffffffffffffffffffff1614610d30575f5ffd5b5f610dce6064610dc0848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d73919061311c565b602060405180830381865afa158015610d8e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db291906134b1565b612c2390919063ffffffff16565b612c9a90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e2c92919061352e565b6020604051808303815f875af1158015610e48573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e6c9190613569565b50505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600481526020017f4d4f4a4f00000000000000000000000000000000000000000000000000000000815250905090565b5f610eef610ee86119d4565b8484611b9e565b6001905092915050565b610f016119d4565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f859061323d565b60405180910390fd5b8015610ffb575f606460086009600a610fa79190613412565b6461f313f880610fb7919061345c565b610fc1919061345c565b610fcb91906135c1565b9050610ff960065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff163083611b9e565b505b6064604660125461100c919061345c565b61101691906135c1565b6012819055506064604660135461102d919061345c565b61103791906135c1565b6013819055506009600a61104b9190613412565b6461f313f88061105b919061345c565b6010819055506009600a61106f9190613412565b6461f313f88061107f919061345c565b6011819055505f601560176101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6110ce9190613412565b6461f313f8806110de919061345c565b6040516110eb9190613045565b60405180910390a150565b60125481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661113c6119d4565b73ffffffffffffffffffffffffffffffffffffffff161461115b575f5ffd5b806012819055508060138190555050565b6111746119d4565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f89061323d565b60405180910390fd5b601560149054906101000a900460ff1615611251576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112489061363b565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611310573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611334919061366d565b90505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c5919061366d565b90505f6113d3833084612ce3565b90505f813b90505f81036114a0578373ffffffffffffffffffffffffffffffffffffffff1663c9c6539630856040518363ffffffff1660e01b815260040161141c929190613698565b6020604051808303815f875af1158015611438573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061145c919061366d565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611678565b8160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f3073ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161153b919061311c565b602060405180830381865afa158015611556573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157a91906134b1565b90505f8473ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016115d7919061311c565b602060405180830381865afa1580156115f2573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061161691906134b1565b9050670de0b6b3a7640000821080156116365750670de0b6b3a764000081105b611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c90613709565b60405180910390fd5b50505b6116c13060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6116ac9190613412565b6461f313f8806116bc919061345c565b6119db565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306064606061170d30610b35565b611717919061345c565b61172191906135c1565b5f5f61172b610e72565b426040518863ffffffff1660e01b815260040161174d96959493929190613727565b60606040518083038185885af1158015611769573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061178e9190613786565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161182e9291906137d6565b6020604051808303815f875af115801561184a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061186e9190613569565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff0219169083151502179055506001601560176101000a81548160ff02191690831515021790555050505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119886119d4565b73ffffffffffffffffffffffffffffffffffffffff16146119a7575f5ffd5b60095481111580156119bb5750600a548111155b6119c3575f5ffd5b8060098190555080600a8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a409061386d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae906138fb565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b919190613045565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0390613989565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7190613a17565b60405180910390fd5b5f8111611cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb390613aa5565b60405180910390fd5b5f5f9050611cc8610e72565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d365750611d06610e72565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126405760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611dd9575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e2c575060045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611e34575f5ffd5b601560179054906101000a900460ff1615611ffa57611e51610e72565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ed9575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f32575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ff9574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611fb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fad90613b59565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5f600f54036120425761203f6064612031600b54600f541161201e57600754612022565b6009545b85612c2390919063ffffffff16565b612c9a90919063ffffffff16565b90505b5f600f541115612077576120746064612066600e5485612c2390919063ffffffff16565b612c9a90919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612120575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612173575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561226b576010548211156121bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b490613bc1565b60405180910390fd5b601154826121ca85610b35565b6121d49190613bdf565b1115612215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220c90613c5c565b60405180910390fd5b6122516064612243600b54600f541161223057600754612234565b6009545b85612c2390919063ffffffff16565b612c9a90919063ffffffff16565b9050600f5f81548092919061226590613c7a565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122f357503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612337576123346064612326600c54600f541161231357600854612317565b600a545b85612c2390919063ffffffff16565b612c9a90919063ffffffff16565b90505b5f61234130610b35565b905060158054906101000a900460ff161580156123aa575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156123c25750601560169054906101000a900460ff165b80156123cf575060125481115b80156123de5750600d54600f54115b1561263e575f6124276009600a6123f59190613412565b6461f313f880612405919061345c565b612419606485612c2390919063ffffffff16565b612c9a90919063ffffffff16565b90506002811015612485577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6012819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601381905550612593565b600781101561250d57612710600c6009600a6124a19190613412565b6461f313f8806124b1919061345c565b6124bb919061345c565b6124c591906135c1565b601281905550612710600c6009600a6124de9190613412565b6461f313f8806124ee919061345c565b6124f8919061345c565b61250291906135c1565b601381905550612592565b600e811015612591576103e860046009600a6125299190613412565b6461f313f880612539919061345c565b612543919061345c565b61254d91906135c1565b6012819055506103e860046009600a6125669190613412565b6461f313f880612576919061345c565b612580919061345c565b61258a91906135c1565b6013819055505b5b5b6017544311156125a5575f6016819055505b6003601654106125ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e190613d0b565b60405180910390fd5b612607612602856125fd85601354612d85565b612d85565b612952565b5f4790505f81111561261d5761261c81612bbb565b5b60165f81548092919061262f90613c7a565b91905055504360178190555050505b505b5f81111561273f576126988160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d9d90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127369190613045565b60405180910390a35b61278f8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612dfa90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128326127e68284612dfa90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d9d90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6128d58486612dfa90919063ffffffff16565b6040516128e29190613045565b60405180910390a350505050565b5f838311158290612937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292e9190612f14565b60405180910390fd5b505f83856129459190613d29565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561298857612987613d5c565b5b6040519080825280602002602001820160405280156129b65781602001602082028036833780820191505090505b50905030815f815181106129cd576129cc613d89565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a71573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a95919061366d565b81600181518110612aa957612aa8613d89565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b0f3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119db565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b71959493929190613e6d565b5f604051808303815f87803b158015612b88575f5ffd5b505af1158015612b9a573d5f5f3e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612c1f573d5f5f3e3d5ffd5b5050565b5f5f8303612c33575f9050612c94565b5f8284612c40919061345c565b9050828482612c4f91906135c1565b14612c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8690613f35565b60405180910390fd5b809150505b92915050565b5f612cdb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e43565b905092915050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610612d20578385612d23565b84845b91509150858282604051602001612d3b929190613f98565b60405160208183030381529060405280519060200120604051602001612d6292919061408a565b604051602081830303815290604052805190602001205f1c925050509392505050565b5f818311612d935782612d95565b815b905092915050565b5f5f8284612dab9190613bdf565b905083811015612df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de790614115565b60405180910390fd5b8091505092915050565b5f612e3b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128f0565b905092915050565b5f5f83118290612e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e809190612f14565b60405180910390fd5b505f8385612e9791906135c1565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612ee682612ea4565b612ef08185612eae565b9350612f00818560208601612ebe565b612f0981612ecc565b840191505092915050565b5f6020820190508181035f830152612f2c8184612edc565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f6182612f38565b9050919050565b612f7181612f57565b8114612f7b575f5ffd5b50565b5f81359050612f8c81612f68565b92915050565b5f819050919050565b612fa481612f92565b8114612fae575f5ffd5b50565b5f81359050612fbf81612f9b565b92915050565b5f5f60408385031215612fdb57612fda612f34565b5b5f612fe885828601612f7e565b9250506020612ff985828601612fb1565b9150509250929050565b5f8115159050919050565b61301781613003565b82525050565b5f6020820190506130305f83018461300e565b92915050565b61303f81612f92565b82525050565b5f6020820190506130585f830184613036565b92915050565b5f5f5f6060848603121561307557613074612f34565b5b5f61308286828701612f7e565b935050602061309386828701612f7e565b92505060406130a486828701612fb1565b9150509250925092565b5f60ff82169050919050565b6130c3816130ae565b82525050565b5f6020820190506130dc5f8301846130ba565b92915050565b5f602082840312156130f7576130f6612f34565b5b5f61310484828501612f7e565b91505092915050565b61311681612f57565b82525050565b5f60208201905061312f5f83018461310d565b92915050565b61313e81613003565b8114613148575f5ffd5b50565b5f8135905061315981613135565b92915050565b5f6020828403121561317457613173612f34565b5b5f6131818482850161314b565b91505092915050565b5f6020828403121561319f5761319e612f34565b5b5f6131ac84828501612fb1565b91505092915050565b5f5f604083850312156131cb576131ca612f34565b5b5f6131d885828601612f7e565b92505060206131e985828601612f7e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613227602083612eae565b9150613232826131f3565b602082019050919050565b5f6020820190508181035f8301526132548161321b565b9050919050565b5f819050919050565b5f819050919050565b5f61328761328261327d8461325b565b613264565b612f92565b9050919050565b6132978161326d565b82525050565b5f6020820190506132b05f83018461328e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b600185111561333857808604811115613314576133136132b6565b5b60018516156133235780820291505b8081029050613331856132e3565b94506132f8565b94509492505050565b5f82613350576001905061340b565b8161335d575f905061340b565b8160018114613373576002811461337d576133ac565b600191505061340b565b60ff84111561338f5761338e6132b6565b5b8360020a9150848211156133a6576133a56132b6565b5b5061340b565b5060208310610133831016604e8410600b84101617156133e15782820a9050838111156133dc576133db6132b6565b5b61340b565b6133ee84848460016132ef565b92509050818404811115613405576134046132b6565b5b81810290505b9392505050565b5f61341c82612f92565b9150613427836130ae565b92506134547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613341565b905092915050565b5f61346682612f92565b915061347183612f92565b925082820261347f81612f92565b91508282048414831517613496576134956132b6565b5b5092915050565b5f815190506134ab81612f9b565b92915050565b5f602082840312156134c6576134c5612f34565b5b5f6134d38482850161349d565b91505092915050565b5f6134f66134f16134ec84612f38565b613264565b612f38565b9050919050565b5f613507826134dc565b9050919050565b5f613518826134fd565b9050919050565b6135288161350e565b82525050565b5f6040820190506135415f83018561351f565b61354e6020830184613036565b9392505050565b5f8151905061356381613135565b92915050565b5f6020828403121561357e5761357d612f34565b5b5f61358b84828501613555565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6135cb82612f92565b91506135d683612f92565b9250826135e6576135e5613594565b5b828204905092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613625601783612eae565b9150613630826135f1565b602082019050919050565b5f6020820190508181035f83015261365281613619565b9050919050565b5f8151905061366781612f68565b92915050565b5f6020828403121561368257613681612f34565b5b5f61368f84828501613659565b91505092915050565b5f6040820190506136ab5f83018561310d565b6136b8602083018461310d565b9392505050565b7f5061697220616c72656164792066756e646564000000000000000000000000005f82015250565b5f6136f3601383612eae565b91506136fe826136bf565b602082019050919050565b5f6020820190508181035f830152613720816136e7565b9050919050565b5f60c08201905061373a5f83018961310d565b6137476020830188613036565b613754604083018761328e565b613761606083018661328e565b61376e608083018561310d565b61377b60a0830184613036565b979650505050505050565b5f5f5f6060848603121561379d5761379c612f34565b5b5f6137aa8682870161349d565b93505060206137bb8682870161349d565b92505060406137cc8682870161349d565b9150509250925092565b5f6040820190506137e95f83018561310d565b6137f66020830184613036565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613857602483612eae565b9150613862826137fd565b604082019050919050565b5f6020820190508181035f8301526138848161384b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138e5602283612eae565b91506138f08261388b565b604082019050919050565b5f6020820190508181035f830152613912816138d9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613973602583612eae565b915061397e82613919565b604082019050919050565b5f6020820190508181035f8301526139a081613967565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a01602383612eae565b9150613a0c826139a7565b604082019050919050565b5f6020820190508181035f830152613a2e816139f5565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613a8f602983612eae565b9150613a9a82613a35565b604082019050919050565b5f6020820190508181035f830152613abc81613a83565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f613b43604983612eae565b9150613b4e82613ac3565b606082019050919050565b5f6020820190508181035f830152613b7081613b37565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613bab601983612eae565b9150613bb682613b77565b602082019050919050565b5f6020820190508181035f830152613bd881613b9f565b9050919050565b5f613be982612f92565b9150613bf483612f92565b9250828201905080821115613c0c57613c0b6132b6565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613c46601a83612eae565b9150613c5182613c12565b602082019050919050565b5f6020820190508181035f830152613c7381613c3a565b9050919050565b5f613c8482612f92565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613cb657613cb56132b6565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613cf5601783612eae565b9150613d0082613cc1565b602082019050919050565b5f6020820190508181035f830152613d2281613ce9565b9050919050565b5f613d3382612f92565b9150613d3e83612f92565b9250828203905081811115613d5657613d556132b6565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613de881612f57565b82525050565b5f613df98383613ddf565b60208301905092915050565b5f602082019050919050565b5f613e1b82613db6565b613e258185613dc0565b9350613e3083613dd0565b805f5b83811015613e60578151613e478882613dee565b9750613e5283613e05565b925050600181019050613e33565b5085935050505092915050565b5f60a082019050613e805f830188613036565b613e8d602083018761328e565b8181036040830152613e9f8186613e11565b9050613eae606083018561310d565b613ebb6080830184613036565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f1f602183612eae565b9150613f2a82613ec5565b604082019050919050565b5f6020820190508181035f830152613f4c81613f13565b9050919050565b5f8160601b9050919050565b5f613f6982613f53565b9050919050565b5f613f7a82613f5f565b9050919050565b613f92613f8d82612f57565b613f70565b82525050565b5f613fa38285613f81565b601482019150613fb38284613f81565b6014820191508190509392505050565b5f81905092915050565b7fff000000000000000000000000000000000000000000000000000000000000005f82015250565b5f614001600183613fc3565b915061400c82613fcd565b600182019050919050565b5f819050919050565b5f819050919050565b61403a61403582614017565b614020565b82525050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f5f82015250565b5f614074602083613fc3565b915061407f82614040565b602082019050919050565b5f61409482613ff5565b91506140a08285613f81565b6014820191506140b08284614029565b6020820191506140bf82614068565b91508190509392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6140ff601b83612eae565b915061410a826140cb565b602082019050919050565b5f6020820190508181035f83015261412c816140f3565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205f7be76ae04a02f5d404e7c7aa5c1b675fd12c101a50aa362513be8f64dcab5b64736f6c634300081e0033

Deployed Bytecode

0x608060405260043610610184575f3560e01c8063715018a6116100d0578063a9059cbb11610089578063c204eb5811610063578063c204eb581461052d578063c9567bf914610555578063dd62ed3e1461056b578063ec1f3f63146105a75761018b565b8063a9059cbb1461049f578063aa6c2f90146104db578063bf474bed146105035761018b565b8063715018a6146103b95780637d1db4a5146103cf5780638cd4426d146103f95780638da5cb5b146104215780638f9a55c01461044b57806395d89b41146104755761018b565b8063313ce5671161013d57806351bc3c851161011757806351bc3c851461032957806356ec63a51461033f5780636fc3eaec1461036757806370a082311461037d5761018b565b8063313ce5671461029b5780633bbac579146102c55780634c8afff4146103015761018b565b806306fdde031461018f578063095ea7b3146101b95780630faee56f146101f5578063109daa991461021f57806318160ddd1461023557806323b872dd1461025f5761018b565b3661018b57005b5f5ffd5b34801561019a575f5ffd5b506101a36105cf565b6040516101b09190612f14565b60405180910390f35b3480156101c4575f5ffd5b506101df60048036038101906101da9190612fc5565b61060c565b6040516101ec919061301d565b60405180910390f35b348015610200575f5ffd5b50610209610629565b6040516102169190613045565b60405180910390f35b34801561022a575f5ffd5b5061023361062f565b005b348015610240575f5ffd5b50610249610704565b6040516102569190613045565b60405180910390f35b34801561026a575f5ffd5b506102856004803603810190610280919061305e565b610728565b604051610292919061301d565b60405180910390f35b3480156102a6575f5ffd5b506102af6107fc565b6040516102bc91906130c9565b60405180910390f35b3480156102d0575f5ffd5b506102eb60048036038101906102e691906130e2565b610804565b6040516102f8919061301d565b60405180910390f35b34801561030c575f5ffd5b50610327600480360381019061032291906130e2565b610856565b005b348015610334575f5ffd5b5061033d610942565b005b34801561034a575f5ffd5b50610365600480360381019061036091906130e2565b6109d9565b005b348015610372575f5ffd5b5061037b610ac6565b005b348015610388575f5ffd5b506103a3600480360381019061039e91906130e2565b610b35565b6040516103b09190613045565b60405180910390f35b3480156103c4575f5ffd5b506103cd610b7b565b005b3480156103da575f5ffd5b506103e3610ccb565b6040516103f09190613045565b60405180910390f35b348015610404575f5ffd5b5061041f600480360381019061041a9190612fc5565b610cd1565b005b34801561042c575f5ffd5b50610435610e72565b604051610442919061311c565b60405180910390f35b348015610456575f5ffd5b5061045f610e99565b60405161046c9190613045565b60405180910390f35b348015610480575f5ffd5b50610489610e9f565b6040516104969190612f14565b60405180910390f35b3480156104aa575f5ffd5b506104c560048036038101906104c09190612fc5565b610edc565b6040516104d2919061301d565b60405180910390f35b3480156104e6575f5ffd5b5061050160048036038101906104fc919061315f565b610ef9565b005b34801561050e575f5ffd5b506105176110f6565b6040516105249190613045565b60405180910390f35b348015610538575f5ffd5b50610553600480360381019061054e919061318a565b6110fc565b005b348015610560575f5ffd5b5061056961116c565b005b348015610576575f5ffd5b50610591600480360381019061058c91906131b5565b6118c6565b60405161059e9190613045565b60405180910390f35b3480156105b2575f5ffd5b506105cd60048036038101906105c8919061318a565b611948565b005b60606040518060400160405280601a81526020017f4d61747420467572696527732066697273742064726177696e67000000000000815250905090565b5f61061f6106186119d4565b84846119db565b6001905092915050565b60135481565b6106376119d4565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146106c4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106bb9061323d565b60405180910390fd5b5f600e819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de35f6040516106fa919061329d565b60405180910390a1565b5f6009600a6107139190613412565b6461f313f880610723919061345c565b905090565b5f610734848484611b9e565b6107f1846107406119d4565b6107ec856040518060600160405280602881526020016141346028913960025f8b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6107a36119d4565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128f09092919063ffffffff16565b6119db565b600190509392505050565b5f6009905090565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61085e6119d4565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108e29061323d565b60405180910390fd5b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166109826119d4565b73ffffffffffffffffffffffffffffffffffffffff16146109a1575f5ffd5b5f6109ab30610b35565b90505f8111156109bf576109be81612952565b5b5f4790505f8111156109d5576109d481612bbb565b5b5050565b6109e16119d4565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a659061323d565b60405180910390fd5b600160045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b066119d4565b73ffffffffffffffffffffffffffffffffffffffff1614610b25575f5ffd5b5f479050610b3281612bbb565b50565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610b836119d4565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c10576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c079061323d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f5f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d116119d4565b73ffffffffffffffffffffffffffffffffffffffff1614610d30575f5ffd5b5f610dce6064610dc0848673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610d73919061311c565b602060405180830381865afa158015610d8e573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610db291906134b1565b612c2390919063ffffffff16565b612c9a90919063ffffffff16565b90508273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610e2c92919061352e565b6020604051808303815f875af1158015610e48573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610e6c9190613569565b50505050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b60606040518060400160405280600481526020017f4d4f4a4f00000000000000000000000000000000000000000000000000000000815250905090565b5f610eef610ee86119d4565b8484611b9e565b6001905092915050565b610f016119d4565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f8e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f859061323d565b60405180910390fd5b8015610ffb575f606460086009600a610fa79190613412565b6461f313f880610fb7919061345c565b610fc1919061345c565b610fcb91906135c1565b9050610ff960065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff163083611b9e565b505b6064604660125461100c919061345c565b61101691906135c1565b6012819055506064604660135461102d919061345c565b61103791906135c1565b6013819055506009600a61104b9190613412565b6461f313f88061105b919061345c565b6010819055506009600a61106f9190613412565b6461f313f88061107f919061345c565b6011819055505f601560176101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a6110ce9190613412565b6461f313f8806110de919061345c565b6040516110eb9190613045565b60405180910390a150565b60125481565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661113c6119d4565b73ffffffffffffffffffffffffffffffffffffffff161461115b575f5ffd5b806012819055508060138190555050565b6111746119d4565b73ffffffffffffffffffffffffffffffffffffffff165f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611201576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f89061323d565b60405180910390fd5b601560149054906101000a900460ff1615611251576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112489061363b565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611310573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611334919061366d565b90505f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156113a1573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113c5919061366d565b90505f6113d3833084612ce3565b90505f813b90505f81036114a0578373ffffffffffffffffffffffffffffffffffffffff1663c9c6539630856040518363ffffffff1660e01b815260040161141c929190613698565b6020604051808303815f875af1158015611438573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061145c919061366d565b60155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550611678565b8160155f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f3073ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b815260040161153b919061311c565b602060405180830381865afa158015611556573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061157a91906134b1565b90505f8473ffffffffffffffffffffffffffffffffffffffff166370a0823160155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518263ffffffff1660e01b81526004016115d7919061311c565b602060405180830381865afa1580156115f2573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061161691906134b1565b9050670de0b6b3a7640000821080156116365750670de0b6b3a764000081105b611675576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161166c90613709565b60405180910390fd5b50505b6116c13060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a6116ac9190613412565b6461f313f8806116bc919061345c565b6119db565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71947306064606061170d30610b35565b611717919061345c565b61172191906135c1565b5f5f61172b610e72565b426040518863ffffffff1660e01b815260040161174d96959493929190613727565b60606040518083038185885af1158015611769573d5f5f3e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061178e9190613786565b50505060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b360145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161182e9291906137d6565b6020604051808303815f875af115801561184a573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061186e9190613569565b506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff0219169083151502179055506001601560176101000a81548160ff02191690831515021790555050505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166119886119d4565b73ffffffffffffffffffffffffffffffffffffffff16146119a7575f5ffd5b60095481111580156119bb5750600a548111155b6119c3575f5ffd5b8060098190555080600a8190555050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611a49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a409061386d565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611ab7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aae906138fb565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611b919190613045565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611c0c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0390613989565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611c7a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7190613a17565b60405180910390fd5b5f8111611cbc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb390613aa5565b60405180910390fd5b5f5f9050611cc8610e72565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d365750611d06610e72565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156126405760045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611dd9575060045f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e2c575060045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611e34575f5ffd5b601560179054906101000a900460ff1615611ffa57611e51610e72565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614158015611ed9575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611f32575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ff9574360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410611fb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fad90613b59565b60405180910390fd5b4360055f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b5b5f600f54036120425761203f6064612031600b54600f541161201e57600754612022565b6009545b85612c2390919063ffffffff16565b612c9a90919063ffffffff16565b90505b5f600f541115612077576120746064612066600e5485612c2390919063ffffffff16565b612c9a90919063ffffffff16565b90505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015612120575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015612173575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561226b576010548211156121bd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121b490613bc1565b60405180910390fd5b601154826121ca85610b35565b6121d49190613bdf565b1115612215576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161220c90613c5c565b60405180910390fd5b6122516064612243600b54600f541161223057600754612234565b6009545b85612c2390919063ffffffff16565b612c9a90919063ffffffff16565b9050600f5f81548092919061226590613c7a565b91905055505b60155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156122f357503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15612337576123346064612326600c54600f541161231357600854612317565b600a545b85612c2390919063ffffffff16565b612c9a90919063ffffffff16565b90505b5f61234130610b35565b905060158054906101000a900460ff161580156123aa575060155f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b80156123c25750601560169054906101000a900460ff165b80156123cf575060125481115b80156123de5750600d54600f54115b1561263e575f6124276009600a6123f59190613412565b6461f313f880612405919061345c565b612419606485612c2390919063ffffffff16565b612c9a90919063ffffffff16565b90506002811015612485577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6012819055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff601381905550612593565b600781101561250d57612710600c6009600a6124a19190613412565b6461f313f8806124b1919061345c565b6124bb919061345c565b6124c591906135c1565b601281905550612710600c6009600a6124de9190613412565b6461f313f8806124ee919061345c565b6124f8919061345c565b61250291906135c1565b601381905550612592565b600e811015612591576103e860046009600a6125299190613412565b6461f313f880612539919061345c565b612543919061345c565b61254d91906135c1565b6012819055506103e860046009600a6125669190613412565b6461f313f880612576919061345c565b612580919061345c565b61258a91906135c1565b6013819055505b5b5b6017544311156125a5575f6016819055505b6003601654106125ea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125e190613d0b565b60405180910390fd5b612607612602856125fd85601354612d85565b612d85565b612952565b5f4790505f81111561261d5761261c81612bbb565b5b60165f81548092919061262f90613c7a565b91905055504360178190555050505b505b5f81111561273f576126988160015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d9d90919063ffffffff16565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516127369190613045565b60405180910390a35b61278f8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612dfa90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506128326127e68284612dfa90919063ffffffff16565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d9d90919063ffffffff16565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6128d58486612dfa90919063ffffffff16565b6040516128e29190613045565b60405180910390a350505050565b5f838311158290612937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161292e9190612f14565b60405180910390fd5b505f83856129459190613d29565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561298857612987613d5c565b5b6040519080825280602002602001820160405280156129b65781602001602082028036833780820191505090505b50905030815f815181106129cd576129cc613d89565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612a71573d5f5f3e3d5ffd5b505050506040513d601f19601f82011682018060405250810190612a95919061366d565b81600181518110612aa957612aa8613d89565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612b0f3060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846119db565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612b71959493929190613e6d565b5f604051808303815f87803b158015612b88575f5ffd5b505af1158015612b9a573d5f5f3e3d5ffd5b50505050505f6015806101000a81548160ff02191690831515021790555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015612c1f573d5f5f3e3d5ffd5b5050565b5f5f8303612c33575f9050612c94565b5f8284612c40919061345c565b9050828482612c4f91906135c1565b14612c8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612c8690613f35565b60405180910390fd5b809150505b92915050565b5f612cdb83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612e43565b905092915050565b5f5f5f8373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1610612d20578385612d23565b84845b91509150858282604051602001612d3b929190613f98565b60405160208183030381529060405280519060200120604051602001612d6292919061408a565b604051602081830303815290604052805190602001205f1c925050509392505050565b5f818311612d935782612d95565b815b905092915050565b5f5f8284612dab9190613bdf565b905083811015612df0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612de790614115565b60405180910390fd5b8091505092915050565b5f612e3b83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506128f0565b905092915050565b5f5f83118290612e89576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612e809190612f14565b60405180910390fd5b505f8385612e9791906135c1565b9050809150509392505050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f612ee682612ea4565b612ef08185612eae565b9350612f00818560208601612ebe565b612f0981612ecc565b840191505092915050565b5f6020820190508181035f830152612f2c8184612edc565b905092915050565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f612f6182612f38565b9050919050565b612f7181612f57565b8114612f7b575f5ffd5b50565b5f81359050612f8c81612f68565b92915050565b5f819050919050565b612fa481612f92565b8114612fae575f5ffd5b50565b5f81359050612fbf81612f9b565b92915050565b5f5f60408385031215612fdb57612fda612f34565b5b5f612fe885828601612f7e565b9250506020612ff985828601612fb1565b9150509250929050565b5f8115159050919050565b61301781613003565b82525050565b5f6020820190506130305f83018461300e565b92915050565b61303f81612f92565b82525050565b5f6020820190506130585f830184613036565b92915050565b5f5f5f6060848603121561307557613074612f34565b5b5f61308286828701612f7e565b935050602061309386828701612f7e565b92505060406130a486828701612fb1565b9150509250925092565b5f60ff82169050919050565b6130c3816130ae565b82525050565b5f6020820190506130dc5f8301846130ba565b92915050565b5f602082840312156130f7576130f6612f34565b5b5f61310484828501612f7e565b91505092915050565b61311681612f57565b82525050565b5f60208201905061312f5f83018461310d565b92915050565b61313e81613003565b8114613148575f5ffd5b50565b5f8135905061315981613135565b92915050565b5f6020828403121561317457613173612f34565b5b5f6131818482850161314b565b91505092915050565b5f6020828403121561319f5761319e612f34565b5b5f6131ac84828501612fb1565b91505092915050565b5f5f604083850312156131cb576131ca612f34565b5b5f6131d885828601612f7e565b92505060206131e985828601612f7e565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65725f82015250565b5f613227602083612eae565b9150613232826131f3565b602082019050919050565b5f6020820190508181035f8301526132548161321b565b9050919050565b5f819050919050565b5f819050919050565b5f61328761328261327d8461325b565b613264565b612f92565b9050919050565b6132978161326d565b82525050565b5f6020820190506132b05f83018461328e565b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f5f8291508390505b600185111561333857808604811115613314576133136132b6565b5b60018516156133235780820291505b8081029050613331856132e3565b94506132f8565b94509492505050565b5f82613350576001905061340b565b8161335d575f905061340b565b8160018114613373576002811461337d576133ac565b600191505061340b565b60ff84111561338f5761338e6132b6565b5b8360020a9150848211156133a6576133a56132b6565b5b5061340b565b5060208310610133831016604e8410600b84101617156133e15782820a9050838111156133dc576133db6132b6565b5b61340b565b6133ee84848460016132ef565b92509050818404811115613405576134046132b6565b5b81810290505b9392505050565b5f61341c82612f92565b9150613427836130ae565b92506134547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613341565b905092915050565b5f61346682612f92565b915061347183612f92565b925082820261347f81612f92565b91508282048414831517613496576134956132b6565b5b5092915050565b5f815190506134ab81612f9b565b92915050565b5f602082840312156134c6576134c5612f34565b5b5f6134d38482850161349d565b91505092915050565b5f6134f66134f16134ec84612f38565b613264565b612f38565b9050919050565b5f613507826134dc565b9050919050565b5f613518826134fd565b9050919050565b6135288161350e565b82525050565b5f6040820190506135415f83018561351f565b61354e6020830184613036565b9392505050565b5f8151905061356381613135565b92915050565b5f6020828403121561357e5761357d612f34565b5b5f61358b84828501613555565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6135cb82612f92565b91506135d683612f92565b9250826135e6576135e5613594565b5b828204905092915050565b7f54726164696e6720697320616c7265616479206f70656e0000000000000000005f82015250565b5f613625601783612eae565b9150613630826135f1565b602082019050919050565b5f6020820190508181035f83015261365281613619565b9050919050565b5f8151905061366781612f68565b92915050565b5f6020828403121561368257613681612f34565b5b5f61368f84828501613659565b91505092915050565b5f6040820190506136ab5f83018561310d565b6136b8602083018461310d565b9392505050565b7f5061697220616c72656164792066756e646564000000000000000000000000005f82015250565b5f6136f3601383612eae565b91506136fe826136bf565b602082019050919050565b5f6020820190508181035f830152613720816136e7565b9050919050565b5f60c08201905061373a5f83018961310d565b6137476020830188613036565b613754604083018761328e565b613761606083018661328e565b61376e608083018561310d565b61377b60a0830184613036565b979650505050505050565b5f5f5f6060848603121561379d5761379c612f34565b5b5f6137aa8682870161349d565b93505060206137bb8682870161349d565b92505060406137cc8682870161349d565b9150509250925092565b5f6040820190506137e95f83018561310d565b6137f66020830184613036565b9392505050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f613857602483612eae565b9150613862826137fd565b604082019050919050565b5f6020820190508181035f8301526138848161384b565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6138e5602283612eae565b91506138f08261388b565b604082019050919050565b5f6020820190508181035f830152613912816138d9565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f613973602583612eae565b915061397e82613919565b604082019050919050565b5f6020820190508181035f8301526139a081613967565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f613a01602383612eae565b9150613a0c826139a7565b604082019050919050565b5f6020820190508181035f830152613a2e816139f5565b9050919050565b7f5472616e7366657220616d6f756e74206d7573742062652067726561746572205f8201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b5f613a8f602983612eae565b9150613a9a82613a35565b604082019050919050565b5f6020820190508181035f830152613abc81613a83565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c5f8201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b5f613b43604983612eae565b9150613b4e82613ac3565b606082019050919050565b5f6020820190508181035f830152613b7081613b37565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e000000000000005f82015250565b5f613bab601983612eae565b9150613bb682613b77565b602082019050919050565b5f6020820190508181035f830152613bd881613b9f565b9050919050565b5f613be982612f92565b9150613bf483612f92565b9250828201905080821115613c0c57613c0b6132b6565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e0000000000005f82015250565b5f613c46601a83612eae565b9150613c5182613c12565b602082019050919050565b5f6020820190508181035f830152613c7381613c3a565b9050919050565b5f613c8482612f92565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613cb657613cb56132b6565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b210000000000000000005f82015250565b5f613cf5601783612eae565b9150613d0082613cc1565b602082019050919050565b5f6020820190508181035f830152613d2281613ce9565b9050919050565b5f613d3382612f92565b9150613d3e83612f92565b9250828203905081811115613d5657613d556132b6565b5b92915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613de881612f57565b82525050565b5f613df98383613ddf565b60208301905092915050565b5f602082019050919050565b5f613e1b82613db6565b613e258185613dc0565b9350613e3083613dd0565b805f5b83811015613e60578151613e478882613dee565b9750613e5283613e05565b925050600181019050613e33565b5085935050505092915050565b5f60a082019050613e805f830188613036565b613e8d602083018761328e565b8181036040830152613e9f8186613e11565b9050613eae606083018561310d565b613ebb6080830184613036565b9695505050505050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f5f8201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b5f613f1f602183612eae565b9150613f2a82613ec5565b604082019050919050565b5f6020820190508181035f830152613f4c81613f13565b9050919050565b5f8160601b9050919050565b5f613f6982613f53565b9050919050565b5f613f7a82613f5f565b9050919050565b613f92613f8d82612f57565b613f70565b82525050565b5f613fa38285613f81565b601482019150613fb38284613f81565b6014820191508190509392505050565b5f81905092915050565b7fff000000000000000000000000000000000000000000000000000000000000005f82015250565b5f614001600183613fc3565b915061400c82613fcd565b600182019050919050565b5f819050919050565b5f819050919050565b61403a61403582614017565b614020565b82525050565b7f96e8ac4277198ff8b6f785478aa9a39f403cb768dd02cbee326c3e7da348845f5f82015250565b5f614074602083613fc3565b915061407f82614040565b602082019050919050565b5f61409482613ff5565b91506140a08285613f81565b6014820191506140b08284614029565b6020820191506140bf82614068565b91508190509392505050565b7f536166654d6174683a206164646974696f6e206f766572666c6f7700000000005f82015250565b5f6140ff601b83612eae565b915061410a826140cb565b602082019050919050565b5f6020820190508181035f83015261412c816140f3565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212205f7be76ae04a02f5d404e7c7aa5c1b675fd12c101a50aa362513be8f64dcab5b64736f6c634300081e0033

Deployed Bytecode Sourcemap

3595:13568:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6935:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7768:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4928:54;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13182:119;;;;;;;;;;;;;:::i;:::-;;7212:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7937:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7121:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14258;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13693:89;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;16812:348;;;;;;;;;;;;;:::i;:::-;;13603:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13309:187;;;;;;;;;;;;;:::i;:::-;;7315:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2676:148;;;;;;;;;;;;;:::i;:::-;;4733:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13790:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2462:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4796:58;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7026:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7442:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12688:484;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4861:60;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14064:186;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;14353:1664;;;;;;;;;;;;;:::i;:::-;;7617:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16549:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6935:83;6972:13;7005:5;;;;;;;;;;;;;;;;;6998:12;;6935:83;:::o;7768:161::-;7843:4;7860:39;7869:12;:10;:12::i;:::-;7883:7;7892:6;7860:8;:39::i;:::-;7917:4;7910:11;;7768:161;;;;:::o;4928:54::-;;;;:::o;13182:119::-;2599:12;:10;:12::i;:::-;2589:22;;:6;;;;;;;;;;;:22;;;2581:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13255:1:::1;13240:12;:16;;;;13272:21;13291:1;13272:21;;;;;;:::i;:::-;;;;;;;;13182:119::o:0;7212:95::-;7265:7;4527:1;4585:2;:13;;;;:::i;:::-;4570:12;:28;;;;:::i;:::-;7285:14;;7212:95;:::o;7937:313::-;8035:4;8052:36;8062:6;8070:9;8081:6;8052:9;:36::i;:::-;8099:121;8108:6;8116:12;:10;:12::i;:::-;8130:89;8168:6;8130:89;;;;;;;;;;;;;;;;;:11;:19;8142:6;8130:19;;;;;;;;;;;;;;;:33;8150:12;:10;:12::i;:::-;8130:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;8099:8;:121::i;:::-;8238:4;8231:11;;7937:313;;;;;:::o;7121:83::-;7162:5;4527:1;7180:16;;7121:83;:::o;14258:::-;14305:4;14326;:7;14331:1;14326:7;;;;;;;;;;;;;;;;;;;;;;;;;14319:14;;14258:83;;;:::o;13693:89::-;2599:12;:10;:12::i;:::-;2589:22;;:6;;;;;;;;;;;:22;;;2581:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13769:5:::1;13754:4;:12;13759:6;13754:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13693:89:::0;:::o;16812:348::-;16876:10;;;;;;;;;;;16862:24;;:12;:10;:12::i;:::-;:24;;;16854:33;;;;;;16898:20;16919:24;16937:4;16919:9;:24::i;:::-;16898:45;;16970:1;16957:12;:14;16954:73;;;16985:30;17002:12;16985:16;:30::i;:::-;16954:73;17037:18;17056:21;17037:40;;17102:1;17091:10;:12;17088:65;;;17117:24;17130:10;17117:12;:24::i;:::-;17088:65;16843:317;;16812:348::o;13603:82::-;2599:12;:10;:12::i;:::-;2589:22;;:6;;;;;;;;;;;:22;;;2581:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13673:4:::1;13661;:9;13666:3;13661:9;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;;;;;;;13603:82:::0;:::o;13309:187::-;13373:10;;;;;;;;;;;13359:24;;:12;:10;:12::i;:::-;:24;;;13351:33;;;;;;13395:26;13424:21;13395:50;;13456:32;13469:18;13456:12;:32::i;:::-;13340:156;13309:187::o;7315:119::-;7381:7;7408:9;:18;7418:7;7408:18;;;;;;;;;;;;;;;;7401:25;;7315:119;;;:::o;2676:148::-;2599:12;:10;:12::i;:::-;2589:22;;:6;;;;;;;;;;;:22;;;2581:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;2783:1:::1;2746:40;;2767:6;;;;;;;;;;;2746:40;;;;;;;;;;;;2814:1;2797:6;;:19;;;;;;;;;;;;;;;;;;2676:148::o:0;4733:56::-;;;;:::o;13790:266::-;13888:10;;;;;;;;;;;13874:24;;:12;:10;:12::i;:::-;:24;;;13866:33;;;;;;13910:15;13928:63;13987:3;13928:54;13974:7;13935:8;13928:26;;;13963:4;13928:41;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:45;;:54;;;;:::i;:::-;:58;;:63;;;;:::i;:::-;13910:81;;14009:8;14002:25;;;14028:10;;;;;;;;;;;14040:7;14002:46;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13855:201;13790:266;;:::o;2462:79::-;2500:7;2527:6;;;;;;;;;;;2520:13;;2462:79;:::o;4796:58::-;;;;:::o;7026:87::-;7065:13;7098:7;;;;;;;;;;;;;;;;;7091:14;;7026:87;:::o;7442:167::-;7520:4;7537:42;7547:12;:10;:12::i;:::-;7561:9;7572:6;7537:9;:42::i;:::-;7597:4;7590:11;;7442:167;;;;:::o;12688:484::-;2599:12;:10;:12::i;:::-;2589:22;;:6;;;;;;;;;;;:22;;;2581:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12766:5:::1;12762:143;;;12788:20;12825:3;12821:1;4527;4585:2;:13;;;;:::i;:::-;4570:12;:28;;;;:::i;:::-;12811:11;;;;:::i;:::-;:17;;;;:::i;:::-;12788:40;;12843:50;12853:10;;;;;;;;;;;12873:4;12880:12;12843:9;:50::i;:::-;12773:132;12762:143;12962:3;12957:2;12937:17;;:22;;;;:::i;:::-;:28;;;;:::i;:::-;12917:17;:48;;;;13009:3;13004:2;12990:11;;:16;;;;:::i;:::-;:22;;;;:::i;:::-;12976:11;:36;;;;4527:1;4585:2;:13;;;;:::i;:::-;4570:12;:28;;;;:::i;:::-;13023:12;:22;;;;4527:1;4585:2;:13;;;;:::i;:::-;4570:12;:28;;;;:::i;:::-;13056:14;:24;;;;13114:5;13091:20;;:28;;;;;;;;;;;;;;;;;;13137:27;4527:1;4585:2;:13;;;;:::i;:::-;4570:12;:28;;;;:::i;:::-;13137:27;;;;;;:::i;:::-;;;;;;;;12688:484:::0;:::o;4861:60::-;;;;:::o;14064:186::-;14158:10;;;;;;;;;;;14144:24;;:12;:10;:12::i;:::-;:24;;;14136:33;;;;;;14200:4;14180:17;:24;;;;14229:4;14215:11;:18;;;;14064:186;:::o;14353:1664::-;2599:12;:10;:12::i;:::-;2589:22;;:6;;;;;;;;;;;:22;;;2581:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14411:11:::1;;;;;;;;;;;14410:12;14402:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;14500:42;14463:15;;:80;;;;;;;;;;;;;;;;;;14589:15;14607;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14589:43;;14639:12;14654:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14639:37;;14683:21;14707:37;14715:7;14732:4;14739;14707:7;:37::i;:::-;14683:61;;14816:16;14883:13;14871:26;14859:38;;14973:1;14961:8;:13:::0;14957:473:::1;;15021:7;15003:37;;;15049:4;15056;15003:58;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14987:13;;:74;;;;;;;;;;;;;;;;;;14957:473;;;15102:13;15086;;:29;;;;;;;;;;;;;;;;;;15199:20;15237:4;15222:31;;;15254:13;;;;;;;;;;;15222:46;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15199:69;;15279:19;15308:4;15301:22;;;15324:13;;;;;;;;;;;15301:37;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15279:59;;15372:4;15357:12;:19;:41;;;;;15394:4;15380:11;:18;15357:41;15349:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;15075:355;;14957:473;15480:58;15497:4;15512:15;;;;;;;;;;;4527:1;4585:2;:13;;;;:::i;:::-;4570:12;:28;;;;:::i;:::-;15480:8;:58::i;:::-;15573:15;;;;;;;;;;;:31;;;15612:21;15653:4;15701:3;15696:2;15669:24;15687:4;15669:9;:24::i;:::-;:29;;;;:::i;:::-;:35;;;;:::i;:::-;15715:1;15727;15739:7;:5;:7::i;:::-;15757:15;15573:206;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15839:13;;;;;;;;;;;15832:29;;;15870:15;;;;;;;;;;;15888:14;15832:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15938:4;15924:11;;:18;;;;;;;;;;;;;;;;;;15967:4;15953:11;;:18;;;;;;;;;;;;;;;;;;16005:4;15982:20;;:27;;;;;;;;;;;;;;;;;;14395:1622;;;;14353:1664::o:0;7617:143::-;7698:7;7725:11;:18;7737:5;7725:18;;;;;;;;;;;;;;;:27;7744:7;7725:27;;;;;;;;;;;;;;;;7718:34;;7617:143;;;;:::o;16549:218::-;16624:10;;;;;;;;;;;16610:24;;:12;:10;:12::i;:::-;:24;;;16602:33;;;;;;16661:12;;16652:7;:21;;:47;;;;;16686:13;;16677:7;:22;;16652:47;16644:56;;;;;;16722:7;16709:12;:20;;;;16752:7;16738:13;:21;;;;16549:218;:::o;217:98::-;270:7;297:10;290:17;;217:98;:::o;8258:335::-;8368:1;8351:19;;:5;:19;;;8343:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8449:1;8430:21;;:7;:21;;;8422:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8531:6;8501:11;:18;8513:5;8501:18;;;;;;;;;;;;;;;:27;8520:7;8501:27;;;;;;;;;;;;;;;:36;;;;8569:7;8553:32;;8562:5;8553:32;;;8578:6;8553:32;;;;;;:::i;:::-;;;;;;;;8258:335;;;:::o;8601:3480::-;8701:1;8685:18;;:4;:18;;;8677:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;8774:1;8760:16;;:2;:16;;;8752:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8840:1;8831:6;:10;8823:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;8896:17;8916:1;8896:21;;8936:7;:5;:7::i;:::-;8928:15;;:4;:15;;;;:32;;;;;8953:7;:5;:7::i;:::-;8947:13;;:2;:13;;;;8928:32;8924:2818;;;8982:4;:10;8987:4;8982:10;;;;;;;;;;;;;;;;;;;;;;;;;8981:11;:24;;;;;8997:4;:8;9002:2;8997:8;;;;;;;;;;;;;;;;;;;;;;;;;8996:9;8981:24;:44;;;;;9010:4;:15;9015:9;9010:15;;;;;;;;;;;;;;;;;;;;;;;;;9009:16;8981:44;8973:53;;;;;;9043:20;;;;;;;;;;;9039:512;;;9108:7;:5;:7::i;:::-;9102:13;;:2;:13;;;;:64;;;;;9150:15;;;;;;;;;;;9136:30;;:2;:30;;;;9102:64;:113;;;;;9201:13;;;;;;;;;;;9187:28;;:2;:28;;;;9102:113;9080:460;;;9322:12;9280:28;:39;9309:9;9280:39;;;;;;;;;;;;;;;;:54;9250:201;;;;;;;;;;;;:::i;:::-;;;;;;;;;9512:12;9470:28;:39;9499:9;9470:39;;;;;;;;;;;;;;;:54;;;;9080:460;9039:512;9580:1;9567:9;;:14;9563:141;;9610:82;9688:3;9610:73;9634:15;;9622:9;;:27;9621:61;;9668:14;;9621:61;;;9653:12;;9621:61;9610:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;9598:94;;9563:141;9730:1;9718:9;;:13;9714:91;;;9760:33;9789:3;9760:24;9771:12;;9760:6;:10;;:24;;;;:::i;:::-;:28;;:33;;;;:::i;:::-;9748:45;;9714:91;9829:13;;;;;;;;;;;9821:21;;:4;:21;;;:55;;;;;9860:15;;;;;;;;;;;9846:30;;:2;:30;;;;9821:55;:82;;;;;9881:18;:22;9900:2;9881:22;;;;;;;;;;;;;;;;;;;;;;;;;9880:23;9821:82;9817:404;;;9938:12;;9928:6;:22;;9920:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;10029:14;;10019:6;10003:13;10013:2;10003:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;9995:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;10101:82;10179:3;10101:73;10125:15;;10113:9;;:27;10112:61;;10159:14;;10112:61;;;10144:12;;10112:61;10101:6;:10;;:73;;;;:::i;:::-;:77;;:82;;;;:::i;:::-;10089:94;;10198:9;;:11;;;;;;;;;:::i;:::-;;;;;;9817:404;10243:13;;;;;;;;;;;10237:19;;:2;:19;;;:44;;;;;10276:4;10260:21;;:4;:21;;;;10237:44;10233:174;;;10310:85;10391:3;10310:76;10334:16;;10322:9;;:28;10321:64;;10370:15;;10321:64;;;10354:13;;10321:64;10310:6;:10;;:76;;;;:::i;:::-;:80;;:85;;;;:::i;:::-;10298:97;;10233:174;10419:28;10450:24;10468:4;10450:9;:24::i;:::-;10419:55;;10492:6;;;;;;;;;;10491:7;:30;;;;;10508:13;;;;;;;;;;;10502:19;;:2;:19;;;10491:30;:45;;;;;10525:11;;;;;;;;;;;10491:45;:89;;;;;10563:17;;10540:20;:40;10491:89;:123;;;;;10596:18;;10584:9;;:30;10491:123;10487:1248;;;10631:24;10658:42;4527:1;4585:2;:13;;;;:::i;:::-;4570:12;:28;;;;:::i;:::-;10658:29;10683:3;10658:20;:24;;:29;;;;:::i;:::-;:33;;:42;;;;:::i;:::-;10631:69;;10740:1;10721:16;:20;10717:509;;;10782:17;10762;:37;;;;10832:17;10818:11;:31;;;;10717:509;;;10908:1;10889:16;:20;10885:341;;;10965:5;10960:2;4527:1;4585:2;:13;;;;:::i;:::-;4570:12;:28;;;;:::i;:::-;10950:12;;;;:::i;:::-;:20;;;;:::i;:::-;10930:17;:40;;;;11026:5;11021:2;4527:1;4585:2;:13;;;;:::i;:::-;4570:12;:28;;;;:::i;:::-;11011:12;;;;:::i;:::-;:20;;;;:::i;:::-;10997:11;:34;;;;10885:341;;;11090:2;11071:16;:21;11067:159;;;11147:4;11143:1;4527;4585:2;:13;;;;:::i;:::-;4570:12;:28;;;;:::i;:::-;11133:11;;;;:::i;:::-;:18;;;;:::i;:::-;11113:17;:38;;;;11206:4;11202:1;4527;4585:2;:13;;;;:::i;:::-;4570:12;:28;;;;:::i;:::-;11192:11;;;;:::i;:::-;:18;;;;:::i;:::-;11178:11;:32;;;;11067:159;10885:341;10717:509;11264:13;;11249:12;:28;11245:82;;;11310:1;11298:9;:13;;;;11245:82;11363:1;11351:9;;:13;11343:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;11409:69;11426:51;11430:6;11438:38;11442:20;11464:11;;11438:3;:38::i;:::-;11426:3;:51::i;:::-;11409:16;:69::i;:::-;11493:26;11522:21;11493:50;;11583:1;11562:18;:22;11558:95;;;11605:32;11618:18;11605:12;:32::i;:::-;11558:95;11669:9;;:11;;;;;;;;;:::i;:::-;;;;;;11711:12;11695:13;:28;;;;10616:1119;;10487:1248;8962:2780;8924:2818;11766:1;11754:9;:13;11750:160;;;11807:39;11836:9;11807;:24;11825:4;11807:24;;;;;;;;;;;;;;;;:28;;:39;;;;:::i;:::-;11780:9;:24;11798:4;11780:24;;;;;;;;;;;;;;;:66;;;;11885:4;11862:40;;11871:4;11862:40;;;11892:9;11862:40;;;;;;:::i;:::-;;;;;;;;11750:160;11934:27;11954:6;11934:9;:15;11944:4;11934:15;;;;;;;;;;;;;;;;:19;;:27;;;;:::i;:::-;11916:9;:15;11926:4;11916:15;;;;;;;;;;;;;;;:45;;;;11984:40;12002:21;12013:9;12002:6;:10;;:21;;;;:::i;:::-;11984:9;:13;11994:2;11984:13;;;;;;;;;;;;;;;;:17;;:40;;;;:::i;:::-;11968:9;:13;11978:2;11968:13;;;;;;;;;;;;;;;:56;;;;12051:2;12036:41;;12045:4;12036:41;;;12055:21;12066:9;12055:6;:10;;:21;;;;:::i;:::-;12036:41;;;;;;:::i;:::-;;;;;;;;8670:3411;8601:3480;;;:::o;1354:190::-;1440:7;1473:1;1468;:6;;1476:12;1460:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1500:9;1516:1;1512;:5;;;;:::i;:::-;1500:17;;1535:1;1528:8;;;1354:190;;;;;:::o;12197:483::-;5443:4;5434:6;;:13;;;;;;;;;;;;;;;;;;12275:21:::1;12313:1;12299:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12275:40;;12344:4;12326;12331:1;12326:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;12370:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12360:4;12365:1;12360:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;12403:62;12420:4;12435:15;;;;;;;;;;;12453:11;12403:8;:62::i;:::-;12476:15;;;;;;;;;;;:66;;;12557:11;12583:1;12599:4;12626;12646:15;12476:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12264:416;5479:5:::0;5470:6;;:14;;;;;;;;;;;;;;;;;;12197:483;:::o;13504:92::-;13561:10;;;;;;;;;;;:19;;:27;13581:6;13561:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13504:92;:::o;1552:246::-;1610:7;1639:1;1634;:6;1630:47;;1664:1;1657:8;;;;1630:47;1687:9;1703:1;1699;:5;;;;:::i;:::-;1687:17;;1732:1;1727;1723;:5;;;;:::i;:::-;:10;1715:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;1789:1;1782:8;;;1552:246;;;;;:::o;1806:132::-;1864:7;1891:39;1895:1;1898;1891:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;1884:46;;1806:132;;;;:::o;16025:509::-;16113:12;16139:14;16155;16182:6;16173:15;;:6;:15;;;:53;;16211:6;16219;16173:53;;;16192:6;16200;16173:53;16138:88;;;;16328:7;16377:6;16385;16360:32;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16350:43;;;;;;16275:247;;;;;;;;;:::i;:::-;;;;;;;;;;;;;16265:258;;;;;;16260:264;;16237:289;;16127:407;;16025:509;;;;;:::o;12091:98::-;12148:7;12175:1;12173;:3;12172:9;;12180:1;12172:9;;;12178:1;12172:9;12165:16;;12091:98;;;;:::o;1023:179::-;1081:7;1101:9;1117:1;1113;:5;;;;:::i;:::-;1101:17;;1142:1;1137;:6;;1129:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1193:1;1186:8;;;1023:179;;;;:::o;1210:136::-;1268:7;1295:43;1299:1;1302;1295:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1288:50;;1210:136;;;;:::o;1946:189::-;2032:7;2064:1;2060;:5;2067:12;2052:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2091:9;2107:1;2103;:5;;;;:::i;:::-;2091:17;;2126:1;2119:8;;;1946: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:116::-;5503:21;5518:5;5503:21;:::i;:::-;5496:5;5493:32;5483:60;;5539:1;5536;5529:12;5483:60;5433:116;:::o;5555:133::-;5598:5;5636:6;5623:20;5614:29;;5652:30;5676:5;5652:30;:::i;:::-;5555:133;;;;:::o;5694:323::-;5750:6;5799:2;5787:9;5778:7;5774:23;5770:32;5767:119;;;5805:79;;:::i;:::-;5767:119;5925:1;5950:50;5992:7;5983:6;5972:9;5968:22;5950:50;:::i;:::-;5940:60;;5896:114;5694:323;;;;:::o;6023:329::-;6082:6;6131:2;6119:9;6110:7;6106:23;6102:32;6099:119;;;6137:79;;:::i;:::-;6099:119;6257:1;6282:53;6327:7;6318:6;6307:9;6303:22;6282:53;:::i;:::-;6272:63;;6228:117;6023:329;;;;:::o;6358:474::-;6426:6;6434;6483:2;6471:9;6462:7;6458:23;6454:32;6451:119;;;6489:79;;:::i;:::-;6451:119;6609:1;6634:53;6679:7;6670:6;6659:9;6655:22;6634:53;:::i;:::-;6624:63;;6580:117;6736:2;6762:53;6807:7;6798:6;6787:9;6783:22;6762:53;:::i;:::-;6752:63;;6707:118;6358:474;;;;;:::o;6838:182::-;6978:34;6974:1;6966:6;6962:14;6955:58;6838:182;:::o;7026:366::-;7168:3;7189:67;7253:2;7248:3;7189:67;:::i;:::-;7182:74;;7265:93;7354:3;7265:93;:::i;:::-;7383:2;7378:3;7374:12;7367:19;;7026:366;;;:::o;7398:419::-;7564:4;7602:2;7591:9;7587:18;7579:26;;7651:9;7645:4;7641:20;7637:1;7626:9;7622:17;7615:47;7679:131;7805:4;7679:131;:::i;:::-;7671:139;;7398:419;;;:::o;7823:85::-;7868:7;7897:5;7886:16;;7823:85;;;:::o;7914:60::-;7942:3;7963:5;7956:12;;7914:60;;;:::o;7980:158::-;8038:9;8071:61;8089:42;8098:32;8124:5;8098:32;:::i;:::-;8089:42;:::i;:::-;8071:61;:::i;:::-;8058:74;;7980:158;;;:::o;8144:147::-;8239:45;8278:5;8239:45;:::i;:::-;8234:3;8227:58;8144:147;;:::o;8297:238::-;8398:4;8436:2;8425:9;8421:18;8413:26;;8449:79;8525:1;8514:9;8510:17;8501:6;8449:79;:::i;:::-;8297:238;;;;:::o;8541:180::-;8589:77;8586:1;8579:88;8686:4;8683:1;8676:15;8710:4;8707:1;8700:15;8727:102;8769:8;8816:5;8813:1;8809:13;8788:34;;8727:102;;;:::o;8835:848::-;8896:5;8903:4;8927:6;8918:15;;8951:5;8942:14;;8965:712;8986:1;8976:8;8973:15;8965:712;;;9081:4;9076:3;9072:14;9066:4;9063:24;9060:50;;;9090:18;;:::i;:::-;9060:50;9140:1;9130:8;9126:16;9123:451;;;9555:4;9548:5;9544:16;9535:25;;9123:451;9605:4;9599;9595:15;9587:23;;9635:32;9658:8;9635:32;:::i;:::-;9623:44;;8965:712;;;8835:848;;;;;;;:::o;9689:1073::-;9743:5;9934:8;9924:40;;9955:1;9946:10;;9957:5;;9924:40;9983:4;9973:36;;10000:1;9991:10;;10002:5;;9973:36;10069:4;10117:1;10112:27;;;;10153:1;10148:191;;;;10062:277;;10112:27;10130:1;10121:10;;10132:5;;;10148:191;10193:3;10183:8;10180:17;10177:43;;;10200:18;;:::i;:::-;10177:43;10249:8;10246:1;10242:16;10233:25;;10284:3;10277:5;10274:14;10271:40;;;10291:18;;:::i;:::-;10271:40;10324:5;;;10062:277;;10448:2;10438:8;10435:16;10429:3;10423:4;10420:13;10416:36;10398:2;10388:8;10385:16;10380:2;10374:4;10371:12;10367:35;10351:111;10348:246;;;10504:8;10498:4;10494:19;10485:28;;10539:3;10532:5;10529:14;10526:40;;;10546:18;;:::i;:::-;10526:40;10579:5;;10348:246;10619:42;10657:3;10647:8;10641:4;10638:1;10619:42;:::i;:::-;10604:57;;;;10693:4;10688:3;10684:14;10677:5;10674:25;10671:51;;;10702:18;;:::i;:::-;10671:51;10751:4;10744:5;10740:16;10731:25;;9689:1073;;;;;;:::o;10768:281::-;10826:5;10850:23;10868:4;10850:23;:::i;:::-;10842:31;;10894:25;10910:8;10894:25;:::i;:::-;10882:37;;10938:104;10975:66;10965:8;10959:4;10938:104;:::i;:::-;10929:113;;10768:281;;;;:::o;11055:410::-;11095:7;11118:20;11136:1;11118:20;:::i;:::-;11113:25;;11152:20;11170:1;11152:20;:::i;:::-;11147:25;;11207:1;11204;11200:9;11229:30;11247:11;11229:30;:::i;:::-;11218:41;;11408:1;11399:7;11395:15;11392:1;11389:22;11369:1;11362:9;11342:83;11319:139;;11438:18;;:::i;:::-;11319:139;11103:362;11055:410;;;;:::o;11471:143::-;11528:5;11559:6;11553:13;11544:22;;11575:33;11602:5;11575:33;:::i;:::-;11471:143;;;;:::o;11620:351::-;11690:6;11739:2;11727:9;11718:7;11714:23;11710:32;11707:119;;;11745:79;;:::i;:::-;11707:119;11865:1;11890:64;11946:7;11937:6;11926:9;11922:22;11890:64;:::i;:::-;11880:74;;11836:128;11620:351;;;;:::o;11977:142::-;12027:9;12060:53;12078:34;12087:24;12105:5;12087:24;:::i;:::-;12078:34;:::i;:::-;12060:53;:::i;:::-;12047:66;;11977:142;;;:::o;12125:126::-;12175:9;12208:37;12239:5;12208:37;:::i;:::-;12195:50;;12125:126;;;:::o;12257:134::-;12315:9;12348:37;12379:5;12348:37;:::i;:::-;12335:50;;12257:134;;;:::o;12397:147::-;12492:45;12531:5;12492:45;:::i;:::-;12487:3;12480:58;12397:147;;:::o;12550:348::-;12679:4;12717:2;12706:9;12702:18;12694:26;;12730:79;12806:1;12795:9;12791:17;12782:6;12730:79;:::i;:::-;12819:72;12887:2;12876:9;12872:18;12863:6;12819:72;:::i;:::-;12550:348;;;;;:::o;12904:137::-;12958:5;12989:6;12983:13;12974:22;;13005:30;13029:5;13005:30;:::i;:::-;12904:137;;;;:::o;13047:345::-;13114:6;13163:2;13151:9;13142:7;13138:23;13134:32;13131:119;;;13169:79;;:::i;:::-;13131:119;13289:1;13314:61;13367:7;13358:6;13347:9;13343:22;13314:61;:::i;:::-;13304:71;;13260:125;13047:345;;;;:::o;13398:180::-;13446:77;13443:1;13436:88;13543:4;13540:1;13533:15;13567:4;13564:1;13557:15;13584:185;13624:1;13641:20;13659:1;13641:20;:::i;:::-;13636:25;;13675:20;13693:1;13675:20;:::i;:::-;13670:25;;13714:1;13704:35;;13719:18;;:::i;:::-;13704:35;13761:1;13758;13754:9;13749:14;;13584:185;;;;:::o;13775:173::-;13915:25;13911:1;13903:6;13899:14;13892:49;13775:173;:::o;13954:366::-;14096:3;14117:67;14181:2;14176:3;14117:67;:::i;:::-;14110:74;;14193:93;14282:3;14193:93;:::i;:::-;14311:2;14306:3;14302:12;14295:19;;13954:366;;;:::o;14326:419::-;14492:4;14530:2;14519:9;14515:18;14507:26;;14579:9;14573:4;14569:20;14565:1;14554:9;14550:17;14543:47;14607:131;14733:4;14607:131;:::i;:::-;14599:139;;14326:419;;;:::o;14751:143::-;14808:5;14839:6;14833:13;14824:22;;14855:33;14882:5;14855:33;:::i;:::-;14751:143;;;;:::o;14900:351::-;14970:6;15019:2;15007:9;14998:7;14994:23;14990:32;14987:119;;;15025:79;;:::i;:::-;14987:119;15145:1;15170:64;15226:7;15217:6;15206:9;15202:22;15170:64;:::i;:::-;15160:74;;15116:128;14900:351;;;;:::o;15257:332::-;15378:4;15416:2;15405:9;15401:18;15393:26;;15429:71;15497:1;15486:9;15482:17;15473:6;15429:71;:::i;:::-;15510:72;15578:2;15567:9;15563:18;15554:6;15510:72;:::i;:::-;15257:332;;;;;:::o;15595:169::-;15735:21;15731:1;15723:6;15719:14;15712:45;15595:169;:::o;15770:366::-;15912:3;15933:67;15997:2;15992:3;15933:67;:::i;:::-;15926:74;;16009:93;16098:3;16009:93;:::i;:::-;16127:2;16122:3;16118:12;16111:19;;15770:366;;;:::o;16142:419::-;16308:4;16346:2;16335:9;16331:18;16323:26;;16395:9;16389:4;16385:20;16381:1;16370:9;16366:17;16359:47;16423:131;16549:4;16423:131;:::i;:::-;16415:139;;16142:419;;;:::o;16567:807::-;16816:4;16854:3;16843:9;16839:19;16831:27;;16868:71;16936:1;16925:9;16921:17;16912:6;16868:71;:::i;:::-;16949:72;17017:2;17006:9;17002:18;16993:6;16949:72;:::i;:::-;17031:80;17107:2;17096:9;17092:18;17083:6;17031:80;:::i;:::-;17121;17197:2;17186:9;17182:18;17173:6;17121:80;:::i;:::-;17211:73;17279:3;17268:9;17264:19;17255:6;17211:73;:::i;:::-;17294;17362:3;17351:9;17347:19;17338:6;17294:73;:::i;:::-;16567:807;;;;;;;;;:::o;17380:663::-;17468:6;17476;17484;17533:2;17521:9;17512:7;17508:23;17504:32;17501:119;;;17539:79;;:::i;:::-;17501:119;17659:1;17684:64;17740:7;17731:6;17720:9;17716:22;17684:64;:::i;:::-;17674:74;;17630:128;17797:2;17823:64;17879:7;17870:6;17859:9;17855:22;17823:64;:::i;:::-;17813:74;;17768:129;17936:2;17962:64;18018:7;18009:6;17998:9;17994:22;17962:64;:::i;:::-;17952:74;;17907:129;17380:663;;;;;:::o;18049:332::-;18170:4;18208:2;18197:9;18193:18;18185:26;;18221:71;18289:1;18278:9;18274:17;18265:6;18221:71;:::i;:::-;18302:72;18370:2;18359:9;18355:18;18346:6;18302:72;:::i;:::-;18049:332;;;;;:::o;18387:223::-;18527:34;18523:1;18515:6;18511:14;18504:58;18596:6;18591:2;18583:6;18579:15;18572:31;18387:223;:::o;18616:366::-;18758:3;18779:67;18843:2;18838:3;18779:67;:::i;:::-;18772:74;;18855:93;18944:3;18855:93;:::i;:::-;18973:2;18968:3;18964:12;18957:19;;18616:366;;;:::o;18988:419::-;19154:4;19192:2;19181:9;19177:18;19169:26;;19241:9;19235:4;19231:20;19227:1;19216:9;19212:17;19205:47;19269:131;19395:4;19269:131;:::i;:::-;19261:139;;18988:419;;;:::o;19413:221::-;19553:34;19549:1;19541:6;19537:14;19530:58;19622:4;19617:2;19609:6;19605:15;19598:29;19413:221;:::o;19640:366::-;19782:3;19803:67;19867:2;19862:3;19803:67;:::i;:::-;19796:74;;19879:93;19968:3;19879:93;:::i;:::-;19997:2;19992:3;19988:12;19981:19;;19640:366;;;:::o;20012:419::-;20178:4;20216:2;20205:9;20201:18;20193:26;;20265:9;20259:4;20255:20;20251:1;20240:9;20236:17;20229:47;20293:131;20419:4;20293:131;:::i;:::-;20285:139;;20012:419;;;:::o;20437:224::-;20577:34;20573:1;20565:6;20561:14;20554:58;20646:7;20641:2;20633:6;20629:15;20622:32;20437:224;:::o;20667:366::-;20809:3;20830:67;20894:2;20889:3;20830:67;:::i;:::-;20823:74;;20906:93;20995:3;20906:93;:::i;:::-;21024:2;21019:3;21015:12;21008:19;;20667:366;;;:::o;21039:419::-;21205:4;21243:2;21232:9;21228:18;21220:26;;21292:9;21286:4;21282:20;21278:1;21267:9;21263:17;21256:47;21320:131;21446:4;21320:131;:::i;:::-;21312:139;;21039:419;;;:::o;21464:222::-;21604:34;21600:1;21592:6;21588:14;21581:58;21673:5;21668:2;21660:6;21656:15;21649:30;21464:222;:::o;21692:366::-;21834:3;21855:67;21919:2;21914:3;21855:67;:::i;:::-;21848:74;;21931:93;22020:3;21931:93;:::i;:::-;22049:2;22044:3;22040:12;22033:19;;21692:366;;;:::o;22064:419::-;22230:4;22268:2;22257:9;22253:18;22245:26;;22317:9;22311:4;22307:20;22303:1;22292:9;22288:17;22281:47;22345:131;22471:4;22345:131;:::i;:::-;22337:139;;22064:419;;;:::o;22489:228::-;22629:34;22625:1;22617:6;22613:14;22606:58;22698:11;22693:2;22685:6;22681:15;22674:36;22489:228;:::o;22723:366::-;22865:3;22886:67;22950:2;22945:3;22886:67;:::i;:::-;22879:74;;22962:93;23051:3;22962:93;:::i;:::-;23080:2;23075:3;23071:12;23064:19;;22723:366;;;:::o;23095:419::-;23261:4;23299:2;23288:9;23284:18;23276:26;;23348:9;23342:4;23338:20;23334:1;23323:9;23319:17;23312:47;23376:131;23502:4;23376:131;:::i;:::-;23368:139;;23095:419;;;:::o;23520:297::-;23660:34;23656:1;23648:6;23644:14;23637:58;23729:34;23724:2;23716:6;23712:15;23705:59;23798:11;23793:2;23785:6;23781:15;23774:36;23520:297;:::o;23823:366::-;23965:3;23986:67;24050:2;24045:3;23986:67;:::i;:::-;23979:74;;24062:93;24151:3;24062:93;:::i;:::-;24180:2;24175:3;24171:12;24164:19;;23823:366;;;:::o;24195:419::-;24361:4;24399:2;24388:9;24384:18;24376:26;;24448:9;24442:4;24438:20;24434:1;24423:9;24419:17;24412:47;24476:131;24602:4;24476:131;:::i;:::-;24468:139;;24195:419;;;:::o;24620:175::-;24760:27;24756:1;24748:6;24744:14;24737:51;24620:175;:::o;24801:366::-;24943:3;24964:67;25028:2;25023:3;24964:67;:::i;:::-;24957:74;;25040:93;25129:3;25040:93;:::i;:::-;25158:2;25153:3;25149:12;25142:19;;24801:366;;;:::o;25173:419::-;25339:4;25377:2;25366:9;25362:18;25354:26;;25426:9;25420:4;25416:20;25412:1;25401:9;25397:17;25390:47;25454:131;25580:4;25454:131;:::i;:::-;25446:139;;25173:419;;;:::o;25598:191::-;25638:3;25657:20;25675:1;25657:20;:::i;:::-;25652:25;;25691:20;25709:1;25691:20;:::i;:::-;25686:25;;25734:1;25731;25727:9;25720:16;;25755:3;25752:1;25749:10;25746:36;;;25762:18;;:::i;:::-;25746:36;25598:191;;;;:::o;25795:176::-;25935:28;25931:1;25923:6;25919:14;25912:52;25795:176;:::o;25977:366::-;26119:3;26140:67;26204:2;26199:3;26140:67;:::i;:::-;26133:74;;26216:93;26305:3;26216:93;:::i;:::-;26334:2;26329:3;26325:12;26318:19;;25977:366;;;:::o;26349:419::-;26515:4;26553:2;26542:9;26538:18;26530:26;;26602:9;26596:4;26592:20;26588:1;26577:9;26573:17;26566:47;26630:131;26756:4;26630:131;:::i;:::-;26622:139;;26349:419;;;:::o;26774:233::-;26813:3;26836:24;26854:5;26836:24;:::i;:::-;26827:33;;26882:66;26875:5;26872:77;26869:103;;26952:18;;:::i;:::-;26869:103;26999:1;26992:5;26988:13;26981:20;;26774:233;;;:::o;27013:173::-;27153:25;27149:1;27141:6;27137:14;27130:49;27013:173;:::o;27192:366::-;27334:3;27355:67;27419:2;27414:3;27355:67;:::i;:::-;27348:74;;27431:93;27520:3;27431:93;:::i;:::-;27549:2;27544:3;27540:12;27533:19;;27192:366;;;:::o;27564:419::-;27730:4;27768:2;27757:9;27753:18;27745:26;;27817:9;27811:4;27807:20;27803:1;27792:9;27788:17;27781:47;27845:131;27971:4;27845:131;:::i;:::-;27837:139;;27564:419;;;:::o;27989:194::-;28029:4;28049:20;28067:1;28049:20;:::i;:::-;28044:25;;28083:20;28101:1;28083:20;:::i;:::-;28078:25;;28127:1;28124;28120:9;28112:17;;28151:1;28145:4;28142:11;28139:37;;;28156:18;;:::i;:::-;28139:37;27989:194;;;;:::o;28189:180::-;28237:77;28234:1;28227:88;28334:4;28331:1;28324:15;28358:4;28355:1;28348:15;28375:180;28423:77;28420:1;28413:88;28520:4;28517:1;28510:15;28544:4;28541:1;28534:15;28561:114;28628:6;28662:5;28656:12;28646:22;;28561:114;;;:::o;28681:184::-;28780:11;28814:6;28809:3;28802:19;28854:4;28849:3;28845:14;28830:29;;28681:184;;;;:::o;28871:132::-;28938:4;28961:3;28953:11;;28991:4;28986:3;28982:14;28974:22;;28871:132;;;:::o;29009:108::-;29086:24;29104:5;29086:24;:::i;:::-;29081:3;29074:37;29009:108;;:::o;29123:179::-;29192:10;29213:46;29255:3;29247:6;29213:46;:::i;:::-;29291:4;29286:3;29282:14;29268:28;;29123:179;;;;:::o;29308:113::-;29378:4;29410;29405:3;29401:14;29393:22;;29308:113;;;:::o;29457:732::-;29576:3;29605:54;29653:5;29605:54;:::i;:::-;29675:86;29754:6;29749:3;29675:86;:::i;:::-;29668:93;;29785:56;29835:5;29785:56;:::i;:::-;29864:7;29895:1;29880:284;29905:6;29902:1;29899:13;29880:284;;;29981:6;29975:13;30008:63;30067:3;30052:13;30008:63;:::i;:::-;30001:70;;30094:60;30147:6;30094:60;:::i;:::-;30084:70;;29940:224;29927:1;29924;29920:9;29915:14;;29880:284;;;29884:14;30180:3;30173:10;;29581:608;;;29457:732;;;;:::o;30195:831::-;30458:4;30496:3;30485:9;30481:19;30473:27;;30510:71;30578:1;30567:9;30563:17;30554:6;30510:71;:::i;:::-;30591:80;30667:2;30656:9;30652:18;30643:6;30591:80;:::i;:::-;30718:9;30712:4;30708:20;30703:2;30692:9;30688:18;30681:48;30746:108;30849:4;30840:6;30746:108;:::i;:::-;30738:116;;30864:72;30932:2;30921:9;30917:18;30908:6;30864:72;:::i;:::-;30946:73;31014:3;31003:9;30999:19;30990:6;30946:73;:::i;:::-;30195:831;;;;;;;;:::o;31032:220::-;31172:34;31168:1;31160:6;31156:14;31149:58;31241:3;31236:2;31228:6;31224:15;31217:28;31032:220;:::o;31258:366::-;31400:3;31421:67;31485:2;31480:3;31421:67;:::i;:::-;31414:74;;31497:93;31586:3;31497:93;:::i;:::-;31615:2;31610:3;31606:12;31599:19;;31258:366;;;:::o;31630:419::-;31796:4;31834:2;31823:9;31819:18;31811:26;;31883:9;31877:4;31873:20;31869:1;31858:9;31854:17;31847:47;31911:131;32037:4;31911:131;:::i;:::-;31903:139;;31630:419;;;:::o;32055:94::-;32088:8;32136:5;32132:2;32128:14;32107:35;;32055:94;;;:::o;32155:::-;32194:7;32223:20;32237:5;32223:20;:::i;:::-;32212:31;;32155:94;;;:::o;32255:100::-;32294:7;32323:26;32343:5;32323:26;:::i;:::-;32312:37;;32255:100;;;:::o;32361:157::-;32466:45;32486:24;32504:5;32486:24;:::i;:::-;32466:45;:::i;:::-;32461:3;32454:58;32361:157;;:::o;32524:397::-;32664:3;32679:75;32750:3;32741:6;32679:75;:::i;:::-;32779:2;32774:3;32770:12;32763:19;;32792:75;32863:3;32854:6;32792:75;:::i;:::-;32892:2;32887:3;32883:12;32876:19;;32912:3;32905:10;;32524:397;;;;;:::o;32927:148::-;33029:11;33066:3;33051:18;;32927:148;;;;:::o;33081:214::-;33221:66;33217:1;33209:6;33205:14;33198:90;33081:214;:::o;33301:400::-;33461:3;33482:84;33564:1;33559:3;33482:84;:::i;:::-;33475:91;;33575:93;33664:3;33575:93;:::i;:::-;33693:1;33688:3;33684:11;33677:18;;33301:400;;;:::o;33707:77::-;33744:7;33773:5;33762:16;;33707:77;;;:::o;33790:79::-;33829:7;33858:5;33847:16;;33790:79;;;:::o;33875:157::-;33980:45;34000:24;34018:5;34000:24;:::i;:::-;33980:45;:::i;:::-;33975:3;33968:58;33875:157;;:::o;34038:214::-;34178:66;34174:1;34166:6;34162:14;34155:90;34038:214;:::o;34258:402::-;34418:3;34439:85;34521:2;34516:3;34439:85;:::i;:::-;34432:92;;34533:93;34622:3;34533:93;:::i;:::-;34651:2;34646:3;34642:12;34635:19;;34258:402;;;:::o;34666:929::-;35008:3;35030:148;35174:3;35030:148;:::i;:::-;35023:155;;35188:75;35259:3;35250:6;35188:75;:::i;:::-;35288:2;35283:3;35279:12;35272:19;;35301:75;35372:3;35363:6;35301:75;:::i;:::-;35401:2;35396:3;35392:12;35385:19;;35421:148;35565:3;35421:148;:::i;:::-;35414:155;;35586:3;35579:10;;34666:929;;;;;:::o;35601:177::-;35741:29;35737:1;35729:6;35725:14;35718:53;35601:177;:::o;35784:366::-;35926:3;35947:67;36011:2;36006:3;35947:67;:::i;:::-;35940:74;;36023:93;36112:3;36023:93;:::i;:::-;36141:2;36136:3;36132:12;36125:19;;35784:366;;;:::o;36156:419::-;36322:4;36360:2;36349:9;36345:18;36337:26;;36409:9;36403:4;36399:20;36395:1;36384:9;36380:17;36373:47;36437:131;36563:4;36437:131;:::i;:::-;36429:139;;36156:419;;;:::o

Swarm Source

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