ETH Price: $3,625.15 (+0.32%)
 

Overview

Max Total Supply

38,000 MOAP

Holders

146

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
100.171331072008266432 MOAP

Value
$0.00
0xcdb189ac34e5c201ecb8a7a25b0cc78935e68bd7
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
MOAP

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-12-20
*/

/** 


█▀▄▀█ █▀█ ▀█▀ █░█ █▀▀ █▀█   █▀█ █▀▀   ▄▀█ █░░ █░░   █▀█ █▀█ █▄░█ ▀█ █ █▀
█░▀░█ █▄█ ░█░ █▀█ ██▄ █▀▄   █▄█ █▀░   █▀█ █▄▄ █▄▄   █▀▀ █▄█ █░▀█ █▄ █ ▄█

info: 𝕀𝕋𝕊 𝕁𝕌𝕊𝕋 𝔸 ℙ𝕆ℕℤ𝕀 𝔹ℝ𝕆


*/

pragma solidity 0.6.12;

// SPDX-License-Identifier: MIT

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

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


contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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


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

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}


library Address {
    
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

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

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }
}


contract ERC20 is Context, IERC20 {
    using SafeMath for uint256;
    using Address for address;

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;
    uint8 private _decimals;

    constructor (string memory name, string memory symbol) public {
        _name = name;
        _symbol = symbol;
        _decimals = 18;
    }

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

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

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

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

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

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

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

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

        _beforeTokenTransfer(sender, recipient, amount);

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
    }

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

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

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

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

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

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

    function _setupDecimals(uint8 decimals_) internal {
        _decimals = decimals_;
    }

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


interface IUniswapSync {
    function sync() external;
}

contract MOAP is ERC20, Ownable {
    
    using SafeMath for uint256;

    event LogRebase(uint256 indexed _epoch, uint256 totalSupply);
    event LogUserBanStatusUpdated(address user, bool banned);

    modifier validRecipient(address to) {
        require(to != address(0x0));
        require(to != address(this));
        _;
    }

    uint256 private constant DECIMALS = 18;
    uint256 private constant MAX_UINT256 = ~uint256(0);
    uint256 private constant INITIAL_SUPPLY = 38000 * 10**DECIMALS;
    uint256 private constant INITIAL_SHARES = (MAX_UINT256) - (MAX_UINT256 % INITIAL_SUPPLY);

    uint256 private _totalShares;
    uint256 private _totalSupply;
    address public _moapUniswapLPContract;

    uint256 private _epoch; 
    uint256 public _MoapRebasePercent = 15; 
    uint256 public _transferFee = 5;
    uint256 private _moapFeeTotal;            
    
    mapping(address => uint256) private _shareBalances;
    mapping (address => uint256) private _moapBalances;    
    mapping (address => mapping (address => uint256)) private _allowedMOAP;

    uint256 public antiJeet;
    bool public muteTransfers;
    bool public PauseRebases;

    mapping(address => bool) public transferPauseExemptList;

    mapping (address => bool) private _isExcluded;
    address[] private _excluded;


    constructor() public ERC20("MOAP", "MOAP") { 
        _totalShares = INITIAL_SHARES;
        _totalSupply = INITIAL_SUPPLY;
        _shareBalances[owner()] = _totalShares;

        emit Transfer(address(0x0), owner(), _totalSupply);
  }
  

    function setJeetTimer()
        public
        onlyOwner
    {
        antiJeet = now;
    }

    function MuteTransfers(bool _muteTransfers)
        public
        onlyOwner
    {
        muteTransfers = _muteTransfers;
    }

    function setTransferPauseExempt(address user, bool exempt)
        public
        onlyOwner
    {
        if (exempt) {
            transferPauseExemptList[user] = true;
        } else {
            delete transferPauseExemptList[user];
        }
    }

    function SetPauseRebases(bool _pauseRebases)
        public
        onlyOwner
    {
        PauseRebases = _pauseRebases;
    }

    function MoapRebasePercent (uint256 _moaprebasepercent)
        public
        onlyOwner
    {
        _MoapRebasePercent = _moaprebasepercent;
    }
    
    function setTransferFee(uint256 _newTransferFee)
        public
        onlyOwner
    {
        _transferFee = _newTransferFee;
    }
    
    function setLPContract(address _setlpcontract)
        public
        onlyOwner
    {
        _setlpcontract = _setlpcontract;
    }
    
    function rebase()
        public
        onlyOwner
        returns (uint256)
    {
        require(!PauseRebases, "Rebases are paused");
        
        _totalSupply = _totalSupply.add(_totalSupply.mul(_MoapRebasePercent).div(100));
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_moapBalances[_excluded[i]] > 0) {
                _moapBalances[_excluded[i]] = _moapBalances[_excluded[i]].sub(_moapBalances[_excluded[i]].mul(_MoapRebasePercent).div(100));
            }
        }
        
        _epoch = _epoch.add(1);

        emit LogRebase(_epoch, _totalSupply);
        IUniswapSync(_moapUniswapLPContract).sync();
        return _totalSupply;
    }

    function getTotalShares()
        public
        view
        returns (uint256)
    {
        return _totalShares;
    }

    function sharesOf(address user)
        public
        view
        returns (uint256)
    {
        return _shareBalances[user];
    }

    function totalSupply()
        public
        override
        view
        returns (uint256)
    {
        return _totalSupply;
    }
    
    function transfer(address recipient, uint256 amount) 
        public 
        override(ERC20) 
        validRecipient(recipient)
        returns (bool) 
    {
        require(!muteTransfers || transferPauseExemptList[msg.sender], "muted");
        require(now.sub(antiJeet) >= 300 || amount <= 49 * 10**DECIMALS);
        
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

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

    function approve(address spender, uint256 value)
        public
        override
        returns (bool)
    {
        require(!muteTransfers || transferPauseExemptList[msg.sender], "muted");

        _allowedMOAP[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);
        return true;
    }
    
    function transferFrom(address sender, address recipient, uint256 amount) 
        public 
        override 
        validRecipient(recipient)
        returns (bool) 
    {
        require(!muteTransfers || transferPauseExemptList[msg.sender], "muted");
        
        _transfer(sender, recipient, amount);
        approve(sender, _allowedMOAP[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        override
        returns (bool)
    {
        require(!muteTransfers || transferPauseExemptList[msg.sender], "muted");

        _allowedMOAP[msg.sender][spender] = _allowedMOAP[msg.sender][spender].add(addedValue);
        emit Approval(msg.sender, spender, _allowedMOAP[msg.sender][spender]);
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        override
        returns (bool)
    {
        require(!muteTransfers || transferPauseExemptList[msg.sender], "muted");

        uint256 oldValue = _allowedMOAP[msg.sender][spender];
        if (subtractedValue >= oldValue) {
            _allowedMOAP[msg.sender][spender] = 0;
        } else {
            _allowedMOAP[msg.sender][spender] = oldValue.sub(subtractedValue);
        }
        emit Approval(msg.sender, spender, _allowedMOAP[msg.sender][spender]);
        return true;
    }
    
    
    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _moapBalances[account];
        return tokenFromReflection(_shareBalances[account]);
    }

    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _moapFeeTotal;
    }

    function reflect(uint256 moapAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cant call this function");
        (uint256 shareAmount,,,,) = _getValues(moapAmount);
        _shareBalances[sender] = _shareBalances[sender].sub(shareAmount);
        _totalShares = _totalShares.sub(shareAmount);
        _moapFeeTotal = _moapFeeTotal.add(moapAmount);
    }

    function reflectionFromToken(uint256 moapAmount, bool deductTransferFee) public view returns(uint256) {
        require(moapAmount <= _totalSupply, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 shareAmount,,,,) = _getValues(moapAmount);
            return shareAmount;
        } else {
            (,uint256 shareTransferAmount,,,) = _getValues(moapAmount);
            return shareTransferAmount;
        }
    }

    function tokenFromReflection(uint256 shareAmount) public view returns(uint256) {
        require(shareAmount <= _totalShares, "Amount must be less than _totalShares");
        uint256 currentRate = _getRateForReflection();
        return shareAmount.div(currentRate);
    }

    function excludeAccount(address account) external onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_shareBalances[account] > 0) {
            _moapBalances[account] = tokenFromReflection(_shareBalances[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already included");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _moapBalances[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }
    
    function _transfer(address sender, address recipient, uint256 amount) internal override(ERC20) {
        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");
        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }
    }

    function _transferStandard(address sender, address recipient, uint256 moapAmount) private {
        (uint256 shareAmount, uint256 shareTransferAmount, uint256 shareFee, uint256 moapTransferAmount, uint256 moapFee) = _getValues(moapAmount);
        _shareBalances[sender] = _shareBalances[sender].sub(shareAmount);
        _shareBalances[recipient] = _shareBalances[recipient].add(shareTransferAmount);       
        _reflectFee(shareFee, moapFee);
        emit Transfer(sender, recipient, moapTransferAmount);
    }

    function _transferToExcluded(address sender, address recipient, uint256 moapAmount) private {
        (uint256 shareAmount, uint256 shareTransferAmount, uint256 shareFee, uint256 moapTransferAmount, uint256 moapFee) = _getValues(moapAmount);
        _shareBalances[sender] = _shareBalances[sender].sub(shareAmount);
        _moapBalances[recipient] = _moapBalances[recipient].add(moapTransferAmount);
        _shareBalances[recipient] = _shareBalances[recipient].add(shareTransferAmount);           
        _reflectFee(shareFee, moapFee);
        emit Transfer(sender, recipient, moapTransferAmount);
    }

    function _transferFromExcluded(address sender, address recipient, uint256 moapAmount) private {
        (uint256 shareAmount, uint256 shareTransferAmount, uint256 shareFee, uint256 moapTransferAmount, uint256 moapFee) = _getValues(moapAmount);
        _moapBalances[sender] = _moapBalances[sender].sub(moapAmount);
        _shareBalances[sender] = _shareBalances[sender].sub(shareAmount);
        _shareBalances[recipient] = _shareBalances[recipient].add(shareTransferAmount);   
        _reflectFee(shareFee, moapFee);
        emit Transfer(sender, recipient, moapTransferAmount);
    }

    function _transferBothExcluded(address sender, address recipient, uint256 moapAmount) private {
        (uint256 shareAmount, uint256 shareTransferAmount, uint256 shareFee, uint256 moapTransferAmount, uint256 moapFee) = _getValues(moapAmount);
        _moapBalances[sender] = _moapBalances[sender].sub(moapAmount);
        _shareBalances[sender] = _shareBalances[sender].sub(shareAmount);
        _moapBalances[recipient] = _moapBalances[recipient].add(moapTransferAmount);
        _shareBalances[recipient] = _shareBalances[recipient].add(shareTransferAmount);        
        _reflectFee(shareFee, moapFee);
        emit Transfer(sender, recipient, moapTransferAmount);
    }

    function _reflectFee(uint256 shareFee, uint256 moapFee) private {
        _totalShares = _totalShares.sub(shareFee);
        _moapFeeTotal = _moapFeeTotal.add(moapFee);
    }

    function _getValues(uint256 moapAmount) private view returns (uint256, uint256, uint256, uint256, uint256) {
        (uint256 moapTransferAmount, uint256 moapFee) = _getTValues(moapAmount);
        uint256 currentRate =  _getRateForReflection();
        (uint256 shareAmount, uint256 shareTransferAmount, uint256 shareFee) = _getRValues(moapAmount, moapFee, currentRate);
        return (shareAmount, shareTransferAmount, shareFee, moapTransferAmount, moapFee);
    }

    function _getTValues(uint256 moapAmount) private view returns (uint256, uint256) {
        uint256 moapFee = moapAmount.div(100).mul(_transferFee);
        uint256 moapTransferAmount = moapAmount.sub(moapFee);
        return (moapTransferAmount, moapFee);
    }

    function _getRValues(uint256 moapAmount, uint256 moapFee, uint256 currentRate) private pure returns (uint256, uint256, uint256) {
        uint256 shareAmount = moapAmount.mul(currentRate);
        uint256 shareFee = moapFee.mul(currentRate);
        uint256 shareTransferAmount = shareAmount.sub(shareFee);
        return (shareAmount, shareTransferAmount, shareFee);
    }

    function _getRateForReflection() private view returns(uint256) {
        (uint256 shareSupply, uint256 moapSupply) = _getCurrentSupplyForReflection();
        return shareSupply.div(moapSupply);
    }

    function _getCurrentSupplyForReflection() private view returns(uint256, uint256) {
        uint256 shareSupply = _totalShares;
        uint256 moapSupply = _totalSupply;      
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_shareBalances[_excluded[i]] > shareSupply || _moapBalances[_excluded[i]] > moapSupply) return (_totalShares, _totalSupply);
            shareSupply = shareSupply.sub(_shareBalances[_excluded[i]]);
            moapSupply = moapSupply.sub(_moapBalances[_excluded[i]]);
        }
        if (shareSupply < _totalShares.div(_totalSupply)) return (_totalShares, _totalSupply);
        return (shareSupply, moapSupply);
    }
}

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":"uint256","name":"_epoch","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"totalSupply","type":"uint256"}],"name":"LogRebase","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"bool","name":"banned","type":"bool"}],"name":"LogUserBanStatusUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"uint256","name":"_moaprebasepercent","type":"uint256"}],"name":"MoapRebasePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_muteTransfers","type":"bool"}],"name":"MuteTransfers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"PauseRebases","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_pauseRebases","type":"bool"}],"name":"SetPauseRebases","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"_MoapRebasePercent","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_moapUniswapLPContract","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_transferFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner_","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"antiJeet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getTotalShares","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"muteTransfers","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rebase","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"moapAmount","type":"uint256"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"moapAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setJeetTimer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_setlpcontract","type":"address"}],"name":"setLPContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newTransferFee","type":"uint256"}],"name":"setTransferFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTransferPauseExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"sharesOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"shareAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"transferPauseExemptList","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"}]

