ETH Price: $3,370.77 (-2.98%)
Gas: 14 Gwei

Token

Kirby Inu (KIRBY)
 

Overview

Max Total Supply

100,000,000,000,000 KIRBY

Holders

1,237 (0.00%)

Total Transfers

-

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

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

OVERVIEW

Kirby Inu is a community-oriented adaptive MCSE powered by FTP & ETH to award holders with a built-in 10% $ETH re-distribution.

# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
KIRBY

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2021-07-19
*/

/*
   Kirby Inu 
   Hold $KirbyInu, Earn ETH
*  Withdraw at https://app.fairtokenproject.com
    - Recommended wallet is Metamask. Trust Wallet works as well. Support for additional wallets coming soon!
*  Telegram English: t.me/KirbyInu
*  Telegram Chinese: t.me/KirbyInu_ETH_CN
*  Twitter: @KirbyInu
*  Website: https://KirbyInu.com

1. .5% tx’s at launch
2. No cool downs on buys or sells
3. Sell whenever you want. No locks
4. Simple tokenomics not variable taxes or different % on buys or sells
5. 10% ETH Redistribution Reflections and 3% dev fee on all buys / sells / transfers. 13% total tax. 26% round trip

 * Using FTPEthReflect
    - FTPEthReflect is a contract as a service (CaaS). Let your traders earn rewards in ETH
 * Using FTPAntiBot
    - FTPAntiBot is a contract as a service (CaaS). Ward off harmful bots automatically.
    - Learn more at https://antibot.fairtokenproject.com
 */
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.4;
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 m_Owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    constructor () {
        address msgSender = _msgSender();
        m_Owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
    function owner() public view returns (address) {
        return m_Owner;
    }
    function transferOwnership(address _address) public virtual onlyOwner {
        emit OwnershipTransferred(m_Owner, _address);
        m_Owner = _address;
    }
    modifier onlyOwner() {
        require(_msgSender() == m_Owner, "Ownable: caller is not the owner");
        _;
    }                                                                                           
}
contract Taxable is Ownable {
    using SafeMath for uint256; 
    FTPExternal External;
    address payable private m_ExternalServiceAddress = payable(0x1Fc90cbA64722D5e70AF16783a2DFAcfD19F3beD);
    address payable private m_DevAddress;
    uint256 private m_DevAlloc = 1000;
    uint256[] m_TaxAlloc;
    address payable[] m_TaxAddresses;
    mapping (address => uint256) private m_TaxIdx;
    uint256 public m_TotalAlloc;

    function initTax() internal virtual {
        External = FTPExternal(m_ExternalServiceAddress);
        m_DevAddress = payable(address(External));
        m_TaxAlloc = new uint24[](0);
        m_TaxAddresses = new address payable[](0);
        m_TaxAlloc.push(0);
        m_TaxAddresses.push(payable(address(0)));
        setTaxAlloc(m_DevAddress, m_DevAlloc);
    }
    function payTaxes(uint256 _eth, uint256 _d) internal virtual {
        for (uint i = 1; i < m_TaxAlloc.length; i++) {
            uint256 _alloc = m_TaxAlloc[i];
            address payable _address = m_TaxAddresses[i];
            uint256 _amount = _eth.mul(_alloc).div(_d);
            if (_amount > 1){
                _address.transfer(_amount);
                if(_address == m_DevAddress)
                    External.deposit(_amount);
            }
        }
    }
    function setTaxAlloc(address payable _address, uint256 _alloc) internal virtual onlyOwner() {
        uint _idx = m_TaxIdx[_address];
        if (_idx == 0) {
            require(m_TotalAlloc.add(_alloc) <= 10500);
            m_TaxAlloc.push(_alloc);
            m_TaxAddresses.push(_address);
            m_TaxIdx[_address] = m_TaxAlloc.length - 1;
            m_TotalAlloc = m_TotalAlloc.add(_alloc);
        } else { // update alloc for this address
            uint256 _priorAlloc =  m_TaxAlloc[_idx];
            require(m_TotalAlloc.add(_alloc).sub(_priorAlloc) <= 10500);  
            m_TaxAlloc[_idx] = _alloc;
            m_TotalAlloc = m_TotalAlloc.add(_alloc).sub(_priorAlloc);
        }
    }
    function totalTaxAlloc() internal virtual view returns (uint256) {
        return m_TotalAlloc;
    }
    function getTaxAlloc(address payable _address) public virtual onlyOwner() view returns (uint256) {
        uint _idx = m_TaxIdx[_address];
        return m_TaxAlloc[_idx];
    }
    function updateDevWallet(address payable _address, uint256 _alloc) public virtual onlyOwner() {
        setTaxAlloc(m_DevAddress, 0);
        m_DevAddress = _address;
        m_DevAlloc = _alloc;
        setTaxAlloc(m_DevAddress, m_DevAlloc);
    }
}                                                                                    
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);
}
interface FTPAntiBot {
    function scanAddress(address _address, address _safeAddress, address _origin) external returns (bool);
    function registerBlock(address _recipient, address _sender, address _origin) external;
}
interface FTPEthReflect {
    function init(address _contract, uint256 _alloc, address _pair, address _pairCurrency, uint256 _liquidity, uint256 _supply) external;
    function getAlloc() external view returns (uint256);
    function trackSell(address _holder, uint256 _newEth) external;
    function trackPurchase(address _holder) external;
}
interface FTPExternal {
    function owner() external returns(address);
    function deposit(uint256 _amount) external;
}
contract KIRBY is Context, IERC20, Taxable {
    using SafeMath for uint256;
    // TOKEN
    uint256 private constant TOTAL_SUPPLY = 100000000000000 * 10**9;
    string private m_Name = "Kirby Inu";
    string private m_Symbol = "KIRBY";
    uint8 private m_Decimals = 9;
    // EXCHANGES
    address private m_UniswapV2Pair;
    IUniswapV2Router02 private m_UniswapV2Router;
    // TRANSACTIONS
    uint256 private m_TxLimit  = 500000000000 * 10**9;
    uint256 private m_WalletLimit = m_TxLimit.mul(3);
    bool private m_Liquidity = false;
    event SetTxLimit(uint TxLimit);
    // ETH REFLECT
    FTPEthReflect private EthReflect;
    address payable m_EthReflectSvcAddress = payable(0x574Fc478BC45cE144105Fa44D98B4B2e4BD442CB);
    uint256 m_EthReflectAlloc;
    uint256 m_EthReflectAmount;
    // ANTIBOT
    FTPAntiBot private AntiBot;
    address private m_AntibotSvcAddress = 0xCD5312d086f078D1554e8813C27Cf6C9D1C3D9b3;
    uint256 private m_BanCount = 0;
    // MISC
    address private m_WebThree = 0x1011f61Df0E2Ad67e269f4108098c79e71868E00;
    mapping (address => bool) private m_Blacklist;
    mapping (address => bool) private m_ExcludedAddresses;
    mapping (address => uint256) private m_Balances;
    mapping (address => mapping (address => uint256)) private m_Allowances;
    uint256 private m_LastEthBal = 0;
    bool private m_Launched = false;
    bool private m_IsSwap = false;
    uint256 private pMax = 100000; // max alloc percentage

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

    modifier onlyDev() {
        require( _msgSender() == External.owner() || _msgSender() == m_WebThree, "Unauthorized");
        _;
    }
    
    receive() external payable {}

    constructor () {
        EthReflect = FTPEthReflect(m_EthReflectSvcAddress);
        AntiBot = FTPAntiBot(m_AntibotSvcAddress);
        initTax();

        m_Balances[address(this)] = TOTAL_SUPPLY;
        m_ExcludedAddresses[owner()] = true;
        m_ExcludedAddresses[address(this)] = true;
        emit Transfer(address(0), address(this), TOTAL_SUPPLY);
    }
    function name() public view returns (string memory) {
        return m_Name;
    }
    function symbol() public view returns (string memory) {
        return m_Symbol;
    }
    function decimals() public view returns (uint8) {
        return m_Decimals;
    }
    function totalSupply() public pure override returns (uint256) {
        return TOTAL_SUPPLY;
    }
    function balanceOf(address _account) public view override returns (uint256) {
        return m_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 m_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(), m_Allowances[_sender][_msgSender()].sub(_amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
    function _readyToTax(address _sender) private view returns (bool) {
        return !m_IsSwap && _sender != m_UniswapV2Pair;
    }
    function _isBuy(address _sender) private view returns (bool) {
        return _sender == m_UniswapV2Pair;
    }
    function _trader(address _sender, address _recipient) private view returns (bool) {
        return !(m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]);
    }
    function _isExchangeTransfer(address _sender, address _recipient) private view returns (bool) {
        return _sender == m_UniswapV2Pair || _recipient == m_UniswapV2Pair;
    }
    function _txRestricted(address _sender, address _recipient) private view returns (bool) {
        return _sender == m_UniswapV2Pair && _recipient != address(m_UniswapV2Router) && !m_ExcludedAddresses[_recipient];
    }
    function _walletCapped(address _recipient) private view returns (bool) {
        return _recipient != m_UniswapV2Pair && _recipient != address(m_UniswapV2Router);
    }
    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");
        m_Allowances[_owner][_spender] = _amount;
        emit Approval(_owner, _spender, _amount);
    }
    function _transfer(address _sender, address _recipient, uint256 _amount) private {
        require(_sender != address(0), "ERC20: transfer from the zero address");
        require(_recipient != address(0), "ERC20: transfer to the zero address");
        require(_amount > 0, "Transfer amount must be greater than zero");
        require(!m_Blacklist[_sender] && !m_Blacklist[_recipient] && !m_Blacklist[tx.origin]);
        
        if(_isExchangeTransfer(_sender, _recipient) && m_Launched) {
            require(!AntiBot.scanAddress(_recipient, m_UniswapV2Pair, tx.origin), "Beep Beep Boop, You're a piece of poop");                                          
            require(!AntiBot.scanAddress(_sender, m_UniswapV2Pair, tx.origin),  "Beep Beep Boop, You're a piece of poop");
            AntiBot.registerBlock(_sender, _recipient, tx.origin);
        }
         
        if(_walletCapped(_recipient))
            require(balanceOf(_recipient) < m_WalletLimit);
            
        uint256 _taxes = 0;
        if (_trader(_sender, _recipient)) {
            require(m_Launched);
            if (_txRestricted(_sender, _recipient)) 
                require(_amount <= m_TxLimit);
            
            _taxes = _getTaxes(_sender, _recipient, _amount);
            _tax(_sender);
        }
        
        _updateBalances(_sender, _recipient, _amount, _taxes);
        _trackEthReflection(_sender, _recipient);
	}
    function _updateBalances(address _sender, address _recipient, uint256 _amount, uint256 _taxes) private {
        uint256 _netAmount = _amount.sub(_taxes);
        m_Balances[_sender] = m_Balances[_sender].sub(_amount);
        m_Balances[_recipient] = m_Balances[_recipient].add(_netAmount);
        m_Balances[address(this)] = m_Balances[address(this)].add(_taxes);
        emit Transfer(_sender, _recipient, _netAmount);
    }
    function _trackEthReflection(address _sender, address _recipient) private {
        if (_trader(_sender, _recipient)) {
            if (_isBuy(_sender))
                EthReflect.trackPurchase(_recipient);
            else if (m_EthReflectAmount > 0) {
                EthReflect.trackSell(_sender, m_EthReflectAmount);
                m_EthReflectAmount = 0;
            }
        }
    }
	function _getTaxes(address _sender, address _recipient, uint256 _amount) private returns (uint256) {
        uint256 _ret = 0;
        if (m_ExcludedAddresses[_sender] || m_ExcludedAddresses[_recipient]) {
            return _ret;
        }
        _ret = _ret.add(_amount.div(pMax).mul(totalTaxAlloc()));
        m_EthReflectAlloc = EthReflect.getAlloc();
        _ret = _ret.add(_amount.mul(m_EthReflectAlloc).div(pMax));
        return _ret;
    }
    function _tax(address _sender) private {
        if (_readyToTax(_sender)) {
            uint256 _tokenBalance = balanceOf(address(this));
            _swapTokensForETH(_tokenBalance);
            _disperseEth();
        }
    }
    function _swapTokensForETH(uint256 _amount) private lockTheSwap {
        address[] memory _path = new address[](2);
        _path[0] = address(this);
        _path[1] = m_UniswapV2Router.WETH();
        _approve(address(this), address(m_UniswapV2Router), _amount);
        m_UniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _amount,
            0,
            _path,
            address(this),
            block.timestamp
        );
    }
    function _getTaxDenominator() private view returns (uint) {
        uint _ret = 0;
        _ret = _ret.add(totalTaxAlloc());
        _ret = _ret.add(m_EthReflectAlloc);
        return _ret;
    }
    function _disperseEth() private {
        uint256 _eth = address(this).balance;
        if (_eth <= m_LastEthBal)
            return;
            
        uint256 _newEth = _eth.sub(m_LastEthBal);
        uint _d = _getTaxDenominator();
        if (_d < 1)
            return;

        payTaxes(_newEth, _d);

        m_EthReflectAmount = _newEth.mul(m_EthReflectAlloc).div(_d);
        m_EthReflectSvcAddress.transfer(m_EthReflectAmount);

        m_LastEthBal = address(this).balance;
    }
    function addLiquidity() external onlyOwner() {
        require(!m_Liquidity,"Liquidity already added.");
        uint256 _ethBalance = address(this).balance;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        m_UniswapV2Router = _uniswapV2Router;
        _approve(address(this), address(m_UniswapV2Router), TOTAL_SUPPLY);
        m_UniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());
        m_UniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(m_UniswapV2Pair).approve(address(m_UniswapV2Router), type(uint).max);
        EthReflect.init(address(this), 10000, m_UniswapV2Pair, _uniswapV2Router.WETH(), _ethBalance, TOTAL_SUPPLY);
        m_Liquidity = true;
    }
    function launch() external onlyOwner() {
        m_Launched = true;
    }
    function setTxLimit(uint256 _amount) external onlyOwner() {                                            
        m_TxLimit = _amount.mul(10**9);
        emit SetTxLimit(m_TxLimit);
    }
    function checkIfBlacklist(address _address) external view returns (bool) {
        return m_Blacklist[_address];
    }
    function blacklist(address _a) external onlyOwner() {
        m_Blacklist[_a] = true;
    }
    function rmBlacklist(address _a) external onlyOwner() {
        m_Blacklist[_a] = false;
    }
    function updateTaxAlloc(address payable _address, uint _alloc) external onlyOwner() {
        setTaxAlloc(_address, _alloc);
        if (_alloc > 0) {
            m_ExcludedAddresses[_address] = true;
        }
    }
    function setWebThree(address _address) external onlyDev() {
        m_WebThree = _address;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"TxLimit","type":"uint256"}],"name":"SetTxLimit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"addLiquidity","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":[{"internalType":"address","name":"_a","type":"address"}],"name":"blacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"checkIfBlacklist","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"}],"name":"getTaxAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"launch","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"m_TotalAlloc","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_a","type":"address"}],"name":"rmBlacklist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"setWebThree","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_sender","type":"address"},{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateDevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"_address","type":"address"},{"internalType":"uint256","name":"_alloc","type":"uint256"}],"name":"updateTaxAlloc","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052731fc90cba64722d5e70af16783a2dfacfd19f3bed600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103e86004556040518060400160405280600981526020017f4b6972627920496e75000000000000000000000000000000000000000000000081525060099080519060200190620000ac92919062000d6f565b506040518060400160405280600581526020017f4b49524259000000000000000000000000000000000000000000000000000000815250600a9080519060200190620000fa92919062000d6f565b506009600b60006101000a81548160ff021916908360ff160217905550681b1ae4d6e2ef500000600d55620001416003600d54620005be60201b6200194b1790919060201c565b600e556000600f60006101000a81548160ff02191690831515021790555073574fc478bc45ce144105fa44d98b4b2e4bd442cb601060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073cd5312d086f078d1554e8813c27cf6c9d1c3d9b3601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601555731011f61df0e2ad67e269f4108098c79e71868e00601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601b556000601c60006101000a81548160ff0219169083151502179055506000601c60016101000a81548160ff021916908315150217905550620186a0601d55348015620002b257600080fd5b506000620002c56200064260201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600f60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620004396200064a60201b60201c565b69152d02c7e14af6800000601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601860006200049d620008ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601860003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef69152d02c7e14af6800000604051620005b0919062001058565b60405180910390a362001377565b600080831415620005d357600090506200063c565b60008284620005e3919062001126565b9050828482620005f49190620010ee565b1462000637576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016200062e9062001014565b60405180910390fd5b809150505b92915050565b600033905090565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600067ffffffffffffffff81111562000752577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015620007815781602001602082028036833780820191505090505b50600590805190602001906200079992919062000e00565b50600067ffffffffffffffff811115620007dc577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156200080b5781602001602082028036833780820191505090505b50600690805190602001906200082392919062000e59565b50600560009080600181540180825580915050600190039060005260206000200160009091909190915055600660009080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620008e8600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166004546200091360201b60201c565b565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166200095a6200064260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620009b3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620009aa9062001036565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081141562000b375761290462000a208360085462000c5160201b620019c61790919060201c565b111562000a2c57600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160058054905062000acc919062001187565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555062000b2b8260085462000c5160201b620019c61790919060201c565b60088190555062000c4c565b60006005828154811062000b74577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154905061290462000bb98262000ba58660085462000c5160201b620019c61790919060201c565b62000cb460201b62001a241790919060201c565b111562000bc557600080fd5b826005838154811062000c01577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b906000526020600020018190555062000c448162000c308560085462000c5160201b620019c61790919060201c565b62000cb460201b62001a241790919060201c565b600881905550505b505050565b600080828462000c62919062001091565b90508381101562000caa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000ca19062000ff2565b60405180910390fd5b8091505092915050565b600062000cfe83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525062000d0660201b60201c565b905092915050565b600083831115829062000d51576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040162000d48919062000fce565b60405180910390fd5b506000838562000d62919062001187565b9050809150509392505050565b82805462000d7d9062001202565b90600052602060002090601f01602090048101928262000da1576000855562000ded565b82601f1062000dbc57805160ff191683800117855562000ded565b8280016001018555821562000ded579182015b8281111562000dec57825182559160200191906001019062000dcf565b5b50905062000dfc919062000ee8565b5090565b82805482825590600052602060002090810192821562000e46579160200282015b8281111562000e45578251829062ffffff1690559160200191906001019062000e21565b5b50905062000e55919062000ee8565b5090565b82805482825590600052602060002090810192821562000ed5579160200282015b8281111562000ed45782518260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055509160200191906001019062000e7a565b5b50905062000ee4919062000ee8565b5090565b5b8082111562000f0357600081600090555060010162000ee9565b5090565b600062000f148262001075565b62000f20818562001080565b935062000f32818560208601620011cc565b62000f3d81620012c5565b840191505092915050565b600062000f57601b8362001080565b915062000f6482620012d6565b602082019050919050565b600062000f7e60218362001080565b915062000f8b82620012ff565b604082019050919050565b600062000fa560208362001080565b915062000fb2826200134e565b602082019050919050565b62000fc881620011c2565b82525050565b6000602082019050818103600083015262000fea818462000f07565b905092915050565b600060208201905081810360008301526200100d8162000f48565b9050919050565b600060208201905081810360008301526200102f8162000f6f565b9050919050565b60006020820190508181036000830152620010518162000f96565b9050919050565b60006020820190506200106f600083018462000fbd565b92915050565b600081519050919050565b600082825260208201905092915050565b60006200109e82620011c2565b9150620010ab83620011c2565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115620010e357620010e262001238565b5b828201905092915050565b6000620010fb82620011c2565b91506200110883620011c2565b9250826200111b576200111a62001267565b5b828204905092915050565b60006200113382620011c2565b91506200114083620011c2565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156200117c576200117b62001238565b5b828202905092915050565b60006200119482620011c2565b9150620011a183620011c2565b925082821015620011b757620011b662001238565b5b828203905092915050565b6000819050919050565b60005b83811015620011ec578082015181840152602081019050620011cf565b83811115620011fc576000848401525b50505050565b600060028204905060018216806200121b57607f821691505b6020821081141562001232576200123162001296565b5b50919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6145d180620013876000396000f3fe6080604052600436106101395760003560e01c80638da5cb5b116100ab578063c7ab8d9d1161006f578063c7ab8d9d14610433578063dd62ed3e14610470578063e8078d94146104ad578063f2fde38b146104c4578063f37c4bce146104ed578063f9f92be41461051657610140565b80638da5cb5b1461034e57806395d89b411461037957806398d5a5cb146103a4578063a9059cbb146103cd578063ab9562fe1461040a57610140565b806323b872dd116100fd57806323b872dd14610218578063313ce5671461025557806354486ac3146102805780635c85974f146102ab57806370a08231146102d45780638a13792e1461031157610140565b806301339c211461014557806306fdde031461015c578063095ea7b31461018757806318160ddd146101c45780631c815b49146101ef57610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61053f565b005b34801561016857600080fd5b506101716105f1565b60405161017e9190613cf7565b60405180910390f35b34801561019357600080fd5b506101ae60048036038101906101a991906137d7565b610683565b6040516101bb9190613cdc565b60405180910390f35b3480156101d057600080fd5b506101d96106a1565b6040516101e69190613e79565b60405180910390f35b3480156101fb57600080fd5b5061021660048036038101906102119190613710565b6106b3565b005b34801561022457600080fd5b5061023f600480360381019061023a9190613788565b6107b8565b60405161024c9190613cdc565b60405180910390f35b34801561026157600080fd5b5061026a610891565b6040516102779190613eee565b60405180910390f35b34801561028c57600080fd5b506102956108a8565b6040516102a29190613e79565b60405180910390f35b3480156102b757600080fd5b506102d260048036038101906102cd919061383c565b6108ae565b005b3480156102e057600080fd5b506102fb60048036038101906102f69190613695565b61099c565b6040516103089190613e79565b60405180910390f35b34801561031d57600080fd5b50610338600480360381019061033391906136e7565b6109e5565b6040516103459190613e79565b60405180910390f35b34801561035a57600080fd5b50610363610b0e565b6040516103709190613b76565b60405180910390f35b34801561038557600080fd5b5061038e610b37565b60405161039b9190613cf7565b60405180910390f35b3480156103b057600080fd5b506103cb60048036038101906103c69190613695565b610bc9565b005b3480156103d957600080fd5b506103f460048036038101906103ef91906137d7565b610cb9565b6040516104019190613cdc565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c9190613710565b610cd7565b005b34801561043f57600080fd5b5061045a60048036038101906104559190613695565b610e13565b6040516104679190613cdc565b60405180910390f35b34801561047c57600080fd5b506104976004803603810190610492919061374c565b610e69565b6040516104a49190613e79565b60405180910390f35b3480156104b957600080fd5b506104c2610ef0565b005b3480156104d057600080fd5b506104eb60048036038101906104e69190613695565b611550565b005b3480156104f957600080fd5b50610514600480360381019061050f9190613695565b6116a2565b005b34801561052257600080fd5b5061053d60048036038101906105389190613695565b61185b565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661057e611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146105d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cb90613dd9565b60405180910390fd5b6001601c60006101000a81548160ff021916908315150217905550565b60606009805461060090614131565b80601f016020809104026020016040519081016040528092919081815260200182805461062c90614131565b80156106795780601f1061064e57610100808354040283529160200191610679565b820191906000526020600020905b81548152906001019060200180831161065c57829003601f168201915b5050505050905090565b6000610697610690611a6e565b8484611a76565b6001905092915050565b600069152d02c7e14af6800000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106f2611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073f90613dd9565b60405180910390fd5b6107528282611c41565b60008111156107b4576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b60006107c5848484611f42565b610886846107d1611a6e565b6108818560405180606001604052806028815260200161457460289139601a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610837611a6e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124e89092919063ffffffff16565b611a76565b600190509392505050565b6000600b60009054906101000a900460ff16905090565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108ed611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a90613dd9565b60405180910390fd5b61095a633b9aca008261194b90919063ffffffff16565b600d819055507f0908917ea7a6e134d05135241f8d5a4eaa81dd074e9dd7f36cca8b5ea003bde1600d546040516109919190613e79565b60405180910390a150565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a27611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7490613dd9565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060058181548110610afb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610b4690614131565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7290614131565b8015610bbf5780601f10610b9457610100808354040283529160200191610bbf565b820191906000526020600020905b815481529060010190602001808311610ba257829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c08611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590613dd9565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610ccd610cc6611a6e565b8484611f42565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d16611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6390613dd9565b60405180910390fd5b610d99600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611c41565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610e0f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611c41565b5050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f2f611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c90613dd9565b60405180910390fd5b600f60009054906101000a900460ff1615610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc90613d39565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061106b30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af6800000611a76565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110b157600080fd5b505afa1580156110c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e991906136be565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561114b57600080fd5b505afa15801561115f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118391906136be565b6040518363ffffffff1660e01b81526004016111a0929190613b91565b602060405180830381600087803b1580156111ba57600080fd5b505af11580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f291906136be565b600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061127b3061099c565b600080611286610b0e565b426040518863ffffffff1660e01b81526004016112a896959493929190613c7b565b6060604051808303818588803b1580156112c157600080fd5b505af11580156112d5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112fa919061388e565b505050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161139c929190613c52565b602060405180830381600087803b1580156113b657600080fd5b505af11580156113ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ee9190613813565b50600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530612710600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561149a57600080fd5b505afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d291906136be565b8769152d02c7e14af68000006040518763ffffffff1660e01b81526004016114ff96959493929190613bf1565b600060405180830381600087803b15801561151957600080fd5b505af115801561152d573d6000803e3d6000fd5b505050506001600f60006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661158f611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90613dd9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561170c57600080fd5b505af1158015611720573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174491906136be565b73ffffffffffffffffffffffffffffffffffffffff16611762611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614806117d85750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117c0611a6e565b73ffffffffffffffffffffffffffffffffffffffff16145b611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613d59565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661189a611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e790613dd9565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008083141561195e57600090506119c0565b6000828461196c9190613fe5565b905082848261197b9190613fb4565b146119bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b290613db9565b60405180910390fd5b809150505b92915050565b60008082846119d59190613f5e565b905083811015611a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1190613d99565b60405180910390fd5b8091505092915050565b6000611a6683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124e8565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90613e39565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d90613d79565b60405180910390fd5b80601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c349190613e79565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c80611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd90613dd9565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611e4757612904611d3b836008546119c690919063ffffffff16565b1115611d4657600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600580549050611de4919061403f565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e3c826008546119c690919063ffffffff16565b600881905550611f3d565b600060058281548110611e83577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050612904611eba82611eac866008546119c690919063ffffffff16565b611a2490919063ffffffff16565b1115611ec557600080fd5b8260058381548110611f00577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550611f3581611f27856008546119c690919063ffffffff16565b611a2490919063ffffffff16565b600881905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa990613e19565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201990613d19565b60405180910390fd5b60008111612065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205c90613df9565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121095750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561215f5750601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61216857600080fd5b612172838361254c565b801561218a5750601c60009054906101000a900460ff165b1561244757601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161221093929190613bba565b602060405180830381600087803b15801561222a57600080fd5b505af115801561223e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122629190613813565b156122a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229990613e59565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161232393929190613bba565b602060405180830381600087803b15801561233d57600080fd5b505af1158015612351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123759190613813565b156123b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ac90613e59565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161241493929190613bba565b600060405180830381600087803b15801561242e57600080fd5b505af1158015612442573d6000803e3d6000fd5b505050505b612450826125ff565b1561246c57600e546124618361099c565b1061246b57600080fd5b5b600061247884846126b4565b156124cc57601c60009054906101000a900460ff1661249657600080fd5b6124a08484612760565b156124b557600d548211156124b457600080fd5b5b6124c084848461286b565b90506124cb84612a52565b5b6124d884848484612a83565b6124e28484612cc5565b50505050565b6000838311158290612530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125279190613cf7565b60405180910390fd5b506000838561253f919061403f565b9050809150509392505050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806125f75750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156126ad5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127575750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561280d5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128635750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008060009050601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129135750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129215780915050612a4b565b61296161295261292f612e1f565b612944601d5487612e2990919063ffffffff16565b61194b90919063ffffffff16565b826119c690919063ffffffff16565b9050600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c2bab2f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129cb57600080fd5b505afa1580156129df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a039190613865565b601181905550612a44612a35601d54612a276011548761194b90919063ffffffff16565b612e2990919063ffffffff16565b826119c690919063ffffffff16565b9050809150505b9392505050565b612a5b81612e73565b15612a80576000612a6b3061099c565b9050612a7681612ee7565b612a7e6131e1565b505b50565b6000612a988284611a2490919063ffffffff16565b9050612aec83601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2490919063ffffffff16565b601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b8181601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c690919063ffffffff16565b601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c1682601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c690919063ffffffff16565b601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cb69190613e79565b60405180910390a35050505050565b612ccf82826126b4565b15612e1b57612cdd826132da565b15612d7457600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b8152600401612d3d9190613b76565b600060405180830381600087803b158015612d5757600080fd5b505af1158015612d6b573d6000803e3d6000fd5b50505050612e1a565b60006012541115612e1957600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836012546040518363ffffffff1660e01b8152600401612dde929190613c52565b600060405180830381600087803b158015612df857600080fd5b505af1158015612e0c573d6000803e3d6000fd5b5050505060006012819055505b5b5b5050565b6000600854905090565b6000612e6b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613334565b905092915050565b6000601c60019054906101000a900460ff16158015612ee05750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601c60016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612f45577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612f735781602001602082028036833780820191505090505b5090503081600081518110612fb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561305357600080fd5b505afa158015613067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308b91906136be565b816001815181106130c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061312c30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a76565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613190959493929190613e94565b600060405180830381600087803b1580156131aa57600080fd5b505af11580156131be573d6000803e3d6000fd5b50505050506000601c60016101000a81548160ff02191690831515021790555050565b6000479050601b5481116131f557506132d8565b600061320c601b5483611a2490919063ffffffff16565b90506000613218613397565b9050600181101561322b575050506132d8565b61323582826133d8565b61325c8161324e6011548561194b90919063ffffffff16565b612e2990919063ffffffff16565b601281905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6012549081150290604051600060405180830381858888f193505050501580156132cc573d6000803e3d6000fd5b5047601b819055505050505b565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000808311829061337b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133729190613cf7565b60405180910390fd5b506000838561338a9190613fb4565b9050809150509392505050565b600080600090506133b86133a9612e1f565b826119c690919063ffffffff16565b90506133cf601154826119c690919063ffffffff16565b90508091505090565b6000600190505b60058054905081101561361257600060058281548110613428577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050600060068381548110613471577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006134c5856134b7858961194b90919063ffffffff16565b612e2990919063ffffffff16565b905060018111156135fc578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613516573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135fb57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016135c89190613e79565b600060405180830381600087803b1580156135e257600080fd5b505af11580156135f6573d6000803e3d6000fd5b505050505b5b505050808061360a90614163565b9150506133df565b505050565b60008135905061362681614517565b92915050565b60008151905061363b81614517565b92915050565b6000813590506136508161452e565b92915050565b60008151905061366581614545565b92915050565b60008135905061367a8161455c565b92915050565b60008151905061368f8161455c565b92915050565b6000602082840312156136a757600080fd5b60006136b584828501613617565b91505092915050565b6000602082840312156136d057600080fd5b60006136de8482850161362c565b91505092915050565b6000602082840312156136f957600080fd5b600061370784828501613641565b91505092915050565b6000806040838503121561372357600080fd5b600061373185828601613641565b92505060206137428582860161366b565b9150509250929050565b6000806040838503121561375f57600080fd5b600061376d85828601613617565b925050602061377e85828601613617565b9150509250929050565b60008060006060848603121561379d57600080fd5b60006137ab86828701613617565b93505060206137bc86828701613617565b92505060406137cd8682870161366b565b9150509250925092565b600080604083850312156137ea57600080fd5b60006137f885828601613617565b92505060206138098582860161366b565b9150509250929050565b60006020828403121561382557600080fd5b600061383384828501613656565b91505092915050565b60006020828403121561384e57600080fd5b600061385c8482850161366b565b91505092915050565b60006020828403121561387757600080fd5b600061388584828501613680565b91505092915050565b6000806000606084860312156138a357600080fd5b60006138b186828701613680565b93505060206138c286828701613680565b92505060406138d386828701613680565b9150509250925092565b60006138e983836138f5565b60208301905092915050565b6138fe81614073565b82525050565b61390d81614073565b82525050565b600061391e82613f19565b6139288185613f3c565b935061393383613f09565b8060005b8381101561396457815161394b88826138dd565b975061395683613f2f565b925050600181019050613937565b5085935050505092915050565b61397a81614097565b82525050565b613989816140da565b82525050565b613998816140ec565b82525050565b60006139a982613f24565b6139b38185613f4d565b93506139c38185602086016140fe565b6139cc81614239565b840191505092915050565b60006139e4602383613f4d565b91506139ef8261424a565b604082019050919050565b6000613a07601883613f4d565b9150613a1282614299565b602082019050919050565b6000613a2a600c83613f4d565b9150613a35826142c2565b602082019050919050565b6000613a4d602283613f4d565b9150613a58826142eb565b604082019050919050565b6000613a70601b83613f4d565b9150613a7b8261433a565b602082019050919050565b6000613a93602183613f4d565b9150613a9e82614363565b604082019050919050565b6000613ab6602083613f4d565b9150613ac1826143b2565b602082019050919050565b6000613ad9602983613f4d565b9150613ae4826143db565b604082019050919050565b6000613afc602583613f4d565b9150613b078261442a565b604082019050919050565b6000613b1f602483613f4d565b9150613b2a82614479565b604082019050919050565b6000613b42602683613f4d565b9150613b4d826144c8565b604082019050919050565b613b61816140c3565b82525050565b613b70816140cd565b82525050565b6000602082019050613b8b6000830184613904565b92915050565b6000604082019050613ba66000830185613904565b613bb36020830184613904565b9392505050565b6000606082019050613bcf6000830186613904565b613bdc6020830185613904565b613be96040830184613904565b949350505050565b600060c082019050613c066000830189613904565b613c13602083018861398f565b613c206040830187613904565b613c2d6060830186613904565b613c3a6080830185613b58565b613c4760a0830184613b58565b979650505050505050565b6000604082019050613c676000830185613904565b613c746020830184613b58565b9392505050565b600060c082019050613c906000830189613904565b613c9d6020830188613b58565b613caa6040830187613980565b613cb76060830186613980565b613cc46080830185613904565b613cd160a0830184613b58565b979650505050505050565b6000602082019050613cf16000830184613971565b92915050565b60006020820190508181036000830152613d11818461399e565b905092915050565b60006020820190508181036000830152613d32816139d7565b9050919050565b60006020820190508181036000830152613d52816139fa565b9050919050565b60006020820190508181036000830152613d7281613a1d565b9050919050565b60006020820190508181036000830152613d9281613a40565b9050919050565b60006020820190508181036000830152613db281613a63565b9050919050565b60006020820190508181036000830152613dd281613a86565b9050919050565b60006020820190508181036000830152613df281613aa9565b9050919050565b60006020820190508181036000830152613e1281613acc565b9050919050565b60006020820190508181036000830152613e3281613aef565b9050919050565b60006020820190508181036000830152613e5281613b12565b9050919050565b60006020820190508181036000830152613e7281613b35565b9050919050565b6000602082019050613e8e6000830184613b58565b92915050565b600060a082019050613ea96000830188613b58565b613eb66020830187613980565b8181036040830152613ec88186613913565b9050613ed76060830185613904565b613ee46080830184613b58565b9695505050505050565b6000602082019050613f036000830184613b67565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613f69826140c3565b9150613f74836140c3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613fa957613fa86141ac565b5b828201905092915050565b6000613fbf826140c3565b9150613fca836140c3565b925082613fda57613fd96141db565b5b828204905092915050565b6000613ff0826140c3565b9150613ffb836140c3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614034576140336141ac565b5b828202905092915050565b600061404a826140c3565b9150614055836140c3565b925082821015614068576140676141ac565b5b828203905092915050565b600061407e826140a3565b9050919050565b6000614090826140a3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006140e5826140c3565b9050919050565b60006140f7826140c3565b9050919050565b60005b8381101561411c578082015181840152602081019050614101565b8381111561412b576000848401525b50505050565b6000600282049050600182168061414957607f821691505b6020821081141561415d5761415c61420a565b5b50919050565b600061416e826140c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156141a1576141a06141ac565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b61452081614073565b811461452b57600080fd5b50565b61453781614085565b811461454257600080fd5b50565b61454e81614097565b811461455957600080fd5b50565b614565816140c3565b811461457057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ff7cfffca9a97bb8d93a8d2c8bfc6033ff0533c57e31348e65c315fd0c56f42f64736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101395760003560e01c80638da5cb5b116100ab578063c7ab8d9d1161006f578063c7ab8d9d14610433578063dd62ed3e14610470578063e8078d94146104ad578063f2fde38b146104c4578063f37c4bce146104ed578063f9f92be41461051657610140565b80638da5cb5b1461034e57806395d89b411461037957806398d5a5cb146103a4578063a9059cbb146103cd578063ab9562fe1461040a57610140565b806323b872dd116100fd57806323b872dd14610218578063313ce5671461025557806354486ac3146102805780635c85974f146102ab57806370a08231146102d45780638a13792e1461031157610140565b806301339c211461014557806306fdde031461015c578063095ea7b31461018757806318160ddd146101c45780631c815b49146101ef57610140565b3661014057005b600080fd5b34801561015157600080fd5b5061015a61053f565b005b34801561016857600080fd5b506101716105f1565b60405161017e9190613cf7565b60405180910390f35b34801561019357600080fd5b506101ae60048036038101906101a991906137d7565b610683565b6040516101bb9190613cdc565b60405180910390f35b3480156101d057600080fd5b506101d96106a1565b6040516101e69190613e79565b60405180910390f35b3480156101fb57600080fd5b5061021660048036038101906102119190613710565b6106b3565b005b34801561022457600080fd5b5061023f600480360381019061023a9190613788565b6107b8565b60405161024c9190613cdc565b60405180910390f35b34801561026157600080fd5b5061026a610891565b6040516102779190613eee565b60405180910390f35b34801561028c57600080fd5b506102956108a8565b6040516102a29190613e79565b60405180910390f35b3480156102b757600080fd5b506102d260048036038101906102cd919061383c565b6108ae565b005b3480156102e057600080fd5b506102fb60048036038101906102f69190613695565b61099c565b6040516103089190613e79565b60405180910390f35b34801561031d57600080fd5b50610338600480360381019061033391906136e7565b6109e5565b6040516103459190613e79565b60405180910390f35b34801561035a57600080fd5b50610363610b0e565b6040516103709190613b76565b60405180910390f35b34801561038557600080fd5b5061038e610b37565b60405161039b9190613cf7565b60405180910390f35b3480156103b057600080fd5b506103cb60048036038101906103c69190613695565b610bc9565b005b3480156103d957600080fd5b506103f460048036038101906103ef91906137d7565b610cb9565b6040516104019190613cdc565b60405180910390f35b34801561041657600080fd5b50610431600480360381019061042c9190613710565b610cd7565b005b34801561043f57600080fd5b5061045a60048036038101906104559190613695565b610e13565b6040516104679190613cdc565b60405180910390f35b34801561047c57600080fd5b506104976004803603810190610492919061374c565b610e69565b6040516104a49190613e79565b60405180910390f35b3480156104b957600080fd5b506104c2610ef0565b005b3480156104d057600080fd5b506104eb60048036038101906104e69190613695565b611550565b005b3480156104f957600080fd5b50610514600480360381019061050f9190613695565b6116a2565b005b34801561052257600080fd5b5061053d60048036038101906105389190613695565b61185b565b005b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661057e611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146105d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cb90613dd9565b60405180910390fd5b6001601c60006101000a81548160ff021916908315150217905550565b60606009805461060090614131565b80601f016020809104026020016040519081016040528092919081815260200182805461062c90614131565b80156106795780601f1061064e57610100808354040283529160200191610679565b820191906000526020600020905b81548152906001019060200180831161065c57829003601f168201915b5050505050905090565b6000610697610690611a6e565b8484611a76565b6001905092915050565b600069152d02c7e14af6800000905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106f2611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073f90613dd9565b60405180910390fd5b6107528282611c41565b60008111156107b4576001601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b5050565b60006107c5848484611f42565b610886846107d1611a6e565b6108818560405180606001604052806028815260200161457460289139601a60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610837611a6e565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124e89092919063ffffffff16565b611a76565b600190509392505050565b6000600b60009054906101000a900460ff16905090565b60085481565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108ed611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610943576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161093a90613dd9565b60405180910390fd5b61095a633b9aca008261194b90919063ffffffff16565b600d819055507f0908917ea7a6e134d05135241f8d5a4eaa81dd074e9dd7f36cca8b5ea003bde1600d546040516109919190613e79565b60405180910390a150565b6000601960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610a27611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610a7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7490613dd9565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905060058181548110610afb577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200154915050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600a8054610b4690614131565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7290614131565b8015610bbf5780601f10610b9457610100808354040283529160200191610bbf565b820191906000526020600020905b815481529060010190602001808311610ba257829003601f168201915b5050505050905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c08611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610c5e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5590613dd9565b60405180910390fd5b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000610ccd610cc6611a6e565b8484611f42565b6001905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d16611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610d6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6390613dd9565b60405180910390fd5b610d99600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000611c41565b81600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600481905550610e0f600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600454611c41565b5050565b6000601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000601a60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610f2f611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614610f85576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f7c90613dd9565b60405180910390fd5b600f60009054906101000a900460ff1615610fd5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fcc90613d39565b60405180910390fd5b60004790506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061106b30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1669152d02c7e14af6800000611a76565b8073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156110b157600080fd5b505afa1580156110c5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e991906136be565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561114b57600080fd5b505afa15801561115f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061118391906136be565b6040518363ffffffff1660e01b81526004016111a0929190613b91565b602060405180830381600087803b1580156111ba57600080fd5b505af11580156111ce573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111f291906136be565b600b60016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061127b3061099c565b600080611286610b0e565b426040518863ffffffff1660e01b81526004016112a896959493929190613c7b565b6060604051808303818588803b1580156112c157600080fd5b505af11580156112d5573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906112fa919061388e565b505050600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161139c929190613c52565b602060405180830381600087803b1580156113b657600080fd5b505af11580156113ca573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ee9190613813565b50600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c435846530612710600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561149a57600080fd5b505afa1580156114ae573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d291906136be565b8769152d02c7e14af68000006040518763ffffffff1660e01b81526004016114ff96959493929190613bf1565b600060405180830381600087803b15801561151957600080fd5b505af115801561152d573d6000803e3d6000fd5b505050506001600f60006101000a81548160ff0219169083151502179055505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661158f611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146115e5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115dc90613dd9565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16638da5cb5b6040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561170c57600080fd5b505af1158015611720573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061174491906136be565b73ffffffffffffffffffffffffffffffffffffffff16611762611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614806117d85750601660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166117c0611a6e565b73ffffffffffffffffffffffffffffffffffffffff16145b611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90613d59565b60405180910390fd5b80601660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661189a611a6e565b73ffffffffffffffffffffffffffffffffffffffff16146118f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e790613dd9565b60405180910390fd5b6001601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b60008083141561195e57600090506119c0565b6000828461196c9190613fe5565b905082848261197b9190613fb4565b146119bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119b290613db9565b60405180910390fd5b809150505b92915050565b60008082846119d59190613f5e565b905083811015611a1a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a1190613d99565b60405180910390fd5b8091505092915050565b6000611a6683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506124e8565b905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611ae6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611add90613e39565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611b56576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4d90613d79565b60405180910390fd5b80601a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051611c349190613e79565b60405180910390a3505050565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16611c80611a6e565b73ffffffffffffffffffffffffffffffffffffffff1614611cd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ccd90613dd9565b60405180910390fd5b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000811415611e4757612904611d3b836008546119c690919063ffffffff16565b1115611d4657600080fd5b60058290806001815401808255809150506001900390600052602060002001600090919091909150556006839080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600580549050611de4919061403f565b600760008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611e3c826008546119c690919063ffffffff16565b600881905550611f3d565b600060058281548110611e83577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050612904611eba82611eac866008546119c690919063ffffffff16565b611a2490919063ffffffff16565b1115611ec557600080fd5b8260058381548110611f00577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200181905550611f3581611f27856008546119c690919063ffffffff16565b611a2490919063ffffffff16565b600881905550505b505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415611fb2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fa990613e19565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612022576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201990613d19565b60405180910390fd5b60008111612065576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205c90613df9565b60405180910390fd5b601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156121095750601760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b801561215f5750601760003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b61216857600080fd5b612172838361254c565b801561218a5750601c60009054906101000a900460ff165b1561244757601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42383600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161221093929190613bba565b602060405180830381600087803b15801561222a57600080fd5b505af115801561223e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906122629190613813565b156122a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161229990613e59565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166312bdf42384600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16326040518463ffffffff1660e01b815260040161232393929190613bba565b602060405180830381600087803b15801561233d57600080fd5b505af1158015612351573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123759190613813565b156123b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123ac90613e59565b60405180910390fd5b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663155d0ed98484326040518463ffffffff1660e01b815260040161241493929190613bba565b600060405180830381600087803b15801561242e57600080fd5b505af1158015612442573d6000803e3d6000fd5b505050505b612450826125ff565b1561246c57600e546124618361099c565b1061246b57600080fd5b5b600061247884846126b4565b156124cc57601c60009054906101000a900460ff1661249657600080fd5b6124a08484612760565b156124b557600d548211156124b457600080fd5b5b6124c084848461286b565b90506124cb84612a52565b5b6124d884848484612a83565b6124e28484612cc5565b50505050565b6000838311158290612530576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125279190613cf7565b60405180910390fd5b506000838561253f919061403f565b9050809150509392505050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806125f75750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141580156126ad5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6000601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806127575750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15905092915050565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614801561280d5750600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b80156128635750601860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b905092915050565b60008060009050601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806129135750601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156129215780915050612a4b565b61296161295261292f612e1f565b612944601d5487612e2990919063ffffffff16565b61194b90919063ffffffff16565b826119c690919063ffffffff16565b9050600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16632c2bab2f6040518163ffffffff1660e01b815260040160206040518083038186803b1580156129cb57600080fd5b505afa1580156129df573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a039190613865565b601181905550612a44612a35601d54612a276011548761194b90919063ffffffff16565b612e2990919063ffffffff16565b826119c690919063ffffffff16565b9050809150505b9392505050565b612a5b81612e73565b15612a80576000612a6b3061099c565b9050612a7681612ee7565b612a7e6131e1565b505b50565b6000612a988284611a2490919063ffffffff16565b9050612aec83601960008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611a2490919063ffffffff16565b601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612b8181601960008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c690919063ffffffff16565b601960008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550612c1682601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546119c690919063ffffffff16565b601960003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051612cb69190613e79565b60405180910390a35050505050565b612ccf82826126b4565b15612e1b57612cdd826132da565b15612d7457600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16633627301e826040518263ffffffff1660e01b8152600401612d3d9190613b76565b600060405180830381600087803b158015612d5757600080fd5b505af1158015612d6b573d6000803e3d6000fd5b50505050612e1a565b60006012541115612e1957600f60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c4a5f67f836012546040518363ffffffff1660e01b8152600401612dde929190613c52565b600060405180830381600087803b158015612df857600080fd5b505af1158015612e0c573d6000803e3d6000fd5b5050505060006012819055505b5b5b5050565b6000600854905090565b6000612e6b83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250613334565b905092915050565b6000601c60019054906101000a900460ff16158015612ee05750600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b9050919050565b6001601c60016101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612f45577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b604051908082528060200260200182016040528015612f735781602001602082028036833780820191505090505b5090503081600081518110612fb1577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561305357600080fd5b505afa158015613067573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061308b91906136be565b816001815181106130c5577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061312c30600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611a76565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401613190959493929190613e94565b600060405180830381600087803b1580156131aa57600080fd5b505af11580156131be573d6000803e3d6000fd5b50505050506000601c60016101000a81548160ff02191690831515021790555050565b6000479050601b5481116131f557506132d8565b600061320c601b5483611a2490919063ffffffff16565b90506000613218613397565b9050600181101561322b575050506132d8565b61323582826133d8565b61325c8161324e6011548561194b90919063ffffffff16565b612e2990919063ffffffff16565b601281905550601060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6012549081150290604051600060405180830381858888f193505050501580156132cc573d6000803e3d6000fd5b5047601b819055505050505b565b6000600b60019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b6000808311829061337b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016133729190613cf7565b60405180910390fd5b506000838561338a9190613fb4565b9050809150509392505050565b600080600090506133b86133a9612e1f565b826119c690919063ffffffff16565b90506133cf601154826119c690919063ffffffff16565b90508091505090565b6000600190505b60058054905081101561361257600060058281548110613428577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b90600052602060002001549050600060068381548110613471577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060006134c5856134b7858961194b90919063ffffffff16565b612e2990919063ffffffff16565b905060018111156135fc578173ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015613516573d6000803e3d6000fd5b50600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156135fb57600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6b55f25826040518263ffffffff1660e01b81526004016135c89190613e79565b600060405180830381600087803b1580156135e257600080fd5b505af11580156135f6573d6000803e3d6000fd5b505050505b5b505050808061360a90614163565b9150506133df565b505050565b60008135905061362681614517565b92915050565b60008151905061363b81614517565b92915050565b6000813590506136508161452e565b92915050565b60008151905061366581614545565b92915050565b60008135905061367a8161455c565b92915050565b60008151905061368f8161455c565b92915050565b6000602082840312156136a757600080fd5b60006136b584828501613617565b91505092915050565b6000602082840312156136d057600080fd5b60006136de8482850161362c565b91505092915050565b6000602082840312156136f957600080fd5b600061370784828501613641565b91505092915050565b6000806040838503121561372357600080fd5b600061373185828601613641565b92505060206137428582860161366b565b9150509250929050565b6000806040838503121561375f57600080fd5b600061376d85828601613617565b925050602061377e85828601613617565b9150509250929050565b60008060006060848603121561379d57600080fd5b60006137ab86828701613617565b93505060206137bc86828701613617565b92505060406137cd8682870161366b565b9150509250925092565b600080604083850312156137ea57600080fd5b60006137f885828601613617565b92505060206138098582860161366b565b9150509250929050565b60006020828403121561382557600080fd5b600061383384828501613656565b91505092915050565b60006020828403121561384e57600080fd5b600061385c8482850161366b565b91505092915050565b60006020828403121561387757600080fd5b600061388584828501613680565b91505092915050565b6000806000606084860312156138a357600080fd5b60006138b186828701613680565b93505060206138c286828701613680565b92505060406138d386828701613680565b9150509250925092565b60006138e983836138f5565b60208301905092915050565b6138fe81614073565b82525050565b61390d81614073565b82525050565b600061391e82613f19565b6139288185613f3c565b935061393383613f09565b8060005b8381101561396457815161394b88826138dd565b975061395683613f2f565b925050600181019050613937565b5085935050505092915050565b61397a81614097565b82525050565b613989816140da565b82525050565b613998816140ec565b82525050565b60006139a982613f24565b6139b38185613f4d565b93506139c38185602086016140fe565b6139cc81614239565b840191505092915050565b60006139e4602383613f4d565b91506139ef8261424a565b604082019050919050565b6000613a07601883613f4d565b9150613a1282614299565b602082019050919050565b6000613a2a600c83613f4d565b9150613a35826142c2565b602082019050919050565b6000613a4d602283613f4d565b9150613a58826142eb565b604082019050919050565b6000613a70601b83613f4d565b9150613a7b8261433a565b602082019050919050565b6000613a93602183613f4d565b9150613a9e82614363565b604082019050919050565b6000613ab6602083613f4d565b9150613ac1826143b2565b602082019050919050565b6000613ad9602983613f4d565b9150613ae4826143db565b604082019050919050565b6000613afc602583613f4d565b9150613b078261442a565b604082019050919050565b6000613b1f602483613f4d565b9150613b2a82614479565b604082019050919050565b6000613b42602683613f4d565b9150613b4d826144c8565b604082019050919050565b613b61816140c3565b82525050565b613b70816140cd565b82525050565b6000602082019050613b8b6000830184613904565b92915050565b6000604082019050613ba66000830185613904565b613bb36020830184613904565b9392505050565b6000606082019050613bcf6000830186613904565b613bdc6020830185613904565b613be96040830184613904565b949350505050565b600060c082019050613c066000830189613904565b613c13602083018861398f565b613c206040830187613904565b613c2d6060830186613904565b613c3a6080830185613b58565b613c4760a0830184613b58565b979650505050505050565b6000604082019050613c676000830185613904565b613c746020830184613b58565b9392505050565b600060c082019050613c906000830189613904565b613c9d6020830188613b58565b613caa6040830187613980565b613cb76060830186613980565b613cc46080830185613904565b613cd160a0830184613b58565b979650505050505050565b6000602082019050613cf16000830184613971565b92915050565b60006020820190508181036000830152613d11818461399e565b905092915050565b60006020820190508181036000830152613d32816139d7565b9050919050565b60006020820190508181036000830152613d52816139fa565b9050919050565b60006020820190508181036000830152613d7281613a1d565b9050919050565b60006020820190508181036000830152613d9281613a40565b9050919050565b60006020820190508181036000830152613db281613a63565b9050919050565b60006020820190508181036000830152613dd281613a86565b9050919050565b60006020820190508181036000830152613df281613aa9565b9050919050565b60006020820190508181036000830152613e1281613acc565b9050919050565b60006020820190508181036000830152613e3281613aef565b9050919050565b60006020820190508181036000830152613e5281613b12565b9050919050565b60006020820190508181036000830152613e7281613b35565b9050919050565b6000602082019050613e8e6000830184613b58565b92915050565b600060a082019050613ea96000830188613b58565b613eb66020830187613980565b8181036040830152613ec88186613913565b9050613ed76060830185613904565b613ee46080830184613b58565b9695505050505050565b6000602082019050613f036000830184613b67565b92915050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613f69826140c3565b9150613f74836140c3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03821115613fa957613fa86141ac565b5b828201905092915050565b6000613fbf826140c3565b9150613fca836140c3565b925082613fda57613fd96141db565b5b828204905092915050565b6000613ff0826140c3565b9150613ffb836140c3565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614034576140336141ac565b5b828202905092915050565b600061404a826140c3565b9150614055836140c3565b925082821015614068576140676141ac565b5b828203905092915050565b600061407e826140a3565b9050919050565b6000614090826140a3565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006140e5826140c3565b9050919050565b60006140f7826140c3565b9050919050565b60005b8381101561411c578082015181840152602081019050614101565b8381111561412b576000848401525b50505050565b6000600282049050600182168061414957607f821691505b6020821081141561415d5761415c61420a565b5b50919050565b600061416e826140c3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156141a1576141a06141ac565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f4c697175696469747920616c72656164792061646465642e0000000000000000600082015250565b7f556e617574686f72697a65640000000000000000000000000000000000000000600082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b7f42656570204265657020426f6f702c20596f752772652061207069656365206f60008201527f6620706f6f700000000000000000000000000000000000000000000000000000602082015250565b61452081614073565b811461452b57600080fd5b50565b61453781614085565b811461454257600080fd5b50565b61454e81614097565b811461455957600080fd5b50565b614565816140c3565b811461457057600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220ff7cfffca9a97bb8d93a8d2c8bfc6033ff0533c57e31348e65c315fd0c56f42f64736f6c63430008040033

