ETH Price: $2,435.77 (-2.16%)

Token

Decentral Wings (DWINGS)
 

Overview

Max Total Supply

1,000,000,000 DWINGS

Holders

17

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
822,088.653319320544658562 DWINGS

Value
$0.00
0x40fb4d8c881e5dfde25b6f3966ec101029622bbb
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:
DecentralWings

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion
File 1 of 7 : DecentralWings.sol
/*

Discover an innovative take on a timeless classic,
delivering immersive gameplay, crypto incentives,
and exclusive NFT assets. Join us on an odyssey and
capture the excitement of reaping rewards in the
universe of Decentral Wings!

Telegram: https://t.me/decentralwings
Website: https://decentralwings.com
Twitter: https://twitter.com/DecentralWings

*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

import "./IERC20.sol";
import "./SafeMath.sol";
import "./Context.sol";
import "./Ownable.sol";
import "./IUniswapV2Factory.sol";
import "./IUniswapV2Router02.sol";

interface IUniswapV2Pair {
    function sync() external;
}

contract DecentralWings is Context, IERC20, Ownable {
    using SafeMath for uint256;
    IUniswapV2Router02 public router;

    address public pair;

    mapping(address => uint256) private balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;

    string private constant _name = "Decentral Wings";
    string private constant _symbol = "DWINGS";
    uint8 private constant _decimals = 18;

    uint256 private _maxSupply = 1000000000 * 10 ** _decimals;

    uint256 public _maxWalletAmount = 20000000 * 10 ** _decimals;
    uint256 public _maxTransactionAmount = 20000000 * 10 ** _decimals;
    uint256 public _sThreshold = 10000000 * 10 ** _decimals;
    uint256 public _doForceSwap;

    address public liqAddressWallet;
    address public stkAddressContract;
    address public mAddressWallet;
    bool public _isTradingEnabled = false;

    struct BuyFeeStruct {
        uint256 liqPercentage;
        uint256 markPercentage;
    }

    struct SellFeeStruct {
        uint256 liqPercentage;
        uint256 markPercentage;
    }

    BuyFeeStruct public bFeeConfig;
    SellFeeStruct public sFeeConfig;

    uint256 private percentageLiquidityFee;
    uint256 private percentageMarketingFee;

    bool private _isSwapping;

    event SwapAndLiquify(uint256 tokensSwapped, uint256 ethReceived, uint256 tokensIntoLiquidity);

    constructor (address markAddress, address liqAddress) {
        mAddressWallet = markAddress;
        liqAddressWallet = liqAddress;

        balances[_msgSender()] = _maxSupply;

        bFeeConfig.liqPercentage = 2;
        bFeeConfig.markPercentage = 2;

        sFeeConfig.liqPercentage = 2;
        sFeeConfig.markPercentage = 2;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        address _uniPair = IUniswapV2Factory(_uniswapV2Router.factory()).createPair(address(this), _uniswapV2Router.WETH());

        router = _uniswapV2Router;
        pair = _uniPair;

        _isExcludedFromFee[msg.sender] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[address(0x00)] = true;
        _isExcludedFromFee[address(0xdead)] = true;


        emit Transfer(address(0), _msgSender(), _maxSupply);
    }

    function enableTrading() external onlyOwner {
        _isTradingEnabled = true;
    }

    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 view override returns (uint256) {
        return _maxSupply;
    }

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

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

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

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

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

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender] - subtractedValue);
        return true;
    }

    function excludeFromFees(address account, bool excluded) public onlyOwner {
        _isExcludedFromFee[address(account)] = excluded;
    }

    receive() external payable {}

    function dFeesFromBuy(uint256 amount, address from) private returns (uint256) {
        uint256 liquidityFeeToken = amount * bFeeConfig.liqPercentage / 100;
        uint256 marketingFeeTokens = amount * bFeeConfig.markPercentage / 100;

        balances[address(this)] += liquidityFeeToken + marketingFeeTokens;
        emit Transfer(from, address(this), marketingFeeTokens + liquidityFeeToken);
        return (amount - liquidityFeeToken - marketingFeeTokens);
    }

    function dFeesFromSell(uint256 amount, address from) private returns (uint256) {
        uint256 liquidityFeeToken = amount * sFeeConfig.liqPercentage / 100;
        uint256 marketingFeeTokens = amount * sFeeConfig.markPercentage / 100;

        balances[address(this)] += liquidityFeeToken + marketingFeeTokens;
        emit Transfer(from, address(this), marketingFeeTokens + liquidityFeeToken);
        return (amount - liquidityFeeToken - marketingFeeTokens);
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

    function setFeeCfg(uint256 _buyMarketingFee, uint256 _buyLiquidityFee, uint256 _sellMarketingFee, uint256 _sellLiquidityFee) public onlyOwner {
        require(_buyMarketingFee + _buyLiquidityFee < 500 || _sellLiquidityFee + _sellMarketingFee < 500, "Can't change fee higher than 24%");

        bFeeConfig.liqPercentage = _buyLiquidityFee;
        bFeeConfig.markPercentage = _buyMarketingFee;

        sFeeConfig.liqPercentage = _sellLiquidityFee;
        sFeeConfig.markPercentage = _sellMarketingFee;
    }

    function setMaximumTransactionAmt(uint256 _maxTx, uint256 _maxWallet) public onlyOwner {
        require(_maxTx + _maxWallet > _maxSupply / 1000, "Should be bigger than 0,1%");
        _maxTransactionAmount = _maxTx;
        _maxWalletAmount = _maxWallet;
    }

    function setStakingContract(address stakingContract) public onlyOwner {
        stkAddressContract = stakingContract;
    }

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        balances[from] -= amount;
        uint256 transferAmount = amount;

        bool takeFee;

        if (!_isTradingEnabled) {
            require(_isExcludedFromFee[from] || _isExcludedFromFee[to], "Trading is not active.");
        }
        if (!_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
            takeFee = true;
        }

        if (takeFee) {
            if (to != pair) {
                require(amount <= _maxTransactionAmount, "Transfer Amount exceeds the maxTxnsAmount");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Transfer amount exceeds the maxWalletAmount.");
                transferAmount = dFeesFromBuy(amount, to);
            }

            if (from != pair) {
                require(amount <= _maxTransactionAmount, "Transfer Amount exceeds the maxTxnsAmount");
                transferAmount = dFeesFromSell(amount, from);
                _doForceSwap += 1;

                if (balanceOf(address(this)) >= _sThreshold && !_isSwapping) {
                    _isSwapping = true;
                    swapAndAddLiquidity(_sThreshold);
                    _isSwapping = false;
                    _doForceSwap = 0;
                }

                if (_doForceSwap > 5 && !_isSwapping) {
                    _isSwapping = true;
                    swapAndAddLiquidity(balanceOf(address(this)));
                    _isSwapping = false;
                    _doForceSwap = 0;
                }
            }

            if (to != pair && from != pair) {
                require(amount <= _maxTransactionAmount, "Transfer Amount exceeds the maxTxnsAmount");
                require(balanceOf(to) + amount <= _maxWalletAmount, "Transfer amount exceeds the maxWalletAmount.");
            }
        }

        balances[to] += transferAmount;
        emit Transfer(from, to, transferAmount);
    }

    function swapAndAddLiquidity(uint256 amount) private {
        uint256 contractBalance = amount;
        uint256 liquidityTokens = contractBalance * (bFeeConfig.liqPercentage + sFeeConfig.liqPercentage) / (bFeeConfig.markPercentage + bFeeConfig.liqPercentage + sFeeConfig.markPercentage + sFeeConfig.liqPercentage);
        uint256 marketingTokens = contractBalance * (bFeeConfig.markPercentage + sFeeConfig.markPercentage) / (bFeeConfig.markPercentage + bFeeConfig.liqPercentage + sFeeConfig.markPercentage + sFeeConfig.liqPercentage);
        uint256 totalTokensToSwap = liquidityTokens + marketingTokens;

        uint256 tokensForLiquidity = liquidityTokens.div(2);
        uint256 amountToSwapForETH = contractBalance.sub(tokensForLiquidity);
        uint256 initialETHBalance = address(this).balance;
        swapTokensForEth(amountToSwapForETH);
        uint256 ethBalance = address(this).balance.sub(initialETHBalance);

        uint256 ethForLiquidity = ethBalance.mul(liquidityTokens).div(totalTokensToSwap);
        addLiquidity(tokensForLiquidity, ethForLiquidity);
        payable(mAddressWallet).transfer(address(this).balance);
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);

        router.addLiquidityETH{value: ethAmount} (
            address(this),
            tokenAmount,
            0,
            0,
            liqAddressWallet,
            block.timestamp
        );
    }
}

File 2 of 7 : Context.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

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

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

File 3 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

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

File 4 of 7 : IUniswapV2Factory.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

interface IUniswapV2Factory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

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

File 5 of 7 : IUniswapV2Router02.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

interface IUniswapV2Router02 {
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    )
        external payable;

    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
}

File 6 of 7 : Ownable.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

import "./Context.sol";

contract Ownable is Context {
    address private _owner;

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

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

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

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

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

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

File 7 of 7 : SafeMath.sol
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.21;

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"markAddress","type":"address"},{"internalType":"address","name":"liqAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiquidity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_doForceSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_isTradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTransactionAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_sThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"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":[],"name":"bFeeConfig","outputs":[{"internalType":"uint256","name":"liqPercentage","type":"uint256"},{"internalType":"uint256","name":"markPercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"excluded","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqAddressWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mAddressWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sFeeConfig","outputs":[{"internalType":"uint256","name":"liqPercentage","type":"uint256"},{"internalType":"uint256","name":"markPercentage","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_buyMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_buyLiquidityFee","type":"uint256"},{"internalType":"uint256","name":"_sellMarketingFee","type":"uint256"},{"internalType":"uint256","name":"_sellLiquidityFee","type":"uint256"}],"name":"setFeeCfg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_maxTx","type":"uint256"},{"internalType":"uint256","name":"_maxWallet","type":"uint256"}],"name":"setMaximumTransactionAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"stakingContract","type":"address"}],"name":"setStakingContract","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stkAddressContract","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a620004ed565b6200002290633b9aca0062000504565b600655620000336012600a620004ed565b62000043906301312d0062000504565b600755620000546012600a620004ed565b62000064906301312d0062000504565b600855620000756012600a620004ed565b62000084906298968062000504565b600955600d805460ff60a01b19169055348015620000a0575f80fd5b506040516200231338038062002313833981016040819052620000c3916200053a565b5f80546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600d80546001600160a01b038085166001600160a01b031992831617909255600b80549284169290911691909117905560065460035f620001413390565b6001600160a01b0316815260208082019290925260409081015f908120939093556002600e819055600f8190556010819055601155805163c45a015560e01b81529051737a250d5630b4cf539739df2c5dacb4c659f2488d9392849263c45a015592600480830193928290030181865afa158015620001c2573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620001e8919062000570565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000234573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906200025a919062000570565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303815f875af1158015620002a5573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002cb919062000570565b600180546001600160a01b038086166001600160a01b03199283161783556002805491851691909216179055335f90815260056020526040808220805460ff19908116851790915530835290822080548216841790557f05b8ccbb9d4d8fb16ea74ce3c29a41f1b461fbdaff4714a0d9a8eb05499746bc805482168417905561dead9091527f7d509c07f0d4edcc2dd1b53aae68677132eb562dcba78e36381b63ccaf66e6ba805490911690911790559050620003853390565b6001600160a01b03165f6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600654604051620003cc91815260200190565b60405180910390a3505050506200058c565b634e487b7160e01b5f52601160045260245ffd5b600181815b808511156200043257815f1904821115620004165762000416620003de565b808516156200042457918102915b93841c9390800290620003f7565b509250929050565b5f826200044a57506001620004e7565b816200045857505f620004e7565b81600181146200047157600281146200047c576200049c565b6001915050620004e7565b60ff841115620004905762000490620003de565b50506001821b620004e7565b5060208310610133831016604e8410600b8410161715620004c1575081810a620004e7565b620004cd8383620003f2565b805f1904821115620004e357620004e3620003de565b0290505b92915050565b5f620004fd60ff8416836200043a565b9392505050565b8082028115828204841417620004e757620004e7620003de565b80516001600160a01b038116811462000535575f80fd5b919050565b5f80604083850312156200054c575f80fd5b62000557836200051e565b915062000567602084016200051e565b90509250929050565b5f6020828403121562000581575f80fd5b620004fd826200051e565b611d79806200059a5f395ff3fe6080604052600436106101de575f3560e01c80638a8c523c116100fd578063bb7381cf11610092578063d6a2c9e211610062578063d6a2c9e2146105c8578063dd62ed3e146105e7578063f2fde38b1461062b578063f887ea401461064a575f80fd5b8063bb7381cf1461055b578063bce8c71014610570578063c02466681461058a578063c5597f0b146105a9575f80fd5b80639dd373b9116100cd5780639dd373b9146104df578063a457c2d7146104fe578063a8aa1b311461051d578063a9059cbb1461053c575f80fd5b80638a8c523c1461044a5780638da5cb5b1461045e57806395d89b411461047a5780639c83c378146104bf575f80fd5b806352c6430b116101735780636c0a24eb116101435780636c0a24eb146103be57806370a08231146103d3578063715018a61461040757806371a536a81461041b575f80fd5b806352c6430b1461033257806352cd01ae146103475780635342acb41461036657806353e20d7e1461039d575f80fd5b806318160ddd116101ae57806318160ddd146102c557806323b872dd146102d9578063313ce567146102f85780633950935114610313575f80fd5b806304beaeb8146101e957806306fdde0314610211578063095ea7b31461025f57806316710b171461028e575f80fd5b366101e557005b5f80fd5b3480156101f4575f80fd5b506101fe60085481565b6040519081526020015b60405180910390f35b34801561021c575f80fd5b5060408051808201909152600f81527f446563656e7472616c2057696e6773000000000000000000000000000000000060208201525b6040516102089190611a6f565b34801561026a575f80fd5b5061027e610279366004611ad1565b610669565b6040519015158152602001610208565b348015610299575f80fd5b50600b546102ad906001600160a01b031681565b6040516001600160a01b039091168152602001610208565b3480156102d0575f80fd5b506006546101fe565b3480156102e4575f80fd5b5061027e6102f3366004611afb565b61067f565b348015610303575f80fd5b5060405160128152602001610208565b34801561031e575f80fd5b5061027e61032d366004611ad1565b6106cf565b34801561033d575f80fd5b506101fe60095481565b348015610352575f80fd5b50600d546102ad906001600160a01b031681565b348015610371575f80fd5b5061027e610380366004611b39565b6001600160a01b03165f9081526005602052604090205460ff1690565b3480156103a8575f80fd5b506103bc6103b7366004611b54565b610705565b005b3480156103c9575f80fd5b506101fe60075481565b3480156103de575f80fd5b506101fe6103ed366004611b39565b6001600160a01b03165f9081526003602052604090205490565b348015610412575f80fd5b506103bc6107d5565b348015610426575f80fd5b50600e54600f54610435919082565b60408051928352602083019190915201610208565b348015610455575f80fd5b506103bc610883565b348015610469575f80fd5b505f546001600160a01b03166102ad565b348015610485575f80fd5b5060408051808201909152600681527f4457494e475300000000000000000000000000000000000000000000000000006020820152610252565b3480156104ca575f80fd5b50600d5461027e90600160a01b900460ff1681565b3480156104ea575f80fd5b506103bc6104f9366004611b39565b61090c565b348015610509575f80fd5b5061027e610518366004611ad1565b610994565b348015610528575f80fd5b506002546102ad906001600160a01b031681565b348015610547575f80fd5b5061027e610556366004611ad1565b6109ca565b348015610566575f80fd5b506101fe600a5481565b34801561057b575f80fd5b50601054601154610435919082565b348015610595575f80fd5b506103bc6105a4366004611b74565b6109d6565b3480156105b4575f80fd5b50600c546102ad906001600160a01b031681565b3480156105d3575f80fd5b506103bc6105e2366004611baf565b610a59565b3480156105f2575f80fd5b506101fe610601366004611bde565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610636575f80fd5b506103bc610645366004611b39565b610b35565b348015610655575f80fd5b506001546102ad906001600160a01b031681565b5f610675338484610c70565b5060015b92915050565b5f61068b848484610dc7565b6001600160a01b0384165f908152600460209081526040808320338085529252909120546106c59186916106c0908690611c1e565b610c70565b5060019392505050565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916106759185906106c0908690611c31565b5f546001600160a01b031633146107635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6103e86006546107739190611c44565b61077d8284611c31565b116107ca5760405162461bcd60e51b815260206004820152601a60248201527f53686f756c6420626520626967676572207468616e20302c3125000000000000604482015260640161075a565b600891909155600755565b5f546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161075a565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f805473ffffffffffffffffffffffffffffffffffffffff19169055565b5f546001600160a01b031633146108dc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161075a565b600d80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b5f546001600160a01b031633146109655760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161075a565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916106759185906106c0908690611c1e565b5f610675338484610dc7565b5f546001600160a01b03163314610a2f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161075a565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610ab25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161075a565b6101f4610abf8486611c31565b1080610ad557506101f4610ad38383611c31565b105b610b215760405162461bcd60e51b815260206004820181905260248201527f43616e2774206368616e67652066656520686967686572207468616e20323425604482015260640161075a565b600e92909255600f92909255601055601155565b5f546001600160a01b03163314610b8e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161075a565b6001600160a01b038116610c0a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161075a565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001600160a01b038316610ceb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161075a565b6001600160a01b038216610d675760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161075a565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161075a565b6001600160a01b038216610ebf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161075a565b5f8111610f345760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f0000000000000000000000000000000000000000000000606482015260840161075a565b6001600160a01b0383165f9081526003602052604081208054839290610f5b908490611c1e565b9091555050600d5481905f90600160a01b900460ff16610ffe576001600160a01b0385165f9081526005602052604090205460ff1680610fb257506001600160a01b0384165f9081526005602052604090205460ff165b610ffe5760405162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f74206163746976652e00000000000000000000604482015260640161075a565b6001600160a01b0385165f9081526005602052604090205460ff1615801561103e57506001600160a01b0384165f9081526005602052604090205460ff16155b15611047575060015b80156113ce576002546001600160a01b03858116911614611162576008548311156110c65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220416d6f756e74206578636565647320746865206d6178546044820152681e1b9cd05b5bdd5b9d60ba1b606482015260840161075a565b600754836110e8866001600160a01b03165f9081526003602052604090205490565b6110f29190611c31565b11156111555760405162461bcd60e51b815260206004820152602c60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526b30b63632ba20b6b7bab73a1760a11b606482015260840161075a565b61115f8385611450565b91505b6002546001600160a01b038681169116146112aa576008548311156111db5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220416d6f756e74206578636565647320746865206d6178546044820152681e1b9cd05b5bdd5b9d60ba1b606482015260840161075a565b6111e58386611523565b91506001600a5f8282546111f99190611c31565b9091555050600954305f9081526003602052604090205410158015611221575060145460ff16155b1561124e576014805460ff1916600117905560095461123f90611557565b6014805460ff191690555f600a555b6005600a54118015611263575060145460ff16155b156112aa576014805460ff1916600117905561129b611296306001600160a01b03165f9081526003602052604090205490565b611557565b6014805460ff191690555f600a555b6002546001600160a01b038581169116148015906112d657506002546001600160a01b03868116911614155b156113ce5760085483111561133f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220416d6f756e74206578636565647320746865206d6178546044820152681e1b9cd05b5bdd5b9d60ba1b606482015260840161075a565b60075483611361866001600160a01b03165f9081526003602052604090205490565b61136b9190611c31565b11156113ce5760405162461bcd60e51b815260206004820152602c60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526b30b63632ba20b6b7bab73a1760a11b606482015260840161075a565b6001600160a01b0384165f90815260036020526040812080548492906113f5908490611c31565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161144191815260200190565b60405180910390a35050505050565b5f806064600e5f0154856114649190611c63565b61146e9190611c44565b90505f6064600e60010154866114849190611c63565b61148e9190611c44565b905061149a8183611c31565b305f90815260036020526040812080549091906114b8908490611c31565b909155503090506001600160a01b0385167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6114f48585611c31565b60405190815260200160405180910390a3806115108387611c1e565b61151a9190611c1e565b95945050505050565b5f80606460105f0154856115379190611c63565b6115419190611c44565b90505f6064601060010154866114849190611c63565b601054601154600e54600f5484935f93909290916115759190611c31565b61157f9190611c31565b6115899190611c31565b601054600e546115999190611c31565b6115a39084611c63565b6115ad9190611c44565b601054601154600e54600f549394505f936115c89190611c31565b6115d29190611c31565b6115dc9190611c31565b601154600f546115ec9190611c31565b6115f69085611c63565b6116009190611c44565b90505f61160d8284611c31565b90505f61161b8460026116a5565b90505f61162886836116ed565b9050476116348261172e565b5f61163f47836116ed565b90505f61165686611650848b6118b0565b906116a5565b9050611662858261194a565b600d546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611698573d5f803e3d5ffd5b5050505050505050505050565b5f6116e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a14565b9392505050565b5f6116e683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a40565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061176157611761611c7a565b6001600160a01b03928316602091820292909201810191909152600154604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156117d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f59190611c8e565b8160018151811061180857611808611c7a565b6001600160a01b03928316602091820292909201015260015461182e9130911684610c70565b6001546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac9479061187f9085905f90869030904290600401611ca9565b5f604051808303815f87803b158015611896575f80fd5b505af11580156118a8573d5f803e3d5ffd5b505050505050565b5f825f036118bf57505f610679565b5f6118ca8385611c63565b9050826118d78583611c44565b146116e65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f7700000000000000000000000000000000000000000000000000000000000000606482015260840161075a565b6001546119629030906001600160a01b031684610c70565b600154600b546040517ff305d719000000000000000000000000000000000000000000000000000000008152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156119e8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611a0d9190611d18565b5050505050565b5f8183611a345760405162461bcd60e51b815260040161075a9190611a6f565b505f61151a8486611c44565b5f8184841115611a635760405162461bcd60e51b815260040161075a9190611a6f565b505f61151a8486611c1e565b5f6020808352835180828501525f5b81811015611a9a57858101830151858201604001528201611a7e565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611ace575f80fd5b50565b5f8060408385031215611ae2575f80fd5b8235611aed81611aba565b946020939093013593505050565b5f805f60608486031215611b0d575f80fd5b8335611b1881611aba565b92506020840135611b2881611aba565b929592945050506040919091013590565b5f60208284031215611b49575f80fd5b81356116e681611aba565b5f8060408385031215611b65575f80fd5b50508035926020909101359150565b5f8060408385031215611b85575f80fd5b8235611b9081611aba565b915060208301358015158114611ba4575f80fd5b809150509250929050565b5f805f8060808587031215611bc2575f80fd5b5050823594602084013594506040840135936060013592509050565b5f8060408385031215611bef575f80fd5b8235611bfa81611aba565b91506020830135611ba481611aba565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561067957610679611c0a565b8082018082111561067957610679611c0a565b5f82611c5e57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761067957610679611c0a565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611c9e575f80fd5b81516116e681611aba565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611cf75784516001600160a01b031683529383019391830191600101611cd2565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611d2a575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212208da631de7c59a4b633e0c8fb403f7820bbf2770fafcf6aeaa0f448003cc7ea5164736f6c6343000815003300000000000000000000000011ae238c017cd65714c170a05039c12aedc0132900000000000000000000000011ae238c017cd65714c170a05039c12aedc01329

Deployed Bytecode

0x6080604052600436106101de575f3560e01c80638a8c523c116100fd578063bb7381cf11610092578063d6a2c9e211610062578063d6a2c9e2146105c8578063dd62ed3e146105e7578063f2fde38b1461062b578063f887ea401461064a575f80fd5b8063bb7381cf1461055b578063bce8c71014610570578063c02466681461058a578063c5597f0b146105a9575f80fd5b80639dd373b9116100cd5780639dd373b9146104df578063a457c2d7146104fe578063a8aa1b311461051d578063a9059cbb1461053c575f80fd5b80638a8c523c1461044a5780638da5cb5b1461045e57806395d89b411461047a5780639c83c378146104bf575f80fd5b806352c6430b116101735780636c0a24eb116101435780636c0a24eb146103be57806370a08231146103d3578063715018a61461040757806371a536a81461041b575f80fd5b806352c6430b1461033257806352cd01ae146103475780635342acb41461036657806353e20d7e1461039d575f80fd5b806318160ddd116101ae57806318160ddd146102c557806323b872dd146102d9578063313ce567146102f85780633950935114610313575f80fd5b806304beaeb8146101e957806306fdde0314610211578063095ea7b31461025f57806316710b171461028e575f80fd5b366101e557005b5f80fd5b3480156101f4575f80fd5b506101fe60085481565b6040519081526020015b60405180910390f35b34801561021c575f80fd5b5060408051808201909152600f81527f446563656e7472616c2057696e6773000000000000000000000000000000000060208201525b6040516102089190611a6f565b34801561026a575f80fd5b5061027e610279366004611ad1565b610669565b6040519015158152602001610208565b348015610299575f80fd5b50600b546102ad906001600160a01b031681565b6040516001600160a01b039091168152602001610208565b3480156102d0575f80fd5b506006546101fe565b3480156102e4575f80fd5b5061027e6102f3366004611afb565b61067f565b348015610303575f80fd5b5060405160128152602001610208565b34801561031e575f80fd5b5061027e61032d366004611ad1565b6106cf565b34801561033d575f80fd5b506101fe60095481565b348015610352575f80fd5b50600d546102ad906001600160a01b031681565b348015610371575f80fd5b5061027e610380366004611b39565b6001600160a01b03165f9081526005602052604090205460ff1690565b3480156103a8575f80fd5b506103bc6103b7366004611b54565b610705565b005b3480156103c9575f80fd5b506101fe60075481565b3480156103de575f80fd5b506101fe6103ed366004611b39565b6001600160a01b03165f9081526003602052604090205490565b348015610412575f80fd5b506103bc6107d5565b348015610426575f80fd5b50600e54600f54610435919082565b60408051928352602083019190915201610208565b348015610455575f80fd5b506103bc610883565b348015610469575f80fd5b505f546001600160a01b03166102ad565b348015610485575f80fd5b5060408051808201909152600681527f4457494e475300000000000000000000000000000000000000000000000000006020820152610252565b3480156104ca575f80fd5b50600d5461027e90600160a01b900460ff1681565b3480156104ea575f80fd5b506103bc6104f9366004611b39565b61090c565b348015610509575f80fd5b5061027e610518366004611ad1565b610994565b348015610528575f80fd5b506002546102ad906001600160a01b031681565b348015610547575f80fd5b5061027e610556366004611ad1565b6109ca565b348015610566575f80fd5b506101fe600a5481565b34801561057b575f80fd5b50601054601154610435919082565b348015610595575f80fd5b506103bc6105a4366004611b74565b6109d6565b3480156105b4575f80fd5b50600c546102ad906001600160a01b031681565b3480156105d3575f80fd5b506103bc6105e2366004611baf565b610a59565b3480156105f2575f80fd5b506101fe610601366004611bde565b6001600160a01b039182165f90815260046020908152604080832093909416825291909152205490565b348015610636575f80fd5b506103bc610645366004611b39565b610b35565b348015610655575f80fd5b506001546102ad906001600160a01b031681565b5f610675338484610c70565b5060015b92915050565b5f61068b848484610dc7565b6001600160a01b0384165f908152600460209081526040808320338085529252909120546106c59186916106c0908690611c1e565b610c70565b5060019392505050565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916106759185906106c0908690611c31565b5f546001600160a01b031633146107635760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6103e86006546107739190611c44565b61077d8284611c31565b116107ca5760405162461bcd60e51b815260206004820152601a60248201527f53686f756c6420626520626967676572207468616e20302c3125000000000000604482015260640161075a565b600891909155600755565b5f546001600160a01b0316331461082e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161075a565b5f80546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a35f805473ffffffffffffffffffffffffffffffffffffffff19169055565b5f546001600160a01b031633146108dc5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161075a565b600d80547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff16600160a01b179055565b5f546001600160a01b031633146109655760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161075a565b600c805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b335f8181526004602090815260408083206001600160a01b038716845290915281205490916106759185906106c0908690611c1e565b5f610675338484610dc7565b5f546001600160a01b03163314610a2f5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161075a565b6001600160a01b03919091165f908152600560205260409020805460ff1916911515919091179055565b5f546001600160a01b03163314610ab25760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161075a565b6101f4610abf8486611c31565b1080610ad557506101f4610ad38383611c31565b105b610b215760405162461bcd60e51b815260206004820181905260248201527f43616e2774206368616e67652066656520686967686572207468616e20323425604482015260640161075a565b600e92909255600f92909255601055601155565b5f546001600160a01b03163314610b8e5760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015260640161075a565b6001600160a01b038116610c0a5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f6464726573730000000000000000000000000000000000000000000000000000606482015260840161075a565b5f80546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a35f805473ffffffffffffffffffffffffffffffffffffffff19166001600160a01b0392909216919091179055565b6001600160a01b038316610ceb5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f7265737300000000000000000000000000000000000000000000000000000000606482015260840161075a565b6001600160a01b038216610d675760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f7373000000000000000000000000000000000000000000000000000000000000606482015260840161075a565b6001600160a01b038381165f8181526004602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316610e435760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f6472657373000000000000000000000000000000000000000000000000000000606482015260840161075a565b6001600160a01b038216610ebf5760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f6573730000000000000000000000000000000000000000000000000000000000606482015260840161075a565b5f8111610f345760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f0000000000000000000000000000000000000000000000606482015260840161075a565b6001600160a01b0383165f9081526003602052604081208054839290610f5b908490611c1e565b9091555050600d5481905f90600160a01b900460ff16610ffe576001600160a01b0385165f9081526005602052604090205460ff1680610fb257506001600160a01b0384165f9081526005602052604090205460ff165b610ffe5760405162461bcd60e51b815260206004820152601660248201527f54726164696e67206973206e6f74206163746976652e00000000000000000000604482015260640161075a565b6001600160a01b0385165f9081526005602052604090205460ff1615801561103e57506001600160a01b0384165f9081526005602052604090205460ff16155b15611047575060015b80156113ce576002546001600160a01b03858116911614611162576008548311156110c65760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220416d6f756e74206578636565647320746865206d6178546044820152681e1b9cd05b5bdd5b9d60ba1b606482015260840161075a565b600754836110e8866001600160a01b03165f9081526003602052604090205490565b6110f29190611c31565b11156111555760405162461bcd60e51b815260206004820152602c60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526b30b63632ba20b6b7bab73a1760a11b606482015260840161075a565b61115f8385611450565b91505b6002546001600160a01b038681169116146112aa576008548311156111db5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220416d6f756e74206578636565647320746865206d6178546044820152681e1b9cd05b5bdd5b9d60ba1b606482015260840161075a565b6111e58386611523565b91506001600a5f8282546111f99190611c31565b9091555050600954305f9081526003602052604090205410158015611221575060145460ff16155b1561124e576014805460ff1916600117905560095461123f90611557565b6014805460ff191690555f600a555b6005600a54118015611263575060145460ff16155b156112aa576014805460ff1916600117905561129b611296306001600160a01b03165f9081526003602052604090205490565b611557565b6014805460ff191690555f600a555b6002546001600160a01b038581169116148015906112d657506002546001600160a01b03868116911614155b156113ce5760085483111561133f5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220416d6f756e74206578636565647320746865206d6178546044820152681e1b9cd05b5bdd5b9d60ba1b606482015260840161075a565b60075483611361866001600160a01b03165f9081526003602052604090205490565b61136b9190611c31565b11156113ce5760405162461bcd60e51b815260206004820152602c60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785760448201526b30b63632ba20b6b7bab73a1760a11b606482015260840161075a565b6001600160a01b0384165f90815260036020526040812080548492906113f5908490611c31565b92505081905550836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161144191815260200190565b60405180910390a35050505050565b5f806064600e5f0154856114649190611c63565b61146e9190611c44565b90505f6064600e60010154866114849190611c63565b61148e9190611c44565b905061149a8183611c31565b305f90815260036020526040812080549091906114b8908490611c31565b909155503090506001600160a01b0385167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6114f48585611c31565b60405190815260200160405180910390a3806115108387611c1e565b61151a9190611c1e565b95945050505050565b5f80606460105f0154856115379190611c63565b6115419190611c44565b90505f6064601060010154866114849190611c63565b601054601154600e54600f5484935f93909290916115759190611c31565b61157f9190611c31565b6115899190611c31565b601054600e546115999190611c31565b6115a39084611c63565b6115ad9190611c44565b601054601154600e54600f549394505f936115c89190611c31565b6115d29190611c31565b6115dc9190611c31565b601154600f546115ec9190611c31565b6115f69085611c63565b6116009190611c44565b90505f61160d8284611c31565b90505f61161b8460026116a5565b90505f61162886836116ed565b9050476116348261172e565b5f61163f47836116ed565b90505f61165686611650848b6118b0565b906116a5565b9050611662858261194a565b600d546040516001600160a01b03909116904780156108fc02915f818181858888f19350505050158015611698573d5f803e3d5ffd5b5050505050505050505050565b5f6116e683836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a14565b9392505050565b5f6116e683836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611a40565b6040805160028082526060820183525f9260208301908036833701905050905030815f8151811061176157611761611c7a565b6001600160a01b03928316602091820292909201810191909152600154604080517fad5c46480000000000000000000000000000000000000000000000000000000081529051919093169263ad5c46489260048083019391928290030181865afa1580156117d1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906117f59190611c8e565b8160018151811061180857611808611c7a565b6001600160a01b03928316602091820292909201015260015461182e9130911684610c70565b6001546040517f791ac9470000000000000000000000000000000000000000000000000000000081526001600160a01b039091169063791ac9479061187f9085905f90869030904290600401611ca9565b5f604051808303815f87803b158015611896575f80fd5b505af11580156118a8573d5f803e3d5ffd5b505050505050565b5f825f036118bf57505f610679565b5f6118ca8385611c63565b9050826118d78583611c44565b146116e65760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60448201527f7700000000000000000000000000000000000000000000000000000000000000606482015260840161075a565b6001546119629030906001600160a01b031684610c70565b600154600b546040517ff305d719000000000000000000000000000000000000000000000000000000008152306004820152602481018590525f6044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c40160606040518083038185885af11580156119e8573d5f803e3d5ffd5b50505050506040513d601f19601f82011682018060405250810190611a0d9190611d18565b5050505050565b5f8183611a345760405162461bcd60e51b815260040161075a9190611a6f565b505f61151a8486611c44565b5f8184841115611a635760405162461bcd60e51b815260040161075a9190611a6f565b505f61151a8486611c1e565b5f6020808352835180828501525f5b81811015611a9a57858101830151858201604001528201611a7e565b505f604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611ace575f80fd5b50565b5f8060408385031215611ae2575f80fd5b8235611aed81611aba565b946020939093013593505050565b5f805f60608486031215611b0d575f80fd5b8335611b1881611aba565b92506020840135611b2881611aba565b929592945050506040919091013590565b5f60208284031215611b49575f80fd5b81356116e681611aba565b5f8060408385031215611b65575f80fd5b50508035926020909101359150565b5f8060408385031215611b85575f80fd5b8235611b9081611aba565b915060208301358015158114611ba4575f80fd5b809150509250929050565b5f805f8060808587031215611bc2575f80fd5b5050823594602084013594506040840135936060013592509050565b5f8060408385031215611bef575f80fd5b8235611bfa81611aba565b91506020830135611ba481611aba565b634e487b7160e01b5f52601160045260245ffd5b8181038181111561067957610679611c0a565b8082018082111561067957610679611c0a565b5f82611c5e57634e487b7160e01b5f52601260045260245ffd5b500490565b808202811582820484141761067957610679611c0a565b634e487b7160e01b5f52603260045260245ffd5b5f60208284031215611c9e575f80fd5b81516116e681611aba565b5f60a082018783526020878185015260a0604085015281875180845260c08601915082890193505f5b81811015611cf75784516001600160a01b031683529383019391830191600101611cd2565b50506001600160a01b03969096166060850152505050608001529392505050565b5f805f60608486031215611d2a575f80fd5b835192506020840151915060408401519050925092509256fea26469706673582212208da631de7c59a4b633e0c8fb403f7820bbf2770fafcf6aeaa0f448003cc7ea5164736f6c63430008150033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

00000000000000000000000011ae238c017cd65714c170a05039c12aedc0132900000000000000000000000011ae238c017cd65714c170a05039c12aedc01329

-----Decoded View---------------
Arg [0] : markAddress (address): 0x11Ae238C017cd65714c170A05039C12aedc01329
Arg [1] : liqAddress (address): 0x11Ae238C017cd65714c170A05039C12aedc01329

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 00000000000000000000000011ae238c017cd65714c170a05039c12aedc01329
Arg [1] : 00000000000000000000000011ae238c017cd65714c170a05039c12aedc01329


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.