6080604052600f600a556005600b553480156200001b57600080fd5b506040518060400160405280600481526020017f4d4f4150000000000000000000000000000000000000000000000000000000008152506040518060400160405280600481526020017f4d4f4150000000000000000000000000000000000000000000000000000000008152508160039080519060200190620000a0929190620002bb565b508060049080519060200190620000b9929190620002bb565b506012600560006101000a81548160ff021916908360ff16021790555050506000620000ea6200028960201b60201c565b905080600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506012600a0a61947002600019816200019d57fe5b06600019036006819055506012600a0a61947002600781905550600654600d6000620001ce6200029160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506200021c6200029160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6007546040518082815260200191505060405180910390a362000361565b600033905090565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620002fe57805160ff19168380011785556200032f565b828001600101855582156200032f579182015b828111156200032e57825182559160200191906001019062000311565b5b5090506200033e919062000342565b5090565b5b808211156200035d57600081600090555060010162000343565b5090565b614a3880620003716000396000f3fe608060405234801561001057600080fd5b50600436106102325760003560e01c80638da5cb5b11610130578063c30015f4116100b8578063f2cc0c181161007c578063f2cc0c1814610a38578063f2fde38b14610a7c578063f442b57014610ac0578063f5eb42dc14610b1a578063f84354f114610b7257610232565b8063c30015f4146108e4578063cba0e99614610914578063d5002f2e1461096e578063da4f65281461098c578063dd62ed3e146109c057610232565b80639ce0094a116100ff5780639ce0094a146107a0578063a457c2d7146107ce578063a9059cbb14610832578063af14052c14610896578063bbf4f712146108b457610232565b80638da5cb5b146106775780638f02bb5b146106ab57806395d89b41146106d95780639bb907941461075c57610232565b8063264df8a7116101be57806342fefe151161018257806342fefe15146105875780634549b039146105a757806370a08231146105f5578063715018a61461064d578063876b4b091461065757610232565b8063264df8a7146104985780632d838119146104a2578063313ce567146104e457806339509351146105055780633df9a8d21461056957610232565b806313114a9d1161020557806313114a9d1461036a57806318160ddd146103885780631fc3371a146103a6578063211f4b7b146103f657806323b872dd1461041457610232565b8063016d322114610237578063053ab1821461025557806306fdde0314610283578063095ea7b314610306575b600080fd5b61023f610bb6565b6040518082815260200191505060405180910390f35b6102816004803603602081101561026b57600080fd5b8101908080359060200190929190505050610bbc565b005b61028b610d4c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102cb5780820151818401526020810190506102b0565b50505050905090810190601f1680156102f85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103526004803603604081101561031c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dee565b60405180821515815260200191505060405180910390f35b610372610fb7565b6040518082815260200191505060405180910390f35b610390610fc1565b6040518082815260200191505060405180910390f35b6103f4600480360360408110156103bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610fcb565b005b6103fe61114c565b6040518082815260200191505060405180910390f35b6104806004803603606081101561042a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611152565b60405180821515815260200191505060405180910390f35b6104a0611370565b005b6104ce600480360360208110156104b857600080fd5b8101908080359060200190929190505050611443565b6040518082815260200191505060405180910390f35b6104ec6114c7565b604051808260ff16815260200191505060405180910390f35b6105516004803603604081101561051b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114de565b60405180821515815260200191505060405180910390f35b6105716117b1565b6040518082815260200191505060405180910390f35b61058f6117b7565b60405180821515815260200191505060405180910390f35b6105df600480360360408110156105bd57600080fd5b81019080803590602001909291908035151590602001909291905050506117ca565b6040518082815260200191505060405180910390f35b6106376004803603602081101561060b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061187f565b6040518082815260200191505060405180910390f35b61065561196a565b005b61065f611af5565b60405180821515815260200191505060405180910390f35b61067f611b08565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106d7600480360360208110156106c157600080fd5b8101908080359060200190929190505050611b32565b005b6106e1611c06565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610721578082015181840152602081019050610706565b50505050905090810190601f16801561074e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61079e6004803603602081101561077257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ca8565b005b6107cc600480360360208110156107b657600080fd5b8101908080359060200190929190505050611d75565b005b61081a600480360360408110156107e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e49565b60405180821515815260200191505060405180910390f35b61087e6004803603604081101561084857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121b1565b60405180821515815260200191505060405180910390f35b61089e612350565b6040518082815260200191505060405180910390f35b6108e2600480360360208110156108ca57600080fd5b81019080803515159060200190929190505050612803565b005b610912600480360360208110156108fa57600080fd5b810190808035151590602001909291905050506128ea565b005b6109566004803603602081101561092a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129d1565b60405180821515815260200191505060405180910390f35b610976612a27565b6040518082815260200191505060405180910390f35b610994612a31565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a22600480360360408110156109d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a57565b6040518082815260200191505060405180910390f35b610a7a60048036036020811015610a4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ade565b005b610abe60048036036020811015610a9257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dfa565b005b610b0260048036036020811015610ad657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061300a565b60405180821515815260200191505060405180910390f35b610b5c60048036036020811015610b3057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061302a565b6040518082815260200191505060405180910390f35b610bb460048036036020811015610b8857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613073565b005b60105481565b6000610bc66133ff565b9050601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061493e602a913960400191505060405180910390fd5b6000610c7683613407565b505050509050610cce81600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345f90919063ffffffff16565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d268160065461345f90919063ffffffff16565b600681905550610d4183600c546134a990919063ffffffff16565b600c81905550505050565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610de45780601f10610db957610100808354040283529160200191610de4565b820191906000526020600020905b815481529060010190602001808311610dc757829003601f168201915b5050505050905090565b6000601160009054906101000a900460ff161580610e555750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610ec7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f6d7574656400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600c54905090565b6000600754905090565b610fd36133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611095576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80156110f8576001601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611148565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b5050565b600a5481565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561118f57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111c857600080fd5b601160009054906101000a900460ff16158061122d5750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61129f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f6d7574656400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6112aa858585613531565b6113638561135e8560405180606001604052806028815260200161496860289139600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113146133ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461398a9092919063ffffffff16565b610dee565b5060019150509392505050565b6113786133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461143a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b42601081905550565b60006006548211156114a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806149de6025913960400191505060405180910390fd5b60006114aa613a4a565b90506114bf8184613a7590919063ffffffff16565b915050919050565b6000600560009054906101000a900460ff16905090565b6000601160009054906101000a900460ff1615806115455750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f6d7574656400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61164682600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a990919063ffffffff16565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600b5481565b601160019054906101000a900460ff1681565b6000600754831115611844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161186357600061185484613407565b50505050905080915050611879565b600061186e84613407565b505050915050809150505b92915050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561191a57600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611965565b611962600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611443565b90505b919050565b6119726133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160009054906101000a900460ff1681565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611b3a6133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b8190555050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c9e5780601f10611c7357610100808354040283529160200191611c9e565b820191906000526020600020905b815481529060010190602001808311611c8157829003601f168201915b5050505050905090565b611cb06133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b50565b611d7d6133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e3f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600a8190555050565b6000601160009054906101000a900460ff161580611eb05750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f6d7574656400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310612031576000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120c5565b612044838261345f90919063ffffffff16565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121ee57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561222757600080fd5b601160009054906101000a900460ff16158061228c5750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6122fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f6d7574656400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61012c6123166010544261345f90919063ffffffff16565b10158061232a57506012600a0a6031028311155b61233357600080fd5b61234561233e6133ff565b8585613531565b600191505092915050565b600061235a6133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461241c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601160019054906101000a900460ff161561249f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f526562617365732061726520706175736564000000000000000000000000000081525060200191505060405180910390fd5b6124dd6124cc60646124be600a54600754613abf90919063ffffffff16565b613a7590919063ffffffff16565b6007546134a990919063ffffffff16565b60078190555060005b601480549050811015612720576000600e60006014848154811061250657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612713576126986126136064612605600a54600e60006014888154811061259157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613abf90919063ffffffff16565b613a7590919063ffffffff16565b600e60006014858154811061262457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345f90919063ffffffff16565b600e6000601484815481106126a957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80806001019150506124e6565b5061273760016009546134a990919063ffffffff16565b6009819055506009547f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f26007546040518082815260200191505060405180910390a2600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127e357600080fd5b505af11580156127f7573d6000803e3d6000fd5b50505050600754905090565b61280b6133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601160016101000a81548160ff02191690831515021790555050565b6128f26133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600654905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612ae66133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ba8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612d3c57612cf8600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611443565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506014819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612e026133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ec4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f4a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806148f76026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61307b6133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461313d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c726561647920696e636c75646564000000000081525060200191505060405180910390fd5b60005b6014805490508110156133fb578173ffffffffffffffffffffffffffffffffffffffff166014828154811061323057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156133ee5760146001601480549050038154811061328c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601482815481106132c457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060148054806133b457fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556133fb565b80806001019150506131ff565b5050565b600033905090565b600080600080600080600061341b88613b45565b915091506000613429613a4a565b9050600080600061343b8c8686613b98565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b60006134a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061398a565b905092915050565b600080828401905083811015613527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806149b96025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561363d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806148d46023913960400191505060405180910390fd5b60008111613696576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806149906029913960400191505060405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137395750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561374e57613749838383613bf6565b613985565b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137f15750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561380657613801838383613e49565b613984565b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138aa5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138bf576138ba83838361409c565b613983565b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139615750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139765761397183838361425a565b613982565b61398183838361409c565b5b5b5b5b505050565b6000838311158290613a37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156139fc5780820151818401526020810190506139e1565b50505050905090810190601f168015613a295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613a57614542565b91509150613a6e8183613a7590919063ffffffff16565b9250505090565b6000613ab783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506147d3565b905092915050565b600080831415613ad25760009050613b3f565b6000828402905082848281613ae357fe5b0414613b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061491d6021913960400191505060405180910390fd5b809150505b92915050565b6000806000613b72600b54613b64606487613a7590919063ffffffff16565b613abf90919063ffffffff16565b90506000613b89828661345f90919063ffffffff16565b90508082935093505050915091565b600080600080613bb18588613abf90919063ffffffff16565b90506000613bc88688613abf90919063ffffffff16565b90506000613bdf828461345f90919063ffffffff16565b905082818395509550955050505093509350939050565b6000806000806000613c0786613407565b94509450945094509450613c6386600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345f90919063ffffffff16565b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cf885600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345f90919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d8d84600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a990919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dda8382614899565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b6000806000806000613e5a86613407565b94509450945094509450613eb685600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345f90919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f4b82600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a990919063ffffffff16565b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fe084600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a990919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061402d8382614899565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b60008060008060006140ad86613407565b9450945094509450945061410985600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345f90919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061419e84600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a990919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141eb8382614899565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b600080600080600061426b86613407565b945094509450945094506142c786600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345f90919063ffffffff16565b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435c85600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345f90919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143f182600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a990919063ffffffff16565b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061448684600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a990919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144d38382614899565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b600080600060065490506000600754905060005b6014805490508110156147965782600d60006014848154811061457557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061465c575081600e6000601484815481106145f457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561467357600654600754945094505050506147cf565b6146fc600d60006014848154811061468757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461345f90919063ffffffff16565b9250614787600e60006014848154811061471257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361345f90919063ffffffff16565b91508080600101915050614556565b506147ae600754600654613a7590919063ffffffff16565b8210156147c6576006546007549350935050506147cf565b81819350935050505b9091565b6000808311829061487f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614844578082015181840152602081019050614829565b50505050905090810190601f1680156148715780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161488b57fe5b049050809150509392505050565b6148ae8260065461345f90919063ffffffff16565b6006819055506148c981600c546134a990919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774578636c75646564206164647265737365732063616e742063616c6c20746869732066756e6374696f6e45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e205f746f74616c536861726573a26469706673582212200dc8c40e8af1dd372a6073997cf9cd2df397cb4d15d03e5f9c2a56e1ec7b626364736f6c634300060c0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102325760003560e01c80638da5cb5b11610130578063c30015f4116100b8578063f2cc0c181161007c578063f2cc0c1814610a38578063f2fde38b14610a7c578063f442b57014610ac0578063f5eb42dc14610b1a578063f84354f114610b7257610232565b8063c30015f4146108e4578063cba0e99614610914578063d5002f2e1461096e578063da4f65281461098c578063dd62ed3e146109c057610232565b80639ce0094a116100ff5780639ce0094a146107a0578063a457c2d7146107ce578063a9059cbb14610832578063af14052c14610896578063bbf4f712146108b457610232565b80638da5cb5b146106775780638f02bb5b146106ab57806395d89b41146106d95780639bb907941461075c57610232565b8063264df8a7116101be57806342fefe151161018257806342fefe15146105875780634549b039146105a757806370a08231146105f5578063715018a61461064d578063876b4b091461065757610232565b8063264df8a7146104985780632d838119146104a2578063313ce567146104e457806339509351146105055780633df9a8d21461056957610232565b806313114a9d1161020557806313114a9d1461036a57806318160ddd146103885780631fc3371a146103a6578063211f4b7b146103f657806323b872dd1461041457610232565b8063016d322114610237578063053ab1821461025557806306fdde0314610283578063095ea7b314610306575b600080fd5b61023f610bb6565b6040518082815260200191505060405180910390f35b6102816004803603602081101561026b57600080fd5b8101908080359060200190929190505050610bbc565b005b61028b610d4c565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156102cb5780820151818401526020810190506102b0565b50505050905090810190601f1680156102f85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b6103526004803603604081101561031c57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dee565b60405180821515815260200191505060405180910390f35b610372610fb7565b6040518082815260200191505060405180910390f35b610390610fc1565b6040518082815260200191505060405180910390f35b6103f4600480360360408110156103bc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803515159060200190929190505050610fcb565b005b6103fe61114c565b6040518082815260200191505060405180910390f35b6104806004803603606081101561042a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611152565b60405180821515815260200191505060405180910390f35b6104a0611370565b005b6104ce600480360360208110156104b857600080fd5b8101908080359060200190929190505050611443565b6040518082815260200191505060405180910390f35b6104ec6114c7565b604051808260ff16815260200191505060405180910390f35b6105516004803603604081101561051b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506114de565b60405180821515815260200191505060405180910390f35b6105716117b1565b6040518082815260200191505060405180910390f35b61058f6117b7565b60405180821515815260200191505060405180910390f35b6105df600480360360408110156105bd57600080fd5b81019080803590602001909291908035151590602001909291905050506117ca565b6040518082815260200191505060405180910390f35b6106376004803603602081101561060b57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061187f565b6040518082815260200191505060405180910390f35b61065561196a565b005b61065f611af5565b60405180821515815260200191505060405180910390f35b61067f611b08565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6106d7600480360360208110156106c157600080fd5b8101908080359060200190929190505050611b32565b005b6106e1611c06565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610721578082015181840152602081019050610706565b50505050905090810190601f16801561074e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61079e6004803603602081101561077257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611ca8565b005b6107cc600480360360208110156107b657600080fd5b8101908080359060200190929190505050611d75565b005b61081a600480360360408110156107e457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e49565b60405180821515815260200191505060405180910390f35b61087e6004803603604081101561084857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506121b1565b60405180821515815260200191505060405180910390f35b61089e612350565b6040518082815260200191505060405180910390f35b6108e2600480360360208110156108ca57600080fd5b81019080803515159060200190929190505050612803565b005b610912600480360360208110156108fa57600080fd5b810190808035151590602001909291905050506128ea565b005b6109566004803603602081101561092a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506129d1565b60405180821515815260200191505060405180910390f35b610976612a27565b6040518082815260200191505060405180910390f35b610994612a31565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b610a22600480360360408110156109d657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612a57565b6040518082815260200191505060405180910390f35b610a7a60048036036020811015610a4e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612ade565b005b610abe60048036036020811015610a9257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612dfa565b005b610b0260048036036020811015610ad657600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061300a565b60405180821515815260200191505060405180910390f35b610b5c60048036036020811015610b3057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061302a565b6040518082815260200191505060405180910390f35b610bb460048036036020811015610b8857600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613073565b005b60105481565b6000610bc66133ff565b9050601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615610c6b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a81526020018061493e602a913960400191505060405180910390fd5b6000610c7683613407565b505050509050610cce81600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345f90919063ffffffff16565b600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610d268160065461345f90919063ffffffff16565b600681905550610d4183600c546134a990919063ffffffff16565b600c81905550505050565b606060038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610de45780601f10610db957610100808354040283529160200191610de4565b820191906000526020600020905b815481529060010190602001808311610dc757829003601f168201915b5050505050905090565b6000601160009054906101000a900460ff161580610e555750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b610ec7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f6d7574656400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b81600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b6000600c54905090565b6000600754905090565b610fd36133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611095576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80156110f8576001601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611148565b601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81549060ff02191690555b5050565b600a5481565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561118f57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156111c857600080fd5b601160009054906101000a900460ff16158061122d5750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b61129f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f6d7574656400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6112aa858585613531565b6113638561135e8560405180606001604052806028815260200161496860289139600f60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006113146133ff565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461398a9092919063ffffffff16565b610dee565b5060019150509392505050565b6113786133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461143a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b42601081905550565b60006006548211156114a0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806149de6025913960400191505060405180910390fd5b60006114aa613a4a565b90506114bf8184613a7590919063ffffffff16565b915050919050565b6000600560009054906101000a900460ff16905090565b6000601160009054906101000a900460ff1615806115455750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6115b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f6d7574656400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61164682600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a990919063ffffffff16565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a36001905092915050565b600b5481565b601160019054906101000a900460ff1681565b6000600754831115611844576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f416d6f756e74206d757374206265206c657373207468616e20737570706c790081525060200191505060405180910390fd5b8161186357600061185484613407565b50505050905080915050611879565b600061186e84613407565b505050915050809150505b92915050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161561191a57600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050611965565b611962600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611443565b90505b919050565b6119726133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a34576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a36000600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b601160009054906101000a900460ff1681565b6000600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b611b3a6133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bfc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600b8190555050565b606060048054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c9e5780601f10611c7357610100808354040283529160200191611c9e565b820191906000526020600020905b815481529060010190602001808311611c8157829003601f168201915b5050505050905090565b611cb06133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d72576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b50565b611d7d6133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611e3f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600a8190555050565b6000601160009054906101000a900460ff161580611eb05750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b611f22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f6d7574656400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b6000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050808310612031576000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506120c5565b612044838261345f90919063ffffffff16565b600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b8373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546040518082815260200191505060405180910390a3600191505092915050565b600082600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156121ee57600080fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16141561222757600080fd5b601160009054906101000a900460ff16158061228c5750601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b6122fe576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260058152602001807f6d7574656400000000000000000000000000000000000000000000000000000081525060200191505060405180910390fd5b61012c6123166010544261345f90919063ffffffff16565b10158061232a57506012600a0a6031028311155b61233357600080fd5b61234561233e6133ff565b8585613531565b600191505092915050565b600061235a6133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461241c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601160019054906101000a900460ff161561249f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260128152602001807f526562617365732061726520706175736564000000000000000000000000000081525060200191505060405180910390fd5b6124dd6124cc60646124be600a54600754613abf90919063ffffffff16565b613a7590919063ffffffff16565b6007546134a990919063ffffffff16565b60078190555060005b601480549050811015612720576000600e60006014848154811061250657fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612713576126986126136064612605600a54600e60006014888154811061259157fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054613abf90919063ffffffff16565b613a7590919063ffffffff16565b600e60006014858154811061262457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345f90919063ffffffff16565b600e6000601484815481106126a957fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b80806001019150506124e6565b5061273760016009546134a990919063ffffffff16565b6009819055506009547f72725a3b1e5bd622d6bcd1339bb31279c351abe8f541ac7fd320f24e1b1641f26007546040518082815260200191505060405180910390a2600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663fff6cae96040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156127e357600080fd5b505af11580156127f7573d6000803e3d6000fd5b50505050600754905090565b61280b6133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146128cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601160016101000a81548160ff02191690831515021790555050565b6128f26133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146129b4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80601160006101000a81548160ff02191690831515021790555050565b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b6000600654905090565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600f60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b612ae66133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ba8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615612c68576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c7265616479206578636c75646564000000000081525060200191505060405180910390fd5b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541115612d3c57612cf8600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611443565b600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506014819080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b612e026133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612ec4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612f4a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260268152602001806148f76026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a380600560016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60126020528060005260406000206000915054906101000a900460ff1681565b6000600d60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61307b6133ff565b73ffffffffffffffffffffffffffffffffffffffff16600560019054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461313d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b601360008273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff166131fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f4163636f756e7420697320616c726561647920696e636c75646564000000000081525060200191505060405180910390fd5b60005b6014805490508110156133fb578173ffffffffffffffffffffffffffffffffffffffff166014828154811061323057fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156133ee5760146001601480549050038154811061328c57fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16601482815481106132c457fe5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600e60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060148054806133b457fe5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905590556133fb565b80806001019150506131ff565b5050565b600033905090565b600080600080600080600061341b88613b45565b915091506000613429613a4a565b9050600080600061343b8c8686613b98565b92509250925082828288889a509a509a509a509a5050505050505091939590929450565b60006134a183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061398a565b905092915050565b600080828401905083811015613527576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156135b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001806149b96025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561363d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806148d46023913960400191505060405180910390fd5b60008111613696576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260298152602001806149906029913960400191505060405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156137395750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561374e57613749838383613bf6565b613985565b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156137f15750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b1561380657613801838383613e49565b613984565b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156138aa5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156138bf576138ba83838361409c565b613983565b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680156139615750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b156139765761397183838361425a565b613982565b61398183838361409c565b5b5b5b5b505050565b6000838311158290613a37576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156139fc5780820151818401526020810190506139e1565b50505050905090810190601f168015613a295780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000806000613a57614542565b91509150613a6e8183613a7590919063ffffffff16565b9250505090565b6000613ab783836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506147d3565b905092915050565b600080831415613ad25760009050613b3f565b6000828402905082848281613ae357fe5b0414613b3a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018061491d6021913960400191505060405180910390fd5b809150505b92915050565b6000806000613b72600b54613b64606487613a7590919063ffffffff16565b613abf90919063ffffffff16565b90506000613b89828661345f90919063ffffffff16565b90508082935093505050915091565b600080600080613bb18588613abf90919063ffffffff16565b90506000613bc88688613abf90919063ffffffff16565b90506000613bdf828461345f90919063ffffffff16565b905082818395509550955050505093509350939050565b6000806000806000613c0786613407565b94509450945094509450613c6386600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345f90919063ffffffff16565b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613cf885600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345f90919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613d8d84600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a990919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613dda8382614899565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b6000806000806000613e5a86613407565b94509450945094509450613eb685600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345f90919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613f4b82600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a990919063ffffffff16565b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550613fe084600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a990919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061402d8382614899565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b60008060008060006140ad86613407565b9450945094509450945061410985600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345f90919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061419e84600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a990919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506141eb8382614899565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b600080600080600061426b86613407565b945094509450945094506142c786600e60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345f90919063ffffffff16565b600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061435c85600d60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461345f90919063ffffffff16565b600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506143f182600e60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a990919063ffffffff16565b600e60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061448684600d60008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546134a990919063ffffffff16565b600d60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506144d38382614899565b8673ffffffffffffffffffffffffffffffffffffffff168873ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a35050505050505050565b600080600060065490506000600754905060005b6014805490508110156147965782600d60006014848154811061457557fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054118061465c575081600e6000601484815481106145f457fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054115b1561467357600654600754945094505050506147cf565b6146fc600d60006014848154811061468757fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548461345f90919063ffffffff16565b9250614787600e60006014848154811061471257fe5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020548361345f90919063ffffffff16565b91508080600101915050614556565b506147ae600754600654613a7590919063ffffffff16565b8210156147c6576006546007549350935050506147cf565b81819350935050505b9091565b6000808311829061487f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015614844578082015181840152602081019050614829565b50505050905090810190601f1680156148715780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50600083858161488b57fe5b049050809150509392505050565b6148ae8260065461345f90919063ffffffff16565b6006819055506148c981600c546134a990919063ffffffff16565b600c81905550505056fe45524332303a207472616e7366657220746f20746865207a65726f20616464726573734f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774578636c75646564206164647265737365732063616e742063616c6c20746869732066756e6374696f6e45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63655472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f2061646472657373416d6f756e74206d757374206265206c657373207468616e205f746f74616c536861726573a26469706673582212200dc8c40e8af1dd372a6073997cf9cd2df397cb4d15d03e5f9c2a56e1ec7b626364736f6c634300060c0033