Deployed Bytecode Sourcemap

7903:10932:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17905:75;;;;;;;;;;;;;:::i;:::-;;10074:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10913:165;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10348:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18507:221;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11084:323;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10258:84;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4118:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17986:188;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10454:122;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5857:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3242:80;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10164:88;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18405:96;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10582:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6043:253;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18180:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10759:148;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17000:899;;;;;;;;;;;;;:::i;:::-;;3328:162;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18734:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;18306:93;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17905:75;3552:7;;;;;;;;;;3536:23;;:12;:10;:12::i;:::-;:23;;;3528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17968:4:::1;17955:10;;:17;;;;;;;;;;;;;;;;;;17905:75::o:0;10074:84::-;10111:13;10144:6;10137:13;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10074:84;:::o;10913:165::-;10990:4;11007:41;11016:12;:10;:12::i;:::-;11030:8;11040:7;11007:8;:41::i;:::-;11066:4;11059:11;;10913:165;;;;:::o;10348:100::-;10401:7;8040:23;10421:19;;10348:100;:::o;18507:221::-;3552:7;;;;;;;;;;3536:23;;:12;:10;:12::i;:::-;:23;;;3528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18602:29:::1;18614:8;18624:6;18602:11;:29::i;:::-;18655:1;18646:6;:10;18642:79;;;18705:4;18673:19;:29;18693:8;18673:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;18642:79;18507:221:::0;;:::o;11084:323::-;11185:4;11202:39;11212:7;11221:10;11233:7;11202:9;:39::i;:::-;11252:125;11261:7;11270:12;:10;:12::i;:::-;11284:92;11324:7;11284:92;;;;;;;;;;;;;;;;;:12;:21;11297:7;11284:21;;;;;;;;;;;;;;;:35;11306:12;:10;:12::i;:::-;11284:35;;;;;;;;;;;;;;;;:39;;:92;;;;;:::i;:::-;11252:8;:125::i;:::-;11395:4;11388:11;;11084:323;;;;;:::o;10258:84::-;10299:5;10324:10;;;;;;;;;;;10317:17;;10258:84;:::o;4118:27::-;;;;:::o;17986:188::-;3552:7;;;;;;;;;;3536:23;;:12;:10;:12::i;:::-;:23;;;3528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18111:18:::1;18123:5;18111:7;:11;;:18;;;;:::i;:::-;18099:9;:30;;;;18145:21;18156:9;;18145:21;;;;;;:::i;:::-;;;;;;;;17986:188:::0;:::o;10454:122::-;10521:7;10548:10;:20;10559:8;10548:20;;;;;;;;;;;;;;;;10541:27;;10454:122;;;:::o;5857:180::-;5945:7;3552;;;;;;;;;;;3536:23;;:12;:10;:12::i;:::-;:23;;;3528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5965:9:::1;5977:8;:18;5986:8;5977:18;;;;;;;;;;;;;;;;5965:30;;6013:10;6024:4;6013:16;;;;;;;;;;;;;;;;;;;;;;;;6006:23;;;5857:180:::0;;;:::o;3242:80::-;3280:7;3307;;;;;;;;;;;3300:14;;3242:80;:::o;10164:88::-;10203:13;10236:8;10229:15;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10164:88;:::o;18405:96::-;3552:7;;;;;;;;;;3536:23;;:12;:10;:12::i;:::-;:23;;;3528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18488:5:::1;18470:11;:15;18482:2;18470:15;;;;;;;;;;;;;;;;:23;;;;;;;;;;;;;;;;;;18405:96:::0;:::o;10582:171::-;10662:4;10679:44;10689:12;:10;:12::i;:::-;10703:10;10715:7;10679:9;:44::i;:::-;10741:4;10734:11;;10582:171;;;;:::o;6043:253::-;3552:7;;;;;;;;;;3536:23;;:12;:10;:12::i;:::-;:23;;;3528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;6148:28:::1;6160:12;;;;;;;;;;;6174:1;6148:11;:28::i;:::-;6202:8;6187:12;;:23;;;;;;;;;;;;;;;;;;6234:6;6221:10;:19;;;;6251:37;6263:12;;;;;;;;;;;6277:10;;6251:11;:37::i;:::-;6043:253:::0;;:::o;18180:120::-;18247:4;18271:11;:21;18283:8;18271:21;;;;;;;;;;;;;;;;;;;;;;;;;18264:28;;18180:120;;;:::o;10759:148::-;10842:7;10869:12;:20;10882:6;10869:20;;;;;;;;;;;;;;;:30;10890:8;10869:30;;;;;;;;;;;;;;;;10862:37;;10759:148;;;;:::o;17000:899::-;3552:7;;;;;;;;;;3536:23;;:12;:10;:12::i;:::-;:23;;;3528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;17065:11:::1;;;;;;;;;;;17064:12;17056:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;17115:19;17137:21;17115:43;;17169:35;17226:42;17169:100;;17300:16;17280:17;;:36;;;;;;;;;;;;;;;;;;17327:65;17344:4;17359:17;;;;;;;;;;;8040:23;17327:8;:65::i;:::-;17439:16;:24;;;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17421:56;;;17486:4;17493:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17421:96;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17403:15;;:114;;;;;;;;;;;;;;;;;;17528:17;;;;;;;;;;;:33;;;17569:21;17600:4;17606:24;17624:4;17606:9;:24::i;:::-;17631:1;17633::::0;17635:7:::1;:5;:7::i;:::-;17643:15;17528:131;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;17677:15;;;;;;;;;;;17670:31;;;17710:17;;;;;;;;;;;17730:14;17670:75;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;17756:10;;;;;;;;;;;:15;;;17780:4;17787:5;17794:15;;;;;;;;;;;17811:16;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;17836:11;8040:23;17756:106;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;17887:4;17873:11;;:18;;;;;;;;;;;;;;;;;;3607:1;;17000:899::o:0;3328:162::-;3552:7;;;;;;;;;;3536:23;;:12;:10;:12::i;:::-;:23;;;3528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;3444:8:::1;3414:39;;3435:7;::::0;::::1;;;;;;;;3414:39;;;;;;;;;;;;3474:8;3464:7;::::0;:18:::1;;;;;;;;;;;;;;;;;;3328:162:::0;:::o;18734:98::-;9564:8;;;;;;;;;;;:14;;;:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9548:32;;:12;:10;:12::i;:::-;:32;;;:62;;;;9600:10;;;;;;;;;;;9584:26;;:12;:10;:12::i;:::-;:26;;;9548:62;9539:88;;;;;;;;;;;;:::i;:::-;;;;;;;;;18816:8:::1;18803:10;;:21;;;;;;;;;;;;;;;;;;18734:98:::0;:::o;18306:93::-;3552:7;;;;;;;;;;3536:23;;:12;:10;:12::i;:::-;:23;;;3528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18387:4:::1;18369:11;:15;18381:2;18369:15;;;;;;;;;;;;;;;;:22;;;;;;;;;;;;;;;;;;18306:93:::0;:::o;2342:246::-;2400:7;2429:1;2424;:6;2420:47;;;2454:1;2447:8;;;;2420:47;2477:9;2493:1;2489;:5;;;;:::i;:::-;2477:17;;2522:1;2517;2513;:5;;;;:::i;:::-;:10;2505:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2579:1;2572:8;;;2342:246;;;;;:::o;1819:179::-;1877:7;1897:9;1913:1;1909;:5;;;;:::i;:::-;1897:17;;1938:1;1933;:6;;1925:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1989:1;1982:8;;;1819:179;;;;:::o;2004:136::-;2062:7;2089:43;2093:1;2096;2089:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2082:50;;2004:136;;;;:::o;1017:98::-;1070:7;1097:10;1090:17;;1017:98;:::o;12436:347::-;12550:1;12532:20;;:6;:20;;;;12524:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12632:1;12612:22;;:8;:22;;;;12604:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;12717:7;12684:12;:20;12697:6;12684:20;;;;;;;;;;;;;;;:30;12705:8;12684:30;;;;;;;;;;;;;;;:40;;;;12757:8;12740:35;;12749:6;12740:35;;;12767:7;12740:35;;;;;;:::i;:::-;;;;;;;;12436:347;;;:::o;5022:720::-;3552:7;;;;;;;;;;3536:23;;:12;:10;:12::i;:::-;:23;;;3528:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;5125:9:::1;5137:8;:18;5146:8;5137:18;;;;;;;;;;;;;;;;5125:30;;5178:1;5170:4;:9;5166:569;;;5232:5;5204:24;5221:6;5204:12;;:16;;:24;;;;:::i;:::-;:33;;5196:42;;;::::0;::::1;;5253:10;5269:6;5253:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5291:14;5311:8;5291:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5376:1;5356:10;:17;;;;:21;;;;:::i;:::-;5335:8;:18;5344:8;5335:18;;;;;;;;;;;;;;;:42;;;;5407:24;5424:6;5407:12;;:16;;:24;;;;:::i;:::-;5392:12;:39;;;;5166:569;;;5497:19;5520:10;5531:4;5520:16;;;;;;;;;;;;;;;;;;;;;;;;5497:39;;5604:5;5559:41;5588:11;5559:24;5576:6;5559:12;;:16;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;:50;;5551:59;;;::::0;::::1;;5646:6;5627:10;5638:4;5627:16;;;;;;;;;;;;;;;;;;;;;;;:25;;;;5682:41;5711:11;5682:24;5699:6;5682:12;;:16;;:24;;;;:::i;:::-;:28;;:41;;;;:::i;:::-;5667:12;:56;;;;5166:569;;3607:1;5022:720:::0;;:::o;12789:1450::-;12908:1;12889:21;;:7;:21;;;;12881:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;12993:1;12971:24;;:10;:24;;;;12963:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;13064:1;13054:7;:11;13046:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;13131:11;:20;13143:7;13131:20;;;;;;;;;;;;;;;;;;;;;;;;;13130:21;:49;;;;;13156:11;:23;13168:10;13156:23;;;;;;;;;;;;;;;;;;;;;;;;;13155:24;13130:49;:76;;;;;13184:11;:22;13196:9;13184:22;;;;;;;;;;;;;;;;;;;;;;;;;13183:23;13130:76;13122:85;;;;;;13231:40;13251:7;13260:10;13231:19;:40::i;:::-;:54;;;;;13275:10;;;;;;;;;;;13231:54;13228:431;;;13311:7;;;;;;;;;;;:19;;;13331:10;13343:15;;;;;;;;;;;13360:9;13311:59;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13310:60;13302:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;13479:7;;;;;;;;;;;:19;;;13499:7;13508:15;;;;;;;;;;;13525:9;13479:56;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;13478:57;13470:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;13594:7;;;;;;;;;;;:21;;;13616:7;13625:10;13637:9;13594:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13228:431;13683:25;13697:10;13683:13;:25::i;:::-;13680:89;;;13755:13;;13731:21;13741:10;13731:9;:21::i;:::-;:37;13723:46;;;;;;13680:89;13794:14;13827:28;13835:7;13844:10;13827:7;:28::i;:::-;13823:287;;;13880:10;;;;;;;;;;;13872:19;;;;;;13910:34;13924:7;13933:10;13910:13;:34::i;:::-;13906:87;;;13983:9;;13972:7;:20;;13964:29;;;;;;13906:87;14031:39;14041:7;14050:10;14062:7;14031:9;:39::i;:::-;14022:48;;14085:13;14090:7;14085:4;:13::i;:::-;13823:287;14130:53;14146:7;14155:10;14167:7;14176:6;14130:15;:53::i;:::-;14194:40;14214:7;14223:10;14194:19;:40::i;:::-;12789:1450;;;;:::o;2146:190::-;2232:7;2265:1;2260;:6;;2268:12;2252:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2292:9;2308:1;2304;:5;;;;:::i;:::-;2292:17;;2327:1;2320:8;;;2146:190;;;;;:::o;11849:179::-;11937:4;11972:15;;;;;;;;;;;11961:26;;:7;:26;;;:59;;;;12005:15;;;;;;;;;;;11991:29;;:10;:29;;;11961:59;11954:66;;11849:179;;;;:::o;12260:170::-;12325:4;12363:15;;;;;;;;;;;12349:29;;:10;:29;;;;:73;;;;;12404:17;;;;;;;;;;;12382:40;;:10;:40;;;;12349:73;12342:80;;12260:170;;;:::o;11669:174::-;11745:4;11771:19;:28;11791:7;11771:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;11803:19;:31;11823:10;11803:31;;;;;;;;;;;;;;;;;;;;;;;;;11771:63;11769:66;11762:73;;11669:174;;;;:::o;12034:220::-;12116:4;12151:15;;;;;;;;;;;12140:26;;:7;:26;;;:70;;;;;12192:17;;;;;;;;;;;12170:40;;:10;:40;;;;12140:70;:106;;;;;12215:19;:31;12235:10;12215:31;;;;;;;;;;;;;;;;;;;;;;;;;12214:32;12140:106;12133:113;;12034:220;;;;:::o;15087:459::-;15177:7;15197:12;15212:1;15197:16;;15228:19;:28;15248:7;15228:28;;;;;;;;;;;;;;;;;;;;;;;;;:63;;;;15260:19;:31;15280:10;15260:31;;;;;;;;;;;;;;;;;;;;;;;;;15228:63;15224:107;;;15315:4;15308:11;;;;;15224:107;15348:48;15357:38;15379:15;:13;:15::i;:::-;15357:17;15369:4;;15357:7;:11;;:17;;;;:::i;:::-;:21;;:38;;;;:::i;:::-;15348:4;:8;;:48;;;;:::i;:::-;15341:55;;15427:10;;;;;;;;;;;:19;;;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15407:17;:41;;;;15466:50;15475:40;15510:4;;15475:30;15487:17;;15475:7;:11;;:30;;;;:::i;:::-;:34;;:40;;;;:::i;:::-;15466:4;:8;;:50;;;;:::i;:::-;15459:57;;15534:4;15527:11;;;15087:459;;;;;;:::o;15552:234::-;15606:20;15618:7;15606:11;:20::i;:::-;15602:177;;;15643:21;15667:24;15685:4;15667:9;:24::i;:::-;15643:48;;15706:32;15724:13;15706:17;:32::i;:::-;15753:14;:12;:14::i;:::-;15602:177;;15552:234;:::o;14245:434::-;14359:18;14380:19;14392:6;14380:7;:11;;:19;;;;:::i;:::-;14359:40;;14432:32;14456:7;14432:10;:19;14443:7;14432:19;;;;;;;;;;;;;;;;:23;;:32;;;;:::i;:::-;14410:10;:19;14421:7;14410:19;;;;;;;;;;;;;;;:54;;;;14500:38;14527:10;14500;:22;14511:10;14500:22;;;;;;;;;;;;;;;;:26;;:38;;;;:::i;:::-;14475:10;:22;14486:10;14475:22;;;;;;;;;;;;;;;:63;;;;14577:37;14607:6;14577:10;:25;14596:4;14577:25;;;;;;;;;;;;;;;;:29;;:37;;;;:::i;:::-;14549:10;:25;14568:4;14549:25;;;;;;;;;;;;;;;:65;;;;14648:10;14630:41;;14639:7;14630:41;;;14660:10;14630:41;;;;;;:::i;:::-;;;;;;;;14245:434;;;;;:::o;14685:399::-;14774:28;14782:7;14791:10;14774:7;:28::i;:::-;14770:307;;;14823:15;14830:7;14823:6;:15::i;:::-;14819:247;;;14857:10;;;;;;;;;;;:24;;;14882:10;14857:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14819:247;;;14938:1;14917:18;;:22;14913:153;;;14960:10;;;;;;;;;;;:20;;;14981:7;14990:18;;14960:49;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15049:1;15028:18;:22;;;;14913:153;14819:247;14770:307;14685:399;;:::o;5748:103::-;5804:7;5831:12;;5824:19;;5748:103;:::o;2594:132::-;2652:7;2679:39;2683:1;2686;2679:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2672:46;;2594:132;;;;:::o;11413:131::-;11473:4;11498:8;;;;;;;;;;;11497:9;:39;;;;;11521:15;;;;;;;;;;;11510:26;;:7;:26;;;;11497:39;11490:46;;11413:131;;;:::o;15792:482::-;9450:4;9439:8;;:15;;;;;;;;;;;;;;;;;;15867:22:::1;15906:1;15892:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15867:41;;15938:4;15919:5;15925:1;15919:8;;;;;;;;;;;;;;;;;;;;;:24;;;;;;;;;::::0;::::1;15965:17;;;;;;;;;;;:22;;;:24;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;15954:5;15960:1;15954:8;;;;;;;;;;;;;;;;;;;;;:35;;;;;;;;;::::0;::::1;16000:60;16017:4;16032:17;;;;;;;;;;;16052:7;16000:8;:60::i;:::-;16071:17;;;;;;;;;;;:68;;;16154:7;16176:1;16192:5;16220:4;16240:15;16071:195;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9465:1;9488:5:::0;9477:8;;:16;;;;;;;;;;;;;;;;;;15792:482;:::o;16486:508::-;16529:12;16544:21;16529:36;;16588:12;;16580:4;:20;16576:46;;16615:7;;;16576:46;16646:15;16664:22;16673:12;;16664:4;:8;;:22;;;;:::i;:::-;16646:40;;16697:7;16707:20;:18;:20::i;:::-;16697:30;;16747:1;16742:2;:6;16738:32;;;16763:7;;;;;16738:32;16782:21;16791:7;16800:2;16782:8;:21::i;:::-;16837:38;16872:2;16837:30;16849:17;;16837:7;:11;;:30;;;;:::i;:::-;:34;;:38;;;;:::i;:::-;16816:18;:59;;;;16886:22;;;;;;;;;;;:31;;:51;16918:18;;16886:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16965:21;16950:12;:36;;;;16486:508;;;;:::o;11550:113::-;11605:4;11640:15;;;;;;;;;;;11629:26;;:7;:26;;;11622:33;;11550:113;;;:::o;2732:189::-;2818:7;2850:1;2846;:5;2853:12;2838:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2877:9;2893:1;2889;:5;;;;:::i;:::-;2877:17;;2912:1;2905:8;;;2732:189;;;;;:::o;16280:200::-;16332:4;16349:9;16361:1;16349:13;;16380:25;16389:15;:13;:15::i;:::-;16380:4;:8;;:25;;;;:::i;:::-;16373:32;;16423:27;16432:17;;16423:4;:8;;:27;;;;:::i;:::-;16416:34;;16468:4;16461:11;;;16280:200;:::o;4534:482::-;4611:6;4620:1;4611:10;;4606:403;4627:10;:17;;;;4623:1;:21;4606:403;;;4666:14;4683:10;4694:1;4683:13;;;;;;;;;;;;;;;;;;;;;;;;4666:30;;4711:24;4738:14;4753:1;4738:17;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4711:44;;4770:15;4788:24;4809:2;4788:16;4797:6;4788:4;:8;;:16;;;;:::i;:::-;:20;;:24;;;;:::i;:::-;4770:42;;4841:1;4831:7;:11;4827:171;;;4862:8;:17;;:26;4880:7;4862:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4922:12;;;;;;;;;;;4910:24;;:8;:24;;;4907:75;;;4957:8;;;;;;;;;;;:16;;;4974:7;4957:25;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4907:75;4827:171;4606:403;;;4646:3;;;;;:::i;:::-;;;;4606:403;;;;4534:482;;:::o;7:139:1:-;53:5;91:6;78:20;69:29;;107:33;134:5;107:33;:::i;:::-;59:87;;;;:::o;152:143::-;209:5;240:6;234:13;225:22;;256:33;283:5;256:33;:::i;:::-;215:80;;;;:::o;301:155::-;355:5;393:6;380:20;371:29;;409:41;444:5;409:41;:::i;:::-;361:95;;;;:::o;462:137::-;516:5;547:6;541:13;532:22;;563:30;587:5;563:30;:::i;:::-;522:77;;;;:::o;605:139::-;651:5;689:6;676:20;667:29;;705:33;732:5;705:33;:::i;:::-;657:87;;;;:::o;750:143::-;807:5;838:6;832:13;823:22;;854:33;881:5;854:33;:::i;:::-;813:80;;;;:::o;899:262::-;958:6;1007:2;995:9;986:7;982:23;978:32;975:2;;;1023:1;1020;1013:12;975:2;1066:1;1091:53;1136:7;1127:6;1116:9;1112:22;1091:53;:::i;:::-;1081:63;;1037:117;965:196;;;;:::o;1167:284::-;1237:6;1286:2;1274:9;1265:7;1261:23;1257:32;1254:2;;;1302:1;1299;1292:12;1254:2;1345:1;1370:64;1426:7;1417:6;1406:9;1402:22;1370:64;:::i;:::-;1360:74;;1316:128;1244:207;;;;:::o;1457:278::-;1524:6;1573:2;1561:9;1552:7;1548:23;1544:32;1541:2;;;1589:1;1586;1579:12;1541:2;1632:1;1657:61;1710:7;1701:6;1690:9;1686:22;1657:61;:::i;:::-;1647:71;;1603:125;1531:204;;;;:::o;1741:423::-;1817:6;1825;1874:2;1862:9;1853:7;1849:23;1845:32;1842:2;;;1890:1;1887;1880:12;1842:2;1933:1;1958:61;2011:7;2002:6;1991:9;1987:22;1958:61;:::i;:::-;1948:71;;1904:125;2068:2;2094:53;2139:7;2130:6;2119:9;2115:22;2094:53;:::i;:::-;2084:63;;2039:118;1832:332;;;;;:::o;2170:407::-;2238:6;2246;2295:2;2283:9;2274:7;2270:23;2266:32;2263:2;;;2311:1;2308;2301:12;2263:2;2354:1;2379:53;2424:7;2415:6;2404:9;2400:22;2379:53;:::i;:::-;2369:63;;2325:117;2481:2;2507:53;2552:7;2543:6;2532:9;2528:22;2507:53;:::i;:::-;2497:63;;2452:118;2253:324;;;;;:::o;2583:552::-;2660:6;2668;2676;2725:2;2713:9;2704:7;2700:23;2696:32;2693:2;;;2741:1;2738;2731:12;2693:2;2784:1;2809:53;2854:7;2845:6;2834:9;2830:22;2809:53;:::i;:::-;2799:63;;2755:117;2911:2;2937:53;2982:7;2973:6;2962:9;2958:22;2937:53;:::i;:::-;2927:63;;2882:118;3039:2;3065:53;3110:7;3101:6;3090:9;3086:22;3065:53;:::i;:::-;3055:63;;3010:118;2683:452;;;;;:::o;3141:407::-;3209:6;3217;3266:2;3254:9;3245:7;3241:23;3237:32;3234:2;;;3282:1;3279;3272:12;3234:2;3325:1;3350:53;3395:7;3386:6;3375:9;3371:22;3350:53;:::i;:::-;3340:63;;3296:117;3452:2;3478:53;3523:7;3514:6;3503:9;3499:22;3478:53;:::i;:::-;3468:63;;3423:118;3224:324;;;;;:::o;3554:278::-;3621:6;3670:2;3658:9;3649:7;3645:23;3641:32;3638:2;;;3686:1;3683;3676:12;3638:2;3729:1;3754:61;3807:7;3798:6;3787:9;3783:22;3754:61;:::i;:::-;3744:71;;3700:125;3628:204;;;;:::o;3838:262::-;3897:6;3946:2;3934:9;3925:7;3921:23;3917:32;3914:2;;;3962:1;3959;3952:12;3914:2;4005:1;4030:53;4075:7;4066:6;4055:9;4051:22;4030:53;:::i;:::-;4020:63;;3976:117;3904:196;;;;:::o;4106:284::-;4176:6;4225:2;4213:9;4204:7;4200:23;4196:32;4193:2;;;4241:1;4238;4231:12;4193:2;4284:1;4309:64;4365:7;4356:6;4345:9;4341:22;4309:64;:::i;:::-;4299:74;;4255:128;4183:207;;;;:::o;4396:596::-;4484:6;4492;4500;4549:2;4537:9;4528:7;4524:23;4520:32;4517:2;;;4565:1;4562;4555:12;4517:2;4608:1;4633:64;4689:7;4680:6;4669:9;4665:22;4633:64;:::i;:::-;4623:74;;4579:128;4746:2;4772:64;4828:7;4819:6;4808:9;4804:22;4772:64;:::i;:::-;4762:74;;4717:129;4885:2;4911:64;4967:7;4958:6;4947:9;4943:22;4911:64;:::i;:::-;4901:74;;4856:129;4507:485;;;;;:::o;4998:179::-;5067:10;5088:46;5130:3;5122:6;5088:46;:::i;:::-;5166:4;5161:3;5157:14;5143:28;;5078:99;;;;:::o;5183:108::-;5260:24;5278:5;5260:24;:::i;:::-;5255:3;5248:37;5238:53;;:::o;5297:118::-;5384:24;5402:5;5384:24;:::i;:::-;5379:3;5372:37;5362:53;;:::o;5451:732::-;5570:3;5599:54;5647:5;5599:54;:::i;:::-;5669:86;5748:6;5743:3;5669:86;:::i;:::-;5662:93;;5779:56;5829:5;5779:56;:::i;:::-;5858:7;5889:1;5874:284;5899:6;5896:1;5893:13;5874:284;;;5975:6;5969:13;6002:63;6061:3;6046:13;6002:63;:::i;:::-;5995:70;;6088:60;6141:6;6088:60;:::i;:::-;6078:70;;5934:224;5921:1;5918;5914:9;5909:14;;5874:284;;;5878:14;6174:3;6167:10;;5575:608;;;;;;;:::o;6189:109::-;6270:21;6285:5;6270:21;:::i;:::-;6265:3;6258:34;6248:50;;:::o;6304:147::-;6399:45;6438:5;6399:45;:::i;:::-;6394:3;6387:58;6377:74;;:::o;6457:155::-;6556:49;6599:5;6556:49;:::i;:::-;6551:3;6544:62;6534:78;;:::o;6618:364::-;6706:3;6734:39;6767:5;6734:39;:::i;:::-;6789:71;6853:6;6848:3;6789:71;:::i;:::-;6782:78;;6869:52;6914:6;6909:3;6902:4;6895:5;6891:16;6869:52;:::i;:::-;6946:29;6968:6;6946:29;:::i;:::-;6941:3;6937:39;6930:46;;6710:272;;;;;:::o;6988:366::-;7130:3;7151:67;7215:2;7210:3;7151:67;:::i;:::-;7144:74;;7227:93;7316:3;7227:93;:::i;:::-;7345:2;7340:3;7336:12;7329:19;;7134:220;;;:::o;7360:366::-;7502:3;7523:67;7587:2;7582:3;7523:67;:::i;:::-;7516:74;;7599:93;7688:3;7599:93;:::i;:::-;7717:2;7712:3;7708:12;7701:19;;7506:220;;;:::o;7732:366::-;7874:3;7895:67;7959:2;7954:3;7895:67;:::i;:::-;7888:74;;7971:93;8060:3;7971:93;:::i;:::-;8089:2;8084:3;8080:12;8073:19;;7878:220;;;:::o;8104:366::-;8246:3;8267:67;8331:2;8326:3;8267:67;:::i;:::-;8260:74;;8343:93;8432:3;8343:93;:::i;:::-;8461:2;8456:3;8452:12;8445:19;;8250:220;;;:::o;8476:366::-;8618:3;8639:67;8703:2;8698:3;8639:67;:::i;:::-;8632:74;;8715:93;8804:3;8715:93;:::i;:::-;8833:2;8828:3;8824:12;8817:19;;8622:220;;;:::o;8848:366::-;8990:3;9011:67;9075:2;9070:3;9011:67;:::i;:::-;9004:74;;9087:93;9176:3;9087:93;:::i;:::-;9205:2;9200:3;9196:12;9189:19;;8994:220;;;:::o;9220:366::-;9362:3;9383:67;9447:2;9442:3;9383:67;:::i;:::-;9376:74;;9459:93;9548:3;9459:93;:::i;:::-;9577:2;9572:3;9568:12;9561:19;;9366:220;;;:::o;9592:366::-;9734:3;9755:67;9819:2;9814:3;9755:67;:::i;:::-;9748:74;;9831:93;9920:3;9831:93;:::i;:::-;9949:2;9944:3;9940:12;9933:19;;9738:220;;;:::o;9964:366::-;10106:3;10127:67;10191:2;10186:3;10127:67;:::i;:::-;10120:74;;10203:93;10292:3;10203:93;:::i;:::-;10321:2;10316:3;10312:12;10305:19;;10110:220;;;:::o;10336:366::-;10478:3;10499:67;10563:2;10558:3;10499:67;:::i;:::-;10492:74;;10575:93;10664:3;10575:93;:::i;:::-;10693:2;10688:3;10684:12;10677:19;;10482:220;;;:::o;10708:366::-;10850:3;10871:67;10935:2;10930:3;10871:67;:::i;:::-;10864:74;;10947:93;11036:3;10947:93;:::i;:::-;11065:2;11060:3;11056:12;11049:19;;10854:220;;;:::o;11080:118::-;11167:24;11185:5;11167:24;:::i;:::-;11162:3;11155:37;11145:53;;:::o;11204:112::-;11287:22;11303:5;11287:22;:::i;:::-;11282:3;11275:35;11265:51;;:::o;11322:222::-;11415:4;11453:2;11442:9;11438:18;11430:26;;11466:71;11534:1;11523:9;11519:17;11510:6;11466:71;:::i;:::-;11420:124;;;;:::o;11550:332::-;11671:4;11709:2;11698:9;11694:18;11686:26;;11722:71;11790:1;11779:9;11775:17;11766:6;11722:71;:::i;:::-;11803:72;11871:2;11860:9;11856:18;11847:6;11803:72;:::i;:::-;11676:206;;;;;:::o;11888:442::-;12037:4;12075:2;12064:9;12060:18;12052:26;;12088:71;12156:1;12145:9;12141:17;12132:6;12088:71;:::i;:::-;12169:72;12237:2;12226:9;12222:18;12213:6;12169:72;:::i;:::-;12251;12319:2;12308:9;12304:18;12295:6;12251:72;:::i;:::-;12042:288;;;;;;:::o;12336:799::-;12581:4;12619:3;12608:9;12604:19;12596:27;;12633:71;12701:1;12690:9;12686:17;12677:6;12633:71;:::i;:::-;12714:84;12794:2;12783:9;12779:18;12770:6;12714:84;:::i;:::-;12808:72;12876:2;12865:9;12861:18;12852:6;12808:72;:::i;:::-;12890;12958:2;12947:9;12943:18;12934:6;12890:72;:::i;:::-;12972:73;13040:3;13029:9;13025:19;13016:6;12972:73;:::i;:::-;13055;13123:3;13112:9;13108:19;13099:6;13055:73;:::i;:::-;12586:549;;;;;;;;;:::o;13141:332::-;13262:4;13300:2;13289:9;13285:18;13277:26;;13313:71;13381:1;13370:9;13366:17;13357:6;13313:71;:::i;:::-;13394:72;13462:2;13451:9;13447:18;13438:6;13394:72;:::i;:::-;13267:206;;;;;:::o;13479:807::-;13728:4;13766:3;13755:9;13751:19;13743:27;;13780:71;13848:1;13837:9;13833:17;13824:6;13780:71;:::i;:::-;13861:72;13929:2;13918:9;13914:18;13905:6;13861:72;:::i;:::-;13943:80;14019:2;14008:9;14004:18;13995:6;13943:80;:::i;:::-;14033;14109:2;14098:9;14094:18;14085:6;14033:80;:::i;:::-;14123:73;14191:3;14180:9;14176:19;14167:6;14123:73;:::i;:::-;14206;14274:3;14263:9;14259:19;14250:6;14206:73;:::i;:::-;13733:553;;;;;;;;;:::o;14292:210::-;14379:4;14417:2;14406:9;14402:18;14394:26;;14430:65;14492:1;14481:9;14477:17;14468:6;14430:65;:::i;:::-;14384:118;;;;:::o;14508:313::-;14621:4;14659:2;14648:9;14644:18;14636:26;;14708:9;14702:4;14698:20;14694:1;14683:9;14679:17;14672:47;14736:78;14809:4;14800:6;14736:78;:::i;:::-;14728:86;;14626:195;;;;:::o;14827:419::-;14993:4;15031:2;15020:9;15016:18;15008:26;;15080:9;15074:4;15070:20;15066:1;15055:9;15051:17;15044:47;15108:131;15234:4;15108:131;:::i;:::-;15100:139;;14998:248;;;:::o;15252:419::-;15418:4;15456:2;15445:9;15441:18;15433:26;;15505:9;15499:4;15495:20;15491:1;15480:9;15476:17;15469:47;15533:131;15659:4;15533:131;:::i;:::-;15525:139;;15423:248;;;:::o;15677:419::-;15843:4;15881:2;15870:9;15866:18;15858:26;;15930:9;15924:4;15920:20;15916:1;15905:9;15901:17;15894:47;15958:131;16084:4;15958:131;:::i;:::-;15950:139;;15848:248;;;:::o;16102:419::-;16268:4;16306:2;16295:9;16291:18;16283:26;;16355:9;16349:4;16345:20;16341:1;16330:9;16326:17;16319:47;16383:131;16509:4;16383:131;:::i;:::-;16375:139;;16273:248;;;:::o;16527:419::-;16693:4;16731:2;16720:9;16716:18;16708:26;;16780:9;16774:4;16770:20;16766:1;16755:9;16751:17;16744:47;16808:131;16934:4;16808:131;:::i;:::-;16800:139;;16698:248;;;:::o;16952:419::-;17118:4;17156:2;17145:9;17141:18;17133:26;;17205:9;17199:4;17195:20;17191:1;17180:9;17176:17;17169:47;17233:131;17359:4;17233:131;:::i;:::-;17225:139;;17123:248;;;:::o;17377:419::-;17543:4;17581:2;17570:9;17566:18;17558:26;;17630:9;17624:4;17620:20;17616:1;17605:9;17601:17;17594:47;17658:131;17784:4;17658:131;:::i;:::-;17650:139;;17548:248;;;:::o;17802:419::-;17968:4;18006:2;17995:9;17991:18;17983:26;;18055:9;18049:4;18045:20;18041:1;18030:9;18026:17;18019:47;18083:131;18209:4;18083:131;:::i;:::-;18075:139;;17973:248;;;:::o;18227:419::-;18393:4;18431:2;18420:9;18416:18;18408:26;;18480:9;18474:4;18470:20;18466:1;18455:9;18451:17;18444:47;18508:131;18634:4;18508:131;:::i;:::-;18500:139;;18398:248;;;:::o;18652:419::-;18818:4;18856:2;18845:9;18841:18;18833:26;;18905:9;18899:4;18895:20;18891:1;18880:9;18876:17;18869:47;18933:131;19059:4;18933:131;:::i;:::-;18925:139;;18823:248;;;:::o;19077:419::-;19243:4;19281:2;19270:9;19266:18;19258:26;;19330:9;19324:4;19320:20;19316:1;19305:9;19301:17;19294:47;19358:131;19484:4;19358:131;:::i;:::-;19350:139;;19248:248;;;:::o;19502:222::-;19595:4;19633:2;19622:9;19618:18;19610:26;;19646:71;19714:1;19703:9;19699:17;19690:6;19646:71;:::i;:::-;19600:124;;;;:::o;19730:831::-;19993:4;20031:3;20020:9;20016:19;20008:27;;20045:71;20113:1;20102:9;20098:17;20089:6;20045:71;:::i;:::-;20126:80;20202:2;20191:9;20187:18;20178:6;20126:80;:::i;:::-;20253:9;20247:4;20243:20;20238:2;20227:9;20223:18;20216:48;20281:108;20384:4;20375:6;20281:108;:::i;:::-;20273:116;;20399:72;20467:2;20456:9;20452:18;20443:6;20399:72;:::i;:::-;20481:73;20549:3;20538:9;20534:19;20525:6;20481:73;:::i;:::-;19998:563;;;;;;;;:::o;20567:214::-;20656:4;20694:2;20683:9;20679:18;20671:26;;20707:67;20771:1;20760:9;20756:17;20747:6;20707:67;:::i;:::-;20661:120;;;;:::o;20787:132::-;20854:4;20877:3;20869:11;;20907:4;20902:3;20898:14;20890:22;;20859:60;;;:::o;20925:114::-;20992:6;21026:5;21020:12;21010:22;;20999:40;;;:::o;21045:99::-;21097:6;21131:5;21125:12;21115:22;;21104:40;;;:::o;21150:113::-;21220:4;21252;21247:3;21243:14;21235:22;;21225:38;;;:::o;21269:184::-;21368:11;21402:6;21397:3;21390:19;21442:4;21437:3;21433:14;21418:29;;21380:73;;;;:::o;21459:169::-;21543:11;21577:6;21572:3;21565:19;21617:4;21612:3;21608:14;21593:29;;21555:73;;;;:::o;21634:305::-;21674:3;21693:20;21711:1;21693:20;:::i;:::-;21688:25;;21727:20;21745:1;21727:20;:::i;:::-;21722:25;;21881:1;21813:66;21809:74;21806:1;21803:81;21800:2;;;21887:18;;:::i;:::-;21800:2;21931:1;21928;21924:9;21917:16;;21678:261;;;;:::o;21945:185::-;21985:1;22002:20;22020:1;22002:20;:::i;:::-;21997:25;;22036:20;22054:1;22036:20;:::i;:::-;22031:25;;22075:1;22065:2;;22080:18;;:::i;:::-;22065:2;22122:1;22119;22115:9;22110:14;;21987:143;;;;:::o;22136:348::-;22176:7;22199:20;22217:1;22199:20;:::i;:::-;22194:25;;22233:20;22251:1;22233:20;:::i;:::-;22228:25;;22421:1;22353:66;22349:74;22346:1;22343:81;22338:1;22331:9;22324:17;22320:105;22317:2;;;22428:18;;:::i;:::-;22317:2;22476:1;22473;22469:9;22458:20;;22184:300;;;;:::o;22490:191::-;22530:4;22550:20;22568:1;22550:20;:::i;:::-;22545:25;;22584:20;22602:1;22584:20;:::i;:::-;22579:25;;22623:1;22620;22617:8;22614:2;;;22628:18;;:::i;:::-;22614:2;22673:1;22670;22666:9;22658:17;;22535:146;;;;:::o;22687:96::-;22724:7;22753:24;22771:5;22753:24;:::i;:::-;22742:35;;22732:51;;;:::o;22789:104::-;22834:7;22863:24;22881:5;22863:24;:::i;:::-;22852:35;;22842:51;;;:::o;22899:90::-;22933:7;22976:5;22969:13;22962:21;22951:32;;22941:48;;;:::o;22995:126::-;23032:7;23072:42;23065:5;23061:54;23050:65;;23040:81;;;:::o;23127:77::-;23164:7;23193:5;23182:16;;23172:32;;;:::o;23210:86::-;23245:7;23285:4;23278:5;23274:16;23263:27;;23253:43;;;:::o;23302:121::-;23360:9;23393:24;23411:5;23393:24;:::i;:::-;23380:37;;23370:53;;;:::o;23429:125::-;23491:9;23524:24;23542:5;23524:24;:::i;:::-;23511:37;;23501:53;;;:::o;23560:307::-;23628:1;23638:113;23652:6;23649:1;23646:13;23638:113;;;23737:1;23732:3;23728:11;23722:18;23718:1;23713:3;23709:11;23702:39;23674:2;23671:1;23667:10;23662:15;;23638:113;;;23769:6;23766:1;23763:13;23760:2;;;23849:1;23840:6;23835:3;23831:16;23824:27;23760:2;23609:258;;;;:::o;23873:320::-;23917:6;23954:1;23948:4;23944:12;23934:22;;24001:1;23995:4;23991:12;24022:18;24012:2;;24078:4;24070:6;24066:17;24056:27;;24012:2;24140;24132:6;24129:14;24109:18;24106:38;24103:2;;;24159:18;;:::i;:::-;24103:2;23924:269;;;;:::o;24199:233::-;24238:3;24261:24;24279:5;24261:24;:::i;:::-;24252:33;;24307:66;24300:5;24297:77;24294:2;;;24377:18;;:::i;:::-;24294:2;24424:1;24417:5;24413:13;24406:20;;24242:190;;;:::o;24438:180::-;24486:77;24483:1;24476:88;24583:4;24580:1;24573:15;24607:4;24604:1;24597:15;24624:180;24672:77;24669:1;24662:88;24769:4;24766:1;24759:15;24793:4;24790:1;24783:15;24810:180;24858:77;24855:1;24848:88;24955:4;24952:1;24945:15;24979:4;24976:1;24969:15;24996:102;25037:6;25088:2;25084:7;25079:2;25072:5;25068:14;25064:28;25054:38;;25044:54;;;:::o;25104:222::-;25244:34;25240:1;25232:6;25228:14;25221:58;25313:5;25308:2;25300:6;25296:15;25289:30;25210:116;:::o;25332:174::-;25472:26;25468:1;25460:6;25456:14;25449:50;25438:68;:::o;25512:162::-;25652:14;25648:1;25640:6;25636:14;25629:38;25618:56;:::o;25680:221::-;25820:34;25816:1;25808:6;25804:14;25797:58;25889:4;25884:2;25876:6;25872:15;25865:29;25786:115;:::o;25907:177::-;26047:29;26043:1;26035:6;26031:14;26024:53;26013:71;:::o;26090:220::-;26230:34;26226:1;26218:6;26214:14;26207:58;26299:3;26294:2;26286:6;26282:15;26275:28;26196:114;:::o;26316:182::-;26456:34;26452:1;26444:6;26440:14;26433:58;26422:76;:::o;26504:228::-;26644:34;26640:1;26632:6;26628:14;26621:58;26713:11;26708:2;26700:6;26696:15;26689:36;26610:122;:::o;26738:224::-;26878:34;26874:1;26866:6;26862:14;26855:58;26947:7;26942:2;26934:6;26930:15;26923:32;26844:118;:::o;26968:223::-;27108:34;27104:1;27096:6;27092:14;27085:58;27177:6;27172:2;27164:6;27160:15;27153:31;27074:117;:::o;27197:225::-;27337:34;27333:1;27325:6;27321:14;27314:58;27406:8;27401:2;27393:6;27389:15;27382:33;27303:119;:::o;27428:122::-;27501:24;27519:5;27501:24;:::i;:::-;27494:5;27491:35;27481:2;;27540:1;27537;27530:12;27481:2;27471:79;:::o;27556:138::-;27637:32;27663:5;27637:32;:::i;:::-;27630:5;27627:43;27617:2;;27684:1;27681;27674:12;27617:2;27607:87;:::o;27700:116::-;27770:21;27785:5;27770:21;:::i;:::-;27763:5;27760:32;27750:2;;27806:1;27803;27796:12;27750:2;27740:76;:::o;27822:122::-;27895:24;27913:5;27895:24;:::i;:::-;27888:5;27885:35;27875:2;;27934:1;27931;27924:12;27875:2;27865:79;:::o

Swarm Source

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