ETH Price: $3,139.24 (+3.36%)
Gas: 3 Gwei

Token

BearMarketBucks (BMBucks)
 

Overview

Max Total Supply

282,411,396 BMBucks

Holders

235

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Filtered by Token Holder
jlieberman.eth
Balance
975,753 BMBucks

Value
$0.00
0xe757970b801e5b99ab24c5cd9b5152234cff3001
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:
BearMarketBudsToken

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-07-01
*/

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

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // 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 (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    /**
     * @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) {
        return a + b;
    }

    /**
     * @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 a - b;
    }

    /**
     * @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) {
        return a * b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator.
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting 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 a % b;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * 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) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

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

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

interface IERC20Metadata is IERC20 {
    /**
     * @dev Returns the name of the token.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the symbol of the token.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the decimals places of the token.
     */
    function decimals() external view returns (uint8);
}

abstract contract Ownable is Context {
    address private _owner;

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

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor() {
        _transferOwnership(_msgSender());
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == _msgSender(), "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 {
        _transferOwnership(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 {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Internal function without access restriction.
     */
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    string private _name;
    string private _symbol;

    /**
     * @dev Sets the values for {name} and {symbol}.
     *
     * The default value of {decimals} is 18. To select a different value for
     * {decimals} you should overload it.
     *
     * All two of these values are immutable: they can only be set once during
     * construction.
     */
    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

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

    /**
     * @dev Returns the symbol of the token, usually a shorter version of the
     * name.
     */
    function symbol() public view virtual override 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 this function is
     * overridden;
     *
     * 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 virtual override returns (uint8) {
        return 18;
    }

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

    /**
     * @dev See {IERC20-balanceOf}.
     */
    function balanceOf(address account) public view virtual override 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(_msgSender(), recipient, amount);
        return true;
    }

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

    /**
     * @dev See {IERC20-approve}.
     *
     * NOTE: If `amount` is the maximum `uint256`, the allowance is not updated on
     * `transferFrom`. This is semantically equivalent to an infinite approval.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public virtual override returns (bool) {
        _approve(_msgSender(), 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}.
     *
     * NOTE: Does not update the allowance if the current allowance
     * is the maximum `uint256`.
     *
     * 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) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
            unchecked {
                _approve(sender, _msgSender(), currentAllowance - amount);
            }
        }

        _transfer(sender, recipient, amount);

        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(_msgSender(), spender, _allowances[_msgSender()][spender] + 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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(_msgSender(), spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `sender` to `recipient`.
     *
     * This 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), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(senderBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[sender] = senderBalance - amount;
        }
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);

        _afterTokenTransfer(sender, recipient, 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:
     *
     * - `account` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

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

        _totalSupply += amount;
        _balances[account] += amount;
        emit Transfer(address(0), account, amount);

        _afterTokenTransfer(address(0), account, amount);
    }

    /**
     * @dev Destroys `amount` tokens from `account`, reducing the
     * total supply.
     *
     * Emits a {Transfer} event with `to` set to the zero address.
     *
     * Requirements:
     *
     * - `account` cannot be the zero address.
     * - `account` must have at least `amount` tokens.
     */
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

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

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
        }
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner` s tokens.
     *
     * This 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), "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);
    }

    /**
     * @dev Hook that is called before any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * will be transferred to `to`.
     * - when `from` is zero, `amount` tokens will be minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens will be burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}

    /**
     * @dev Hook that is called after any transfer of tokens. This includes
     * minting and burning.
     *
     * Calling conditions:
     *
     * - when `from` and `to` are both non-zero, `amount` of ``from``'s tokens
     * has been transferred to `to`.
     * - when `from` is zero, `amount` tokens have been minted for `to`.
     * - when `to` is zero, `amount` of ``from``'s tokens have been burned.
     * - `from` and `to` are never both zero.
     *
     * To learn more about hooks, head to xref:ROOT:extending-contracts.adoc#using-hooks[Using Hooks].
     */
    function _afterTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

interface IBearMarketBuds {
    function balanceOf(address owner) external view returns(uint256);
}

interface IFreeShit {
    function balanceOf(address owner) external view returns(uint256);
}

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

    IBearMarketBuds public BearMarketBuds;
    IFreeShit public FreeShit;

    uint256 private _totalSupply;
    uint256 constant MAXIMUNSUPPLY = 3000000000*10**18;
    
    bool pauseRewards = true;

    mapping(address => uint256) public addressBearMints;
    mapping(address => uint256) public addressShitMints;
    mapping(address => bool) public allowedAddresses;


    constructor() ERC20("BearMarketBucks", "BMBucks") {
        BearMarketBuds = IBearMarketBuds(0x48A0501D67eb0DcccC725e33FA43e08De045816F);
        FreeShit = IFreeShit(0x026B30564A6BeD7995Ec02bC61dBf58A92d94537);
    }

    function burn(address user, uint256 amount) external {
        require(allowedAddresses[msg.sender] || msg.sender == address(BearMarketBuds), "Address does not have permission to burn");
        _burn(user, amount);
    }

    function claimBearReward() external {
        uint256 amount = 696969*10**18;
        require(!pauseRewards, "Claiming reward has been paused");
        require(BearMarketBuds.balanceOf(msg.sender) >= addressBearMints[msg.sender] + 3, "Not enough Bear Market Buds owned");
        require((_totalSupply + amount) <= MAXIMUNSUPPLY, "Maximun supply exceeded");
        _totalSupply = _totalSupply.add(amount);
        addressBearMints[msg.sender] += 3;
        _mint(msg.sender, amount);
    }

    function claimFreeShitReward() external {
        uint256 amount = 69696*10**18;
        require(!pauseRewards, "Claiming reward has been paused");
        require(FreeShit.balanceOf(msg.sender) >= addressShitMints[msg.sender] + 1, "Not enough Free Shits owned");
        require((_totalSupply + amount) <= MAXIMUNSUPPLY, "Maximun supply exceeded");
        _totalSupply = _totalSupply.add(amount);
        addressShitMints[msg.sender] += 1;
        _mint(msg.sender, amount);
    }

    function setAllowedAddresses(address _address, bool _access) public onlyOwner {
        allowedAddresses[_address] = _access;
    }

    function pauseReward() public onlyOwner{
        pauseRewards = !pauseRewards;
    }

    function giftTokens(address reciever, uint256 giftAmount) public onlyOwner{
        _mint(reciever, giftAmount);
    }

    function tokenGiftList(address[] calldata giftAddresses, uint256[] calldata giftAmount) external onlyOwner {
        for(uint256 i; i < giftAddresses.length; i++){
            giftTokens(giftAddresses[i], giftAmount[i]);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BearMarketBuds","outputs":[{"internalType":"contract IBearMarketBuds","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FreeShit","outputs":[{"internalType":"contract IFreeShit","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressBearMints","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"addressShitMints","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":"","type":"address"}],"name":"allowedAddresses","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"address","name":"user","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimBearReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimFreeShitReward","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":[{"internalType":"address","name":"reciever","type":"address"},{"internalType":"uint256","name":"giftAmount","type":"uint256"}],"name":"giftTokens","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":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pauseReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"_access","type":"bool"}],"name":"setAllowedAddresses","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"giftAddresses","type":"address[]"},{"internalType":"uint256[]","name":"giftAmount","type":"uint256[]"}],"name":"tokenGiftList","outputs":[],"stateMutability":"nonpayable","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"}]

60806040526001600960006101000a81548160ff0219169083151502179055503480156200002c57600080fd5b506040518060400160405280600f81526020017f426561724d61726b65744275636b7300000000000000000000000000000000008152506040518060400160405280600781526020017f424d4275636b73000000000000000000000000000000000000000000000000008152508160039081620000aa9190620004d7565b508060049081620000bc9190620004d7565b505050620000df620000d36200018f60201b60201c565b6200019760201b60201c565b7348a0501d67eb0dcccc725e33fa43e08de045816f600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073026b30564a6bed7995ec02bc61dbf58a92d94537600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550620005be565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620002df57607f821691505b602082108103620002f557620002f462000297565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200035f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8262000320565b6200036b868362000320565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620003b8620003b2620003ac8462000383565b6200038d565b62000383565b9050919050565b6000819050919050565b620003d48362000397565b620003ec620003e382620003bf565b8484546200032d565b825550505050565b600090565b62000403620003f4565b62000410818484620003c9565b505050565b5b8181101562000438576200042c600082620003f9565b60018101905062000416565b5050565b601f82111562000487576200045181620002fb565b6200045c8462000310565b810160208510156200046c578190505b620004846200047b8562000310565b83018262000415565b50505b505050565b600082821c905092915050565b6000620004ac600019846008026200048c565b1980831691505092915050565b6000620004c7838362000499565b9150826002028217905092915050565b620004e2826200025d565b67ffffffffffffffff811115620004fe57620004fd62000268565b5b6200050a8254620002c6565b620005178282856200043c565b600060209050601f8311600181146200054f57600084156200053a578287015190505b620005468582620004b9565b865550620005b6565b601f1984166200055f86620002fb565b60005b82811015620005895784890151825560018201915060208501945060208101905062000562565b86831015620005a95784890151620005a5601f89168262000499565b8355505b6001600288020188555050505b505050505050565b612dc480620005ce6000396000f3fe608060405234801561001057600080fd5b506004361061018e5760003560e01c806372e19cd7116100de578063a9059cbb11610097578063cd7d231711610071578063cd7d231714610473578063dd62ed3e146104a3578063de524be8146104d3578063f2fde38b146104dd5761018e565b8063a9059cbb14610409578063c444cb5414610439578063c4c50acf146104575761018e565b806372e19cd71461033557806389781912146103655780638da5cb5b1461038157806395d89b411461039f5780639dc29fac146103bd578063a457c2d7146103d95761018e565b8063313ce5671161014b5780634120657a116101255780634120657a146102c15780636fea7787146102f157806370a08231146102fb578063715018a61461032b5761018e565b8063313ce5671461025557806334b184e81461027357806339509351146102915761018e565b806306fdde0314610193578063095ea7b3146101b15780631013ab5f146101e157806318160ddd146101eb57806323b872dd146102095780632d5151ed14610239575b600080fd5b61019b6104f9565b6040516101a89190611de9565b60405180910390f35b6101cb60048036038101906101c69190611ea9565b61058b565b6040516101d89190611f04565b60405180910390f35b6101e96105a9565b005b6101f361080c565b6040516102009190611f2e565b60405180910390f35b610223600480360381019061021e9190611f49565b610816565b6040516102309190611f04565b60405180910390f35b610253600480360381019061024e9190612057565b610935565b005b61025d610a23565b60405161026a91906120f4565b60405180910390f35b61027b610a2c565b604051610288919061216e565b60405180910390f35b6102ab60048036038101906102a69190611ea9565b610a52565b6040516102b89190611f04565b60405180910390f35b6102db60048036038101906102d69190612189565b610afe565b6040516102e89190611f04565b60405180910390f35b6102f9610b1e565b005b61031560048036038101906103109190612189565b610d81565b6040516103229190611f2e565b60405180910390f35b610333610dc9565b005b61034f600480360381019061034a9190612189565b610e51565b60405161035c9190611f2e565b60405180910390f35b61037f600480360381019061037a91906121e2565b610e69565b005b610389610f40565b6040516103969190612231565b60405180910390f35b6103a7610f6a565b6040516103b49190611de9565b60405180910390f35b6103d760048036038101906103d29190611ea9565b610ffc565b005b6103f360048036038101906103ee9190611ea9565b6110ee565b6040516104009190611f04565b60405180910390f35b610423600480360381019061041e9190611ea9565b6111d9565b6040516104309190611f04565b60405180910390f35b6104416111f7565b60405161044e919061226d565b60405180910390f35b610471600480360381019061046c9190611ea9565b61121d565b005b61048d60048036038101906104889190612189565b6112a7565b60405161049a9190611f2e565b60405180910390f35b6104bd60048036038101906104b89190612288565b6112bf565b6040516104ca9190611f2e565b60405180910390f35b6104db611346565b005b6104f760048036038101906104f29190612189565b6113ee565b005b606060038054610508906122f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610534906122f7565b80156105815780601f1061055657610100808354040283529160200191610581565b820191906000526020600020905b81548152906001019060200180831161056457829003601f168201915b5050505050905090565b600061059f6105986114e5565b84846114ed565b6001905092915050565b6000690ec23a4c8ec4190000009050600960009054906101000a900460ff1615610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff90612374565b60405180910390fd5b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461065491906123c3565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016106af9190612231565b602060405180830381865afa1580156106cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f0919061242e565b1015610731576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610728906124a7565b60405180910390fd5b6b09b18ab5df7180b6b80000008160085461074c91906123c3565b111561078d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078490612513565b60405180910390fd5b6107a2816008546116b690919063ffffffff16565b6008819055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107f891906123c3565b9250508190555061080933826116cc565b50565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108626114e5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461091e5782811015610909576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610900906125a5565b60405180910390fd5b61091d856109156114e5565b8584036114ed565b5b61092985858561182b565b60019150509392505050565b61093d6114e5565b73ffffffffffffffffffffffffffffffffffffffff1661095b610f40565b73ffffffffffffffffffffffffffffffffffffffff16146109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a890612611565b60405180910390fd5b60005b84849050811015610a1c57610a098585838181106109d5576109d4612631565b5b90506020020160208101906109ea9190612189565b8484848181106109fd576109fc612631565b5b9050602002013561121d565b8080610a1490612660565b9150506109b4565b5050505050565b60006012905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610af4610a5f6114e5565b848460016000610a6d6114e5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610aef91906123c3565b6114ed565b6001905092915050565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000699396c3e3fff9dc8400009050600960009054906101000a900460ff1615610b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7490612374565b60405180910390fd5b6003600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bc991906123c3565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610c249190612231565b602060405180830381865afa158015610c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c65919061242e565b1015610ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9d9061271a565b60405180910390fd5b6b09b18ab5df7180b6b800000081600854610cc191906123c3565b1115610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf990612513565b60405180910390fd5b610d17816008546116b690919063ffffffff16565b6008819055506003600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d6d91906123c3565b92505081905550610d7e33826116cc565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dd16114e5565b73ffffffffffffffffffffffffffffffffffffffff16610def610f40565b73ffffffffffffffffffffffffffffffffffffffff1614610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90612611565b60405180910390fd5b610e4f6000611aaa565b565b600a6020528060005260406000206000915090505481565b610e716114e5565b73ffffffffffffffffffffffffffffffffffffffff16610e8f610f40565b73ffffffffffffffffffffffffffffffffffffffff1614610ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edc90612611565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610f79906122f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa5906122f7565b8015610ff25780601f10610fc757610100808354040283529160200191610ff2565b820191906000526020600020905b815481529060010190602001808311610fd557829003601f168201915b5050505050905090565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806110a15750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d7906127ac565b60405180910390fd5b6110ea8282611b70565b5050565b600080600160006110fd6114e5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b19061283e565b60405180910390fd5b6111ce6111c56114e5565b858584036114ed565b600191505092915050565b60006111ed6111e66114e5565b848461182b565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112256114e5565b73ffffffffffffffffffffffffffffffffffffffff16611243610f40565b73ffffffffffffffffffffffffffffffffffffffff1614611299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129090612611565b60405180910390fd5b6112a382826116cc565b5050565b600b6020528060005260406000206000915090505481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61134e6114e5565b73ffffffffffffffffffffffffffffffffffffffff1661136c610f40565b73ffffffffffffffffffffffffffffffffffffffff16146113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b990612611565b60405180910390fd5b600960009054906101000a900460ff1615600960006101000a81548160ff021916908315150217905550565b6113f66114e5565b73ffffffffffffffffffffffffffffffffffffffff16611414610f40565b73ffffffffffffffffffffffffffffffffffffffff161461146a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146190612611565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d0906128d0565b60405180910390fd5b6114e281611aaa565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361155c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155390612962565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c2906129f4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116a99190611f2e565b60405180910390a3505050565b600081836116c491906123c3565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361173b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173290612a60565b60405180910390fd5b61174760008383611d46565b806002600082825461175991906123c3565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117ae91906123c3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118139190611f2e565b60405180910390a361182760008383611d4b565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361189a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189190612af2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190090612b84565b60405180910390fd5b611914838383611d46565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199190612c16565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a2d91906123c3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a919190611f2e565b60405180910390a3611aa4848484611d4b565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd690612ca8565b60405180910390fd5b611beb82600083611d46565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6890612d3a565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611cc89190612d5a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d2d9190611f2e565b60405180910390a3611d4183600084611d4b565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d8a578082015181840152602081019050611d6f565b83811115611d99576000848401525b50505050565b6000601f19601f8301169050919050565b6000611dbb82611d50565b611dc58185611d5b565b9350611dd5818560208601611d6c565b611dde81611d9f565b840191505092915050565b60006020820190508181036000830152611e038184611db0565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611e4082611e15565b9050919050565b611e5081611e35565b8114611e5b57600080fd5b50565b600081359050611e6d81611e47565b92915050565b6000819050919050565b611e8681611e73565b8114611e9157600080fd5b50565b600081359050611ea381611e7d565b92915050565b60008060408385031215611ec057611ebf611e0b565b5b6000611ece85828601611e5e565b9250506020611edf85828601611e94565b9150509250929050565b60008115159050919050565b611efe81611ee9565b82525050565b6000602082019050611f196000830184611ef5565b92915050565b611f2881611e73565b82525050565b6000602082019050611f436000830184611f1f565b92915050565b600080600060608486031215611f6257611f61611e0b565b5b6000611f7086828701611e5e565b9350506020611f8186828701611e5e565b9250506040611f9286828701611e94565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112611fc157611fc0611f9c565b5b8235905067ffffffffffffffff811115611fde57611fdd611fa1565b5b602083019150836020820283011115611ffa57611ff9611fa6565b5b9250929050565b60008083601f84011261201757612016611f9c565b5b8235905067ffffffffffffffff81111561203457612033611fa1565b5b6020830191508360208202830111156120505761204f611fa6565b5b9250929050565b6000806000806040858703121561207157612070611e0b565b5b600085013567ffffffffffffffff81111561208f5761208e611e10565b5b61209b87828801611fab565b9450945050602085013567ffffffffffffffff8111156120be576120bd611e10565b5b6120ca87828801612001565b925092505092959194509250565b600060ff82169050919050565b6120ee816120d8565b82525050565b600060208201905061210960008301846120e5565b92915050565b6000819050919050565b600061213461212f61212a84611e15565b61210f565b611e15565b9050919050565b600061214682612119565b9050919050565b60006121588261213b565b9050919050565b6121688161214d565b82525050565b6000602082019050612183600083018461215f565b92915050565b60006020828403121561219f5761219e611e0b565b5b60006121ad84828501611e5e565b91505092915050565b6121bf81611ee9565b81146121ca57600080fd5b50565b6000813590506121dc816121b6565b92915050565b600080604083850312156121f9576121f8611e0b565b5b600061220785828601611e5e565b9250506020612218858286016121cd565b9150509250929050565b61222b81611e35565b82525050565b60006020820190506122466000830184612222565b92915050565b60006122578261213b565b9050919050565b6122678161224c565b82525050565b6000602082019050612282600083018461225e565b92915050565b6000806040838503121561229f5761229e611e0b565b5b60006122ad85828601611e5e565b92505060206122be85828601611e5e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061230f57607f821691505b602082108103612322576123216122c8565b5b50919050565b7f436c61696d696e672072657761726420686173206265656e2070617573656400600082015250565b600061235e601f83611d5b565b915061236982612328565b602082019050919050565b6000602082019050818103600083015261238d81612351565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123ce82611e73565b91506123d983611e73565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561240e5761240d612394565b5b828201905092915050565b60008151905061242881611e7d565b92915050565b60006020828403121561244457612443611e0b565b5b600061245284828501612419565b91505092915050565b7f4e6f7420656e6f7567682046726565205368697473206f776e65640000000000600082015250565b6000612491601b83611d5b565b915061249c8261245b565b602082019050919050565b600060208201905081810360008301526124c081612484565b9050919050565b7f4d6178696d756e20737570706c79206578636565646564000000000000000000600082015250565b60006124fd601783611d5b565b9150612508826124c7565b602082019050919050565b6000602082019050818103600083015261252c816124f0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061258f602883611d5b565b915061259a82612533565b604082019050919050565b600060208201905081810360008301526125be81612582565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006125fb602083611d5b565b9150612606826125c5565b602082019050919050565b6000602082019050818103600083015261262a816125ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061266b82611e73565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361269d5761269c612394565b5b600182019050919050565b7f4e6f7420656e6f7567682042656172204d61726b65742042756473206f776e6560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000612704602183611d5b565b915061270f826126a8565b604082019050919050565b60006020820190508181036000830152612733816126f7565b9050919050565b7f4164647265737320646f6573206e6f742068617665207065726d697373696f6e60008201527f20746f206275726e000000000000000000000000000000000000000000000000602082015250565b6000612796602883611d5b565b91506127a18261273a565b604082019050919050565b600060208201905081810360008301526127c581612789565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612828602583611d5b565b9150612833826127cc565b604082019050919050565b600060208201905081810360008301526128578161281b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006128ba602683611d5b565b91506128c58261285e565b604082019050919050565b600060208201905081810360008301526128e9816128ad565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061294c602483611d5b565b9150612957826128f0565b604082019050919050565b6000602082019050818103600083015261297b8161293f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006129de602283611d5b565b91506129e982612982565b604082019050919050565b60006020820190508181036000830152612a0d816129d1565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612a4a601f83611d5b565b9150612a5582612a14565b602082019050919050565b60006020820190508181036000830152612a7981612a3d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612adc602583611d5b565b9150612ae782612a80565b604082019050919050565b60006020820190508181036000830152612b0b81612acf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612b6e602383611d5b565b9150612b7982612b12565b604082019050919050565b60006020820190508181036000830152612b9d81612b61565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612c00602683611d5b565b9150612c0b82612ba4565b604082019050919050565b60006020820190508181036000830152612c2f81612bf3565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c92602183611d5b565b9150612c9d82612c36565b604082019050919050565b60006020820190508181036000830152612cc181612c85565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d24602283611d5b565b9150612d2f82612cc8565b604082019050919050565b60006020820190508181036000830152612d5381612d17565b9050919050565b6000612d6582611e73565b9150612d7083611e73565b925082821015612d8357612d82612394565b5b82820390509291505056fea264697066735822122044253868dfef839b64c6ffae3e4805eb253b8f8780f09f8aec7f60fee8725aa064736f6c634300080f0033

Deployed Bytecode

0x608060405234801561001057600080fd5b506004361061018e5760003560e01c806372e19cd7116100de578063a9059cbb11610097578063cd7d231711610071578063cd7d231714610473578063dd62ed3e146104a3578063de524be8146104d3578063f2fde38b146104dd5761018e565b8063a9059cbb14610409578063c444cb5414610439578063c4c50acf146104575761018e565b806372e19cd71461033557806389781912146103655780638da5cb5b1461038157806395d89b411461039f5780639dc29fac146103bd578063a457c2d7146103d95761018e565b8063313ce5671161014b5780634120657a116101255780634120657a146102c15780636fea7787146102f157806370a08231146102fb578063715018a61461032b5761018e565b8063313ce5671461025557806334b184e81461027357806339509351146102915761018e565b806306fdde0314610193578063095ea7b3146101b15780631013ab5f146101e157806318160ddd146101eb57806323b872dd146102095780632d5151ed14610239575b600080fd5b61019b6104f9565b6040516101a89190611de9565b60405180910390f35b6101cb60048036038101906101c69190611ea9565b61058b565b6040516101d89190611f04565b60405180910390f35b6101e96105a9565b005b6101f361080c565b6040516102009190611f2e565b60405180910390f35b610223600480360381019061021e9190611f49565b610816565b6040516102309190611f04565b60405180910390f35b610253600480360381019061024e9190612057565b610935565b005b61025d610a23565b60405161026a91906120f4565b60405180910390f35b61027b610a2c565b604051610288919061216e565b60405180910390f35b6102ab60048036038101906102a69190611ea9565b610a52565b6040516102b89190611f04565b60405180910390f35b6102db60048036038101906102d69190612189565b610afe565b6040516102e89190611f04565b60405180910390f35b6102f9610b1e565b005b61031560048036038101906103109190612189565b610d81565b6040516103229190611f2e565b60405180910390f35b610333610dc9565b005b61034f600480360381019061034a9190612189565b610e51565b60405161035c9190611f2e565b60405180910390f35b61037f600480360381019061037a91906121e2565b610e69565b005b610389610f40565b6040516103969190612231565b60405180910390f35b6103a7610f6a565b6040516103b49190611de9565b60405180910390f35b6103d760048036038101906103d29190611ea9565b610ffc565b005b6103f360048036038101906103ee9190611ea9565b6110ee565b6040516104009190611f04565b60405180910390f35b610423600480360381019061041e9190611ea9565b6111d9565b6040516104309190611f04565b60405180910390f35b6104416111f7565b60405161044e919061226d565b60405180910390f35b610471600480360381019061046c9190611ea9565b61121d565b005b61048d60048036038101906104889190612189565b6112a7565b60405161049a9190611f2e565b60405180910390f35b6104bd60048036038101906104b89190612288565b6112bf565b6040516104ca9190611f2e565b60405180910390f35b6104db611346565b005b6104f760048036038101906104f29190612189565b6113ee565b005b606060038054610508906122f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610534906122f7565b80156105815780601f1061055657610100808354040283529160200191610581565b820191906000526020600020905b81548152906001019060200180831161056457829003601f168201915b5050505050905090565b600061059f6105986114e5565b84846114ed565b6001905092915050565b6000690ec23a4c8ec4190000009050600960009054906101000a900460ff1615610608576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105ff90612374565b60405180910390fd5b6001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461065491906123c3565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016106af9190612231565b602060405180830381865afa1580156106cc573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106f0919061242e565b1015610731576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610728906124a7565b60405180910390fd5b6b09b18ab5df7180b6b80000008160085461074c91906123c3565b111561078d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161078490612513565b60405180910390fd5b6107a2816008546116b690919063ffffffff16565b6008819055506001600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107f891906123c3565b9250508190555061080933826116cc565b50565b6000600254905090565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108626114e5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff811461091e5782811015610909576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610900906125a5565b60405180910390fd5b61091d856109156114e5565b8584036114ed565b5b61092985858561182b565b60019150509392505050565b61093d6114e5565b73ffffffffffffffffffffffffffffffffffffffff1661095b610f40565b73ffffffffffffffffffffffffffffffffffffffff16146109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a890612611565b60405180910390fd5b60005b84849050811015610a1c57610a098585838181106109d5576109d4612631565b5b90506020020160208101906109ea9190612189565b8484848181106109fd576109fc612631565b5b9050602002013561121d565b8080610a1490612660565b9150506109b4565b5050505050565b60006012905090565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610af4610a5f6114e5565b848460016000610a6d6114e5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610aef91906123c3565b6114ed565b6001905092915050565b600c6020528060005260406000206000915054906101000a900460ff1681565b6000699396c3e3fff9dc8400009050600960009054906101000a900460ff1615610b7d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b7490612374565b60405180910390fd5b6003600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610bc991906123c3565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610c249190612231565b602060405180830381865afa158015610c41573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c65919061242e565b1015610ca6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9d9061271a565b60405180910390fd5b6b09b18ab5df7180b6b800000081600854610cc191906123c3565b1115610d02576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cf990612513565b60405180910390fd5b610d17816008546116b690919063ffffffff16565b6008819055506003600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610d6d91906123c3565b92505081905550610d7e33826116cc565b50565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dd16114e5565b73ffffffffffffffffffffffffffffffffffffffff16610def610f40565b73ffffffffffffffffffffffffffffffffffffffff1614610e45576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3c90612611565b60405180910390fd5b610e4f6000611aaa565b565b600a6020528060005260406000206000915090505481565b610e716114e5565b73ffffffffffffffffffffffffffffffffffffffff16610e8f610f40565b73ffffffffffffffffffffffffffffffffffffffff1614610ee5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610edc90612611565b60405180910390fd5b80600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060048054610f79906122f7565b80601f0160208091040260200160405190810160405280929190818152602001828054610fa5906122f7565b8015610ff25780601f10610fc757610100808354040283529160200191610ff2565b820191906000526020600020905b815481529060010190602001808311610fd557829003601f168201915b5050505050905090565b600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806110a15750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6110e0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110d7906127ac565b60405180910390fd5b6110ea8282611b70565b5050565b600080600160006110fd6114e5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156111ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111b19061283e565b60405180910390fd5b6111ce6111c56114e5565b858584036114ed565b600191505092915050565b60006111ed6111e66114e5565b848461182b565b6001905092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6112256114e5565b73ffffffffffffffffffffffffffffffffffffffff16611243610f40565b73ffffffffffffffffffffffffffffffffffffffff1614611299576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161129090612611565b60405180910390fd5b6112a382826116cc565b5050565b600b6020528060005260406000206000915090505481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61134e6114e5565b73ffffffffffffffffffffffffffffffffffffffff1661136c610f40565b73ffffffffffffffffffffffffffffffffffffffff16146113c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113b990612611565b60405180910390fd5b600960009054906101000a900460ff1615600960006101000a81548160ff021916908315150217905550565b6113f66114e5565b73ffffffffffffffffffffffffffffffffffffffff16611414610f40565b73ffffffffffffffffffffffffffffffffffffffff161461146a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161146190612611565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036114d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d0906128d0565b60405180910390fd5b6114e281611aaa565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361155c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161155390612962565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036115cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c2906129f4565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516116a99190611f2e565b60405180910390a3505050565b600081836116c491906123c3565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361173b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173290612a60565b60405180910390fd5b61174760008383611d46565b806002600082825461175991906123c3565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546117ae91906123c3565b925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516118139190611f2e565b60405180910390a361182760008383611d4b565b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff160361189a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161189190612af2565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190090612b84565b60405180910390fd5b611914838383611d46565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490508181101561199a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161199190612c16565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a2d91906123c3565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a919190611f2e565b60405180910390a3611aa4848484611d4b565b50505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611bdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd690612ca8565b60405180910390fd5b611beb82600083611d46565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6890612d3a565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160026000828254611cc89190612d5a565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611d2d9190611f2e565b60405180910390a3611d4183600084611d4b565b505050565b505050565b505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015611d8a578082015181840152602081019050611d6f565b83811115611d99576000848401525b50505050565b6000601f19601f8301169050919050565b6000611dbb82611d50565b611dc58185611d5b565b9350611dd5818560208601611d6c565b611dde81611d9f565b840191505092915050565b60006020820190508181036000830152611e038184611db0565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000611e4082611e15565b9050919050565b611e5081611e35565b8114611e5b57600080fd5b50565b600081359050611e6d81611e47565b92915050565b6000819050919050565b611e8681611e73565b8114611e9157600080fd5b50565b600081359050611ea381611e7d565b92915050565b60008060408385031215611ec057611ebf611e0b565b5b6000611ece85828601611e5e565b9250506020611edf85828601611e94565b9150509250929050565b60008115159050919050565b611efe81611ee9565b82525050565b6000602082019050611f196000830184611ef5565b92915050565b611f2881611e73565b82525050565b6000602082019050611f436000830184611f1f565b92915050565b600080600060608486031215611f6257611f61611e0b565b5b6000611f7086828701611e5e565b9350506020611f8186828701611e5e565b9250506040611f9286828701611e94565b9150509250925092565b600080fd5b600080fd5b600080fd5b60008083601f840112611fc157611fc0611f9c565b5b8235905067ffffffffffffffff811115611fde57611fdd611fa1565b5b602083019150836020820283011115611ffa57611ff9611fa6565b5b9250929050565b60008083601f84011261201757612016611f9c565b5b8235905067ffffffffffffffff81111561203457612033611fa1565b5b6020830191508360208202830111156120505761204f611fa6565b5b9250929050565b6000806000806040858703121561207157612070611e0b565b5b600085013567ffffffffffffffff81111561208f5761208e611e10565b5b61209b87828801611fab565b9450945050602085013567ffffffffffffffff8111156120be576120bd611e10565b5b6120ca87828801612001565b925092505092959194509250565b600060ff82169050919050565b6120ee816120d8565b82525050565b600060208201905061210960008301846120e5565b92915050565b6000819050919050565b600061213461212f61212a84611e15565b61210f565b611e15565b9050919050565b600061214682612119565b9050919050565b60006121588261213b565b9050919050565b6121688161214d565b82525050565b6000602082019050612183600083018461215f565b92915050565b60006020828403121561219f5761219e611e0b565b5b60006121ad84828501611e5e565b91505092915050565b6121bf81611ee9565b81146121ca57600080fd5b50565b6000813590506121dc816121b6565b92915050565b600080604083850312156121f9576121f8611e0b565b5b600061220785828601611e5e565b9250506020612218858286016121cd565b9150509250929050565b61222b81611e35565b82525050565b60006020820190506122466000830184612222565b92915050565b60006122578261213b565b9050919050565b6122678161224c565b82525050565b6000602082019050612282600083018461225e565b92915050565b6000806040838503121561229f5761229e611e0b565b5b60006122ad85828601611e5e565b92505060206122be85828601611e5e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061230f57607f821691505b602082108103612322576123216122c8565b5b50919050565b7f436c61696d696e672072657761726420686173206265656e2070617573656400600082015250565b600061235e601f83611d5b565b915061236982612328565b602082019050919050565b6000602082019050818103600083015261238d81612351565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006123ce82611e73565b91506123d983611e73565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561240e5761240d612394565b5b828201905092915050565b60008151905061242881611e7d565b92915050565b60006020828403121561244457612443611e0b565b5b600061245284828501612419565b91505092915050565b7f4e6f7420656e6f7567682046726565205368697473206f776e65640000000000600082015250565b6000612491601b83611d5b565b915061249c8261245b565b602082019050919050565b600060208201905081810360008301526124c081612484565b9050919050565b7f4d6178696d756e20737570706c79206578636565646564000000000000000000600082015250565b60006124fd601783611d5b565b9150612508826124c7565b602082019050919050565b6000602082019050818103600083015261252c816124f0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b600061258f602883611d5b565b915061259a82612533565b604082019050919050565b600060208201905081810360008301526125be81612582565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006125fb602083611d5b565b9150612606826125c5565b602082019050919050565b6000602082019050818103600083015261262a816125ee565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061266b82611e73565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361269d5761269c612394565b5b600182019050919050565b7f4e6f7420656e6f7567682042656172204d61726b65742042756473206f776e6560008201527f6400000000000000000000000000000000000000000000000000000000000000602082015250565b6000612704602183611d5b565b915061270f826126a8565b604082019050919050565b60006020820190508181036000830152612733816126f7565b9050919050565b7f4164647265737320646f6573206e6f742068617665207065726d697373696f6e60008201527f20746f206275726e000000000000000000000000000000000000000000000000602082015250565b6000612796602883611d5b565b91506127a18261273a565b604082019050919050565b600060208201905081810360008301526127c581612789565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000612828602583611d5b565b9150612833826127cc565b604082019050919050565b600060208201905081810360008301526128578161281b565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006128ba602683611d5b565b91506128c58261285e565b604082019050919050565b600060208201905081810360008301526128e9816128ad565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061294c602483611d5b565b9150612957826128f0565b604082019050919050565b6000602082019050818103600083015261297b8161293f565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006129de602283611d5b565b91506129e982612982565b604082019050919050565b60006020820190508181036000830152612a0d816129d1565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b6000612a4a601f83611d5b565b9150612a5582612a14565b602082019050919050565b60006020820190508181036000830152612a7981612a3d565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612adc602583611d5b565b9150612ae782612a80565b604082019050919050565b60006020820190508181036000830152612b0b81612acf565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612b6e602383611d5b565b9150612b7982612b12565b604082019050919050565b60006020820190508181036000830152612b9d81612b61565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612c00602683611d5b565b9150612c0b82612ba4565b604082019050919050565b60006020820190508181036000830152612c2f81612bf3565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612c92602183611d5b565b9150612c9d82612c36565b604082019050919050565b60006020820190508181036000830152612cc181612c85565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000612d24602283611d5b565b9150612d2f82612cc8565b604082019050919050565b60006020820190508181036000830152612d5381612d17565b9050919050565b6000612d6582611e73565b9150612d7083611e73565b925082821015612d8357612d82612394565b5b82820390509291505056fea264697066735822122044253868dfef839b64c6ffae3e4805eb253b8f8780f09f8aec7f60fee8725aa064736f6c634300080f0033

Deployed Bytecode Sourcemap

23110:2544:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12580:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14920:169;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24550:490;;;:::i;:::-;;13700:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;15682:573;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25411:240;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13542:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23243:25;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16664:215;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23524:48;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24043:499;;;:::i;:::-;;13871:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10983:103;;;:::i;:::-;;23408:51;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25048:133;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;10332:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12799:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23811:224;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17382:413;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14211:175;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;23199:37;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25283:120;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;23466:51;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;14449:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;25189:86;;;:::i;:::-;;11241:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12580:100;12634:13;12667:5;12660:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12580:100;:::o;14920:169::-;15003:4;15020:39;15029:12;:10;:12::i;:::-;15043:7;15052:6;15020:8;:39::i;:::-;15077:4;15070:11;;14920:169;;;;:::o;24550:490::-;24601:14;24618:12;24601:29;;24650:12;;;;;;;;;;;24649:13;24641:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;24782:1;24751:16;:28;24768:10;24751:28;;;;;;;;;;;;;;;;:32;;;;:::i;:::-;24717:8;;;;;;;;;;;:18;;;24736:10;24717:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:66;;24709:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;23345:17;24850:6;24835:12;;:21;;;;:::i;:::-;24834:40;;24826:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;24928:24;24945:6;24928:12;;:16;;:24;;;;:::i;:::-;24913:12;:39;;;;24995:1;24963:16;:28;24980:10;24963:28;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;25007:25;25013:10;25025:6;25007:5;:25::i;:::-;24590:450;24550:490::o;13700:108::-;13761:7;13788:12;;13781:19;;13700:108;:::o;15682:573::-;15822:4;15839:24;15866:11;:19;15878:6;15866:19;;;;;;;;;;;;;;;:33;15886:12;:10;:12::i;:::-;15866:33;;;;;;;;;;;;;;;;15839:60;;15934:17;15914:16;:37;15910:265;;15996:6;15976:16;:26;;15968:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;16091:57;16100:6;16108:12;:10;:12::i;:::-;16141:6;16122:16;:25;16091:8;:57::i;:::-;15910:265;16187:36;16197:6;16205:9;16216:6;16187:9;:36::i;:::-;16243:4;16236:11;;;15682:573;;;;;:::o;25411:240::-;10563:12;:10;:12::i;:::-;10552:23;;:7;:5;:7::i;:::-;:23;;;10544:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25533:9:::1;25529:115;25548:13;;:20;;25544:1;:24;25529:115;;;25589:43;25600:13;;25614:1;25600:16;;;;;;;:::i;:::-;;;;;;;;;;;;;;;:::i;:::-;25618:10;;25629:1;25618:13;;;;;;;:::i;:::-;;;;;;;;25589:10;:43::i;:::-;25570:3;;;;;:::i;:::-;;;;25529:115;;;;25411:240:::0;;;;:::o;13542:93::-;13600:5;13625:2;13618:9;;13542:93;:::o;23243:25::-;;;;;;;;;;;;;:::o;16664:215::-;16752:4;16769:80;16778:12;:10;:12::i;:::-;16792:7;16838:10;16801:11;:25;16813:12;:10;:12::i;:::-;16801:25;;;;;;;;;;;;;;;:34;16827:7;16801:34;;;;;;;;;;;;;;;;:47;;;;:::i;:::-;16769:8;:80::i;:::-;16867:4;16860:11;;16664:215;;;;:::o;23524:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;24043:499::-;24090:14;24107:13;24090:30;;24140:12;;;;;;;;;;;24139:13;24131:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;24278:1;24247:16;:28;24264:10;24247:28;;;;;;;;;;;;;;;;:32;;;;:::i;:::-;24207:14;;;;;;;;;;;:24;;;24232:10;24207:36;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:72;;24199:118;;;;;;;;;;;;:::i;:::-;;;;;;;;;23345:17;24352:6;24337:12;;:21;;;;:::i;:::-;24336:40;;24328:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;24430:24;24447:6;24430:12;;:16;;:24;;;;:::i;:::-;24415:12;:39;;;;24497:1;24465:16;:28;24482:10;24465:28;;;;;;;;;;;;;;;;:33;;;;;;;:::i;:::-;;;;;;;;24509:25;24515:10;24527:6;24509:5;:25::i;:::-;24079:463;24043:499::o;13871:127::-;13945:7;13972:9;:18;13982:7;13972:18;;;;;;;;;;;;;;;;13965:25;;13871:127;;;:::o;10983:103::-;10563:12;:10;:12::i;:::-;10552:23;;:7;:5;:7::i;:::-;:23;;;10544:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11048:30:::1;11075:1;11048:18;:30::i;:::-;10983:103::o:0;23408:51::-;;;;;;;;;;;;;;;;;:::o;25048:133::-;10563:12;:10;:12::i;:::-;10552:23;;:7;:5;:7::i;:::-;:23;;;10544:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25166:7:::1;25137:16;:26;25154:8;25137:26;;;;;;;;;;;;;;;;:36;;;;;;;;;;;;;;;;;;25048:133:::0;;:::o;10332:87::-;10378:7;10405:6;;;;;;;;;;;10398:13;;10332:87;:::o;12799:104::-;12855:13;12888:7;12881:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12799:104;:::o;23811:224::-;23883:16;:28;23900:10;23883:28;;;;;;;;;;;;;;;;;;;;;;;;;:69;;;;23937:14;;;;;;;;;;;23915:37;;:10;:37;;;23883:69;23875:122;;;;;;;;;;;;:::i;:::-;;;;;;;;;24008:19;24014:4;24020:6;24008:5;:19::i;:::-;23811:224;;:::o;17382:413::-;17475:4;17492:24;17519:11;:25;17531:12;:10;:12::i;:::-;17519:25;;;;;;;;;;;;;;;:34;17545:7;17519:34;;;;;;;;;;;;;;;;17492:61;;17592:15;17572:16;:35;;17564:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;17685:67;17694:12;:10;:12::i;:::-;17708:7;17736:15;17717:16;:34;17685:8;:67::i;:::-;17783:4;17776:11;;;17382:413;;;;:::o;14211:175::-;14297:4;14314:42;14324:12;:10;:12::i;:::-;14338:9;14349:6;14314:9;:42::i;:::-;14374:4;14367:11;;14211:175;;;;:::o;23199:37::-;;;;;;;;;;;;;:::o;25283:120::-;10563:12;:10;:12::i;:::-;10552:23;;:7;:5;:7::i;:::-;:23;;;10544:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25368:27:::1;25374:8;25384:10;25368:5;:27::i;:::-;25283:120:::0;;:::o;23466:51::-;;;;;;;;;;;;;;;;;:::o;14449:151::-;14538:7;14565:11;:18;14577:5;14565:18;;;;;;;;;;;;;;;:27;14584:7;14565:27;;;;;;;;;;;;;;;;14558:34;;14449:151;;;;:::o;25189:86::-;10563:12;:10;:12::i;:::-;10552:23;;:7;:5;:7::i;:::-;:23;;;10544:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;25255:12:::1;;;;;;;;;;;25254:13;25239:12;;:28;;;;;;;;;;;;;;;;;;25189:86::o:0;11241:201::-;10563:12;:10;:12::i;:::-;10552:23;;:7;:5;:7::i;:::-;:23;;;10544:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;11350:1:::1;11330:22;;:8;:22;;::::0;11322:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;11406:28;11425:8;11406:18;:28::i;:::-;11241:201:::0;:::o;6609:98::-;6662:7;6689:10;6682:17;;6609:98;:::o;21066:380::-;21219:1;21202:19;;:5;:19;;;21194:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21300:1;21281:21;;:7;:21;;;21273:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;21384:6;21354:11;:18;21366:5;21354:18;;;;;;;;;;;;;;;:27;21373:7;21354:27;;;;;;;;;;;;;;;:36;;;;21422:7;21406:32;;21415:5;21406:32;;;21431:6;21406:32;;;;;;:::i;:::-;;;;;;;;21066:380;;;:::o;2411:98::-;2469:7;2500:1;2496;:5;;;;:::i;:::-;2489:12;;2411:98;;;;:::o;19305:399::-;19408:1;19389:21;;:7;:21;;;19381:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;19459:49;19488:1;19492:7;19501:6;19459:20;:49::i;:::-;19537:6;19521:12;;:22;;;;;;;:::i;:::-;;;;;;;;19576:6;19554:9;:18;19564:7;19554:18;;;;;;;;;;;;;;;;:28;;;;;;;:::i;:::-;;;;;;;;19619:7;19598:37;;19615:1;19598:37;;;19628:6;19598:37;;;;;;:::i;:::-;;;;;;;;19648:48;19676:1;19680:7;19689:6;19648:19;:48::i;:::-;19305:399;;:::o;18285:733::-;18443:1;18425:20;;:6;:20;;;18417:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;18527:1;18506:23;;:9;:23;;;18498:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;18582:47;18603:6;18611:9;18622:6;18582:20;:47::i;:::-;18642:21;18666:9;:17;18676:6;18666:17;;;;;;;;;;;;;;;;18642:41;;18719:6;18702:13;:23;;18694:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;18840:6;18824:13;:22;18804:9;:17;18814:6;18804:17;;;;;;;;;;;;;;;:42;;;;18892:6;18868:9;:20;18878:9;18868:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;18933:9;18916:35;;18925:6;18916:35;;;18944:6;18916:35;;;;;;:::i;:::-;;;;;;;;18964:46;18984:6;18992:9;19003:6;18964:19;:46::i;:::-;18406:612;18285:733;;;:::o;11602:191::-;11676:16;11695:6;;;;;;;;;;;11676:25;;11721:8;11712:6;;:17;;;;;;;;;;;;;;;;;;11776:8;11745:40;;11766:8;11745:40;;;;;;;;;;;;11665:128;11602:191;:::o;20037:591::-;20140:1;20121:21;;:7;:21;;;20113:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;20193:49;20214:7;20231:1;20235:6;20193:20;:49::i;:::-;20255:22;20280:9;:18;20290:7;20280:18;;;;;;;;;;;;;;;;20255:43;;20335:6;20317:14;:24;;20309:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;20454:6;20437:14;:23;20416:9;:18;20426:7;20416:18;;;;;;;;;;;;;;;:44;;;;20498:6;20482:12;;:22;;;;;;;:::i;:::-;;;;;;;;20548:1;20522:37;;20531:7;20522:37;;;20552:6;20522:37;;;;;;:::i;:::-;;;;;;;;20572:48;20592:7;20609:1;20613:6;20572:19;:48::i;:::-;20102:526;20037:591;;:::o;22046:125::-;;;;:::o;22775:124::-;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:307::-;355:1;365:113;379:6;376:1;373:13;365:113;;;464:1;459:3;455:11;449:18;445:1;440:3;436:11;429:39;401:2;398:1;394:10;389:15;;365:113;;;496:6;493:1;490:13;487:101;;;576:1;567:6;562:3;558:16;551:27;487:101;336:258;287:307;;;:::o;600:102::-;641:6;692:2;688:7;683:2;676:5;672:14;668:28;658:38;;600:102;;;:::o;708:364::-;796:3;824:39;857:5;824:39;:::i;:::-;879:71;943:6;938:3;879:71;:::i;:::-;872:78;;959:52;1004:6;999:3;992:4;985:5;981:16;959:52;:::i;:::-;1036:29;1058:6;1036:29;:::i;:::-;1031:3;1027:39;1020:46;;800:272;708:364;;;;:::o;1078:313::-;1191:4;1229:2;1218:9;1214:18;1206:26;;1278:9;1272:4;1268:20;1264:1;1253:9;1249:17;1242:47;1306:78;1379:4;1370:6;1306:78;:::i;:::-;1298:86;;1078:313;;;;:::o;1478:117::-;1587:1;1584;1577:12;1601:117;1710:1;1707;1700:12;1724:126;1761:7;1801:42;1794:5;1790:54;1779:65;;1724:126;;;:::o;1856:96::-;1893:7;1922:24;1940:5;1922:24;:::i;:::-;1911:35;;1856:96;;;:::o;1958:122::-;2031:24;2049:5;2031:24;:::i;:::-;2024:5;2021:35;2011:63;;2070:1;2067;2060:12;2011:63;1958:122;:::o;2086:139::-;2132:5;2170:6;2157:20;2148:29;;2186:33;2213:5;2186:33;:::i;:::-;2086:139;;;;:::o;2231:77::-;2268:7;2297:5;2286:16;;2231:77;;;:::o;2314:122::-;2387:24;2405:5;2387:24;:::i;:::-;2380:5;2377:35;2367:63;;2426:1;2423;2416:12;2367:63;2314:122;:::o;2442:139::-;2488:5;2526:6;2513:20;2504:29;;2542:33;2569:5;2542:33;:::i;:::-;2442:139;;;;:::o;2587:474::-;2655:6;2663;2712:2;2700:9;2691:7;2687:23;2683:32;2680:119;;;2718:79;;:::i;:::-;2680:119;2838:1;2863:53;2908:7;2899:6;2888:9;2884:22;2863:53;:::i;:::-;2853:63;;2809:117;2965:2;2991:53;3036:7;3027:6;3016:9;3012:22;2991:53;:::i;:::-;2981:63;;2936:118;2587:474;;;;;:::o;3067:90::-;3101:7;3144:5;3137:13;3130:21;3119:32;;3067:90;;;:::o;3163:109::-;3244:21;3259:5;3244:21;:::i;:::-;3239:3;3232:34;3163:109;;:::o;3278:210::-;3365:4;3403:2;3392:9;3388:18;3380:26;;3416:65;3478:1;3467:9;3463:17;3454:6;3416:65;:::i;:::-;3278:210;;;;:::o;3494:118::-;3581:24;3599:5;3581:24;:::i;:::-;3576:3;3569:37;3494:118;;:::o;3618:222::-;3711:4;3749:2;3738:9;3734:18;3726:26;;3762:71;3830:1;3819:9;3815:17;3806:6;3762:71;:::i;:::-;3618:222;;;;:::o;3846:619::-;3923:6;3931;3939;3988:2;3976:9;3967:7;3963:23;3959:32;3956:119;;;3994:79;;:::i;:::-;3956:119;4114:1;4139:53;4184:7;4175:6;4164:9;4160:22;4139:53;:::i;:::-;4129:63;;4085:117;4241:2;4267:53;4312:7;4303:6;4292:9;4288:22;4267:53;:::i;:::-;4257:63;;4212:118;4369:2;4395:53;4440:7;4431:6;4420:9;4416:22;4395:53;:::i;:::-;4385:63;;4340:118;3846:619;;;;;:::o;4471:117::-;4580:1;4577;4570:12;4594:117;4703:1;4700;4693:12;4717:117;4826:1;4823;4816:12;4857:568;4930:8;4940:6;4990:3;4983:4;4975:6;4971:17;4967:27;4957:122;;4998:79;;:::i;:::-;4957:122;5111:6;5098:20;5088:30;;5141:18;5133:6;5130:30;5127:117;;;5163:79;;:::i;:::-;5127:117;5277:4;5269:6;5265:17;5253:29;;5331:3;5323:4;5315:6;5311:17;5301:8;5297:32;5294:41;5291:128;;;5338:79;;:::i;:::-;5291:128;4857:568;;;;;:::o;5448:::-;5521:8;5531:6;5581:3;5574:4;5566:6;5562:17;5558:27;5548:122;;5589:79;;:::i;:::-;5548:122;5702:6;5689:20;5679:30;;5732:18;5724:6;5721:30;5718:117;;;5754:79;;:::i;:::-;5718:117;5868:4;5860:6;5856:17;5844:29;;5922:3;5914:4;5906:6;5902:17;5892:8;5888:32;5885:41;5882:128;;;5929:79;;:::i;:::-;5882:128;5448:568;;;;;:::o;6022:934::-;6144:6;6152;6160;6168;6217:2;6205:9;6196:7;6192:23;6188:32;6185:119;;;6223:79;;:::i;:::-;6185:119;6371:1;6360:9;6356:17;6343:31;6401:18;6393:6;6390:30;6387:117;;;6423:79;;:::i;:::-;6387:117;6536:80;6608:7;6599:6;6588:9;6584:22;6536:80;:::i;:::-;6518:98;;;;6314:312;6693:2;6682:9;6678:18;6665:32;6724:18;6716:6;6713:30;6710:117;;;6746:79;;:::i;:::-;6710:117;6859:80;6931:7;6922:6;6911:9;6907:22;6859:80;:::i;:::-;6841:98;;;;6636:313;6022:934;;;;;;;:::o;6962:86::-;6997:7;7037:4;7030:5;7026:16;7015:27;;6962:86;;;:::o;7054:112::-;7137:22;7153:5;7137:22;:::i;:::-;7132:3;7125:35;7054:112;;:::o;7172:214::-;7261:4;7299:2;7288:9;7284:18;7276:26;;7312:67;7376:1;7365:9;7361:17;7352:6;7312:67;:::i;:::-;7172:214;;;;:::o;7392:60::-;7420:3;7441:5;7434:12;;7392:60;;;:::o;7458:142::-;7508:9;7541:53;7559:34;7568:24;7586:5;7568:24;:::i;:::-;7559:34;:::i;:::-;7541:53;:::i;:::-;7528:66;;7458:142;;;:::o;7606:126::-;7656:9;7689:37;7720:5;7689:37;:::i;:::-;7676:50;;7606:126;;;:::o;7738:144::-;7806:9;7839:37;7870:5;7839:37;:::i;:::-;7826:50;;7738:144;;;:::o;7888:167::-;7993:55;8042:5;7993:55;:::i;:::-;7988:3;7981:68;7888:167;;:::o;8061:258::-;8172:4;8210:2;8199:9;8195:18;8187:26;;8223:89;8309:1;8298:9;8294:17;8285:6;8223:89;:::i;:::-;8061:258;;;;:::o;8325:329::-;8384:6;8433:2;8421:9;8412:7;8408:23;8404:32;8401:119;;;8439:79;;:::i;:::-;8401:119;8559:1;8584:53;8629:7;8620:6;8609:9;8605:22;8584:53;:::i;:::-;8574:63;;8530:117;8325:329;;;;:::o;8660:116::-;8730:21;8745:5;8730:21;:::i;:::-;8723:5;8720:32;8710:60;;8766:1;8763;8756:12;8710:60;8660:116;:::o;8782:133::-;8825:5;8863:6;8850:20;8841:29;;8879:30;8903:5;8879:30;:::i;:::-;8782:133;;;;:::o;8921:468::-;8986:6;8994;9043:2;9031:9;9022:7;9018:23;9014:32;9011:119;;;9049:79;;:::i;:::-;9011:119;9169:1;9194:53;9239:7;9230:6;9219:9;9215:22;9194:53;:::i;:::-;9184:63;;9140:117;9296:2;9322:50;9364:7;9355:6;9344:9;9340:22;9322:50;:::i;:::-;9312:60;;9267:115;8921:468;;;;;:::o;9395:118::-;9482:24;9500:5;9482:24;:::i;:::-;9477:3;9470:37;9395:118;;:::o;9519:222::-;9612:4;9650:2;9639:9;9635:18;9627:26;;9663:71;9731:1;9720:9;9716:17;9707:6;9663:71;:::i;:::-;9519:222;;;;:::o;9747:150::-;9821:9;9854:37;9885:5;9854:37;:::i;:::-;9841:50;;9747:150;;;:::o;9903:179::-;10014:61;10069:5;10014:61;:::i;:::-;10009:3;10002:74;9903:179;;:::o;10088:270::-;10205:4;10243:2;10232:9;10228:18;10220:26;;10256:95;10348:1;10337:9;10333:17;10324:6;10256:95;:::i;:::-;10088:270;;;;:::o;10364:474::-;10432:6;10440;10489:2;10477:9;10468:7;10464:23;10460:32;10457:119;;;10495:79;;:::i;:::-;10457:119;10615:1;10640:53;10685:7;10676:6;10665:9;10661:22;10640:53;:::i;:::-;10630:63;;10586:117;10742:2;10768:53;10813:7;10804:6;10793:9;10789:22;10768:53;:::i;:::-;10758:63;;10713:118;10364:474;;;;;:::o;10844:180::-;10892:77;10889:1;10882:88;10989:4;10986:1;10979:15;11013:4;11010:1;11003:15;11030:320;11074:6;11111:1;11105:4;11101:12;11091:22;;11158:1;11152:4;11148:12;11179:18;11169:81;;11235:4;11227:6;11223:17;11213:27;;11169:81;11297:2;11289:6;11286:14;11266:18;11263:38;11260:84;;11316:18;;:::i;:::-;11260:84;11081:269;11030:320;;;:::o;11356:181::-;11496:33;11492:1;11484:6;11480:14;11473:57;11356:181;:::o;11543:366::-;11685:3;11706:67;11770:2;11765:3;11706:67;:::i;:::-;11699:74;;11782:93;11871:3;11782:93;:::i;:::-;11900:2;11895:3;11891:12;11884:19;;11543:366;;;:::o;11915:419::-;12081:4;12119:2;12108:9;12104:18;12096:26;;12168:9;12162:4;12158:20;12154:1;12143:9;12139:17;12132:47;12196:131;12322:4;12196:131;:::i;:::-;12188:139;;11915:419;;;:::o;12340:180::-;12388:77;12385:1;12378:88;12485:4;12482:1;12475:15;12509:4;12506:1;12499:15;12526:305;12566:3;12585:20;12603:1;12585:20;:::i;:::-;12580:25;;12619:20;12637:1;12619:20;:::i;:::-;12614:25;;12773:1;12705:66;12701:74;12698:1;12695:81;12692:107;;;12779:18;;:::i;:::-;12692:107;12823:1;12820;12816:9;12809:16;;12526:305;;;;:::o;12837:143::-;12894:5;12925:6;12919:13;12910:22;;12941:33;12968:5;12941:33;:::i;:::-;12837:143;;;;:::o;12986:351::-;13056:6;13105:2;13093:9;13084:7;13080:23;13076:32;13073:119;;;13111:79;;:::i;:::-;13073:119;13231:1;13256:64;13312:7;13303:6;13292:9;13288:22;13256:64;:::i;:::-;13246:74;;13202:128;12986:351;;;;:::o;13343:177::-;13483:29;13479:1;13471:6;13467:14;13460:53;13343:177;:::o;13526:366::-;13668:3;13689:67;13753:2;13748:3;13689:67;:::i;:::-;13682:74;;13765:93;13854:3;13765:93;:::i;:::-;13883:2;13878:3;13874:12;13867:19;;13526:366;;;:::o;13898:419::-;14064:4;14102:2;14091:9;14087:18;14079:26;;14151:9;14145:4;14141:20;14137:1;14126:9;14122:17;14115:47;14179:131;14305:4;14179:131;:::i;:::-;14171:139;;13898:419;;;:::o;14323:173::-;14463:25;14459:1;14451:6;14447:14;14440:49;14323:173;:::o;14502:366::-;14644:3;14665:67;14729:2;14724:3;14665:67;:::i;:::-;14658:74;;14741:93;14830:3;14741:93;:::i;:::-;14859:2;14854:3;14850:12;14843:19;;14502:366;;;:::o;14874:419::-;15040:4;15078:2;15067:9;15063:18;15055:26;;15127:9;15121:4;15117:20;15113:1;15102:9;15098:17;15091:47;15155:131;15281:4;15155:131;:::i;:::-;15147:139;;14874:419;;;:::o;15299:227::-;15439:34;15435:1;15427:6;15423:14;15416:58;15508:10;15503:2;15495:6;15491:15;15484:35;15299:227;:::o;15532:366::-;15674:3;15695:67;15759:2;15754:3;15695:67;:::i;:::-;15688:74;;15771:93;15860:3;15771:93;:::i;:::-;15889:2;15884:3;15880:12;15873:19;;15532:366;;;:::o;15904:419::-;16070:4;16108:2;16097:9;16093:18;16085:26;;16157:9;16151:4;16147:20;16143:1;16132:9;16128:17;16121:47;16185:131;16311:4;16185:131;:::i;:::-;16177:139;;15904:419;;;:::o;16329:182::-;16469:34;16465:1;16457:6;16453:14;16446:58;16329:182;:::o;16517:366::-;16659:3;16680:67;16744:2;16739:3;16680:67;:::i;:::-;16673:74;;16756:93;16845:3;16756:93;:::i;:::-;16874:2;16869:3;16865:12;16858:19;;16517:366;;;:::o;16889:419::-;17055:4;17093:2;17082:9;17078:18;17070:26;;17142:9;17136:4;17132:20;17128:1;17117:9;17113:17;17106:47;17170:131;17296:4;17170:131;:::i;:::-;17162:139;;16889:419;;;:::o;17314:180::-;17362:77;17359:1;17352:88;17459:4;17456:1;17449:15;17483:4;17480:1;17473:15;17500:233;17539:3;17562:24;17580:5;17562:24;:::i;:::-;17553:33;;17608:66;17601:5;17598:77;17595:103;;17678:18;;:::i;:::-;17595:103;17725:1;17718:5;17714:13;17707:20;;17500:233;;;:::o;17739:220::-;17879:34;17875:1;17867:6;17863:14;17856:58;17948:3;17943:2;17935:6;17931:15;17924:28;17739:220;:::o;17965:366::-;18107:3;18128:67;18192:2;18187:3;18128:67;:::i;:::-;18121:74;;18204:93;18293:3;18204:93;:::i;:::-;18322:2;18317:3;18313:12;18306:19;;17965:366;;;:::o;18337:419::-;18503:4;18541:2;18530:9;18526:18;18518:26;;18590:9;18584:4;18580:20;18576:1;18565:9;18561:17;18554:47;18618:131;18744:4;18618:131;:::i;:::-;18610:139;;18337:419;;;:::o;18762:227::-;18902:34;18898:1;18890:6;18886:14;18879:58;18971:10;18966:2;18958:6;18954:15;18947:35;18762:227;:::o;18995:366::-;19137:3;19158:67;19222:2;19217:3;19158:67;:::i;:::-;19151:74;;19234:93;19323:3;19234:93;:::i;:::-;19352:2;19347:3;19343:12;19336:19;;18995:366;;;:::o;19367:419::-;19533:4;19571:2;19560:9;19556:18;19548:26;;19620:9;19614:4;19610:20;19606:1;19595:9;19591:17;19584:47;19648:131;19774:4;19648:131;:::i;:::-;19640:139;;19367:419;;;:::o;19792:224::-;19932:34;19928:1;19920:6;19916:14;19909:58;20001:7;19996:2;19988:6;19984:15;19977:32;19792:224;:::o;20022:366::-;20164:3;20185:67;20249:2;20244:3;20185:67;:::i;:::-;20178:74;;20261:93;20350:3;20261:93;:::i;:::-;20379:2;20374:3;20370:12;20363:19;;20022:366;;;:::o;20394:419::-;20560:4;20598:2;20587:9;20583:18;20575:26;;20647:9;20641:4;20637:20;20633:1;20622:9;20618:17;20611:47;20675:131;20801:4;20675:131;:::i;:::-;20667:139;;20394:419;;;:::o;20819:225::-;20959:34;20955:1;20947:6;20943:14;20936:58;21028:8;21023:2;21015:6;21011:15;21004:33;20819:225;:::o;21050:366::-;21192:3;21213:67;21277:2;21272:3;21213:67;:::i;:::-;21206:74;;21289:93;21378:3;21289:93;:::i;:::-;21407:2;21402:3;21398:12;21391:19;;21050:366;;;:::o;21422:419::-;21588:4;21626:2;21615:9;21611:18;21603:26;;21675:9;21669:4;21665:20;21661:1;21650:9;21646:17;21639:47;21703:131;21829:4;21703:131;:::i;:::-;21695:139;;21422:419;;;:::o;21847:223::-;21987:34;21983:1;21975:6;21971:14;21964:58;22056:6;22051:2;22043:6;22039:15;22032:31;21847:223;:::o;22076:366::-;22218:3;22239:67;22303:2;22298:3;22239:67;:::i;:::-;22232:74;;22315:93;22404:3;22315:93;:::i;:::-;22433:2;22428:3;22424:12;22417:19;;22076:366;;;:::o;22448:419::-;22614:4;22652:2;22641:9;22637:18;22629:26;;22701:9;22695:4;22691:20;22687:1;22676:9;22672:17;22665:47;22729:131;22855:4;22729:131;:::i;:::-;22721:139;;22448:419;;;:::o;22873:221::-;23013:34;23009:1;23001:6;22997:14;22990:58;23082:4;23077:2;23069:6;23065:15;23058:29;22873:221;:::o;23100:366::-;23242:3;23263:67;23327:2;23322:3;23263:67;:::i;:::-;23256:74;;23339:93;23428:3;23339:93;:::i;:::-;23457:2;23452:3;23448:12;23441:19;;23100:366;;;:::o;23472:419::-;23638:4;23676:2;23665:9;23661:18;23653:26;;23725:9;23719:4;23715:20;23711:1;23700:9;23696:17;23689:47;23753:131;23879:4;23753:131;:::i;:::-;23745:139;;23472:419;;;:::o;23897:181::-;24037:33;24033:1;24025:6;24021:14;24014:57;23897:181;:::o;24084:366::-;24226:3;24247:67;24311:2;24306:3;24247:67;:::i;:::-;24240:74;;24323:93;24412:3;24323:93;:::i;:::-;24441:2;24436:3;24432:12;24425:19;;24084:366;;;:::o;24456:419::-;24622:4;24660:2;24649:9;24645:18;24637:26;;24709:9;24703:4;24699:20;24695:1;24684:9;24680:17;24673:47;24737:131;24863:4;24737:131;:::i;:::-;24729:139;;24456:419;;;:::o;24881:224::-;25021:34;25017:1;25009:6;25005:14;24998:58;25090:7;25085:2;25077:6;25073:15;25066:32;24881:224;:::o;25111:366::-;25253:3;25274:67;25338:2;25333:3;25274:67;:::i;:::-;25267:74;;25350:93;25439:3;25350:93;:::i;:::-;25468:2;25463:3;25459:12;25452:19;;25111:366;;;:::o;25483:419::-;25649:4;25687:2;25676:9;25672:18;25664:26;;25736:9;25730:4;25726:20;25722:1;25711:9;25707:17;25700:47;25764:131;25890:4;25764:131;:::i;:::-;25756:139;;25483:419;;;:::o;25908:222::-;26048:34;26044:1;26036:6;26032:14;26025:58;26117:5;26112:2;26104:6;26100:15;26093:30;25908:222;:::o;26136:366::-;26278:3;26299:67;26363:2;26358:3;26299:67;:::i;:::-;26292:74;;26375:93;26464:3;26375:93;:::i;:::-;26493:2;26488:3;26484:12;26477:19;;26136:366;;;:::o;26508:419::-;26674:4;26712:2;26701:9;26697:18;26689:26;;26761:9;26755:4;26751:20;26747:1;26736:9;26732:17;26725:47;26789:131;26915:4;26789:131;:::i;:::-;26781:139;;26508:419;;;:::o;26933:225::-;27073:34;27069:1;27061:6;27057:14;27050:58;27142:8;27137:2;27129:6;27125:15;27118:33;26933:225;:::o;27164:366::-;27306:3;27327:67;27391:2;27386:3;27327:67;:::i;:::-;27320:74;;27403:93;27492:3;27403:93;:::i;:::-;27521:2;27516:3;27512:12;27505:19;;27164:366;;;:::o;27536:419::-;27702:4;27740:2;27729:9;27725:18;27717:26;;27789:9;27783:4;27779:20;27775:1;27764:9;27760:17;27753:47;27817:131;27943:4;27817:131;:::i;:::-;27809:139;;27536:419;;;:::o;27961:220::-;28101:34;28097:1;28089:6;28085:14;28078:58;28170:3;28165:2;28157:6;28153:15;28146:28;27961:220;:::o;28187:366::-;28329:3;28350:67;28414:2;28409:3;28350:67;:::i;:::-;28343:74;;28426:93;28515:3;28426:93;:::i;:::-;28544:2;28539:3;28535:12;28528:19;;28187:366;;;:::o;28559:419::-;28725:4;28763:2;28752:9;28748:18;28740:26;;28812:9;28806:4;28802:20;28798:1;28787:9;28783:17;28776:47;28840:131;28966:4;28840:131;:::i;:::-;28832:139;;28559:419;;;:::o;28984:221::-;29124:34;29120:1;29112:6;29108:14;29101:58;29193:4;29188:2;29180:6;29176:15;29169:29;28984:221;:::o;29211:366::-;29353:3;29374:67;29438:2;29433:3;29374:67;:::i;:::-;29367:74;;29450:93;29539:3;29450:93;:::i;:::-;29568:2;29563:3;29559:12;29552:19;;29211:366;;;:::o;29583:419::-;29749:4;29787:2;29776:9;29772:18;29764:26;;29836:9;29830:4;29826:20;29822:1;29811:9;29807:17;29800:47;29864:131;29990:4;29864:131;:::i;:::-;29856:139;;29583:419;;;:::o;30008:191::-;30048:4;30068:20;30086:1;30068:20;:::i;:::-;30063:25;;30102:20;30120:1;30102:20;:::i;:::-;30097:25;;30141:1;30138;30135:8;30132:34;;;30146:18;;:::i;:::-;30132:34;30191:1;30188;30184:9;30176:17;;30008:191;;;;:::o

Swarm Source

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