Deployed Bytecode Sourcemap

9393:14437:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10495:23;;;:::i;:::-;;;;;;;;;;;;;;;;;;;16161:425;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5540:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13877:330;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16063:90;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13109:141;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11244:261;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10160:38;;;:::i;:::-;;;;;;;;;;;;;;;;;;;14219:462;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10998:97;;;:::i;:::-;;17069:277;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;5726:83;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;14689:417;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;10206:31;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10557:24;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;16594:467;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;15726:211;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1393:148;;;:::i;:::-;;10525:25;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;1179:79;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;11819:138;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5631:87;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11969:137;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11653:154;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15114:594;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13262:412;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12118:701;;;:::i;:::-;;;;;;;;;;;;;;;;;;;11513:132;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11103:133;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;15945:110;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12827:126;;;:::i;:::-;;;;;;;;;;;;;;;;;;;10084:37;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;13682:187;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17354:352;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;1549:244;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10590:55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;12961:140;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;17714:484;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10495:23;;;;:::o;16161:425::-;16216:14;16233:12;:10;:12::i;:::-;16216:29;;16265:11;:19;16277:6;16265:19;;;;;;;;;;;;;;;;;;;;;;;;;16264:20;16256:75;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16343:19;16370:22;16381:10;16370;:22::i;:::-;16342:50;;;;;;16428:39;16455:11;16428:14;:22;16443:6;16428:22;;;;;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;16403:14;:22;16418:6;16403:22;;;;;;;;;;;;;;;:64;;;;16493:29;16510:11;16493:12;;:16;;:29;;;;:::i;:::-;16478:12;:44;;;;16549:29;16567:10;16549:13;;:17;;:29;;;;:::i;:::-;16533:13;:45;;;;16161:425;;;:::o;5540:83::-;5577:13;5610:5;5603:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5540:83;:::o;13877:330::-;13978:4;14009:13;;;;;;;;;;;14008:14;:53;;;;14026:23;:35;14050:10;14026:35;;;;;;;;;;;;;;;;;;;;;;;;;14008:53;14000:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14120:5;14084:12;:24;14097:10;14084:24;;;;;;;;;;;;;;;:33;14109:7;14084:33;;;;;;;;;;;;;;;:41;;;;14162:7;14141:36;;14150:10;14141:36;;;14171:5;14141:36;;;;;;;;;;;;;;;;;;14195:4;14188:11;;13877:330;;;;:::o;16063:90::-;16105:7;16132:13;;16125:20;;16063:90;:::o;13109:141::-;13198:7;13230:12;;13223:19;;13109:141;:::o;11244:261::-;1316:12;:10;:12::i;:::-;1306:22;;:6;;;;;;;;;;;:22;;;1298:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11358:6:::1;11354:144;;;11413:4;11381:23;:29;11405:4;11381:29;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;11354:144;;;11457:23;:29;11481:4;11457:29;;;;;;;;;;;;;;;;11450:36;;;;;;;;;;;11354:144;11244:261:::0;;:::o;10160:38::-;;;;:::o;14219:462::-;14382:4;14353:9;9674:3;9660:18;;:2;:18;;;;9652:27;;;;;;9712:4;9698:19;;:2;:19;;;;9690:28;;;;;;14414:13:::1;;;;;;;;;;;14413:14;:53;;;;14431:23;:35;14455:10;14431:35;;;;;;;;;;;;;;;;;;;;;;;;;14413:53;14405:71;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;14497:36;14507:6;14515:9;14526:6;14497:9;:36::i;:::-;14544:107;14552:6;14560:90;14599:6;14560:90;;;;;;;;;;;;;;;;;:12;:20;14573:6;14560:20;;;;;;;;;;;;;;;:34;14581:12;:10;:12::i;:::-;14560:34;;;;;;;;;;;;;;;;:38;;:90;;;;;:::i;:::-;14544:7;:107::i;:::-;;14669:4;14662:11;;14219:462:::0;;;;;;:::o;10998:97::-;1316:12;:10;:12::i;:::-;1306:22;;:6;;;;;;;;;;;:22;;;1298:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11084:3:::1;11073:8;:14;;;;10998:97::o:0;17069:277::-;17139:7;17182:12;;17167:11;:27;;17159:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17247:19;17269:23;:21;:23::i;:::-;17247:45;;17310:28;17326:11;17310;:15;;:28;;;;:::i;:::-;17303:35;;;17069:277;;;:::o;5726:83::-;5767:5;5792:9;;;;;;;;;;;5785:16;;5726:83;:::o;14689:417::-;14805:4;14836:13;;;;;;;;;;;14835:14;:53;;;;14853:23;:35;14877:10;14853:35;;;;;;;;;;;;;;;;;;;;;;;;;14835:53;14827:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14947:49;14985:10;14947:12;:24;14960:10;14947:24;;;;;;;;;;;;;;;:33;14972:7;14947:33;;;;;;;;;;;;;;;;:37;;:49;;;;:::i;:::-;14911:12;:24;14924:10;14911:24;;;;;;;;;;;;;;;:33;14936:7;14911:33;;;;;;;;;;;;;;;:85;;;;15033:7;15012:64;;15021:10;15012:64;;;15042:12;:24;15055:10;15042:24;;;;;;;;;;;;;;;:33;15067:7;15042:33;;;;;;;;;;;;;;;;15012:64;;;;;;;;;;;;;;;;;;15094:4;15087:11;;14689:417;;;;:::o;10206:31::-;;;;:::o;10557:24::-;;;;;;;;;;;;;:::o;16594:467::-;16687:7;16729:12;;16715:10;:26;;16707:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16793:17;16788:266;;16828:19;16855:22;16866:10;16855;:22::i;:::-;16827:50;;;;;;16899:11;16892:18;;;;;16788:266;16945:27;16979:22;16990:10;16979;:22::i;:::-;16943:58;;;;;;17023:19;17016:26;;;16594:467;;;;;:::o;15726:211::-;15792:7;15816:11;:20;15828:7;15816:20;;;;;;;;;;;;;;;;;;;;;;;;;15812:55;;;15845:13;:22;15859:7;15845:22;;;;;;;;;;;;;;;;15838:29;;;;15812:55;15885:44;15905:14;:23;15920:7;15905:23;;;;;;;;;;;;;;;;15885:19;:44::i;:::-;15878:51;;15726:211;;;;:::o;1393:148::-;1316:12;:10;:12::i;:::-;1306:22;;:6;;;;;;;;;;;:22;;;1298:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1500:1:::1;1463:40;;1484:6;;;;;;;;;;;1463:40;;;;;;;;;;;;1531:1;1514:6;;:19;;;;;;;;;;;;;;;;;;1393:148::o:0;10525:25::-;;;;;;;;;;;;;:::o;1179:79::-;1217:7;1244:6;;;;;;;;;;;1237:13;;1179:79;:::o;11819:138::-;1316:12;:10;:12::i;:::-;1306:22;;:6;;;;;;;;;;;:22;;;1298:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11934:15:::1;11919:12;:30;;;;11819:138:::0;:::o;5631:87::-;5670:13;5703:7;5696:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5631:87;:::o;11969:137::-;1316:12;:10;:12::i;:::-;1306:22;;:6;;;;;;;;;;;:22;;;1298:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11969:137;:::o;11653:154::-;1316:12;:10;:12::i;:::-;1306:22;;:6;;;;;;;;;;;:22;;;1298:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11781:18:::1;11760;:39;;;;11653:154:::0;:::o;15114:594::-;15235:4;15266:13;;;;;;;;;;;15265:14;:53;;;;15283:23;:35;15307:10;15283:35;;;;;;;;;;;;;;;;;;;;;;;;;15265:53;15257:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15341:16;15360:12;:24;15373:10;15360:24;;;;;;;;;;;;;;;:33;15385:7;15360:33;;;;;;;;;;;;;;;;15341:52;;15427:8;15408:15;:27;15404:195;;15488:1;15452:12;:24;15465:10;15452:24;;;;;;;;;;;;;;;:33;15477:7;15452:33;;;;;;;;;;;;;;;:37;;;;15404:195;;;15558:29;15571:15;15558:8;:12;;:29;;;;:::i;:::-;15522:12;:24;15535:10;15522:24;;;;;;;;;;;;;;;:33;15547:7;15522:33;;;;;;;;;;;;;;;:65;;;;15404:195;15635:7;15614:64;;15623:10;15614:64;;;15644:12;:24;15657:10;15644:24;;;;;;;;;;;;;;;:33;15669:7;15644:33;;;;;;;;;;;;;;;;15614:64;;;;;;;;;;;;;;;;;;15696:4;15689:11;;;15114:594;;;;:::o;13262:412::-;13412:4;13383:9;9674:3;9660:18;;:2;:18;;;;9652:27;;;;;;9712:4;9698:19;;:2;:19;;;;9690:28;;;;;;13444:13:::1;;;;;;;;;;;13443:14;:53;;;;13461:23;:35;13485:10;13461:35;;;;;;;;;;;;;;;;;;;;;;;;;13443:53;13435:71;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;13546:3;13525:17;13533:8;;13525:3;:7;;:17;;;;:::i;:::-;:24;;:55;;;;9782:2;13568;:12;13563:2;:17;13553:6;:27;;13525:55;13517:64;;;::::0;::::1;;13602:42;13612:12;:10;:12::i;:::-;13626:9;13637:6;13602:9;:42::i;:::-;13662:4;13655:11;;13262:412:::0;;;;;:::o;12118:701::-;12189:7;1316:12;:10;:12::i;:::-;1306:22;;:6;;;;;;;;;;;:22;;;1298:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12223:12:::1;;;;;;;;;;;12222:13;12214:44;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;12294:63;12311:45;12352:3;12311:36;12328:18;;12311:12;;:16;;:36;;;;:::i;:::-;:40;;:45;;;;:::i;:::-;12294:12;;:16;;:63;;;;:::i;:::-;12279:12;:78;;;;12373:9;12368:268;12392:9;:16;;;;12388:1;:20;12368:268;;;12464:1;12434:13;:27;12448:9;12458:1;12448:12;;;;;;;;;;;;;;;;;;;;;;;;;12434:27;;;;;;;;;;;;;;;;:31;12430:195;;;12516:93;12548:60;12604:3;12548:51;12580:18;;12548:13;:27;12562:9;12572:1;12562:12;;;;;;;;;;;;;;;;;;;;;;;;;12548:27;;;;;;;;;;;;;;;;:31;;:51;;;;:::i;:::-;:55;;:60;;;;:::i;:::-;12516:13;:27;12530:9;12540:1;12530:12;;;;;;;;;;;;;;;;;;;;;;;;;12516:27;;;;;;;;;;;;;;;;:31;;:93;;;;:::i;:::-;12486:13;:27;12500:9;12510:1;12500:12;;;;;;;;;;;;;;;;;;;;;;;;;12486:27;;;;;;;;;;;;;;;:123;;;;12430:195;12410:3;;;;;;;12368:268;;;;12665:13;12676:1;12665:6;;:10;;:13;;;;:::i;:::-;12656:6;:22;;;;12706:6;;12696:31;12714:12;;12696:31;;;;;;;;;;;;;;;;;;12751:22;;;;;;;;;;;12738:41;;;:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;12799:12;;12792:19;;12118:701:::0;:::o;11513:132::-;1316:12;:10;:12::i;:::-;1306:22;;:6;;;;;;;;;;;:22;;;1298:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11624:13:::1;11609:12;;:28;;;;;;;;;;;;;;;;;;11513:132:::0;:::o;11103:133::-;1316:12;:10;:12::i;:::-;1306:22;;:6;;;;;;;;;;;:22;;;1298:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11214:14:::1;11198:13;;:30;;;;;;;;;;;;;;;;;;11103:133:::0;:::o;15945:110::-;16003:4;16027:11;:20;16039:7;16027:20;;;;;;;;;;;;;;;;;;;;;;;;;16020:27;;15945:110;;;:::o;12827:126::-;12901:7;12933:12;;12926:19;;12827:126;:::o;10084:37::-;;;;;;;;;;;;;:::o;13682:187::-;13800:7;13832:12;:20;13845:6;13832:20;;;;;;;;;;;;;;;:29;13853:7;13832:29;;;;;;;;;;;;;;;;13825:36;;13682:187;;;;:::o;17354:352::-;1316:12;:10;:12::i;:::-;1306:22;;:6;;;;;;;;;;;:22;;;1298:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17436:11:::1;:20;17448:7;17436:20;;;;;;;;;;;;;;;;;;;;;;;;;17435:21;17427:61;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17528:1;17502:14;:23;17517:7;17502:23;;;;;;;;;;;;;;;;:27;17499:128;;;17571:44;17591:14;:23;17606:7;17591:23;;;;;;;;;;;;;;;;17571:19;:44::i;:::-;17546:13;:22;17560:7;17546:22;;;;;;;;;;;;;;;:69;;;;17499:128;17660:4;17637:11;:20;17649:7;17637:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;17675:9;17690:7;17675:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17354:352:::0;:::o;1549:244::-;1316:12;:10;:12::i;:::-;1306:22;;:6;;;;;;;;;;;:22;;;1298:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1658:1:::1;1638:22;;:8;:22;;;;1630:73;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1748:8;1719:38;;1740:6;;;;;;;;;;;1719:38;;;;;;;;;;;;1777:8;1768:6;;:17;;;;;;;;;;;;;;;;;;1549:244:::0;:::o;10590:55::-;;;;;;;;;;;;;;;;;;;;;;:::o;12961:140::-;13041:7;13073:14;:20;13088:4;13073:20;;;;;;;;;;;;;;;;13066:27;;12961:140;;;:::o;17714:484::-;1316:12;:10;:12::i;:::-;1306:22;;:6;;;;;;;;;;;:22;;;1298:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17795:11:::1;:20;17807:7;17795:20;;;;;;;;;;;;;;;;;;;;;;;;;17787:60;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;17863:9;17858:333;17882:9;:16;;;;17878:1;:20;17858:333;;;17940:7;17924:23;;:9;17934:1;17924:12;;;;;;;;;;;;;;;;;;;;;;;;;:23;;;17920:260;;;17983:9;18012:1;17993:9;:16;;;;:20;17983:31;;;;;;;;;;;;;;;;;;;;;;;;;17968:9;17978:1;17968:12;;;;;;;;;;;;;;;;:46;;;;;;;;;;;;;;;;;;18058:1;18033:13;:22;18047:7;18033:22;;;;;;;;;;;;;;;:26;;;;18101:5;18078:11;:20;18090:7;18078:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;18125:9;:15;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18159:5;;17920:260;17900:3;;;;;;;17858:333;;;;17714:484:::0;:::o;613:106::-;666:15;701:10;694:17;;613:106;:::o;21798:472::-;21860:7;21869;21878;21887;21896;21917:26;21945:15;21964:23;21976:10;21964:11;:23::i;:::-;21916:71;;;;21998:19;22021:23;:21;:23::i;:::-;21998:46;;22056:19;22077:27;22106:16;22126:45;22138:10;22150:7;22159:11;22126;:45::i;:::-;22055:116;;;;;;22190:11;22203:19;22224:8;22234:18;22254:7;22182:80;;;;;;;;;;;;;;;;21798:472;;;;;;;:::o;2704:136::-;2762:7;2789:43;2793:1;2796;2789:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2782:50;;2704:136;;;;:::o;2515:181::-;2573:7;2593:9;2609:1;2605;:5;2593:17;;2634:1;2629;:6;;2621:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2687:1;2680:8;;;2515:181;;;;:::o;18210:948::-;18342:1;18324:20;;:6;:20;;;;18316:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18426:1;18405:23;;:9;:23;;;;18397:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18496:1;18487:6;:10;18479:64;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18558:11;:19;18570:6;18558:19;;;;;;;;;;;;;;;;;;;;;;;;;:46;;;;;18582:11;:22;18594:9;18582:22;;;;;;;;;;;;;;;;;;;;;;;;;18581:23;18558:46;18554:597;;;18621:48;18643:6;18651:9;18662:6;18621:21;:48::i;:::-;18554:597;;;18692:11;:19;18704:6;18692:19;;;;;;;;;;;;;;;;;;;;;;;;;18691:20;:46;;;;;18715:11;:22;18727:9;18715:22;;;;;;;;;;;;;;;;;;;;;;;;;18691:46;18687:464;;;18754:46;18774:6;18782:9;18793:6;18754:19;:46::i;:::-;18687:464;;;18823:11;:19;18835:6;18823:19;;;;;;;;;;;;;;;;;;;;;;;;;18822:20;:47;;;;;18847:11;:22;18859:9;18847:22;;;;;;;;;;;;;;;;;;;;;;;;;18846:23;18822:47;18818:333;;;18886:44;18904:6;18912:9;18923:6;18886:17;:44::i;:::-;18818:333;;;18952:11;:19;18964:6;18952:19;;;;;;;;;;;;;;;;;;;;;;;;;:45;;;;;18975:11;:22;18987:9;18975:22;;;;;;;;;;;;;;;;;;;;;;;;;18952:45;18948:203;;;19014:48;19036:6;19044:9;19055:6;19014:21;:48::i;:::-;18948:203;;;19095:44;19113:6;19121:9;19132:6;19095:17;:44::i;:::-;18948:203;18818:333;18687:464;18554:597;18210:948;;;:::o;2848:192::-;2934:7;2967:1;2962;:6;;2970:12;2954:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2994:9;3010:1;3006;:5;2994:17;;3031:1;3024:8;;;2848:192;;;;;:::o;22937:203::-;22991:7;23012:19;23033:18;23055:32;:30;:32::i;:::-;23011:76;;;;23105:27;23121:10;23105:11;:15;;:27;;;;:::i;:::-;23098:34;;;;22937:203;:::o;3306:132::-;3364:7;3391:39;3395:1;3398;3391:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;3384:46;;3306:132;;;;:::o;3048:250::-;3106:7;3135:1;3130;:6;3126:47;;;3160:1;3153:8;;;;3126:47;3185:9;3201:1;3197;:5;3185:17;;3230:1;3225;3221;:5;;;;;;:10;3213:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3289:1;3282:8;;;3048:250;;;;;:::o;22278:265::-;22341:7;22350;22370:15;22388:37;22412:12;;22388:19;22403:3;22388:10;:14;;:19;;;;:::i;:::-;:23;;:37;;;;:::i;:::-;22370:55;;22436:26;22465:23;22480:7;22465:10;:14;;:23;;;;:::i;:::-;22436:52;;22507:18;22527:7;22499:36;;;;;;22278:265;;;:::o;22551:378::-;22652:7;22661;22670;22690:19;22712:27;22727:11;22712:10;:14;;:27;;;;:::i;:::-;22690:49;;22750:16;22769:24;22781:11;22769:7;:11;;:24;;;;:::i;:::-;22750:43;;22804:27;22834:25;22850:8;22834:11;:15;;:25;;;;:::i;:::-;22804:55;;22878:11;22891:19;22912:8;22870:51;;;;;;;;;22551:378;;;;;;;:::o;20318:594::-;20424:19;20445:27;20474:16;20492:26;20520:15;20539:22;20550:10;20539;:22::i;:::-;20423:138;;;;;;;;;;20596:37;20622:10;20596:13;:21;20610:6;20596:21;;;;;;;;;;;;;;;;:25;;:37;;;;:::i;:::-;20572:13;:21;20586:6;20572:21;;;;;;;;;;;;;;;:61;;;;20669:39;20696:11;20669:14;:22;20684:6;20669:22;;;;;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;20644:14;:22;20659:6;20644:22;;;;;;;;;;;;;;;:64;;;;20747:50;20777:19;20747:14;:25;20762:9;20747:25;;;;;;;;;;;;;;;;:29;;:50;;;;:::i;:::-;20719:14;:25;20734:9;20719:25;;;;;;;;;;;;;;;:78;;;;20811:30;20823:8;20833:7;20811:11;:30::i;:::-;20874:9;20857:47;;20866:6;20857:47;;;20885:18;20857:47;;;;;;;;;;;;;;;;;;20318:594;;;;;;;;:::o;19696:614::-;19800:19;19821:27;19850:16;19868:26;19896:15;19915:22;19926:10;19915;:22::i;:::-;19799:138;;;;;;;;;;19973:39;20000:11;19973:14;:22;19988:6;19973:22;;;;;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;19948:14;:22;19963:6;19948:22;;;;;;;;;;;;;;;:64;;;;20050:48;20079:18;20050:13;:24;20064:9;20050:24;;;;;;;;;;;;;;;;:28;;:48;;;;:::i;:::-;20023:13;:24;20037:9;20023:24;;;;;;;;;;;;;;;:75;;;;20137:50;20167:19;20137:14;:25;20152:9;20137:25;;;;;;;;;;;;;;;;:29;;:50;;;;:::i;:::-;20109:14;:25;20124:9;20109:25;;;;;;;;;;;;;;;:78;;;;20209:30;20221:8;20231:7;20209:11;:30::i;:::-;20272:9;20255:47;;20264:6;20255:47;;;20283:18;20255:47;;;;;;;;;;;;;;;;;;19696:614;;;;;;;;:::o;19166:522::-;19268:19;19289:27;19318:16;19336:26;19364:15;19383:22;19394:10;19383;:22::i;:::-;19267:138;;;;;;;;;;19441:39;19468:11;19441:14;:22;19456:6;19441:22;;;;;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;19416:14;:22;19431:6;19416:22;;;;;;;;;;;;;;;:64;;;;19519:50;19549:19;19519:14;:25;19534:9;19519:25;;;;;;;;;;;;;;;;:29;;:50;;;;:::i;:::-;19491:14;:25;19506:9;19491:25;;;;;;;;;;;;;;;:78;;;;19587:30;19599:8;19609:7;19587:11;:30::i;:::-;19650:9;19633:47;;19642:6;19633:47;;;19661:18;19633:47;;;;;;;;;;;;;;;;;;19166:522;;;;;;;;:::o;20920:685::-;21026:19;21047:27;21076:16;21094:26;21122:15;21141:22;21152:10;21141;:22::i;:::-;21025:138;;;;;;;;;;21198:37;21224:10;21198:13;:21;21212:6;21198:21;;;;;;;;;;;;;;;;:25;;:37;;;;:::i;:::-;21174:13;:21;21188:6;21174:21;;;;;;;;;;;;;;;:61;;;;21271:39;21298:11;21271:14;:22;21286:6;21271:22;;;;;;;;;;;;;;;;:26;;:39;;;;:::i;:::-;21246:14;:22;21261:6;21246:22;;;;;;;;;;;;;;;:64;;;;21348:48;21377:18;21348:13;:24;21362:9;21348:24;;;;;;;;;;;;;;;;:28;;:48;;;;:::i;:::-;21321:13;:24;21335:9;21321:24;;;;;;;;;;;;;;;:75;;;;21435:50;21465:19;21435:14;:25;21450:9;21435:25;;;;;;;;;;;;;;;;:29;;:50;;;;:::i;:::-;21407:14;:25;21422:9;21407:25;;;;;;;;;;;;;;;:78;;;;21504:30;21516:8;21526:7;21504:11;:30::i;:::-;21567:9;21550:47;;21559:6;21550:47;;;21578:18;21550:47;;;;;;;;;;;;;;;;;;20920:685;;;;;;;;:::o;23148:679::-;23211:7;23220;23240:19;23262:12;;23240:34;;23285:18;23306:12;;23285:33;;23340:9;23335:346;23359:9;:16;;;;23355:1;:20;23335:346;;;23432:11;23401:14;:28;23416:9;23426:1;23416:12;;;;;;;;;;;;;;;;;;;;;;;;;23401:28;;;;;;;;;;;;;;;;:42;:86;;;;23477:10;23447:13;:27;23461:9;23471:1;23461:12;;;;;;;;;;;;;;;;;;;;;;;;;23447:27;;;;;;;;;;;;;;;;:40;23401:86;23397:127;;;23497:12;;23511;;23489:35;;;;;;;;;23397:127;23553:45;23569:14;:28;23584:9;23594:1;23584:12;;;;;;;;;;;;;;;;;;;;;;;;;23569:28;;;;;;;;;;;;;;;;23553:11;:15;;:45;;;;:::i;:::-;23539:59;;23626:43;23641:13;:27;23655:9;23665:1;23655:12;;;;;;;;;;;;;;;;;;;;;;;;;23641:27;;;;;;;;;;;;;;;;23626:10;:14;;:43;;;;:::i;:::-;23613:56;;23377:3;;;;;;;23335:346;;;;23709:30;23726:12;;23709;;:16;;:30;;;;:::i;:::-;23695:11;:44;23691:85;;;23749:12;;23763;;23741:35;;;;;;;;23691:85;23795:11;23808:10;23787:32;;;;;;23148:679;;;:::o;3446:191::-;3532:7;3564:1;3560;:5;3567:12;3552:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3591:9;3607:1;3603;:5;;;;;;3591:17;;3628:1;3621:8;;;3446:191;;;;;:::o;21613:177::-;21703:26;21720:8;21703:12;;:16;;:26;;;;:::i;:::-;21688:12;:41;;;;21756:26;21774:7;21756:13;;:17;;:26;;;;:::i;:::-;21740:13;:42;;;;21613:177;;:::o

Swarm Source

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