ETH Price: $2,910.46 (-3.95%)
Gas: 1 Gwei

Token

OrdiX (ORDIX)
 

Overview

Max Total Supply

1,000,000,000 ORDIX

Holders

38

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
14,000,000 ORDIX

Value
$0.00
0x53e444a500c7436e75e66555a6d512c34e72ec4e
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 : OrdiXV2.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();
    error SupplyExceeded();

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

    struct Airdrop {
        uint256 amount;
        address addr;
    }

    function airdrop(Airdrop[] calldata arr) external onlyOwner {
        uint256 _totalSupply = totalSupply();
        uint256 _amount = 0;
        for (uint256 i = 0; i < arr.length; i++) {
            _amount += arr[i].amount;
            if (_totalSupply + _amount > _TOTAL) revert SupplyExceeded();
            uint256 _b = _balances[arr[i].addr];
            _balances[arr[i].addr] = _b + arr[i].amount;
        }
    }

    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":"SupplyExceeded","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":[{"components":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"addr","type":"address"}],"internalType":"struct OrdiX.Airdrop[]","name":"arr","type":"tuple[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"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"}]

6080604052601e6008556032600955600f600a556014600b556014600c556019600d556032600e555f600f556009600a6200003b9190620006c2565b6301312d006200004c919062000712565b6010556009600a6200005f9190620006c2565b6301312d0062000070919062000712565b6011556009600a620000839190620006c2565b6298968062000093919062000712565b6012556009600a620000a69190620006c2565b62989680620000b6919062000712565b6013555f601460156101000a81548160ff0219169083151502179055505f601460166101000a81548160ff021916908315150217905550348015620000f9575f80fd5b505f339050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3503360065f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a620001e89190620006c2565b633b9aca00620001f9919062000712565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550600160035f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f8073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160045f3273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a620005029190620006c2565b633b9aca0062000513919062000712565b6040516200052291906200076d565b60405180910390a362000788565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620005ba5780860481111562000592576200059162000530565b5b6001851615620005a25780820291505b8081029050620005b2856200055d565b945062000572565b94509492505050565b5f82620005d45760019050620006a6565b81620005e3575f9050620006a6565b8160018114620005fc576002811462000607576200063d565b6001915050620006a6565b60ff8411156200061c576200061b62000530565b5b8360020a91508482111562000636576200063562000530565b5b50620006a6565b5060208310610133831016604e8410600b8410161715620006775782820a90508381111562000671576200067062000530565b5b620006a6565b62000686848484600162000569565b92509050818404811115620006a0576200069f62000530565b5b81810290505b9392505050565b5f819050919050565b5f60ff82169050919050565b5f620006ce82620006ad565b9150620006db83620006b6565b92506200070a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620005c3565b905092915050565b5f6200071e82620006ad565b91506200072b83620006ad565b92508282026200073b81620006ad565b9150828204841483151762000755576200075462000530565b5b5092915050565b6200076781620006ad565b82525050565b5f602082019050620007825f8301846200075c565b92915050565b6133e080620007965f395ff3fe608060405260043610610169575f3560e01c8063751039fc116100d0578063a9059cbb11610089578063d163364911610063578063d1633649146104fc578063da2963ed14610518578063dd62ed3e1461052e578063f8b45b051461056a57610170565b8063a9059cbb1461046e578063af8deddb146104aa578063baeeeab1146104d457610170565b8063751039fc1461039e5780638da5cb5b146103b45780638de5c064146103de57806395d89b41146103f45780639be953b31461041e5780639c0db5f31461044657610170565b80633bbac579116101225780633bbac5791461029457806357d0a982146102d057806362997f8c146102f857806370a0823114610322578063715018a61461035e5780637437681e1461037457610170565b80630445b6671461017457806306fdde031461019e578063095ea7b3146101c857806318160ddd1461020457806323b872dd1461022e578063313ce5671461026a57610170565b3661017057005b5f80fd5b34801561017f575f80fd5b50610188610594565b6040516101959190612578565b60405180910390f35b3480156101a9575f80fd5b506101b261059a565b6040516101bf919061261b565b60405180910390f35b3480156101d3575f80fd5b506101ee60048036038101906101e991906126d0565b6105d7565b6040516101fb9190612728565b60405180910390f35b34801561020f575f80fd5b506102186105ed565b6040516102259190612578565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f9190612741565b610610565b6040516102619190612728565b60405180910390f35b348015610275575f80fd5b5061027e6106b5565b60405161028b91906127ac565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b591906127c5565b6106bd565b6040516102c79190612728565b60405180910390f35b3480156102db575f80fd5b506102f660048036038101906102f191906127f0565b61070f565b005b348015610303575f80fd5b5061030c61081d565b6040516103199190612578565b60405180910390f35b34801561032d575f80fd5b50610348600480360381019061034391906127c5565b610823565b6040516103559190612578565b60405180910390f35b348015610369575f80fd5b50610372610869565b005b34801561037f575f80fd5b506103886109a7565b6040516103959190612578565b60405180910390f35b3480156103a9575f80fd5b506103b26109ad565b005b3480156103bf575f80fd5b506103c8610acc565b6040516103d5919061283d565b60405180910390f35b3480156103e9575f80fd5b506103f2610af3565b005b3480156103ff575f80fd5b50610408610b88565b604051610415919061261b565b60405180910390f35b348015610429575f80fd5b50610444600480360381019061043f91906127c5565b610bc5565b005b348015610451575f80fd5b5061046c600480360381019061046791906129c0565b610d41565b005b348015610479575f80fd5b50610494600480360381019061048f91906126d0565b610e50565b6040516104a19190612728565b60405180910390f35b3480156104b5575f80fd5b506104be610e66565b6040516104cb9190612728565b60405180910390f35b3480156104df575f80fd5b506104fa60048036038101906104f59190612a73565b610e77565b005b61051660048036038101906105119190612abe565b6110b0565b005b348015610523575f80fd5b5061052c61161c565b005b348015610539575f80fd5b50610554600480360381019061054f9190612ae9565b6116d8565b6040516105619190612578565b60405180910390f35b348015610575575f80fd5b5061057e61175a565b60405161058b9190612578565b60405180910390f35b60125481565b60606040518060400160405280600581526020017f4f72646958000000000000000000000000000000000000000000000000000000815250905090565b5f6105e3338484611760565b6001905092915050565b5f6009600a6105fc9190612c83565b633b9aca0061060b9190612ccd565b905090565b5f61069f84338460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461069a9190612d0e565b611760565b6106aa848484611911565b600190509392505050565b5f6009905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610793576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a548211156107cf576040517faf1ee13400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b5481111561080b576040517faf1ee13400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600a8190555080600b819055505050565b60135481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ed576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009600a610a3f9190612c83565b633b9aca00610a4e9190612ccd565b6010819055506009600a610a629190612c83565b633b9aca00610a719190612ccd565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610aa69190612c83565b633b9aca00610ab59190612ccd565b604051610ac29190612578565b60405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610b3990612d6e565b5f6040518083038185875af1925050503d805f8114610b73576040519150601f19603f3d011682016040523d82523d5f602084013e610b78565b606091505b5050905080610b85575f80fd5b50565b60606040518060400160405280600581526020017f4f52444958000000000000000000000000000000000000000000000000000000815250905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c2a576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ca1919061283d565b602060405180830381865afa158015610cbc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce09190612d96565b6040518363ffffffff1660e01b8152600401610cfd929190612e1c565b6020604051808303815f875af1158015610d19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3d9190612e57565b5050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc5576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610e4b578160055f858481518110610de757610de6612e82565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610dc7565b505050565b5f610e5c338484611911565b6001905092915050565b60148054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efb576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610f046105ed565b90505f805b848490508110156110a957848482818110610f2757610f26612e82565b5b9050604002015f013582610f3b9190612eaf565b91506009600a610f4b9190612c83565b633b9aca00610f5a9190612ccd565b8284610f669190612eaf565b1115610f9e576040517f7d3d824900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f878785818110610fb557610fb4612e82565b5b9050604002016020016020810190610fcd91906127c5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905085858381811061101c5761101b612e82565b5b9050604002015f0135816110309190612eaf565b60015f88888681811061104657611045612e82565b5b905060400201602001602081019061105e91906127c5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508080600101915050610f09565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611134576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60148054906101000a900460ff1615611179576040517f94215aac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f34036111b2576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81036111eb576040517fad1991f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111f6333083611911565b61123130737a250d5630b4cf539739df2c5dacb4c659f2488d6009600a61121d9190612c83565b633b9aca0061122c9190612ccd565b611760565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561128e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b29190612ef6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134f9190612ef6565b6040518363ffffffff1660e01b815260040161136c929190612f21565b6020604051808303815f875af1158015611388573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ac9190612ef6565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719473061149c30610823565b5f806114a6610acc565b426040518863ffffffff1660e01b81526004016114c896959493929190612f81565b60606040518083038185885af11580156114e4573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115099190612fe0565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161159c929190613030565b6020604051808303815f875af11580156115b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115dc9190612e57565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff0219169083151502179055504360078190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116a2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d63060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166116d130610823565b611911565b565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115481565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117c5576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361182a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119049190612578565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611976576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119db576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103611a14576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ab2575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae8906130a1565b60405180910390fd5b6009600a611aff9190612c83565b633b9aca00611b0e9190612ccd565b60115414158015611b66575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611bc45760115481611b7884610823565b611b829190612eaf565b1115611bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bba90613109565b60405180910390fd5b5b6009600a611bd29190612c83565b633b9aca00611be19190612ccd565b60105414158015611c39575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c8457601054811115611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a90613171565b60405180910390fd5b5b5f611c8e30610823565b9050601460159054906101000a900460ff16158015611caf57506012548110155b8015611cc75750601460169054906101000a900460ff165b8015611cd65750600e54600f54115b8015611d2e575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611d81575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611dbb57611da3611d9e83611d998460135461228b565b61228b565b6122a3565b5f4790505f811115611db957611db8816124e7565b5b505b5f601460159054906101000a900460ff16158015611e20575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e73575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ffd5760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f01576064600d54600f5411611ee157600954611ee5565b600b545b84611ef09190612ccd565b611efa91906131bc565b9050611ffc565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611ffb57436019600754611f659190612eaf565b1115611fb557611f748461254f565b15611fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fab90613236565b60405180910390fd5b5b6064600c54600f5411611fca57600854611fce565b600a545b84611fd99190612ccd565b611fe391906131bc565b9050600f5f8154611ff390613254565b919050819055505b5b5b5f8111156120f5578060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461204e9190612eaf565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120ec9190612578565b60405180910390a35b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213e9190612d0e565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550808360015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c99190612eaf565b6121d39190612d0e565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838661226f9190612d0e565b60405161227c9190612578565b60405180910390a35050505050565b5f818311612299578261229b565b815b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156122da576122d961285a565b5b6040519080825280602002602001820160405280156123085781602001602082028036833780820191505090505b50905030815f8151811061231f5761231e612e82565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123da9190612ef6565b816001815181106123ee576123ed612e82565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061244730737a250d5630b4cf539739df2c5dacb4c659f2488d84611760565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161249c959493929190613352565b5f604051808303815f87803b1580156124b3575f80fd5b505af11580156124c5573d5f803e3d5ffd5b505050505f601460156101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561254b573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f819050919050565b61257281612560565b82525050565b5f60208201905061258b5f830184612569565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156125c85780820151818401526020810190506125ad565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6125ed82612591565b6125f7818561259b565b93506126078185602086016125ab565b612610816125d3565b840191505092915050565b5f6020820190508181035f83015261263381846125e3565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126758261264c565b9050919050565b6126858161266b565b811461268f575f80fd5b50565b5f813590506126a08161267c565b92915050565b6126af81612560565b81146126b9575f80fd5b50565b5f813590506126ca816126a6565b92915050565b5f80604083850312156126e6576126e5612644565b5b5f6126f385828601612692565b9250506020612704858286016126bc565b9150509250929050565b5f8115159050919050565b6127228161270e565b82525050565b5f60208201905061273b5f830184612719565b92915050565b5f805f6060848603121561275857612757612644565b5b5f61276586828701612692565b935050602061277686828701612692565b9250506040612787868287016126bc565b9150509250925092565b5f60ff82169050919050565b6127a681612791565b82525050565b5f6020820190506127bf5f83018461279d565b92915050565b5f602082840312156127da576127d9612644565b5b5f6127e784828501612692565b91505092915050565b5f806040838503121561280657612805612644565b5b5f612813858286016126bc565b9250506020612824858286016126bc565b9150509250929050565b6128378161266b565b82525050565b5f6020820190506128505f83018461282e565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612890826125d3565b810181811067ffffffffffffffff821117156128af576128ae61285a565b5b80604052505050565b5f6128c161263b565b90506128cd8282612887565b919050565b5f67ffffffffffffffff8211156128ec576128eb61285a565b5b602082029050602081019050919050565b5f80fd5b5f61291361290e846128d2565b6128b8565b90508083825260208201905060208402830185811115612936576129356128fd565b5b835b8181101561295f578061294b8882612692565b845260208401935050602081019050612938565b5050509392505050565b5f82601f83011261297d5761297c612856565b5b813561298d848260208601612901565b91505092915050565b61299f8161270e565b81146129a9575f80fd5b50565b5f813590506129ba81612996565b92915050565b5f80604083850312156129d6576129d5612644565b5b5f83013567ffffffffffffffff8111156129f3576129f2612648565b5b6129ff85828601612969565b9250506020612a10858286016129ac565b9150509250929050565b5f80fd5b5f8083601f840112612a3357612a32612856565b5b8235905067ffffffffffffffff811115612a5057612a4f612a1a565b5b602083019150836040820283011115612a6c57612a6b6128fd565b5b9250929050565b5f8060208385031215612a8957612a88612644565b5b5f83013567ffffffffffffffff811115612aa657612aa5612648565b5b612ab285828601612a1e565b92509250509250929050565b5f60208284031215612ad357612ad2612644565b5b5f612ae0848285016126bc565b91505092915050565b5f8060408385031215612aff57612afe612644565b5b5f612b0c85828601612692565b9250506020612b1d85828601612692565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612ba957808604811115612b8557612b84612b27565b5b6001851615612b945780820291505b8081029050612ba285612b54565b9450612b69565b94509492505050565b5f82612bc15760019050612c7c565b81612bce575f9050612c7c565b8160018114612be45760028114612bee57612c1d565b6001915050612c7c565b60ff841115612c0057612bff612b27565b5b8360020a915084821115612c1757612c16612b27565b5b50612c7c565b5060208310610133831016604e8410600b8410161715612c525782820a905083811115612c4d57612c4c612b27565b5b612c7c565b612c5f8484846001612b60565b92509050818404811115612c7657612c75612b27565b5b81810290505b9392505050565b5f612c8d82612560565b9150612c9883612791565b9250612cc57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612bb2565b905092915050565b5f612cd782612560565b9150612ce283612560565b9250828202612cf081612560565b91508282048414831517612d0757612d06612b27565b5b5092915050565b5f612d1882612560565b9150612d2383612560565b9250828203905081811115612d3b57612d3a612b27565b5b92915050565b5f81905092915050565b50565b5f612d595f83612d41565b9150612d6482612d4b565b5f82019050919050565b5f612d7882612d4e565b9150819050919050565b5f81519050612d90816126a6565b92915050565b5f60208284031215612dab57612daa612644565b5b5f612db884828501612d82565b91505092915050565b5f819050919050565b5f612de4612ddf612dda8461264c565b612dc1565b61264c565b9050919050565b5f612df582612dca565b9050919050565b5f612e0682612deb565b9050919050565b612e1681612dfc565b82525050565b5f604082019050612e2f5f830185612e0d565b612e3c6020830184612569565b9392505050565b5f81519050612e5181612996565b92915050565b5f60208284031215612e6c57612e6b612644565b5b5f612e7984828501612e43565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612eb982612560565b9150612ec483612560565b9250828201905080821115612edc57612edb612b27565b5b92915050565b5f81519050612ef08161267c565b92915050565b5f60208284031215612f0b57612f0a612644565b5b5f612f1884828501612ee2565b91505092915050565b5f604082019050612f345f83018561282e565b612f41602083018461282e565b9392505050565b5f819050919050565b5f612f6b612f66612f6184612f48565b612dc1565b612560565b9050919050565b612f7b81612f51565b82525050565b5f60c082019050612f945f83018961282e565b612fa16020830188612569565b612fae6040830187612f72565b612fbb6060830186612f72565b612fc8608083018561282e565b612fd560a0830184612569565b979650505050505050565b5f805f60608486031215612ff757612ff6612644565b5b5f61300486828701612d82565b935050602061301586828701612d82565b925050604061302686828701612d82565b9150509250925092565b5f6040820190506130435f83018561282e565b6130506020830184612569565b9392505050565b7f626f7473000000000000000000000000000000000000000000000000000000005f82015250565b5f61308b60048361259b565b915061309682613057565b602082019050919050565b5f6020820190508181035f8301526130b88161307f565b9050919050565b7f45786365656473206d617857616c6c65740000000000000000000000000000005f82015250565b5f6130f360118361259b565b91506130fe826130bf565b602082019050919050565b5f6020820190508181035f830152613120816130e7565b9050919050565b7f45786365656473206d61785478000000000000000000000000000000000000005f82015250565b5f61315b600d8361259b565b915061316682613127565b602082019050919050565b5f6020820190508181035f8301526131888161314f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6131c682612560565b91506131d183612560565b9250826131e1576131e061318f565b5b828204905092915050565b7f636f6e74726163740000000000000000000000000000000000000000000000005f82015250565b5f61322060088361259b565b915061322b826131ec565b602082019050919050565b5f6020820190508181035f83015261324d81613214565b9050919050565b5f61325e82612560565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132905761328f612b27565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6132cd8161266b565b82525050565b5f6132de83836132c4565b60208301905092915050565b5f602082019050919050565b5f6133008261329b565b61330a81856132a5565b9350613315836132b5565b805f5b8381101561334557815161332c88826132d3565b9750613337836132ea565b925050600181019050613318565b5085935050505092915050565b5f60a0820190506133655f830188612569565b6133726020830187612f72565b818103604083015261338481866132f6565b9050613393606083018561282e565b6133a06080830184612569565b969550505050505056fea264697066735822122017485e912f45e5e220aed05c85398c3fd3cdffad2cd3f121ee8c7291bfdd3b0164736f6c63430008170033

