ETH Price: $3,412.77 (+4.74%)

Token

OrdiX (ORDIX)
 

Overview

Max Total Supply

1,000,000,000 ORDIX

Holders

353

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
0 ORDIX

Value
$0.00
0x13feee05c32186fec7a1cd3a845ce4b9017e6c37
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:
OrdiX

Compiler Version
v0.8.23+commit.f704f362

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : OrdiX.sol
/*
    https://ordix.io
    https://docs.ordix.io
    https://twitter.com/OrdiXProtocol
    https://t.me/ordixportal
    https://t.me/OrdiXBot
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.23;

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

contract Ownable {
    error NotOwner();

    address private _owner;

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

    constructor() {
        address msgSender = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    modifier onlyOwner() {
        if (_owner != msg.sender) revert NotOwner();
        _;
    }

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external payable returns (uint256 amountToken, uint256 amountETH, uint256 liquidity);
}

contract OrdiX is IERC20, Ownable {
    error TradingAlreadyOpen();
    error ZeroAddress();
    error ZeroAmount();
    error ZeroValue();
    error ZeroToken();
    error TaxTooHigh();
    error NotSelf();
    error Unauthorized();

    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromLimits;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private bots;
    address payable private _taxWallet;
    uint256 private _firstBlock;

    uint256 private _initialBuyTax = 30;
    uint256 private _initialSellTax = 50;
    uint256 private _finalBuyTax = 15;
    uint256 private _finalSellTax = 20;
    uint256 private _reduceBuyTaxAt = 20;
    uint256 private _reduceSellTaxAt = 25;
    uint256 private _preventSwapBefore = 50;
    uint256 private _buyCount = 0;

    uint8 private constant _DECIMALS = 9;
    uint256 private constant _TOTAL = 1000000000 * 10 ** _DECIMALS;
    string private constant _NAME = unicode"OrdiX";
    string private constant _SYMBOL = unicode"ORDIX";
    uint256 public maxTx = 20000000 * 10 ** _DECIMALS;
    uint256 public maxWallet = 20000000 * 10 ** _DECIMALS;
    uint256 public swapThreshold = 10000000 * 10 ** _DECIMALS;
    uint256 public maxTaxSwap = 10000000 * 10 ** _DECIMALS;

    IUniswapV2Router02 private constant _UNISWAP_V2_ROUTER =
        IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
    address private _uniswapV2Pair;
    bool public lpAdded;
    bool private _inSwap = false;
    bool private _swapEnabled = false;

    event MaxTxAmountUpdated(uint256 maxTx);

    constructor() {
        _taxWallet = payable(msg.sender);
        _balances[msg.sender] = _TOTAL;

        _isExcludedFromLimits[tx.origin] = true;
        _isExcludedFromLimits[address(0)] = true;
        _isExcludedFromLimits[address(0xdead)] = true;
        _isExcludedFromLimits[address(this)] = true;
        _isExcludedFromLimits[address(_UNISWAP_V2_ROUTER)] = true;

        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[tx.origin] = true;

        emit Transfer(address(0), msg.sender, _TOTAL);
    }

    receive() external payable {}

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

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

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

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

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _approve(sender, msg.sender, _allowances[sender][msg.sender] - amount);
        _transfer(sender, recipient, amount);
        return true;
    }

    function _approve(address owner, address spender, uint256 amount) private {
        if (owner == address(0)) revert ZeroAddress();
        if (spender == address(0)) revert ZeroAddress();
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(address from, address to, uint256 amount) private {
        if (from == address(0)) revert ZeroAddress();
        if (to == address(0)) revert ZeroAddress();
        if (amount == 0) revert ZeroAmount();

        require(!bots[from] && !bots[to], "bots");

        if (maxWallet != _TOTAL && !_isExcludedFromLimits[to]) {
            require(balanceOf(to) + amount <= maxWallet, "Exceeds maxWallet");
        }

        if (maxTx != _TOTAL && !_isExcludedFromLimits[from]) {
            require(amount <= maxTx, "Exceeds maxTx");
        }

        uint256 contractTokenBalance = balanceOf(address(this));
        if (
            !_inSwap && contractTokenBalance >= swapThreshold && _swapEnabled && _buyCount > _preventSwapBefore
                && to == _uniswapV2Pair && !_isExcludedFromFee[from]
        ) {
            _swapTokensForEth(_min(amount, _min(contractTokenBalance, maxTaxSwap)));
            uint256 contractETHBalance = address(this).balance;
            if (contractETHBalance > 0) {
                _sendETHToFee(contractETHBalance);
            }
        }

        uint256 taxAmount = 0;
        if (!_inSwap && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            // sell
            if (to == _uniswapV2Pair) {
                taxAmount = (amount * ((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax)) / 100;
            }
            // buy
            else if (from == _uniswapV2Pair) {
                if (_firstBlock + 25 > block.number) {
                    require(!_isContract(to), "contract");
                }
                taxAmount = (amount * ((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax)) / 100;
                ++_buyCount;
            }
        }

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

    function removeLimits() external onlyOwner {
        maxTx = _TOTAL;
        maxWallet = _TOTAL;
        emit MaxTxAmountUpdated(_TOTAL);
    }

    function setBots(address[] memory bots_, bool isBot_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = isBot_;
        }
    }

    function openTrading(uint256 amount) external payable onlyOwner {
        if (lpAdded) revert TradingAlreadyOpen();
        if (msg.value == 0) revert ZeroValue();
        if (amount == 0) revert ZeroToken();
        _transfer(msg.sender, address(this), amount);
        _approve(address(this), address(_UNISWAP_V2_ROUTER), _TOTAL);

        _uniswapV2Pair =
            IUniswapV2Factory(_UNISWAP_V2_ROUTER.factory()).createPair(address(this), _UNISWAP_V2_ROUTER.WETH());
        _isExcludedFromLimits[_uniswapV2Pair] = true;

        _UNISWAP_V2_ROUTER.addLiquidityETH{value: address(this).balance}(
            address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp
        );
        IERC20(_uniswapV2Pair).approve(address(_UNISWAP_V2_ROUTER), type(uint256).max);
        _swapEnabled = true;
        lpAdded = true;
        _firstBlock = block.number;
    }

    function lowerTaxes(uint256 buyTax_, uint256 sellTax_) external onlyOwner {
        if (buyTax_ > _finalBuyTax) { revert TaxTooHigh(); }
        if (sellTax_ > _finalSellTax) { revert TaxTooHigh(); }

        _finalBuyTax = buyTax_;
        _finalSellTax = sellTax_;
    }

    function clearStuck() external {
        (bool success,) = _taxWallet.call{value: address(this).balance}("");
        require(success);
    }

    function clearStuckSelfToken() external {
        if (msg.sender != _taxWallet) { revert Unauthorized(); }
        _transfer(address(this), _taxWallet, balanceOf(address(this)));
    }

    function clearStuckToken(address token) external {
        if (token == address(this)) { revert NotSelf(); }
        IERC20(token).transfer(_taxWallet, IERC20(token).balanceOf(address(this)));
    }

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

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

    function _isContract(address account) private view returns (bool) {
        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

    function _swapTokensForEth(uint256 tokenAmount) private {
        _inSwap = true;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _UNISWAP_V2_ROUTER.WETH();
        _approve(address(this), address(_UNISWAP_V2_ROUTER), tokenAmount);
        _UNISWAP_V2_ROUTER.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount, 0, path, address(this), block.timestamp
        );
        _inSwap = false;
    }

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

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"NotSelf","type":"error"},{"inputs":[],"name":"TaxTooHigh","type":"error"},{"inputs":[],"name":"TradingAlreadyOpen","type":"error"},{"inputs":[],"name":"Unauthorized","type":"error"},{"inputs":[],"name":"ZeroAddress","type":"error"},{"inputs":[],"name":"ZeroAmount","type":"error"},{"inputs":[],"name":"ZeroToken","type":"error"},{"inputs":[],"name":"ZeroValue","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"maxTx","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"clearStuck","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"clearStuckSelfToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"clearStuckToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"a","type":"address"}],"name":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"buyTax_","type":"uint256"},{"internalType":"uint256","name":"sellTax_","type":"uint256"}],"name":"lowerTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"lpAdded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"openTrading","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"},{"internalType":"bool","name":"isBot_","type":"bool"}],"name":"setBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052601e6008556032600955600f600a556014600b556014600c556019600d556032600e555f600f556009600a6200003b9190620006c2565b6301312d006200004c919062000712565b6010556009600a6200005f9190620006c2565b6301312d0062000070919062000712565b6011556009600a620000839190620006c2565b6298968062000093919062000712565b6012556009600a620000a69190620006c2565b62989680620000b6919062000712565b6013555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff021916908315150217905550348015620000f9575f80fd5b505f339050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620001e89190620006c2565b633b9aca00620001f9919062000712565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620005029190620006c2565b633b9aca0062000513919062000712565b6040516200052291906200076d565b60405180910390a362000788565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620005ba5780860481111562000592576200059162000530565b5b6001851615620005a25780820291505b8081029050620005b2856200055d565b945062000572565b94509492505050565b5f82620005d45760019050620006a6565b81620005e3575f9050620006a6565b8160018114620005fc576002811462000607576200063d565b6001915050620006a6565b60ff8411156200061c576200061b62000530565b5b8360020a91508482111562000636576200063562000530565b5b50620006a6565b5060208310610133831016604e8410600b8410161715620006775782820a90508381111562000671576200067062000530565b5b620006a6565b62000686848484600162000569565b92509050818404811115620006a0576200069f62000530565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006ce82620006ad565b9150620006db83620006b6565b92506200070a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005c3565b905092915050565b5f6200071e82620006ad565b91506200072b83620006ad565b92508282026200073b81620006ad565b9150828204841483151762000755576200075462000530565b5b5092915050565b6200076781620006ad565b82525050565b5f602082019050620007825f8301846200075c565b92915050565b6130c080620007965f395ff3fe60806040526004361061014e575f3560e01c8063751039fc116100b5578063a9059cbb1161006e578063a9059cbb14610453578063af8deddb1461048f578063d1633649146104b9578063da2963ed146104d5578063dd62ed3e146104eb578063f8b45b051461052757610155565b8063751039fc146103835780638da5cb5b146103995780638de5c064146103c357806395d89b41146103d95780639be953b3146104035780639c0db5f31461042b57610155565b80633bbac579116101075780633bbac5791461027957806357d0a982146102b557806362997f8c146102dd57806370a0823114610307578063715018a6146103435780637437681e1461035957610155565b80630445b6671461015957806306fdde0314610183578063095ea7b3146101ad57806318160ddd146101e957806323b872dd14610213578063313ce5671461024f57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610551565b60405161017a91906122fc565b60405180910390f35b34801561018e575f80fd5b50610197610557565b6040516101a4919061239f565b60405180910390f35b3480156101b8575f80fd5b506101d360048036038101906101ce9190612454565b610594565b6040516101e091906124ac565b60405180910390f35b3480156101f4575f80fd5b506101fd6105aa565b60405161020a91906122fc565b60405180910390f35b34801561021e575f80fd5b50610239600480360381019061023491906124c5565b6105cd565b60405161024691906124ac565b60405180910390f35b34801561025a575f80fd5b50610263610672565b6040516102709190612530565b60405180910390f35b348015610284575f80fd5b5061029f600480360381019061029a9190612549565b61067a565b6040516102ac91906124ac565b60405180910390f35b3480156102c0575f80fd5b506102db60048036038101906102d69190612574565b6106cc565b005b3480156102e8575f80fd5b506102f16107da565b6040516102fe91906122fc565b60405180910390f35b348015610312575f80fd5b5061032d60048036038101906103289190612549565b6107e0565b60405161033a91906122fc565b60405180910390f35b34801561034e575f80fd5b50610357610826565b005b348015610364575f80fd5b5061036d610964565b60405161037a91906122fc565b60405180910390f35b34801561038e575f80fd5b5061039761096a565b005b3480156103a4575f80fd5b506103ad610a89565b6040516103ba91906125c1565b60405180910390f35b3480156103ce575f80fd5b506103d7610ab0565b005b3480156103e4575f80fd5b506103ed610b45565b6040516103fa919061239f565b60405180910390f35b34801561040e575f80fd5b5061042960048036038101906104249190612549565b610b82565b005b348015610436575f80fd5b50610451600480360381019061044c9190612744565b610cfe565b005b34801561045e575f80fd5b5061047960048036038101906104749190612454565b610e0d565b60405161048691906124ac565b60405180910390f35b34801561049a575f80fd5b506104a3610e23565b6040516104b091906124ac565b60405180910390f35b6104d360048036038101906104ce919061279e565b610e34565b005b3480156104e0575f80fd5b506104e96113a0565b005b3480156104f6575f80fd5b50610511600480360381019061050c91906127c9565b61145c565b60405161051e91906122fc565b60405180910390f35b348015610532575f80fd5b5061053b6114de565b60405161054891906122fc565b60405180910390f35b60125481565b60606040518060400160405280600581526020017f4f72646958000000000000000000000000000000000000000000000000000000815250905090565b5f6105a03384846114e4565b6001905092915050565b5f6009600a6105b99190612963565b633b9aca006105c891906129ad565b905090565b5f61065c84338460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461065791906129ee565b6114e4565b610667848484611695565b600190509392505050565b5f6009905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610750576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5482111561078c576040517faf1ee13400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b548111156107c8576040517faf1ee13400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600a8190555080600b819055505050565b60135481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108aa576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ee576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009600a6109fc9190612963565b633b9aca00610a0b91906129ad565b6010819055506009600a610a1f9190612963565b633b9aca00610a2e91906129ad565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610a639190612963565b633b9aca00610a7291906129ad565b604051610a7f91906122fc565b60405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610af690612a4e565b5f6040518083038185875af1925050503d805f8114610b30576040519150601f19603f3d011682016040523d82523d5f602084013e610b35565b606091505b5050905080610b42575f80fd5b50565b60606040518060400160405280600581526020017f4f52444958000000000000000000000000000000000000000000000000000000815250905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610be7576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c5e91906125c1565b602060405180830381865afa158015610c79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9d9190612a76565b6040518363ffffffff1660e01b8152600401610cba929190612afc565b6020604051808303815f875af1158015610cd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfa9190612b37565b5050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d82576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610e08578160055f858481518110610da457610da3612b62565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610d84565b505050565b5f610e19338484611695565b6001905092915050565b60148054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb8576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60148054906101000a900460ff1615610efd576040517f94215aac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f3403610f36576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103610f6f576040517fad1991f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f7a333083611695565b610fb530737a250d5630b4cf539739df2c5dacb4c659f2488d6009600a610fa19190612963565b633b9aca00610fb091906129ad565b6114e4565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611012573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110369190612ba3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d39190612ba3565b6040518363ffffffff1660e01b81526004016110f0929190612bce565b6020604051808303815f875af115801561110c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111309190612ba3565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611220306107e0565b5f8061122a610a89565b426040518863ffffffff1660e01b815260040161124c96959493929190612c2e565b60606040518083038185885af1158015611268573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061128d9190612c8d565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611320929190612cdd565b6020604051808303815f875af115801561133c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113609190612b37565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff0219169083151502179055504360078190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611426576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61145a3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611455306107e0565b611695565b565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115481565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611549576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ae576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161168891906122fc565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116fa576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361175f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103611798576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611836575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186c90612d4e565b60405180910390fd5b6009600a6118839190612963565b633b9aca0061189291906129ad565b601154141580156118ea575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561194857601154816118fc846107e0565b6119069190612d6c565b1115611947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193e90612de9565b60405180910390fd5b5b6009600a6119569190612963565b633b9aca0061196591906129ad565b601054141580156119bd575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a0857601054811115611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe90612e51565b60405180910390fd5b5b5f611a12306107e0565b9050601460159054906101000a900460ff16158015611a3357506012548110155b8015611a4b5750601460169054906101000a900460ff165b8015611a5a5750600e54600f54115b8015611ab2575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611b05575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b3f57611b27611b2283611b1d8460135461200f565b61200f565b612027565b5f4790505f811115611b3d57611b3c8161226b565b5b505b5f601460159054906101000a900460ff16158015611ba4575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611bf7575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d815760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c85576064600d54600f5411611c6557600954611c69565b600b545b84611c7491906129ad565b611c7e9190612e9c565b9050611d80565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611d7f57436019600754611ce99190612d6c565b1115611d3957611cf8846122d3565b15611d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2f90612f16565b60405180910390fd5b5b6064600c54600f5411611d4e57600854611d52565b600a545b84611d5d91906129ad565b611d679190612e9c565b9050600f5f8154611d7790612f34565b919050819055505b5b5b5f811115611e79578060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dd29190612d6c565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e7091906122fc565b60405180910390a35b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ec291906129ee565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550808360015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f4d9190612d6c565b611f5791906129ee565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386611ff391906129ee565b60405161200091906122fc565b60405180910390a35050505050565b5f81831161201d578261201f565b815b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561205e5761205d6125de565b5b60405190808252806020026020018201604052801561208c5781602001602082028036833780820191505090505b50905030815f815181106120a3576120a2612b62565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561213a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061215e9190612ba3565b8160018151811061217257612171612b62565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121cb30737a250d5630b4cf539739df2c5dacb4c659f2488d846114e4565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612220959493929190613032565b5f604051808303815f87803b158015612237575f80fd5b505af1158015612249573d5f803e3d5ffd5b505050505f601460156101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156122cf573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f819050919050565b6122f6816122e4565b82525050565b5f60208201905061230f5f8301846122ed565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561234c578082015181840152602081019050612331565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61237182612315565b61237b818561231f565b935061238b81856020860161232f565b61239481612357565b840191505092915050565b5f6020820190508181035f8301526123b78184612367565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123f9826123d0565b9050919050565b612409816123ef565b8114612413575f80fd5b50565b5f8135905061242481612400565b92915050565b612433816122e4565b811461243d575f80fd5b50565b5f8135905061244e8161242a565b92915050565b5f806040838503121561246a576124696123c8565b5b5f61247785828601612416565b925050602061248885828601612440565b9150509250929050565b5f8115159050919050565b6124a681612492565b82525050565b5f6020820190506124bf5f83018461249d565b92915050565b5f805f606084860312156124dc576124db6123c8565b5b5f6124e986828701612416565b93505060206124fa86828701612416565b925050604061250b86828701612440565b9150509250925092565b5f60ff82169050919050565b61252a81612515565b82525050565b5f6020820190506125435f830184612521565b92915050565b5f6020828403121561255e5761255d6123c8565b5b5f61256b84828501612416565b91505092915050565b5f806040838503121561258a576125896123c8565b5b5f61259785828601612440565b92505060206125a885828601612440565b9150509250929050565b6125bb816123ef565b82525050565b5f6020820190506125d45f8301846125b2565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61261482612357565b810181811067ffffffffffffffff82111715612633576126326125de565b5b80604052505050565b5f6126456123bf565b9050612651828261260b565b919050565b5f67ffffffffffffffff8211156126705761266f6125de565b5b602082029050602081019050919050565b5f80fd5b5f61269761269284612656565b61263c565b905080838252602082019050602084028301858111156126ba576126b9612681565b5b835b818110156126e357806126cf8882612416565b8452602084019350506020810190506126bc565b5050509392505050565b5f82601f830112612701576127006125da565b5b8135612711848260208601612685565b91505092915050565b61272381612492565b811461272d575f80fd5b50565b5f8135905061273e8161271a565b92915050565b5f806040838503121561275a576127596123c8565b5b5f83013567ffffffffffffffff811115612777576127766123cc565b5b612783858286016126ed565b925050602061279485828601612730565b9150509250929050565b5f602082840312156127b3576127b26123c8565b5b5f6127c084828501612440565b91505092915050565b5f80604083850312156127df576127de6123c8565b5b5f6127ec85828601612416565b92505060206127fd85828601612416565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156128895780860481111561286557612864612807565b5b60018516156128745780820291505b808102905061288285612834565b9450612849565b94509492505050565b5f826128a1576001905061295c565b816128ae575f905061295c565b81600181146128c457600281146128ce576128fd565b600191505061295c565b60ff8411156128e0576128df612807565b5b8360020a9150848211156128f7576128f6612807565b5b5061295c565b5060208310610133831016604e8410600b84101617156129325782820a90508381111561292d5761292c612807565b5b61295c565b61293f8484846001612840565b9250905081840481111561295657612955612807565b5b81810290505b9392505050565b5f61296d826122e4565b915061297883612515565b92506129a57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612892565b905092915050565b5f6129b7826122e4565b91506129c2836122e4565b92508282026129d0816122e4565b915082820484148315176129e7576129e6612807565b5b5092915050565b5f6129f8826122e4565b9150612a03836122e4565b9250828203905081811115612a1b57612a1a612807565b5b92915050565b5f81905092915050565b50565b5f612a395f83612a21565b9150612a4482612a2b565b5f82019050919050565b5f612a5882612a2e565b9150819050919050565b5f81519050612a708161242a565b92915050565b5f60208284031215612a8b57612a8a6123c8565b5b5f612a9884828501612a62565b91505092915050565b5f819050919050565b5f612ac4612abf612aba846123d0565b612aa1565b6123d0565b9050919050565b5f612ad582612aaa565b9050919050565b5f612ae682612acb565b9050919050565b612af681612adc565b82525050565b5f604082019050612b0f5f830185612aed565b612b1c60208301846122ed565b9392505050565b5f81519050612b318161271a565b92915050565b5f60208284031215612b4c57612b4b6123c8565b5b5f612b5984828501612b23565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612b9d81612400565b92915050565b5f60208284031215612bb857612bb76123c8565b5b5f612bc584828501612b8f565b91505092915050565b5f604082019050612be15f8301856125b2565b612bee60208301846125b2565b9392505050565b5f819050919050565b5f612c18612c13612c0e84612bf5565b612aa1565b6122e4565b9050919050565b612c2881612bfe565b82525050565b5f60c082019050612c415f8301896125b2565b612c4e60208301886122ed565b612c5b6040830187612c1f565b612c686060830186612c1f565b612c7560808301856125b2565b612c8260a08301846122ed565b979650505050505050565b5f805f60608486031215612ca457612ca36123c8565b5b5f612cb186828701612a62565b9350506020612cc286828701612a62565b9250506040612cd386828701612a62565b9150509250925092565b5f604082019050612cf05f8301856125b2565b612cfd60208301846122ed565b9392505050565b7f626f7473000000000000000000000000000000000000000000000000000000005f82015250565b5f612d3860048361231f565b9150612d4382612d04565b602082019050919050565b5f6020820190508181035f830152612d6581612d2c565b9050919050565b5f612d76826122e4565b9150612d81836122e4565b9250828201905080821115612d9957612d98612807565b5b92915050565b7f45786365656473206d617857616c6c65740000000000000000000000000000005f82015250565b5f612dd360118361231f565b9150612dde82612d9f565b602082019050919050565b5f6020820190508181035f830152612e0081612dc7565b9050919050565b7f45786365656473206d61785478000000000000000000000000000000000000005f82015250565b5f612e3b600d8361231f565b9150612e4682612e07565b602082019050919050565b5f6020820190508181035f830152612e6881612e2f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ea6826122e4565b9150612eb1836122e4565b925082612ec157612ec0612e6f565b5b828204905092915050565b7f636f6e74726163740000000000000000000000000000000000000000000000005f82015250565b5f612f0060088361231f565b9150612f0b82612ecc565b602082019050919050565b5f6020820190508181035f830152612f2d81612ef4565b9050919050565b5f612f3e826122e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f7057612f6f612807565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612fad816123ef565b82525050565b5f612fbe8383612fa4565b60208301905092915050565b5f602082019050919050565b5f612fe082612f7b565b612fea8185612f85565b9350612ff583612f95565b805f5b8381101561302557815161300c8882612fb3565b975061301783612fca565b925050600181019050612ff8565b5085935050505092915050565b5f60a0820190506130455f8301886122ed565b6130526020830187612c1f565b81810360408301526130648186612fd6565b905061307360608301856125b2565b61308060808301846122ed565b969550505050505056fea264697066735822122046ec6e37daaf185d984750e6c5ac05eedde0286eab86e9a5a4858f290bf80efb64736f6c63430008170033

Deployed Bytecode

0x60806040526004361061014e575f3560e01c8063751039fc116100b5578063a9059cbb1161006e578063a9059cbb14610453578063af8deddb1461048f578063d1633649146104b9578063da2963ed146104d5578063dd62ed3e146104eb578063f8b45b051461052757610155565b8063751039fc146103835780638da5cb5b146103995780638de5c064146103c357806395d89b41146103d95780639be953b3146104035780639c0db5f31461042b57610155565b80633bbac579116101075780633bbac5791461027957806357d0a982146102b557806362997f8c146102dd57806370a0823114610307578063715018a6146103435780637437681e1461035957610155565b80630445b6671461015957806306fdde0314610183578063095ea7b3146101ad57806318160ddd146101e957806323b872dd14610213578063313ce5671461024f57610155565b3661015557005b5f80fd5b348015610164575f80fd5b5061016d610551565b60405161017a91906122fc565b60405180910390f35b34801561018e575f80fd5b50610197610557565b6040516101a4919061239f565b60405180910390f35b3480156101b8575f80fd5b506101d360048036038101906101ce9190612454565b610594565b6040516101e091906124ac565b60405180910390f35b3480156101f4575f80fd5b506101fd6105aa565b60405161020a91906122fc565b60405180910390f35b34801561021e575f80fd5b50610239600480360381019061023491906124c5565b6105cd565b60405161024691906124ac565b60405180910390f35b34801561025a575f80fd5b50610263610672565b6040516102709190612530565b60405180910390f35b348015610284575f80fd5b5061029f600480360381019061029a9190612549565b61067a565b6040516102ac91906124ac565b60405180910390f35b3480156102c0575f80fd5b506102db60048036038101906102d69190612574565b6106cc565b005b3480156102e8575f80fd5b506102f16107da565b6040516102fe91906122fc565b60405180910390f35b348015610312575f80fd5b5061032d60048036038101906103289190612549565b6107e0565b60405161033a91906122fc565b60405180910390f35b34801561034e575f80fd5b50610357610826565b005b348015610364575f80fd5b5061036d610964565b60405161037a91906122fc565b60405180910390f35b34801561038e575f80fd5b5061039761096a565b005b3480156103a4575f80fd5b506103ad610a89565b6040516103ba91906125c1565b60405180910390f35b3480156103ce575f80fd5b506103d7610ab0565b005b3480156103e4575f80fd5b506103ed610b45565b6040516103fa919061239f565b60405180910390f35b34801561040e575f80fd5b5061042960048036038101906104249190612549565b610b82565b005b348015610436575f80fd5b50610451600480360381019061044c9190612744565b610cfe565b005b34801561045e575f80fd5b5061047960048036038101906104749190612454565b610e0d565b60405161048691906124ac565b60405180910390f35b34801561049a575f80fd5b506104a3610e23565b6040516104b091906124ac565b60405180910390f35b6104d360048036038101906104ce919061279e565b610e34565b005b3480156104e0575f80fd5b506104e96113a0565b005b3480156104f6575f80fd5b50610511600480360381019061050c91906127c9565b61145c565b60405161051e91906122fc565b60405180910390f35b348015610532575f80fd5b5061053b6114de565b60405161054891906122fc565b60405180910390f35b60125481565b60606040518060400160405280600581526020017f4f72646958000000000000000000000000000000000000000000000000000000815250905090565b5f6105a03384846114e4565b6001905092915050565b5f6009600a6105b99190612963565b633b9aca006105c891906129ad565b905090565b5f61065c84338460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461065791906129ee565b6114e4565b610667848484611695565b600190509392505050565b5f6009905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610750576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a5482111561078c576040517faf1ee13400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b548111156107c8576040517faf1ee13400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600a8190555080600b819055505050565b60135481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108aa576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109ee576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009600a6109fc9190612963565b633b9aca00610a0b91906129ad565b6010819055506009600a610a1f9190612963565b633b9aca00610a2e91906129ad565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610a639190612963565b633b9aca00610a7291906129ad565b604051610a7f91906122fc565b60405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610af690612a4e565b5f6040518083038185875af1925050503d805f8114610b30576040519150601f19603f3d011682016040523d82523d5f602084013e610b35565b606091505b5050905080610b42575f80fd5b50565b60606040518060400160405280600581526020017f4f52444958000000000000000000000000000000000000000000000000000000815250905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610be7576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610c5e91906125c1565b602060405180830381865afa158015610c79573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610c9d9190612a76565b6040518363ffffffff1660e01b8152600401610cba929190612afc565b6020604051808303815f875af1158015610cd6573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cfa9190612b37565b5050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d82576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610e08578160055f858481518110610da457610da3612b62565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610d84565b505050565b5f610e19338484611695565b6001905092915050565b60148054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610eb8576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60148054906101000a900460ff1615610efd576040517f94215aac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f3403610f36576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103610f6f576040517fad1991f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f7a333083611695565b610fb530737a250d5630b4cf539739df2c5dacb4c659f2488d6009600a610fa19190612963565b633b9aca00610fb091906129ad565b6114e4565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015611012573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110369190612ba3565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156110af573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906110d39190612ba3565b6040518363ffffffff1660e01b81526004016110f0929190612bce565b6020604051808303815f875af115801561110c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111309190612ba3565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d7194730611220306107e0565b5f8061122a610a89565b426040518863ffffffff1660e01b815260040161124c96959493929190612c2e565b60606040518083038185885af1158015611268573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061128d9190612c8d565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611320929190612cdd565b6020604051808303815f875af115801561133c573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113609190612b37565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff0219169083151502179055504360078190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611426576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61145a3060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16611455306107e0565b611695565b565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115481565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611549576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115ae576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161168891906122fc565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116fa576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361175f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103611798576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611836575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611875576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161186c90612d4e565b60405180910390fd5b6009600a6118839190612963565b633b9aca0061189291906129ad565b601154141580156118ea575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561194857601154816118fc846107e0565b6119069190612d6c565b1115611947576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193e90612de9565b60405180910390fd5b5b6009600a6119569190612963565b633b9aca0061196591906129ad565b601054141580156119bd575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611a0857601054811115611a07576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119fe90612e51565b60405180910390fd5b5b5f611a12306107e0565b9050601460159054906101000a900460ff16158015611a3357506012548110155b8015611a4b5750601460169054906101000a900460ff165b8015611a5a5750600e54600f54115b8015611ab2575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611b05575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611b3f57611b27611b2283611b1d8460135461200f565b61200f565b612027565b5f4790505f811115611b3d57611b3c8161226b565b5b505b5f601460159054906101000a900460ff16158015611ba4575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611bf7575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d815760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611c85576064600d54600f5411611c6557600954611c69565b600b545b84611c7491906129ad565b611c7e9190612e9c565b9050611d80565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611d7f57436019600754611ce99190612d6c565b1115611d3957611cf8846122d3565b15611d38576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2f90612f16565b60405180910390fd5b5b6064600c54600f5411611d4e57600854611d52565b600a545b84611d5d91906129ad565b611d679190612e9c565b9050600f5f8154611d7790612f34565b919050819055505b5b5b5f811115611e79578060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611dd29190612d6c565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e7091906122fc565b60405180910390a35b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611ec291906129ee565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550808360015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054611f4d9190612d6c565b611f5791906129ee565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8386611ff391906129ee565b60405161200091906122fc565b60405180910390a35050505050565b5f81831161201d578261201f565b815b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff81111561205e5761205d6125de565b5b60405190808252806020026020018201604052801561208c5781602001602082028036833780820191505090505b50905030815f815181106120a3576120a2612b62565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561213a573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061215e9190612ba3565b8160018151811061217257612171612b62565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506121cb30737a250d5630b4cf539739df2c5dacb4c659f2488d846114e4565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b8152600401612220959493929190613032565b5f604051808303815f87803b158015612237575f80fd5b505af1158015612249573d5f803e3d5ffd5b505050505f601460156101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f193505050501580156122cf573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f819050919050565b6122f6816122e4565b82525050565b5f60208201905061230f5f8301846122ed565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561234c578082015181840152602081019050612331565b5f8484015250505050565b5f601f19601f8301169050919050565b5f61237182612315565b61237b818561231f565b935061238b81856020860161232f565b61239481612357565b840191505092915050565b5f6020820190508181035f8301526123b78184612367565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123f9826123d0565b9050919050565b612409816123ef565b8114612413575f80fd5b50565b5f8135905061242481612400565b92915050565b612433816122e4565b811461243d575f80fd5b50565b5f8135905061244e8161242a565b92915050565b5f806040838503121561246a576124696123c8565b5b5f61247785828601612416565b925050602061248885828601612440565b9150509250929050565b5f8115159050919050565b6124a681612492565b82525050565b5f6020820190506124bf5f83018461249d565b92915050565b5f805f606084860312156124dc576124db6123c8565b5b5f6124e986828701612416565b93505060206124fa86828701612416565b925050604061250b86828701612440565b9150509250925092565b5f60ff82169050919050565b61252a81612515565b82525050565b5f6020820190506125435f830184612521565b92915050565b5f6020828403121561255e5761255d6123c8565b5b5f61256b84828501612416565b91505092915050565b5f806040838503121561258a576125896123c8565b5b5f61259785828601612440565b92505060206125a885828601612440565b9150509250929050565b6125bb816123ef565b82525050565b5f6020820190506125d45f8301846125b2565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b61261482612357565b810181811067ffffffffffffffff82111715612633576126326125de565b5b80604052505050565b5f6126456123bf565b9050612651828261260b565b919050565b5f67ffffffffffffffff8211156126705761266f6125de565b5b602082029050602081019050919050565b5f80fd5b5f61269761269284612656565b61263c565b905080838252602082019050602084028301858111156126ba576126b9612681565b5b835b818110156126e357806126cf8882612416565b8452602084019350506020810190506126bc565b5050509392505050565b5f82601f830112612701576127006125da565b5b8135612711848260208601612685565b91505092915050565b61272381612492565b811461272d575f80fd5b50565b5f8135905061273e8161271a565b92915050565b5f806040838503121561275a576127596123c8565b5b5f83013567ffffffffffffffff811115612777576127766123cc565b5b612783858286016126ed565b925050602061279485828601612730565b9150509250929050565b5f602082840312156127b3576127b26123c8565b5b5f6127c084828501612440565b91505092915050565b5f80604083850312156127df576127de6123c8565b5b5f6127ec85828601612416565b92505060206127fd85828601612416565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156128895780860481111561286557612864612807565b5b60018516156128745780820291505b808102905061288285612834565b9450612849565b94509492505050565b5f826128a1576001905061295c565b816128ae575f905061295c565b81600181146128c457600281146128ce576128fd565b600191505061295c565b60ff8411156128e0576128df612807565b5b8360020a9150848211156128f7576128f6612807565b5b5061295c565b5060208310610133831016604e8410600b84101617156129325782820a90508381111561292d5761292c612807565b5b61295c565b61293f8484846001612840565b9250905081840481111561295657612955612807565b5b81810290505b9392505050565b5f61296d826122e4565b915061297883612515565b92506129a57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612892565b905092915050565b5f6129b7826122e4565b91506129c2836122e4565b92508282026129d0816122e4565b915082820484148315176129e7576129e6612807565b5b5092915050565b5f6129f8826122e4565b9150612a03836122e4565b9250828203905081811115612a1b57612a1a612807565b5b92915050565b5f81905092915050565b50565b5f612a395f83612a21565b9150612a4482612a2b565b5f82019050919050565b5f612a5882612a2e565b9150819050919050565b5f81519050612a708161242a565b92915050565b5f60208284031215612a8b57612a8a6123c8565b5b5f612a9884828501612a62565b91505092915050565b5f819050919050565b5f612ac4612abf612aba846123d0565b612aa1565b6123d0565b9050919050565b5f612ad582612aaa565b9050919050565b5f612ae682612acb565b9050919050565b612af681612adc565b82525050565b5f604082019050612b0f5f830185612aed565b612b1c60208301846122ed565b9392505050565b5f81519050612b318161271a565b92915050565b5f60208284031215612b4c57612b4b6123c8565b5b5f612b5984828501612b23565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f81519050612b9d81612400565b92915050565b5f60208284031215612bb857612bb76123c8565b5b5f612bc584828501612b8f565b91505092915050565b5f604082019050612be15f8301856125b2565b612bee60208301846125b2565b9392505050565b5f819050919050565b5f612c18612c13612c0e84612bf5565b612aa1565b6122e4565b9050919050565b612c2881612bfe565b82525050565b5f60c082019050612c415f8301896125b2565b612c4e60208301886122ed565b612c5b6040830187612c1f565b612c686060830186612c1f565b612c7560808301856125b2565b612c8260a08301846122ed565b979650505050505050565b5f805f60608486031215612ca457612ca36123c8565b5b5f612cb186828701612a62565b9350506020612cc286828701612a62565b9250506040612cd386828701612a62565b9150509250925092565b5f604082019050612cf05f8301856125b2565b612cfd60208301846122ed565b9392505050565b7f626f7473000000000000000000000000000000000000000000000000000000005f82015250565b5f612d3860048361231f565b9150612d4382612d04565b602082019050919050565b5f6020820190508181035f830152612d6581612d2c565b9050919050565b5f612d76826122e4565b9150612d81836122e4565b9250828201905080821115612d9957612d98612807565b5b92915050565b7f45786365656473206d617857616c6c65740000000000000000000000000000005f82015250565b5f612dd360118361231f565b9150612dde82612d9f565b602082019050919050565b5f6020820190508181035f830152612e0081612dc7565b9050919050565b7f45786365656473206d61785478000000000000000000000000000000000000005f82015250565b5f612e3b600d8361231f565b9150612e4682612e07565b602082019050919050565b5f6020820190508181035f830152612e6881612e2f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612ea6826122e4565b9150612eb1836122e4565b925082612ec157612ec0612e6f565b5b828204905092915050565b7f636f6e74726163740000000000000000000000000000000000000000000000005f82015250565b5f612f0060088361231f565b9150612f0b82612ecc565b602082019050919050565b5f6020820190508181035f830152612f2d81612ef4565b9050919050565b5f612f3e826122e4565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612f7057612f6f612807565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612fad816123ef565b82525050565b5f612fbe8383612fa4565b60208301905092915050565b5f602082019050919050565b5f612fe082612f7b565b612fea8185612f85565b9350612ff583612f95565b805f5b8381101561302557815161300c8882612fb3565b975061301783612fca565b925050600181019050612ff8565b5085935050505092915050565b5f60a0820190506130455f8301886122ed565b6130526020830187612c1f565b81810360408301526130648186612fd6565b905061307360608301856125b2565b61308060808301846122ed565b969550505050505056fea264697066735822122046ec6e37daaf185d984750e6c5ac05eedde0286eab86e9a5a4858f290bf80efb64736f6c63430008170033

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.