ETH Price: $2,300.82 (-2.88%)

Token

Keep Pro (KPP)
 

Overview

Max Total Supply

90,000 KPP

Holders

193

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
2.8 KPP

Value
$0.00
0xeed35d8923d629529fd97a3b30094c6cda22e063
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:
KeepPro

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2020-11-06
*/

// SPDX-License-Identifier: MIT


/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}


/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be 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;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}



/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () internal {
        _owner = msg.sender;
        emit OwnershipTransferred(address(0), msg.sender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == msg.sender, "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        _setOwner(newOwner);
    }

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





/**
 * @title Refundable
 * @dev Base contract that can refund funds(ETH and tokens) by owner.
 */
contract Refundable is Ownable {
    event RefundETH(address indexed payee, uint256 amount);
    event RefundERC20(address indexed payee, address indexed token, uint256 amount);

    function refundETH() public onlyOwner {
        uint256 amount = address(this).balance;
        msg.sender.transfer(amount);
        emit RefundETH(msg.sender, amount);
    }

    function refundERC20(address tokenContract) public onlyOwner {
        IERC20 token = IERC20(tokenContract);
        uint256 amount = token.balanceOf(address(this));
        token.transfer(msg.sender, amount);
        emit RefundERC20(msg.sender, tokenContract, amount);
    }
}






contract SwapSale is Ownable {
    using SafeMath for uint256;

    event Sale(address indexed user, uint256 tokenAmount, uint256 ethAmount);

    uint256 internal _saleBeginTime;
    uint256 internal _saleEndTime;
    uint256 internal _saleRate;
    uint256 internal _saleMaxAmount;
    uint256 internal _soldAmount;

    function saleBeginTime() public view returns (uint256) {
        return _saleBeginTime;
    }

    function saleEndTime() public view returns (uint256) {
        return _saleEndTime;
    }

    function isOnSale() public view returns (bool) {
        return now < _saleEndTime && now >= _saleBeginTime && _soldAmount < _saleMaxAmount;
    }

    function saleRate() public view returns (uint256) {
        return _saleRate;
    }

    function saleMaxAmount() public view returns (uint256) {
        return _saleMaxAmount;
    }

    function soldAmount() public view returns (uint256) {
        return _soldAmount;
    }

    function setSwapSale(
        uint256 beginTime,
        uint256 endTime,
        uint256 rate,
        uint256 maxAmount
    ) public onlyOwner {
        require(beginTime >= now, "Begin time is too early.");
        require(beginTime < endTime, "End time is too early.");
        require(_saleBeginTime == 0 || _saleBeginTime > now, "Can not set swap sale");
        _saleBeginTime = beginTime;
        _saleEndTime = endTime;
        _saleRate = rate;
        _saleMaxAmount = maxAmount;
    }

    function _swapSale() internal {
        require(now >= _saleBeginTime && now < _saleEndTime, "Not within the sale time");
        require(_soldAmount < _saleMaxAmount, "All token has been sold out");

        uint256 amount = _saleRate.mul(msg.value);
        require(_soldAmount.add(amount) <= _saleMaxAmount, "Amount exceed");

        _soldAmount = _soldAmount.add(amount);
        IERC20(address(this)).transfer(msg.sender, amount);

        emit Sale(msg.sender, amount, msg.value);
    }
}






contract LiquidLoan is Ownable {
    using SafeMath for uint256;

    event Borrow(address indexed user, uint256 lptAmount, uint256 ethAmount);
    event Repay(address indexed user, uint256 tokenAmount, uint256 ethAmount);

    address internal _lpToken;
    uint256 internal _loanRate; // = eth/(10000 * lpt)
    mapping(address => uint256) internal _loanLpt;
    mapping(address => uint256) internal _loanEth;

    function lpToken() public view returns (address) {
        return _lpToken;
    }

    function loanRate() public view returns (uint256) {
        return _loanRate;
    }

    function userLoanLpt(address user) public view returns (uint256) {
        return _loanLpt[user];
    }

    function userLoanEth(address user) public view returns (uint256) {
        return _loanEth[user];
    }

    function setLpToken(address lp) public onlyOwner {
        // require(lp != address(0), "zero address is not allowed.");
        _lpToken = lp;
    }

    function setLoanRate(uint256 rate) public onlyOwner {
        _loanRate = rate;
    }

    function _borrowAll(address payable user) internal {
        require(_lpToken != address(0) && _loanRate != 0, "Loan is not ready");
        _borrow(user, IERC20(_lpToken).balanceOf(user));
    }

    function _borrow(address payable user, uint256 lptAmount) internal {
        require(_lpToken != address(0) && _loanRate != 0, "Loan is not ready");
        require(lptAmount > 0, "Can not borrow with 0");
        require(IERC20(_lpToken).transferFrom(user, address(this), lptAmount), "transferFrom failed");
        uint256 ethAmount = lptAmount.mul(_loanRate).div(10000);
        require(ethAmount > 0, "Borrow too little");
        require(ethAmount <= address(this).balance, "Eth pool is not enough");
        _loanEth[user] = _loanEth[user].add(ethAmount);
        _loanLpt[user] = _loanLpt[user].add(lptAmount);
        user.transfer(ethAmount);
        emit Borrow(user, lptAmount, ethAmount);
    }

    function repay(address payable user) internal {
        require(_lpToken != address(0), "Loan is not ready");
        uint256 ethLoan = _loanEth[user];
        require(ethLoan > 0, "No eth to repay");
        uint256 ethAmount = msg.value;
        if (ethAmount > ethLoan) {
            ethAmount = ethLoan;
        }
        uint256 lptAmount = _loanLpt[user].mul(ethAmount).div(ethLoan);
        _loanLpt[user] = _loanLpt[user].sub(lptAmount);
        _loanEth[user] = _loanEth[user].sub(ethAmount);
        IERC20(_lpToken).transfer(user, lptAmount);
        if (msg.value > ethAmount) {
            user.transfer(msg.value.sub(ethAmount));
        }
        emit Repay(user, lptAmount, ethAmount);
    }
}








/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.zeppelin.solutions/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin guidelines: functions revert instead
 * of returning `false` on failure. This behavior is nonetheless conventional
 * and does not conflict with the expectations of ERC20 applications.
 *
 * Additionally, an {Approval} event is emitted on calls to {transferFrom}.
 * This allows applications to reconstruct the allowance for all accounts just
 * by listening to said events. Other implementations of the EIP may not emit
 * these events, as it isn't required by the specification.
 *
 * Finally, the non-standard {decreaseAllowance} and {increaseAllowance}
 * functions have been added to mitigate the well-known issues around setting
 * allowances. See {IERC20-approve}.
 */
contract KeepPro is IERC20, Refundable, SwapSale, LiquidLoan {
    using SafeMath for uint256;

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

    string internal _name;
    string internal _symbol;
    uint8 internal _decimals;
    uint256 internal _totalSupply;

    event Deposit(address indexed user, uint256 amount);

    /**
     * @dev Sets the values for {name} and {symbol}, initializes {decimals} with
     * a default value of 18.
     *
     * All three of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(address banker) public {
        _name = "Keep Pro";
        _symbol = "KPP";
        _decimals = 18;
        _setOwner(banker);
        _mint(banker, 50000 * (10**uint256(_decimals)));
        _mint(address(this), 40000 * (10**uint256(_decimals)));
    }

    receive() external payable {
        if (msg.value == 0) {
            _borrowAll(msg.sender);
            return;
        }
        if (isOnSale()) {
            _swapSale();
        } else {
            repay(msg.sender);
        }
    }

    function borrow(uint256 lptAmount) public {
        _borrow(msg.sender, lptAmount);
    }

    /**
     * @dev Deposit eth for loan
     */
    function deposit() public payable {
        emit Deposit(msg.sender, msg.value);
    }

    /**
     * @dev Returns the name of the token.
     */
    function name() public view returns (string memory) {
        return _name;
    }

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view returns (string memory) {
        return _symbol;
    }

    /**
     * @dev Returns the number of decimals used to get its user representation.
     * For example, if `decimals` equals `2`, a balance of `505` tokens should
     * be displayed to a user as `5,05` (`505 / 10 ** 2`).
     *
     * Tokens usually opt for a value of 18, imitating the relationship between
     * Ether and Wei. This is the value {ERC20} uses, unless {_setupDecimals} is
     * called.
     *
     * NOTE: This information is only used for _display_ purposes: it in
     * no way affects any of the arithmetic of the contract, including
     * {IERC20-balanceOf} and {IERC20-transfer}.
     */
    function decimals() public view returns (uint8) {
        return _decimals;
    }

    /**
     * @dev See {IERC20-totalSupply}.
     */
    function totalSupply() public override view returns (uint256) {
        return _totalSupply;
    }

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public override view returns (uint256) {
        return _balances[account];
    }

    /**
     * @dev See {IERC20-transfer}.
     *
     * Requirements:
     *
     * - `recipient` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    /**
     * @dev See {IERC20-allowance}.
     */
    function allowance(address owner, address spender) public virtual override view returns (uint256) {
        return _allowances[owner][spender];
    }

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    /**
     * @dev See {IERC20-transferFrom}.
     *
     * Emits an {Approval} event indicating the updated allowance. This is not
     * required by the EIP. See the note at the beginning of {ERC20};
     *
     * Requirements:
     * - `sender` and `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     * - the caller must have allowance for ``sender``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender].sub(amount, "Transfer amount exceeds allowance"));
        return true;
    }

    /**
     * @dev Atomically increases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender].add(addedValue));
        return true;
    }

    /**
     * @dev Atomically decreases the allowance granted to `spender` by the caller.
     *
     * This is an alternative to {approve} that can be used as a mitigation for
     * problems described in {IERC20-approve}.
     *
     * Emits an {Approval} event indicating the updated allowance.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     * - `spender` must have allowance for the caller of at least
     * `subtractedValue`.
     */
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(
            msg.sender,
            spender,
            _allowances[msg.sender][spender].sub(subtractedValue, "Decreased allowance below zero")
        );
        return true;
    }

    /**
     * @dev Moves tokens `amount` from `sender` to `recipient`.
     *
     * This is internal function is equivalent to {transfer}, and can be used to
     * e.g. implement automatic token fees, slashing mechanisms, etc.
     *
     * Emits a {Transfer} event.
     *
     * Requirements:
     *
     * - `sender` cannot be the zero address.
     * - `recipient` cannot be the zero address.
     * - `sender` must have a balance of at least `amount`.
     */
    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "Transfer from the zero address");
        require(recipient != address(0), "Transfer to the zero address");

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

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "Approve from the zero address");
        require(spender != address(0), "Approve to the zero address");

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

    /** @dev Creates `amount` tokens and assigns them to `account`, increasing
     * the total supply.
     *
     * Emits a {Transfer} event with `from` set to the zero address.
     *
     * Requirements
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "Mint to the zero address");

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"banker","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":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"lptAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"Borrow","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","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":"payee","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RefundERC20","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"payee","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RefundETH","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"Repay","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"tokenAmount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethAmount","type":"uint256"}],"name":"Sale","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"lptAmount","type":"uint256"}],"name":"borrow","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[],"stateMutability":"payable","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":[],"name":"isOnSale","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"loanRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tokenContract","type":"address"}],"name":"refundERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"refundETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"saleBeginTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleEndTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleMaxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"saleRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rate","type":"uint256"}],"name":"setLoanRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"lp","type":"address"}],"name":"setLpToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"beginTime","type":"uint256"},{"internalType":"uint256","name":"endTime","type":"uint256"},{"internalType":"uint256","name":"rate","type":"uint256"},{"internalType":"uint256","name":"maxAmount","type":"uint256"}],"name":"setSwapSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"soldAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"userLoanEth","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"userLoanLpt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040523480156200001157600080fd5b506040516200228838038062002288833981810160405260208110156200003757600080fd5b5051600080546001600160a01b03191633908117825560405190919060008051602062002268833981519152908290a3604080518082019091526008808252674b6565702050726f60c01b60209092019182526200009891600c9162000311565b506040805180820190915260038082526204b50560ec1b6020909201918252620000c591600d9162000311565b50600e805460ff19166012179055620000de8162000119565b600e54620000f890829060ff16600a0a61c35002620001aa565b600e546200011290309060ff16600a0a619c4002620001aa565b50620003ad565b6001600160a01b038116620001605760405162461bcd60e51b8152600401808060200182810382526026815260200180620022426026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216916000805160206200226883398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b03821662000206576040805162461bcd60e51b815260206004820152601860248201527f4d696e7420746f20746865207a65726f20616464726573730000000000000000604482015290519081900360640190fd5b6200022281600f54620002af60201b620015251790919060201c565b600f556001600160a01b0382166000908152600a60209081526040909120546200025791839062001525620002af821b17901c565b6001600160a01b0383166000818152600a602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b6000828201838110156200030a576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200035457805160ff191683800117855562000384565b8280016001018555821562000384579182015b828111156200038457825182559160200191906001019062000367565b506200039292915062000396565b5090565b5b8082111562000392576000815560010162000397565b611e8580620003bd6000396000f3fe6080604052600436106101dc5760003560e01c8063715018a611610102578063a9059cbb11610095578063ed338ff111610064578063ed338ff1146106db578063f2fde38b146106f0578063fa1a5f5914610723578063fb7420781461073857610214565b8063a9059cbb14610635578063c5ebeaec1461066e578063d0e30db014610698578063dd62ed3e146106a057610214565b806396437ebc116100d157806396437ebc1461056357806399fac0391461058d5780639ee933b5146105c9578063a457c2d7146105fc57610214565b8063715018a61461050f578063890e839f146105245780638da5cb5b1461053957806395d89b411461054e57610214565b80632e5af2e61161017a57806340557cf11161014957806340557cf1146104635780635fcbd285146104785780636e94a629146104a957806370a08231146104dc57610214565b80632e5af2e614610399578063313ce567146103cc578063386fcdab146103f7578063395093511461042a57610214565b806312210e8a116101b657806312210e8a146103175780631498882c1461032c57806318160ddd1461034157806323b872dd1461035657610214565b806306fdde0314610219578063086126d3146102a3578063095ea7b3146102ca57610214565b3661021457346101f4576101ef3361074d565b610212565b6101fc610831565b15610209576101ef61085a565b61021233610a41565b005b600080fd5b34801561022557600080fd5b5061022e610ca7565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610268578181015183820152602001610250565b50505050905090810190601f1680156102955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102af57600080fd5b506102b8610d3d565b60408051918252519081900360200190f35b3480156102d657600080fd5b50610303600480360360408110156102ed57600080fd5b506001600160a01b038135169060200135610d43565b604080519115158252519081900360200190f35b34801561032357600080fd5b50610212610d5a565b34801561033857600080fd5b506102b8610e10565b34801561034d57600080fd5b506102b8610e16565b34801561036257600080fd5b506103036004803603606081101561037957600080fd5b506001600160a01b03813581169160208101359091169060400135610e1c565b3480156103a557600080fd5b506102b8600480360360208110156103bc57600080fd5b50356001600160a01b0316610e85565b3480156103d857600080fd5b506103e1610ea0565b6040805160ff9092168252519081900360200190f35b34801561040357600080fd5b506102b86004803603602081101561041a57600080fd5b50356001600160a01b0316610ea9565b34801561043657600080fd5b506103036004803603604081101561044d57600080fd5b506001600160a01b038135169060200135610ec4565b34801561046f57600080fd5b506102b8610efa565b34801561048457600080fd5b5061048d610f00565b604080516001600160a01b039092168252519081900360200190f35b3480156104b557600080fd5b50610212600480360360208110156104cc57600080fd5b50356001600160a01b0316610f0f565b3480156104e857600080fd5b506102b8600480360360208110156104ff57600080fd5b50356001600160a01b0316611097565b34801561051b57600080fd5b506102126110b2565b34801561053057600080fd5b50610303610831565b34801561054557600080fd5b5061048d611149565b34801561055a57600080fd5b5061022e611158565b34801561056f57600080fd5b506102126004803603602081101561058657600080fd5b50356111b9565b34801561059957600080fd5b50610212600480360360808110156105b057600080fd5b508035906020810135906040810135906060013561120b565b3480156105d557600080fd5b50610212600480360360208110156105ec57600080fd5b50356001600160a01b0316611367565b34801561060857600080fd5b506103036004803603604081101561061f57600080fd5b506001600160a01b0381351690602001356113d6565b34801561064157600080fd5b506103036004803603604081101561065857600080fd5b506001600160a01b038135169060200135611443565b34801561067a57600080fd5b506102126004803603602081101561069157600080fd5b5035611450565b61021261145a565b3480156106ac57600080fd5b506102b8600480360360408110156106c357600080fd5b506001600160a01b0381358116916020013516611492565b3480156106e757600080fd5b506102b86114bd565b3480156106fc57600080fd5b506102126004803603602081101561071357600080fd5b50356001600160a01b03166114c3565b34801561072f57600080fd5b506102b8611519565b34801561074457600080fd5b506102b861151f565b6006546001600160a01b031615801590610768575060075415155b6107ad576040805162461bcd60e51b81526020600482015260116024820152704c6f616e206973206e6f7420726561647960781b604482015290519081900360640190fd5b600654604080516370a0823160e01b81526001600160a01b038085166004830152915161082e93859316916370a08231916024808301926020929190829003018186803b1580156107fd57600080fd5b505afa158015610811573d6000803e3d6000fd5b505050506040513d602081101561082757600080fd5b5051611586565b50565b60006002544210801561084657506001544210155b80156108555750600454600554105b905090565b600154421015801561086d575060025442105b6108be576040805162461bcd60e51b815260206004820152601860248201527f4e6f742077697468696e207468652073616c652074696d650000000000000000604482015290519081900360640190fd5b60045460055410610916576040805162461bcd60e51b815260206004820152601b60248201527f416c6c20746f6b656e20686173206265656e20736f6c64206f75740000000000604482015290519081900360640190fd5b600354600090610926903461189a565b90506004546109408260055461152590919063ffffffff16565b1115610983576040805162461bcd60e51b815260206004820152600d60248201526c105b5bdd5b9d08195e18d95959609a1b604482015290519081900360640190fd5b6005546109909082611525565b6005556040805163a9059cbb60e01b8152336004820152602481018390529051309163a9059cbb9160448083019260209291908290030181600087803b1580156109d957600080fd5b505af11580156109ed573d6000803e3d6000fd5b505050506040513d6020811015610a0357600080fd5b505060408051828152346020820152815133927f0f4a9c70987615d71a1085cae3c6fb0c2855f81a5ec62cb7ee3136d5407e357c928290030190a250565b6006546001600160a01b0316610a92576040805162461bcd60e51b81526020600482015260116024820152704c6f616e206973206e6f7420726561647960781b604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205480610aef576040805162461bcd60e51b815260206004820152600f60248201526e4e6f2065746820746f20726570617960881b604482015290519081900360640190fd5b3481811115610afb5750805b6001600160a01b038316600090815260086020526040812054610b2a908490610b24908561189a565b906118f3565b6001600160a01b038516600090815260086020526040902054909150610b509082611935565b6001600160a01b038516600090815260086020908152604080832093909355600990522054610b7f9083611935565b6001600160a01b03808616600081815260096020908152604080832095909555600654855163a9059cbb60e01b81526004810194909452602484018790529451949093169363a9059cbb936044808501949193918390030190829087803b158015610be957600080fd5b505af1158015610bfd573d6000803e3d6000fd5b505050506040513d6020811015610c1357600080fd5b505034821015610c5e576001600160a01b0384166108fc610c343485611935565b6040518115909202916000818181858888f19350505050158015610c5c573d6000803e3d6000fd5b505b604080518281526020810184905281516001600160a01b038716927f77c6871227e5d2dec8dadd5354f78453203e22e669cd0ec4c19d9a8c5edb31d0928290030190a250505050565b600c8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610d335780601f10610d0857610100808354040283529160200191610d33565b820191906000526020600020905b815481529060010190602001808311610d1657829003601f168201915b5050505050905090565b60075490565b6000610d50338484611977565b5060015b92915050565b6000546001600160a01b03163314610da7576040805162461bcd60e51b81526020600482018190526024820152600080516020611e30833981519152604482015290519081900360640190fd5b6040514790339082156108fc029083906000818181858888f19350505050158015610dd6573d6000803e3d6000fd5b5060408051828152905133917f289360176646a5f99cb4b6300628426dca46b723f40db3c04449d6ed1745a0e7919081900360200190a250565b60045490565b600f5490565b6000610e29848484611a8f565b610e7b8433610e7685604051806060016040528060218152602001611dee602191396001600160a01b038a166000908152600b602090815260408083203384529091529020549190611c2b565b611977565b5060019392505050565b6001600160a01b031660009081526008602052604090205490565b600e5460ff1690565b6001600160a01b031660009081526009602052604090205490565b336000818152600b602090815260408083206001600160a01b03871684529091528120549091610d50918590610e769086611525565b60035490565b6006546001600160a01b031690565b6000546001600160a01b03163314610f5c576040805162461bcd60e51b81526020600482018190526024820152600080516020611e30833981519152604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905182916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015610fa757600080fd5b505afa158015610fbb573d6000803e3d6000fd5b505050506040513d6020811015610fd157600080fd5b50516040805163a9059cbb60e01b81523360048201526024810183905290519192506001600160a01b0384169163a9059cbb916044808201926020929091908290030181600087803b15801561102657600080fd5b505af115801561103a573d6000803e3d6000fd5b505050506040513d602081101561105057600080fd5b50506040805182815290516001600160a01b0385169133917fdbdf8eb487847e4c0f22847f5dac07f2d3690f96f581a6ae4b102769917645a89181900360200190a3505050565b6001600160a01b03166000908152600a602052604090205490565b6000546001600160a01b031633146110ff576040805162461bcd60e51b81526020600482018190526024820152600080516020611e30833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600d8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610d335780601f10610d0857610100808354040283529160200191610d33565b6000546001600160a01b03163314611206576040805162461bcd60e51b81526020600482018190526024820152600080516020611e30833981519152604482015290519081900360640190fd5b600755565b6000546001600160a01b03163314611258576040805162461bcd60e51b81526020600482018190526024820152600080516020611e30833981519152604482015290519081900360640190fd5b428410156112ad576040805162461bcd60e51b815260206004820152601860248201527f426567696e2074696d6520697320746f6f206561726c792e0000000000000000604482015290519081900360640190fd5b8284106112fa576040805162461bcd60e51b815260206004820152601660248201527522b732103a34b6b29034b9903a37b79032b0b9363c9760511b604482015290519081900360640190fd5b600154158061130a575042600154115b611353576040805162461bcd60e51b815260206004820152601560248201527443616e206e6f742073657420737761702073616c6560581b604482015290519081900360640190fd5b600193909355600291909155600355600455565b6000546001600160a01b031633146113b4576040805162461bcd60e51b81526020600482018190526024820152600080516020611e30833981519152604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252601e81527f44656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000602080830191909152336000818152600b83528481206001600160a01b0388168252909252928120549092610d509290918691610e7691908790611c2b565b6000610d50338484611a8f565b61082e3382611586565b60408051348152905133917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a2565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b60025490565b6000546001600160a01b03163314611510576040805162461bcd60e51b81526020600482018190526024820152600080516020611e30833981519152604482015290519081900360640190fd5b61082e81611cc2565b60055490565b60015490565b60008282018381101561157f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6006546001600160a01b0316158015906115a1575060075415155b6115e6576040805162461bcd60e51b81526020600482015260116024820152704c6f616e206973206e6f7420726561647960781b604482015290519081900360640190fd5b60008111611633576040805162461bcd60e51b8152602060048201526015602482015274043616e206e6f7420626f72726f772077697468203605c1b604482015290519081900360640190fd5b600654604080516323b872dd60e01b81526001600160a01b03858116600483015230602483015260448201859052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561168f57600080fd5b505af11580156116a3573d6000803e3d6000fd5b505050506040513d60208110156116b957600080fd5b5051611702576040805162461bcd60e51b81526020600482015260136024820152721d1c985b9cd9995c919c9bdb4819985a5b1959606a1b604482015290519081900360640190fd5b600061171f612710610b246007548561189a90919063ffffffff16565b90506000811161176a576040805162461bcd60e51b8152602060048201526011602482015270426f72726f7720746f6f206c6974746c6560781b604482015290519081900360640190fd5b478111156117b8576040805162461bcd60e51b815260206004820152601660248201527508ae8d040e0deded840d2e640dcdee840cadcdeeaced60531b604482015290519081900360640190fd5b6001600160a01b0383166000908152600960205260409020546117db9082611525565b6001600160a01b03841660009081526009602090815260408083209390935560089052205461180a9083611525565b6001600160a01b038416600081815260086020526040808220939093559151909183156108fc02918491818181858888f19350505050158015611851573d6000803e3d6000fd5b50604080518381526020810183905281516001600160a01b038616927fe1979fe4c35e0cef342fef5668e2c8e7a7e9f5d5d1ca8fee0ac6c427fa4153af928290030190a2505050565b6000826118a957506000610d54565b828202828482816118b657fe5b041461157f5760405162461bcd60e51b8152600401808060200182810382526021815260200180611e0f6021913960400191505060405180910390fd5b600061157f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d62565b600061157f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c2b565b6001600160a01b0383166119d2576040805162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f2061646472657373000000604482015290519081900360640190fd5b6001600160a01b038216611a2d576040805162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f20616464726573730000000000604482015290519081900360640190fd5b6001600160a01b038084166000818152600b6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611aea576040805162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f20616464726573730000604482015290519081900360640190fd5b6001600160a01b038216611b45576040805162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f206164647265737300000000604482015290519081900360640190fd5b604080518082018252601f81527f5472616e7366657220616d6f756e7420657863656564732062616c616e6365006020808301919091526001600160a01b0386166000908152600a9091529190912054611ba0918390611c2b565b6001600160a01b038085166000908152600a60205260408082209390935590841681522054611bcf9082611525565b6001600160a01b038084166000818152600a602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115611cba5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c7f578181015183820152602001611c67565b50505050905090810190601f168015611cac5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038116611d075760405162461bcd60e51b8152600401808060200182810382526026815260200180611dc86026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008183611db15760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611c7f578181015183820152602001611c67565b506000838581611dbd57fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220bceec6bea26b09002203e6dfeb1829f561728b90660eef03884a1bfaf3813db964736f6c634300060c00334f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573738be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0000000000000000000000000a2708b2d3e02ee73fc7817deb6210eace14fd04b

Deployed Bytecode

0x6080604052600436106101dc5760003560e01c8063715018a611610102578063a9059cbb11610095578063ed338ff111610064578063ed338ff1146106db578063f2fde38b146106f0578063fa1a5f5914610723578063fb7420781461073857610214565b8063a9059cbb14610635578063c5ebeaec1461066e578063d0e30db014610698578063dd62ed3e146106a057610214565b806396437ebc116100d157806396437ebc1461056357806399fac0391461058d5780639ee933b5146105c9578063a457c2d7146105fc57610214565b8063715018a61461050f578063890e839f146105245780638da5cb5b1461053957806395d89b411461054e57610214565b80632e5af2e61161017a57806340557cf11161014957806340557cf1146104635780635fcbd285146104785780636e94a629146104a957806370a08231146104dc57610214565b80632e5af2e614610399578063313ce567146103cc578063386fcdab146103f7578063395093511461042a57610214565b806312210e8a116101b657806312210e8a146103175780631498882c1461032c57806318160ddd1461034157806323b872dd1461035657610214565b806306fdde0314610219578063086126d3146102a3578063095ea7b3146102ca57610214565b3661021457346101f4576101ef3361074d565b610212565b6101fc610831565b15610209576101ef61085a565b61021233610a41565b005b600080fd5b34801561022557600080fd5b5061022e610ca7565b6040805160208082528351818301528351919283929083019185019080838360005b83811015610268578181015183820152602001610250565b50505050905090810190601f1680156102955780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156102af57600080fd5b506102b8610d3d565b60408051918252519081900360200190f35b3480156102d657600080fd5b50610303600480360360408110156102ed57600080fd5b506001600160a01b038135169060200135610d43565b604080519115158252519081900360200190f35b34801561032357600080fd5b50610212610d5a565b34801561033857600080fd5b506102b8610e10565b34801561034d57600080fd5b506102b8610e16565b34801561036257600080fd5b506103036004803603606081101561037957600080fd5b506001600160a01b03813581169160208101359091169060400135610e1c565b3480156103a557600080fd5b506102b8600480360360208110156103bc57600080fd5b50356001600160a01b0316610e85565b3480156103d857600080fd5b506103e1610ea0565b6040805160ff9092168252519081900360200190f35b34801561040357600080fd5b506102b86004803603602081101561041a57600080fd5b50356001600160a01b0316610ea9565b34801561043657600080fd5b506103036004803603604081101561044d57600080fd5b506001600160a01b038135169060200135610ec4565b34801561046f57600080fd5b506102b8610efa565b34801561048457600080fd5b5061048d610f00565b604080516001600160a01b039092168252519081900360200190f35b3480156104b557600080fd5b50610212600480360360208110156104cc57600080fd5b50356001600160a01b0316610f0f565b3480156104e857600080fd5b506102b8600480360360208110156104ff57600080fd5b50356001600160a01b0316611097565b34801561051b57600080fd5b506102126110b2565b34801561053057600080fd5b50610303610831565b34801561054557600080fd5b5061048d611149565b34801561055a57600080fd5b5061022e611158565b34801561056f57600080fd5b506102126004803603602081101561058657600080fd5b50356111b9565b34801561059957600080fd5b50610212600480360360808110156105b057600080fd5b508035906020810135906040810135906060013561120b565b3480156105d557600080fd5b50610212600480360360208110156105ec57600080fd5b50356001600160a01b0316611367565b34801561060857600080fd5b506103036004803603604081101561061f57600080fd5b506001600160a01b0381351690602001356113d6565b34801561064157600080fd5b506103036004803603604081101561065857600080fd5b506001600160a01b038135169060200135611443565b34801561067a57600080fd5b506102126004803603602081101561069157600080fd5b5035611450565b61021261145a565b3480156106ac57600080fd5b506102b8600480360360408110156106c357600080fd5b506001600160a01b0381358116916020013516611492565b3480156106e757600080fd5b506102b86114bd565b3480156106fc57600080fd5b506102126004803603602081101561071357600080fd5b50356001600160a01b03166114c3565b34801561072f57600080fd5b506102b8611519565b34801561074457600080fd5b506102b861151f565b6006546001600160a01b031615801590610768575060075415155b6107ad576040805162461bcd60e51b81526020600482015260116024820152704c6f616e206973206e6f7420726561647960781b604482015290519081900360640190fd5b600654604080516370a0823160e01b81526001600160a01b038085166004830152915161082e93859316916370a08231916024808301926020929190829003018186803b1580156107fd57600080fd5b505afa158015610811573d6000803e3d6000fd5b505050506040513d602081101561082757600080fd5b5051611586565b50565b60006002544210801561084657506001544210155b80156108555750600454600554105b905090565b600154421015801561086d575060025442105b6108be576040805162461bcd60e51b815260206004820152601860248201527f4e6f742077697468696e207468652073616c652074696d650000000000000000604482015290519081900360640190fd5b60045460055410610916576040805162461bcd60e51b815260206004820152601b60248201527f416c6c20746f6b656e20686173206265656e20736f6c64206f75740000000000604482015290519081900360640190fd5b600354600090610926903461189a565b90506004546109408260055461152590919063ffffffff16565b1115610983576040805162461bcd60e51b815260206004820152600d60248201526c105b5bdd5b9d08195e18d95959609a1b604482015290519081900360640190fd5b6005546109909082611525565b6005556040805163a9059cbb60e01b8152336004820152602481018390529051309163a9059cbb9160448083019260209291908290030181600087803b1580156109d957600080fd5b505af11580156109ed573d6000803e3d6000fd5b505050506040513d6020811015610a0357600080fd5b505060408051828152346020820152815133927f0f4a9c70987615d71a1085cae3c6fb0c2855f81a5ec62cb7ee3136d5407e357c928290030190a250565b6006546001600160a01b0316610a92576040805162461bcd60e51b81526020600482015260116024820152704c6f616e206973206e6f7420726561647960781b604482015290519081900360640190fd5b6001600160a01b03811660009081526009602052604090205480610aef576040805162461bcd60e51b815260206004820152600f60248201526e4e6f2065746820746f20726570617960881b604482015290519081900360640190fd5b3481811115610afb5750805b6001600160a01b038316600090815260086020526040812054610b2a908490610b24908561189a565b906118f3565b6001600160a01b038516600090815260086020526040902054909150610b509082611935565b6001600160a01b038516600090815260086020908152604080832093909355600990522054610b7f9083611935565b6001600160a01b03808616600081815260096020908152604080832095909555600654855163a9059cbb60e01b81526004810194909452602484018790529451949093169363a9059cbb936044808501949193918390030190829087803b158015610be957600080fd5b505af1158015610bfd573d6000803e3d6000fd5b505050506040513d6020811015610c1357600080fd5b505034821015610c5e576001600160a01b0384166108fc610c343485611935565b6040518115909202916000818181858888f19350505050158015610c5c573d6000803e3d6000fd5b505b604080518281526020810184905281516001600160a01b038716927f77c6871227e5d2dec8dadd5354f78453203e22e669cd0ec4c19d9a8c5edb31d0928290030190a250505050565b600c8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610d335780601f10610d0857610100808354040283529160200191610d33565b820191906000526020600020905b815481529060010190602001808311610d1657829003601f168201915b5050505050905090565b60075490565b6000610d50338484611977565b5060015b92915050565b6000546001600160a01b03163314610da7576040805162461bcd60e51b81526020600482018190526024820152600080516020611e30833981519152604482015290519081900360640190fd5b6040514790339082156108fc029083906000818181858888f19350505050158015610dd6573d6000803e3d6000fd5b5060408051828152905133917f289360176646a5f99cb4b6300628426dca46b723f40db3c04449d6ed1745a0e7919081900360200190a250565b60045490565b600f5490565b6000610e29848484611a8f565b610e7b8433610e7685604051806060016040528060218152602001611dee602191396001600160a01b038a166000908152600b602090815260408083203384529091529020549190611c2b565b611977565b5060019392505050565b6001600160a01b031660009081526008602052604090205490565b600e5460ff1690565b6001600160a01b031660009081526009602052604090205490565b336000818152600b602090815260408083206001600160a01b03871684529091528120549091610d50918590610e769086611525565b60035490565b6006546001600160a01b031690565b6000546001600160a01b03163314610f5c576040805162461bcd60e51b81526020600482018190526024820152600080516020611e30833981519152604482015290519081900360640190fd5b604080516370a0823160e01b8152306004820152905182916000916001600160a01b038416916370a08231916024808301926020929190829003018186803b158015610fa757600080fd5b505afa158015610fbb573d6000803e3d6000fd5b505050506040513d6020811015610fd157600080fd5b50516040805163a9059cbb60e01b81523360048201526024810183905290519192506001600160a01b0384169163a9059cbb916044808201926020929091908290030181600087803b15801561102657600080fd5b505af115801561103a573d6000803e3d6000fd5b505050506040513d602081101561105057600080fd5b50506040805182815290516001600160a01b0385169133917fdbdf8eb487847e4c0f22847f5dac07f2d3690f96f581a6ae4b102769917645a89181900360200190a3505050565b6001600160a01b03166000908152600a602052604090205490565b6000546001600160a01b031633146110ff576040805162461bcd60e51b81526020600482018190526024820152600080516020611e30833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b031690565b600d8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610d335780601f10610d0857610100808354040283529160200191610d33565b6000546001600160a01b03163314611206576040805162461bcd60e51b81526020600482018190526024820152600080516020611e30833981519152604482015290519081900360640190fd5b600755565b6000546001600160a01b03163314611258576040805162461bcd60e51b81526020600482018190526024820152600080516020611e30833981519152604482015290519081900360640190fd5b428410156112ad576040805162461bcd60e51b815260206004820152601860248201527f426567696e2074696d6520697320746f6f206561726c792e0000000000000000604482015290519081900360640190fd5b8284106112fa576040805162461bcd60e51b815260206004820152601660248201527522b732103a34b6b29034b9903a37b79032b0b9363c9760511b604482015290519081900360640190fd5b600154158061130a575042600154115b611353576040805162461bcd60e51b815260206004820152601560248201527443616e206e6f742073657420737761702073616c6560581b604482015290519081900360640190fd5b600193909355600291909155600355600455565b6000546001600160a01b031633146113b4576040805162461bcd60e51b81526020600482018190526024820152600080516020611e30833981519152604482015290519081900360640190fd5b600680546001600160a01b0319166001600160a01b0392909216919091179055565b604080518082018252601e81527f44656372656173656420616c6c6f77616e63652062656c6f77207a65726f0000602080830191909152336000818152600b83528481206001600160a01b0388168252909252928120549092610d509290918691610e7691908790611c2b565b6000610d50338484611a8f565b61082e3382611586565b60408051348152905133917fe1fffcc4923d04b559f4d29a8bfc6cda04eb5b0d3c460751c2402c5c5cc9109c919081900360200190a2565b6001600160a01b039182166000908152600b6020908152604080832093909416825291909152205490565b60025490565b6000546001600160a01b03163314611510576040805162461bcd60e51b81526020600482018190526024820152600080516020611e30833981519152604482015290519081900360640190fd5b61082e81611cc2565b60055490565b60015490565b60008282018381101561157f576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b6006546001600160a01b0316158015906115a1575060075415155b6115e6576040805162461bcd60e51b81526020600482015260116024820152704c6f616e206973206e6f7420726561647960781b604482015290519081900360640190fd5b60008111611633576040805162461bcd60e51b8152602060048201526015602482015274043616e206e6f7420626f72726f772077697468203605c1b604482015290519081900360640190fd5b600654604080516323b872dd60e01b81526001600160a01b03858116600483015230602483015260448201859052915191909216916323b872dd9160648083019260209291908290030181600087803b15801561168f57600080fd5b505af11580156116a3573d6000803e3d6000fd5b505050506040513d60208110156116b957600080fd5b5051611702576040805162461bcd60e51b81526020600482015260136024820152721d1c985b9cd9995c919c9bdb4819985a5b1959606a1b604482015290519081900360640190fd5b600061171f612710610b246007548561189a90919063ffffffff16565b90506000811161176a576040805162461bcd60e51b8152602060048201526011602482015270426f72726f7720746f6f206c6974746c6560781b604482015290519081900360640190fd5b478111156117b8576040805162461bcd60e51b815260206004820152601660248201527508ae8d040e0deded840d2e640dcdee840cadcdeeaced60531b604482015290519081900360640190fd5b6001600160a01b0383166000908152600960205260409020546117db9082611525565b6001600160a01b03841660009081526009602090815260408083209390935560089052205461180a9083611525565b6001600160a01b038416600081815260086020526040808220939093559151909183156108fc02918491818181858888f19350505050158015611851573d6000803e3d6000fd5b50604080518381526020810183905281516001600160a01b038616927fe1979fe4c35e0cef342fef5668e2c8e7a7e9f5d5d1ca8fee0ac6c427fa4153af928290030190a2505050565b6000826118a957506000610d54565b828202828482816118b657fe5b041461157f5760405162461bcd60e51b8152600401808060200182810382526021815260200180611e0f6021913960400191505060405180910390fd5b600061157f83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611d62565b600061157f83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c2b565b6001600160a01b0383166119d2576040805162461bcd60e51b815260206004820152601d60248201527f417070726f76652066726f6d20746865207a65726f2061646472657373000000604482015290519081900360640190fd5b6001600160a01b038216611a2d576040805162461bcd60e51b815260206004820152601b60248201527f417070726f766520746f20746865207a65726f20616464726573730000000000604482015290519081900360640190fd5b6001600160a01b038084166000818152600b6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611aea576040805162461bcd60e51b815260206004820152601e60248201527f5472616e736665722066726f6d20746865207a65726f20616464726573730000604482015290519081900360640190fd5b6001600160a01b038216611b45576040805162461bcd60e51b815260206004820152601c60248201527f5472616e7366657220746f20746865207a65726f206164647265737300000000604482015290519081900360640190fd5b604080518082018252601f81527f5472616e7366657220616d6f756e7420657863656564732062616c616e6365006020808301919091526001600160a01b0386166000908152600a9091529190912054611ba0918390611c2b565b6001600160a01b038085166000908152600a60205260408082209390935590841681522054611bcf9082611525565b6001600160a01b038084166000818152600a602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b60008184841115611cba5760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611c7f578181015183820152602001611c67565b50505050905090810190601f168015611cac5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6001600160a01b038116611d075760405162461bcd60e51b8152600401808060200182810382526026815260200180611dc86026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b60008183611db15760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611c7f578181015183820152602001611c67565b506000838581611dbd57fe5b049594505050505056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f774f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220bceec6bea26b09002203e6dfeb1829f561728b90660eef03884a1bfaf3813db964736f6c634300060c0033

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

000000000000000000000000a2708b2d3e02ee73fc7817deb6210eace14fd04b

-----Decoded View---------------
Arg [0] : banker (address): 0xA2708b2D3e02Ee73fc7817DEb6210EAcE14FD04B

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000a2708b2d3e02ee73fc7817deb6210eace14fd04b


Deployed Bytecode Sourcemap

17058:8415:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18045:9;18041:90;;18076:22;18087:10;18076;:22::i;:::-;18113:7;;18041:90;18145:10;:8;:10::i;:::-;18141:104;;;18172:11;:9;:11::i;18141:104::-;18216:17;18222:10;18216:5;:17::i;:::-;17058:8415;;;;;18569:83;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13622:85;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;20673:167;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20673:167:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;10596:178;;;;;;;;;;;;;:::i;11865:95::-;;;;;;;;;;;;;:::i;19644:100::-;;;;;;;;;;;;;:::i;21314:344::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;21314:344:0;;;;;;;;;;;;;;;;;:::i;13715:105::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13715:105:0;-1:-1:-1;;;;;13715:105:0;;:::i;19496:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13828:105;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13828:105:0;-1:-1:-1;;;;;13828:105:0;;:::i;22067:214::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22067:214:0;;;;;;;;:::i;11772:85::-;;;;;;;;;;;;;:::i;13531:83::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;13531:83:0;;;;;;;;;;;;;;10782:281;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10782:281:0;-1:-1:-1;;;;;10782:281:0;;:::i;19807:119::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;19807:119:0;-1:-1:-1;;;;;19807:119:0;;:::i;9652:148::-;;;;;;;;;;;;;:::i;11616:::-;;;;;;;;;;;;;:::i;9012:79::-;;;;;;;;;;;;;:::i;18771:87::-;;;;;;;;;;;;;:::i;14101:::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14101:87:0;;:::i;12065:509::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;12065:509:0;;;;;;;;;;;;;;;;;:::i;13941:152::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13941:152:0;-1:-1:-1;;;;;13941:152:0;;:::i;22784:308::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;22784:308:0;;;;;;;;:::i;20139:173::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20139:173:0;;;;;;;;:::i;18260:91::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18260:91:0;;:::i;18411:88::-;;;:::i;20375:151::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;20375:151:0;;;;;;;;;;:::i;11517:91::-;;;;;;;;;;;;;:::i;9955:108::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9955:108:0;-1:-1:-1;;;;;9955:108:0;;:::i;11968:89::-;;;;;;;;;;;;;:::i;11414:95::-;;;;;;;;;;;;;:::i;14196:198::-;14266:8;;-1:-1:-1;;;;;14266:8:0;:22;;;;:40;;-1:-1:-1;14292:9:0;;:14;;14266:40;14258:70;;;;;-1:-1:-1;;;14258:70:0;;;;;;;;;;;;-1:-1:-1;;;14258:70:0;;;;;;;;;;;;;;;14360:8;;14353:32;;;-1:-1:-1;;;14353:32:0;;-1:-1:-1;;;;;14353:32:0;;;;;;;;;14339:47;;14347:4;;14360:8;;14353:26;;:32;;;;;;;;;;;;;;14360:8;14353:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14353:32:0;14339:7;:47::i;:::-;14196:198;:::o;11616:148::-;11657:4;11687:12;;11681:3;:18;:43;;;;;11710:14;;11703:3;:21;;11681:43;:75;;;;;11742:14;;11728:11;;:28;11681:75;11674:82;;11616:148;:::o;12582:504::-;12638:14;;12631:3;:21;;:43;;;;;12662:12;;12656:3;:18;12631:43;12623:80;;;;;-1:-1:-1;;;12623:80:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12736:14;;12722:11;;:28;12714:68;;;;;-1:-1:-1;;;12714:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;12812:9;;12795:14;;12812:24;;12826:9;12812:13;:24::i;:::-;12795:41;;12882:14;;12855:23;12871:6;12855:11;;:15;;:23;;;;:::i;:::-;:41;;12847:67;;;;;-1:-1:-1;;;12847:67:0;;;;;;;;;;;;-1:-1:-1;;;12847:67:0;;;;;;;;;;;;;;;12941:11;;:23;;12957:6;12941:15;:23::i;:::-;12927:11;:37;12975:50;;;-1:-1:-1;;;12975:50:0;;13006:10;12975:50;;;;;;;;;;;;12990:4;;12975:30;;:50;;;;;;;;;;;;;;-1:-1:-1;12990:4:0;12975:50;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13043:35:0;;;;;;13068:9;12975:50;13043:35;;;;;13048:10;;13043:35;;;;;;;;12582:504;:::o;15127:723::-;15192:8;;-1:-1:-1;;;;;15192:8:0;15184:52;;;;;-1:-1:-1;;;15184:52:0;;;;;;;;;;;;-1:-1:-1;;;15184:52:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;15265:14:0;;15247:15;15265:14;;;:8;:14;;;;;;15298:11;15290:39;;;;;-1:-1:-1;;;15290:39:0;;;;;;;;;;;;-1:-1:-1;;;15290:39:0;;;;;;;;;;;;;;;15360:9;15384:19;;;15380:71;;;-1:-1:-1;15432:7:0;15380:71;-1:-1:-1;;;;;15481:14:0;;15461:17;15481:14;;;:8;:14;;;;;;:42;;15515:7;;15481:29;;15500:9;15481:18;:29::i;:::-;:33;;:42::i;:::-;-1:-1:-1;;;;;15551:14:0;;;;;;:8;:14;;;;;;15461:62;;-1:-1:-1;15551:29:0;;15461:62;15551:18;:29::i;:::-;-1:-1:-1;;;;;15534:14:0;;;;;;:8;:14;;;;;;;;:46;;;;15608:8;:14;;;;:29;;15627:9;15608:18;:29::i;:::-;-1:-1:-1;;;;;15591:14:0;;;;;;;:8;:14;;;;;;;;:46;;;;15655:8;;15648:42;;-1:-1:-1;;;15648:42:0;;;;;;;;;;;;;;;;;15655:8;;;;;15648:25;;:42;;;;;15591:14;;15648:42;;;;;;;;15655:8;15648:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15705:9:0;:21;-1:-1:-1;15701:93:0;;;-1:-1:-1;;;;;15743:13:0;;:39;15757:24;:9;15771;15757:13;:24::i;:::-;15743:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15701:93;15809:33;;;;;;;;;;;;;;-1:-1:-1;;;;;15809:33:0;;;;;;;;;;;15127:723;;;;:::o;18569:83::-;18639:5;18632:12;;;;;;;;-1:-1:-1;;18632:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18606:13;;18632:12;;18639:5;;18632:12;;18639:5;18632:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18569:83;:::o;13622:85::-;13690:9;;13622:85;:::o;20673:167::-;20756:4;20773:37;20782:10;20794:7;20803:6;20773:8;:37::i;:::-;-1:-1:-1;20828:4:0;20673:167;;;;;:::o;10596:178::-;9224:6;;-1:-1:-1;;;;;9224:6:0;9234:10;9224:20;9216:65;;;;;-1:-1:-1;;;9216:65:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9216:65:0;;;;;;;;;;;;;;;10694:27:::1;::::0;10662:21:::1;::::0;10694:10:::1;::::0;:27;::::1;;;::::0;10662:21;;10645:14:::1;10694:27:::0;10645:14;10694:27;10662:21;10694:10;:27;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;10737:29:0::1;::::0;;;;;;;10747:10:::1;::::0;10737:29:::1;::::0;;;;;::::1;::::0;;::::1;9292:1;10596:178::o:0;11865:95::-;11938:14;;11865:95;:::o;19644:100::-;19724:12;;19644:100;:::o;21314:344::-;21454:4;21471:36;21481:6;21489:9;21500:6;21471:9;:36::i;:::-;21518:110;21527:6;21535:10;21547:80;21583:6;21547:80;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21547:19:0;;;;;;:11;:19;;;;;;;;21567:10;21547:31;;;;;;;;;:80;:35;:80::i;:::-;21518:8;:110::i;:::-;-1:-1:-1;21646:4:0;21314:344;;;;;:::o;13715:105::-;-1:-1:-1;;;;;13798:14:0;13771:7;13798:14;;;:8;:14;;;;;;;13715:105::o;19496:83::-;19562:9;;;;19496:83;:::o;13828:105::-;-1:-1:-1;;;;;13911:14:0;13884:7;13911:14;;;:8;:14;;;;;;;13828:105::o;22067:214::-;22181:10;22155:4;22202:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;22202:32:0;;;;;;;;;;22155:4;;22172:79;;22193:7;;22202:48;;22239:10;22202:36;:48::i;11772:85::-;11840:9;;11772:85;:::o;13531:83::-;13598:8;;-1:-1:-1;;;;;13598:8:0;13531:83;:::o;10782:281::-;9224:6;;-1:-1:-1;;;;;9224:6:0;9234:10;9224:20;9216:65;;;;;-1:-1:-1;;;9216:65:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9216:65:0;;;;;;;;;;;;;;;10918:30:::1;::::0;;-1:-1:-1;;;10918:30:0;;10942:4:::1;10918:30;::::0;::::1;::::0;;;10876:13;;10854:12:::1;::::0;-1:-1:-1;;;;;10918:15:0;::::1;::::0;::::1;::::0;:30;;;;;::::1;::::0;;;;;;;;:15;:30;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;10918:30:0;10959:34:::1;::::0;;-1:-1:-1;;;10959:34:0;;10974:10:::1;10959:34;::::0;::::1;::::0;;;;;;;;;10918:30;;-1:-1:-1;;;;;;10959:14:0;::::1;::::0;::::1;::::0;:34;;;;;10918:30:::1;::::0;10959:34;;;;;;;;-1:-1:-1;10959:14:0;:34;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;;11009:46:0::1;::::0;;;;;;;-1:-1:-1;;;;;11009:46:0;::::1;::::0;11021:10:::1;::::0;11009:46:::1;::::0;;;;10959:34:::1;11009:46:::0;;::::1;9292:1;;10782:281:::0;:::o;19807:119::-;-1:-1:-1;;;;;19900:18:0;19873:7;19900:18;;;:9;:18;;;;;;;19807:119::o;9652:148::-;9224:6;;-1:-1:-1;;;;;9224:6:0;9234:10;9224:20;9216:65;;;;;-1:-1:-1;;;9216:65:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9216:65:0;;;;;;;;;;;;;;;9759:1:::1;9743:6:::0;;9722:40:::1;::::0;-1:-1:-1;;;;;9743:6:0;;::::1;::::0;9722:40:::1;::::0;9759:1;;9722:40:::1;9790:1;9773:19:::0;;-1:-1:-1;;;;;;9773:19:0::1;::::0;;9652:148::o;9012:79::-;9050:7;9077:6;-1:-1:-1;;;;;9077:6:0;9012:79;:::o;18771:87::-;18843:7;18836:14;;;;;;;;-1:-1:-1;;18836:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18810:13;;18836:14;;18843:7;;18836:14;;18843:7;18836:14;;;;;;;;;;;;;;;;;;;;;;;;14101:87;9224:6;;-1:-1:-1;;;;;9224:6:0;9234:10;9224:20;9216:65;;;;;-1:-1:-1;;;9216:65:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9216:65:0;;;;;;;;;;;;;;;14164:9:::1;:16:::0;14101:87::o;12065:509::-;9224:6;;-1:-1:-1;;;;;9224:6:0;9234:10;9224:20;9216:65;;;;;-1:-1:-1;;;9216:65:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9216:65:0;;;;;;;;;;;;;;;12247:3:::1;12234:9;:16;;12226:53;;;::::0;;-1:-1:-1;;;12226:53:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;12310:7;12298:9;:19;12290:54;;;::::0;;-1:-1:-1;;;12290:54:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12290:54:0;;;;;;;;;;;;;::::1;;12363:14;::::0;:19;;:43:::1;;;12403:3;12386:14;;:20;12363:43;12355:77;;;::::0;;-1:-1:-1;;;12355:77:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;-1:-1:-1;;;12355:77:0;;;;;;;;;;;;;::::1;;12443:14;:26:::0;;;;12480:12:::1;:22:::0;;;;12513:9:::1;:16:::0;12540:14:::1;:26:::0;12065:509::o;13941:152::-;9224:6;;-1:-1:-1;;;;;9224:6:0;9234:10;9224:20;9216:65;;;;;-1:-1:-1;;;9216:65:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9216:65:0;;;;;;;;;;;;;;;14072:8:::1;:13:::0;;-1:-1:-1;;;;;;14072:13:0::1;-1:-1:-1::0;;;;;14072:13:0;;;::::1;::::0;;;::::1;::::0;;13941:152::o;22784:308::-;22964:87;;;;;;;;;;;;;;;;;;;;22917:10;22877:4;22964:23;;;:11;:23;;;;;-1:-1:-1;;;;;22964:32:0;;;;;;;;;;;22877:4;;22894:168;;22917:10;;22942:7;;22964:87;;:32;23001:15;;22964:36;:87::i;20139:173::-;20225:4;20242:40;20252:10;20264:9;20275:6;20242:9;:40::i;18260:91::-;18313:30;18321:10;18333:9;18313:7;:30::i;18411:88::-;18461:30;;;18481:9;18461:30;;;;18469:10;;18461:30;;;;;;;;;;18411:88::o;20375:151::-;-1:-1:-1;;;;;20491:18:0;;;20464:7;20491:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;20375:151::o;11517:91::-;11588:12;;11517:91;:::o;9955:108::-;9224:6;;-1:-1:-1;;;;;9224:6:0;9234:10;9224:20;9216:65;;;;;-1:-1:-1;;;9216:65:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9216:65:0;;;;;;;;;;;;;;;10036:19:::1;10046:8;10036:9;:19::i;11968:89::-:0;12038:11;;11968:89;:::o;11414:95::-;11487:14;;11414:95;:::o;3592:181::-;3650:7;3682:5;;;3706:6;;;;3698:46;;;;;-1:-1:-1;;;3698:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;3764:1;3592:181;-1:-1:-1;;;3592:181:0:o;14402:717::-;14488:8;;-1:-1:-1;;;;;14488:8:0;:22;;;;:40;;-1:-1:-1;14514:9:0;;:14;;14488:40;14480:70;;;;;-1:-1:-1;;;14480:70:0;;;;;;;;;;;;-1:-1:-1;;;14480:70:0;;;;;;;;;;;;;;;14581:1;14569:9;:13;14561:47;;;;;-1:-1:-1;;;14561:47:0;;;;;;;;;;;;-1:-1:-1;;;14561:47:0;;;;;;;;;;;;;;;14634:8;;14627:61;;;-1:-1:-1;;;14627:61:0;;-1:-1:-1;;;;;14627:61:0;;;;;;;14671:4;14627:61;;;;;;;;;;;;14634:8;;;;;14627:29;;:61;;;;;;;;;;;;;;14634:8;;14627:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;14627:61:0;14619:93;;;;;-1:-1:-1;;;14619:93:0;;;;;;;;;;;;-1:-1:-1;;;14619:93:0;;;;;;;;;;;;;;;14723:17;14743:35;14772:5;14743:24;14757:9;;14743;:13;;:24;;;;:::i;:35::-;14723:55;;14809:1;14797:9;:13;14789:43;;;;;-1:-1:-1;;;14789:43:0;;;;;;;;;;;;-1:-1:-1;;;14789:43:0;;;;;;;;;;;;;;;14864:21;14851:9;:34;;14843:69;;;;;-1:-1:-1;;;14843:69:0;;;;;;;;;;;;-1:-1:-1;;;14843:69:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;14940:14:0;;;;;;:8;:14;;;;;;:29;;14959:9;14940:18;:29::i;:::-;-1:-1:-1;;;;;14923:14:0;;;;;;:8;:14;;;;;;;;:46;;;;14997:8;:14;;;;:29;;15016:9;14997:18;:29::i;:::-;-1:-1:-1;;;;;14980:14:0;;;;;;:8;:14;;;;;;:46;;;;15037:24;;14980:14;;15037:24;;;;;15051:9;;15037:24;14980:14;15037:24;15051:9;14980:14;15037:24;;;;;;;;;;;;;;;;;;;;-1:-1:-1;15077:34:0;;;;;;;;;;;;;;-1:-1:-1;;;;;15077:34:0;;;;;;;;;;;14402:717;;;:::o;4946:471::-;5004:7;5249:6;5245:47;;-1:-1:-1;5279:1:0;5272:8;;5245:47;5316:5;;;5320:1;5316;:5;:1;5340:5;;;;;:10;5332:56;;;;-1:-1:-1;;;5332:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5893:132;5951:7;5978:39;5982:1;5985;5978:39;;;;;;;;;;;;;;;;;:3;:39::i;4056:136::-;4114:7;4141:43;4145:1;4148;4141:43;;;;;;;;;;;;;;;;;:3;:43::i;24514:366::-;-1:-1:-1;;;;;24650:19:0;;24642:61;;;;;-1:-1:-1;;;24642:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24722:21:0;;24714:61;;;;;-1:-1:-1;;;24714:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24788:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;24840:32;;;;;;;;;;;;;;;;;24514:366;;;:::o;23582:492::-;-1:-1:-1;;;;;23722:20:0;;23714:63;;;;;-1:-1:-1;;;23714:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23796:23:0;;23788:64;;;;;-1:-1:-1;;;23788:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;23885;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;23885:17:0;;-1:-1:-1;23885:17:0;;;:9;:17;;;;;;;;:64;;23907:6;;23885:21;:64::i;:::-;-1:-1:-1;;;;;23865:17:0;;;;;;;:9;:17;;;;;;:84;;;;23983:20;;;;;;;:32;;24008:6;23983:24;:32::i;:::-;-1:-1:-1;;;;;23960:20:0;;;;;;;:9;:20;;;;;;;;;:55;;;;24031:35;;;;;;;23960:20;;24031:35;;;;;;;;;;;;;23582:492;;;:::o;4495:192::-;4581:7;4617:12;4609:6;;;;4601:29;;;;-1:-1:-1;;;4601:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4653:5:0;;;4495:192::o;10071:220::-;-1:-1:-1;;;;;10136:22:0;;10128:73;;;;-1:-1:-1;;;10128:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10238:6;;;10217:38;;-1:-1:-1;;;;;10217:38:0;;;;10238:6;;;10217:38;;;10266:6;:17;;-1:-1:-1;;;;;;10266:17:0;-1:-1:-1;;;;;10266:17:0;;;;;;;;;;10071:220::o;6521:278::-;6607:7;6642:12;6635:5;6627:28;;;;-1:-1:-1;;;6627:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6666:9;6682:1;6678;:5;;;;;;;6521:278;-1:-1:-1;;;;;6521:278:0:o

Swarm Source

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