Deployed Bytecode

0x608060405260043610610169575f3560e01c8063751039fc116100d0578063a9059cbb11610089578063d163364911610063578063d1633649146104fc578063da2963ed14610518578063dd62ed3e1461052e578063f8b45b051461056a57610170565b8063a9059cbb1461046e578063af8deddb146104aa578063baeeeab1146104d457610170565b8063751039fc1461039e5780638da5cb5b146103b45780638de5c064146103de57806395d89b41146103f45780639be953b31461041e5780639c0db5f31461044657610170565b80633bbac579116101225780633bbac5791461029457806357d0a982146102d057806362997f8c146102f857806370a0823114610322578063715018a61461035e5780637437681e1461037457610170565b80630445b6671461017457806306fdde031461019e578063095ea7b3146101c857806318160ddd1461020457806323b872dd1461022e578063313ce5671461026a57610170565b3661017057005b5f80fd5b34801561017f575f80fd5b50610188610594565b6040516101959190612578565b60405180910390f35b3480156101a9575f80fd5b506101b261059a565b6040516101bf919061261b565b60405180910390f35b3480156101d3575f80fd5b506101ee60048036038101906101e991906126d0565b6105d7565b6040516101fb9190612728565b60405180910390f35b34801561020f575f80fd5b506102186105ed565b6040516102259190612578565b60405180910390f35b348015610239575f80fd5b50610254600480360381019061024f9190612741565b610610565b6040516102619190612728565b60405180910390f35b348015610275575f80fd5b5061027e6106b5565b60405161028b91906127ac565b60405180910390f35b34801561029f575f80fd5b506102ba60048036038101906102b591906127c5565b6106bd565b6040516102c79190612728565b60405180910390f35b3480156102db575f80fd5b506102f660048036038101906102f191906127f0565b61070f565b005b348015610303575f80fd5b5061030c61081d565b6040516103199190612578565b60405180910390f35b34801561032d575f80fd5b50610348600480360381019061034391906127c5565b610823565b6040516103559190612578565b60405180910390f35b348015610369575f80fd5b50610372610869565b005b34801561037f575f80fd5b506103886109a7565b6040516103959190612578565b60405180910390f35b3480156103a9575f80fd5b506103b26109ad565b005b3480156103bf575f80fd5b506103c8610acc565b6040516103d5919061283d565b60405180910390f35b3480156103e9575f80fd5b506103f2610af3565b005b3480156103ff575f80fd5b50610408610b88565b604051610415919061261b565b60405180910390f35b348015610429575f80fd5b50610444600480360381019061043f91906127c5565b610bc5565b005b348015610451575f80fd5b5061046c600480360381019061046791906129c0565b610d41565b005b348015610479575f80fd5b50610494600480360381019061048f91906126d0565b610e50565b6040516104a19190612728565b60405180910390f35b3480156104b5575f80fd5b506104be610e66565b6040516104cb9190612728565b60405180910390f35b3480156104df575f80fd5b506104fa60048036038101906104f59190612a73565b610e77565b005b61051660048036038101906105119190612abe565b6110b0565b005b348015610523575f80fd5b5061052c61161c565b005b348015610539575f80fd5b50610554600480360381019061054f9190612ae9565b6116d8565b6040516105619190612578565b60405180910390f35b348015610575575f80fd5b5061057e61175a565b60405161058b9190612578565b60405180910390f35b60125481565b60606040518060400160405280600581526020017f4f72646958000000000000000000000000000000000000000000000000000000815250905090565b5f6105e3338484611760565b6001905092915050565b5f6009600a6105fc9190612c83565b633b9aca0061060b9190612ccd565b905090565b5f61069f84338460025f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461069a9190612d0e565b611760565b6106aa848484611911565b600190509392505050565b5f6009905090565b5f60055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610793576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600a548211156107cf576040517faf1ee13400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600b5481111561080b576040517faf1ee13400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81600a8190555080600b819055505050565b60135481565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108ed576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60105481565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a31576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6009600a610a3f9190612c83565b633b9aca00610a4e9190612ccd565b6010819055506009600a610a629190612c83565b633b9aca00610a719190612ccd565b6011819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610aa69190612c83565b633b9aca00610ab59190612ccd565b604051610ac29190612578565b60405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1647604051610b3990612d6e565b5f6040518083038185875af1925050503d805f8114610b73576040519150601f19603f3d011682016040523d82523d5f602084013e610b78565b606091505b5050905080610b85575f80fd5b50565b60606040518060400160405280600581526020017f4f52444958000000000000000000000000000000000000000000000000000000815250905090565b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610c2a576040517f29c3b7ee00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401610ca1919061283d565b602060405180830381865afa158015610cbc573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ce09190612d96565b6040518363ffffffff1660e01b8152600401610cfd929190612e1c565b6020604051808303815f875af1158015610d19573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610d3d9190612e57565b5050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610dc5576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5b8251811015610e4b578160055f858481518110610de757610de6612e82565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508080600101915050610dc7565b505050565b5f610e5c338484611911565b6001905092915050565b60148054906101000a900460ff1681565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610efb576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f610f046105ed565b90505f805b848490508110156110a957848482818110610f2757610f26612e82565b5b9050604002015f013582610f3b9190612eaf565b91506009600a610f4b9190612c83565b633b9aca00610f5a9190612ccd565b8284610f669190612eaf565b1115610f9e576040517f7d3d824900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f878785818110610fb557610fb4612e82565b5b9050604002016020016020810190610fcd91906127c5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905085858381811061101c5761101b612e82565b5b9050604002015f0135816110309190612eaf565b60015f88888681811061104657611045612e82565b5b905060400201602001602081019061105e91906127c5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550508080600101915050610f09565b5050505050565b3373ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611134576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60148054906101000a900460ff1615611179576040517f94215aac00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f34036111b2576040517f7c946ed700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f81036111eb576040517fad1991f500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6111f6333083611911565b61123130737a250d5630b4cf539739df2c5dacb4c659f2488d6009600a61121d9190612c83565b633b9aca0061122c9190612ccd565b611760565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801561128e573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906112b29190612ef6565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801561132b573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061134f9190612ef6565b6040518363ffffffff1660e01b815260040161136c929190612f21565b6020604051808303815f875af1158015611388573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906113ac9190612ef6565b60145f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160035f60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663f305d719473061149c30610823565b5f806114a6610acc565b426040518863ffffffff1660e01b81526004016114c896959493929190612f81565b60606040518083038185885af11580156114e4573d5f803e3d5ffd5b50505050506040513d601f19601f820116820180604052508101906115099190612fe0565b50505060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3737a250d5630b4cf539739df2c5dacb4c659f2488d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161159c929190613030565b6020604051808303815f875af11580156115b8573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906115dc9190612e57565b506001601460166101000a81548160ff02191690831515021790555060016014806101000a81548160ff0219169083151502179055504360078190555050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116a2576040517f82b4290000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6116d63060065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166116d130610823565b611911565b565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b60115481565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036117c5576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361182a576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516119049190612578565b60405180910390a3505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611976576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036119db576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103611a14576040517f1f2a200500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16158015611ab2575060055f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b611af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae8906130a1565b60405180910390fd5b6009600a611aff9190612c83565b633b9aca00611b0e9190612ccd565b60115414158015611b66575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611bc45760115481611b7884610823565b611b829190612eaf565b1115611bc3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bba90613109565b60405180910390fd5b5b6009600a611bd29190612c83565b633b9aca00611be19190612ccd565b60105414158015611c39575060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611c8457601054811115611c83576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c7a90613171565b60405180910390fd5b5b5f611c8e30610823565b9050601460159054906101000a900460ff16158015611caf57506012548110155b8015611cc75750601460169054906101000a900460ff165b8015611cd65750600e54600f54115b8015611d2e575060145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611d81575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611dbb57611da3611d9e83611d998460135461228b565b61228b565b6122a3565b5f4790505f811115611db957611db8816124e7565b5b505b5f601460159054906101000a900460ff16158015611e20575060045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b8015611e73575060045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611ffd5760145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f01576064600d54600f5411611ee157600954611ee5565b600b545b84611ef09190612ccd565b611efa91906131bc565b9050611ffc565b60145f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603611ffb57436019600754611f659190612eaf565b1115611fb557611f748461254f565b15611fb4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fab90613236565b60405180910390fd5b5b6064600c54600f5411611fca57600854611fce565b600a545b84611fd99190612ccd565b611fe391906131bc565b9050600f5f8154611ff390613254565b919050819055505b5b5b5f8111156120f5578060015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461204e9190612eaf565b60015f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516120ec9190612578565b60405180910390a35b8260015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461213e9190612d0e565b60015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550808360015f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546121c99190612eaf565b6121d39190612d0e565b60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838661226f9190612d0e565b60405161227c9190612578565b60405180910390a35050505050565b5f818311612299578261229b565b815b905092915050565b6001601460156101000a81548160ff0219169083151502179055505f600267ffffffffffffffff8111156122da576122d961285a565b5b6040519080825280602002602001820160405280156123085781602001602082028036833780820191505090505b50905030815f8151811061231f5761231e612e82565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156123b6573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906123da9190612ef6565b816001815181106123ee576123ed612e82565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061244730737a250d5630b4cf539739df2c5dacb4c659f2488d84611760565b737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947835f8430426040518663ffffffff1660e01b815260040161249c959493929190613352565b5f604051808303815f87803b1580156124b3575f80fd5b505af11580156124c5573d5f803e3d5ffd5b505050505f601460156101000a81548160ff0219169083151502179055505050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f1935050505015801561254b573d5f803e3d5ffd5b5050565b5f80823b90505f8111915050919050565b5f819050919050565b61257281612560565b82525050565b5f60208201905061258b5f830184612569565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156125c85780820151818401526020810190506125ad565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6125ed82612591565b6125f7818561259b565b93506126078185602086016125ab565b612610816125d3565b840191505092915050565b5f6020820190508181035f83015261263381846125e3565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6126758261264c565b9050919050565b6126858161266b565b811461268f575f80fd5b50565b5f813590506126a08161267c565b92915050565b6126af81612560565b81146126b9575f80fd5b50565b5f813590506126ca816126a6565b92915050565b5f80604083850312156126e6576126e5612644565b5b5f6126f385828601612692565b9250506020612704858286016126bc565b9150509250929050565b5f8115159050919050565b6127228161270e565b82525050565b5f60208201905061273b5f830184612719565b92915050565b5f805f6060848603121561275857612757612644565b5b5f61276586828701612692565b935050602061277686828701612692565b9250506040612787868287016126bc565b9150509250925092565b5f60ff82169050919050565b6127a681612791565b82525050565b5f6020820190506127bf5f83018461279d565b92915050565b5f602082840312156127da576127d9612644565b5b5f6127e784828501612692565b91505092915050565b5f806040838503121561280657612805612644565b5b5f612813858286016126bc565b9250506020612824858286016126bc565b9150509250929050565b6128378161266b565b82525050565b5f6020820190506128505f83018461282e565b92915050565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b612890826125d3565b810181811067ffffffffffffffff821117156128af576128ae61285a565b5b80604052505050565b5f6128c161263b565b90506128cd8282612887565b919050565b5f67ffffffffffffffff8211156128ec576128eb61285a565b5b602082029050602081019050919050565b5f80fd5b5f61291361290e846128d2565b6128b8565b90508083825260208201905060208402830185811115612936576129356128fd565b5b835b8181101561295f578061294b8882612692565b845260208401935050602081019050612938565b5050509392505050565b5f82601f83011261297d5761297c612856565b5b813561298d848260208601612901565b91505092915050565b61299f8161270e565b81146129a9575f80fd5b50565b5f813590506129ba81612996565b92915050565b5f80604083850312156129d6576129d5612644565b5b5f83013567ffffffffffffffff8111156129f3576129f2612648565b5b6129ff85828601612969565b9250506020612a10858286016129ac565b9150509250929050565b5f80fd5b5f8083601f840112612a3357612a32612856565b5b8235905067ffffffffffffffff811115612a5057612a4f612a1a565b5b602083019150836040820283011115612a6c57612a6b6128fd565b5b9250929050565b5f8060208385031215612a8957612a88612644565b5b5f83013567ffffffffffffffff811115612aa657612aa5612648565b5b612ab285828601612a1e565b92509250509250929050565b5f60208284031215612ad357612ad2612644565b5b5f612ae0848285016126bc565b91505092915050565b5f8060408385031215612aff57612afe612644565b5b5f612b0c85828601612692565b9250506020612b1d85828601612692565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115612ba957808604811115612b8557612b84612b27565b5b6001851615612b945780820291505b8081029050612ba285612b54565b9450612b69565b94509492505050565b5f82612bc15760019050612c7c565b81612bce575f9050612c7c565b8160018114612be45760028114612bee57612c1d565b6001915050612c7c565b60ff841115612c0057612bff612b27565b5b8360020a915084821115612c1757612c16612b27565b5b50612c7c565b5060208310610133831016604e8410600b8410161715612c525782820a905083811115612c4d57612c4c612b27565b5b612c7c565b612c5f8484846001612b60565b92509050818404811115612c7657612c75612b27565b5b81810290505b9392505050565b5f612c8d82612560565b9150612c9883612791565b9250612cc57fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612bb2565b905092915050565b5f612cd782612560565b9150612ce283612560565b9250828202612cf081612560565b91508282048414831517612d0757612d06612b27565b5b5092915050565b5f612d1882612560565b9150612d2383612560565b9250828203905081811115612d3b57612d3a612b27565b5b92915050565b5f81905092915050565b50565b5f612d595f83612d41565b9150612d6482612d4b565b5f82019050919050565b5f612d7882612d4e565b9150819050919050565b5f81519050612d90816126a6565b92915050565b5f60208284031215612dab57612daa612644565b5b5f612db884828501612d82565b91505092915050565b5f819050919050565b5f612de4612ddf612dda8461264c565b612dc1565b61264c565b9050919050565b5f612df582612dca565b9050919050565b5f612e0682612deb565b9050919050565b612e1681612dfc565b82525050565b5f604082019050612e2f5f830185612e0d565b612e3c6020830184612569565b9392505050565b5f81519050612e5181612996565b92915050565b5f60208284031215612e6c57612e6b612644565b5b5f612e7984828501612e43565b91505092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f612eb982612560565b9150612ec483612560565b9250828201905080821115612edc57612edb612b27565b5b92915050565b5f81519050612ef08161267c565b92915050565b5f60208284031215612f0b57612f0a612644565b5b5f612f1884828501612ee2565b91505092915050565b5f604082019050612f345f83018561282e565b612f41602083018461282e565b9392505050565b5f819050919050565b5f612f6b612f66612f6184612f48565b612dc1565b612560565b9050919050565b612f7b81612f51565b82525050565b5f60c082019050612f945f83018961282e565b612fa16020830188612569565b612fae6040830187612f72565b612fbb6060830186612f72565b612fc8608083018561282e565b612fd560a0830184612569565b979650505050505050565b5f805f60608486031215612ff757612ff6612644565b5b5f61300486828701612d82565b935050602061301586828701612d82565b925050604061302686828701612d82565b9150509250925092565b5f6040820190506130435f83018561282e565b6130506020830184612569565b9392505050565b7f626f7473000000000000000000000000000000000000000000000000000000005f82015250565b5f61308b60048361259b565b915061309682613057565b602082019050919050565b5f6020820190508181035f8301526130b88161307f565b9050919050565b7f45786365656473206d617857616c6c65740000000000000000000000000000005f82015250565b5f6130f360118361259b565b91506130fe826130bf565b602082019050919050565b5f6020820190508181035f830152613120816130e7565b9050919050565b7f45786365656473206d61785478000000000000000000000000000000000000005f82015250565b5f61315b600d8361259b565b915061316682613127565b602082019050919050565b5f6020820190508181035f8301526131888161314f565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6131c682612560565b91506131d183612560565b9250826131e1576131e061318f565b5b828204905092915050565b7f636f6e74726163740000000000000000000000000000000000000000000000005f82015250565b5f61322060088361259b565b915061322b826131ec565b602082019050919050565b5f6020820190508181035f83015261324d81613214565b9050919050565b5f61325e82612560565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036132905761328f612b27565b5b600182019050919050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b6132cd8161266b565b82525050565b5f6132de83836132c4565b60208301905092915050565b5f602082019050919050565b5f6133008261329b565b61330a81856132a5565b9350613315836132b5565b805f5b8381101561334557815161332c88826132d3565b9750613337836132ea565b925050600181019050613318565b5085935050505092915050565b5f60a0820190506133655f830188612569565b6133726020830187612f72565b818103604083015261338481866132f6565b9050613393606083018561282e565b6133a06080830184612569565b969550505050505056fea264697066735822122017485e912f45e5e220aed05c85398c3fd3cdffad2cd3f121ee8c7291bfdd3b0164736f6c63430008170033

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.