Token lexDAO Research

 

Overview [ERC-20]

Max Total Supply:
100 LDR

Holders:
31

Transfers:
-

Loading
[ Download CSV Export  ] 
Loading
[ Download CSV Export  ] 
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume
Loading

Similar Match Source Code
Note: This contract matches the deployed ByteCode of the Source Code for Contract 0x51954e7045fc33413f5fe55d0bff4a7b71dba6c7

Contract Name:
offerToken

Compiler Version
v0.5.9+commit.e560f70d

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

pragma solidity ^0.5.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
contract Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor () internal { }
    // solhint-disable-previous-line no-empty-blocks

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

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     * - The divisor cannot be zero.
     *
     * _Available since v2.4.0._
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

/**
 * @dev Interface of the ERC20 standard as defined in the EIP. Does not include
 * the optional functions; to access them see {ERC20Detailed}.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

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

    mapping (address => uint256) private _balances;

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

    uint256 private _totalSupply;

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

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

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

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

    /**
     * @dev See {IERC20-approve}.
     *
     * Requirements:
     *
     * - `spender` cannot be the zero address.
     */
    function approve(address spender, uint256 amount) public 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};
     *
     * 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 returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

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

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

        _balances[sender] = _balances[sender].sub(amount, "ERC20: transfer amount exceeds balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(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
     *
     * - `to` cannot be the zero address.
     */
    function _mint(address account, uint256 amount) internal {
        require(account != address(0), "ERC20: mint to the zero address");

        _totalSupply = _totalSupply.add(amount);
        _balances[account] = _balances[account].add(amount);
        emit Transfer(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 {
        require(account != address(0), "ERC20: burn from the zero address");

        _balances[account] = _balances[account].sub(amount, "ERC20: burn amount exceeds balance");
        _totalSupply = _totalSupply.sub(amount);
        emit Transfer(account, address(0), amount);
    }

    /**
     * @dev Sets `amount` as the allowance of `spender` over the `owner`s tokens.
     *
     * This is internal function is equivalent to `approve`, and can be used to
     * e.g. set automatic allowances for certain subsystems, etc.
     *
     * Emits an {Approval} event.
     *
     * Requirements:
     *
     * - `owner` cannot be the zero address.
     * - `spender` cannot be the zero address.
     */
    function _approve(address owner, address spender, uint256 amount) internal {
        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 Destroys `amount` tokens from `account`.`amount` is then deducted
     * from the caller's allowance.
     *
     * See {_burn} and {_approve}.
     */
    function _burnFrom(address account, uint256 amount) internal {
        _burn(account, amount);
        _approve(account, _msgSender(), _allowances[account][_msgSender()].sub(amount, "ERC20: burn amount exceeds allowance"));
    }
}

/**
 * @dev Extension of {ERC20} that allows token holders to destroy both their own
 * tokens and those that they have an allowance for, in a way that can be
 * recognized off-chain (via event analysis).
 */
contract ERC20Burnable is Context, ERC20 {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public {
        _burn(_msgSender(), amount);
    }

    /**
     * @dev See {ERC20-_burnFrom}.
     */
    function burnFrom(address account, uint256 amount) public {
        _burnFrom(account, amount);
    }
}

contract offerToken is ERC20Burnable {
    string public name; // name for offerToken registration
    string public symbol; // symbol for offerToken registration
    string public offer; // stored offerToken terms / e.g., IPFS hash
    uint256 public rate; // mint rate amount of offerToken to ether (Ξ) / e.g., '10' = 1 ETH mints 10 offerToken
    uint256 public min; // minimum amount of OfferToken required to redeem offer / e.g., '1' offerToken to burn and redeem stored offer
    uint256 public decimals; // default '18' decimals to mirror ether-wei factoring in offerToken
    address payable public offeror; // public address storing terms for offerToken redemption  
    bool public closed; // public status of offer closure / default = "false" / adjustable by offeror
    
    uint256 public RR; // counter for offerToken redemption requests
    
    mapping (uint256 => requests) public redemptions; 
    
    struct requests { // RR: redemption requests stored on burn of offerToken at registered rate
        address requester; 
        string details; 
        string response; 
        string review;
        uint256 rNumber; 
        uint256 timeStamp;  
        bool responded;
    }
    
    constructor(
        string memory _name, 
        string memory _symbol, 
        string memory _offer, 
        uint256 _init, 
        uint256 _rate,
        uint256 _min,
        uint8 _decimals, 
        address payable _offeror) public {
        name = _name;
        symbol = _symbol;
        offer = _offer;
        rate = _rate;
        min = _min;
        decimals = _decimals;
        offeror = _offeror;
        
        _mint(offeror, _init); // mint offeror designated initial amount of offerToken 
    }
    
    modifier onlyOfferor {
    	require(msg.sender == offeror, "offerToken: onlyOfferor - not offeror");
   	_;
    }
    
    function adjustOfferRate(uint256 newRate) public onlyOfferor { // offeror can adjust rate between ether (Ξ) and offerToken
        rate = newRate;
    }
    
    function updateOfferStatus(bool offerClosed) public onlyOfferor { // offeror can open and close offer
        closed = offerClosed;
    }
    
    function buyOfferToken() public payable { // public can swap ether (Ξ) for offerToken at registered rate
        require(closed == false); // offer must be open to buy redemption units
        
        _mint(msg.sender, msg.value.mul(rate)); // mints offerToken in exchange for ether (Ξ) msg.value at offer rate
        offeror.transfer(msg.value); // forwards ether (Ξ) to offeror 
    }
    
    function redeemOfferToken(string memory details) public {
        _burn(_msgSender(), min); // redeem Offertoken at minimum burn rate 
        
        uint256 rNumber = RR.add(1); 
        
        RR = RR.add(1); // counts new entry to redemption counter 
        
        redemptions[rNumber] = requests( 
            msg.sender,
            details,
            "PENDING",
            "RESERVED",
            rNumber,
            now,
            false);
    }
    
    function writeRedemptionResponse(uint256 rNumber, string memory response) public onlyOfferor {
        requests storage rr = redemptions[rNumber]; // retrieve RR data
        
        redemptions[rNumber] = requests( 
            rr.requester,
            rr.details,
            response,
            rr.review,
            rNumber,
            rr.timeStamp,
            true);
    }
    
    function writeRedemptionReview(uint256 rNumber, string memory review) public {
        requests storage rr = redemptions[rNumber]; // retrieve RR data
        
        require(msg.sender == rr.requester); // only requester can store review of redemption responses
        require(rr.responded == true); // offeror response must be provided prior to review

        redemptions[rNumber] = requests( 
            rr.requester,
            rr.details,
            rr.response,
            review,
            rNumber,
            rr.timeStamp,
            true);
   }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"amount","type":"uint256"}],"name":"approve","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"sender","type":"address"},{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"amount","type":"uint256"}],"name":"burn","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"closed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"offeror","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"account","type":"address"}],"name":"balanceOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"details","type":"string"}],"name":"redeemOfferToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"account","type":"address"},{"name":"amount","type":"uint256"}],"name":"burnFrom","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"buyOfferToken","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"rNumber","type":"uint256"},{"name":"review","type":"string"}],"name":"writeRedemptionReview","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"rNumber","type":"uint256"},{"name":"response","type":"string"}],"name":"writeRedemptionResponse","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"recipient","type":"address"},{"name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"RR","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"redemptions","outputs":[{"name":"requester","type":"address"},{"name":"details","type":"string"},{"name":"response","type":"string"},{"name":"review","type":"string"},{"name":"rNumber","type":"uint256"},{"name":"timeStamp","type":"uint256"},{"name":"responded","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"offer","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newRate","type":"uint256"}],"name":"adjustOfferRate","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"owner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"offerClosed","type":"bool"}],"name":"updateOfferStatus","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"min","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_name","type":"string"},{"name":"_symbol","type":"string"},{"name":"_offer","type":"string"},{"name":"_init","type":"uint256"},{"name":"_rate","type":"uint256"},{"name":"_min","type":"uint256"},{"name":"_decimals","type":"uint8"},{"name":"_offeror","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"owner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"value","type":"uint256"}],"name":"Approval","type":"event"}]

60806040523480156200001157600080fd5b50604051620032ab380380620032ab83398181016040526101008110156200003857600080fd5b8101908080516401000000008111156200005157600080fd5b828101905060208101848111156200006857600080fd5b81518560018202830111640100000000821117156200008657600080fd5b50509291906020018051640100000000811115620000a357600080fd5b82810190506020810184811115620000ba57600080fd5b8151856001820283011164010000000082111715620000d857600080fd5b50509291906020018051640100000000811115620000f557600080fd5b828101905060208101848111156200010c57600080fd5b81518560018202830111640100000000821117156200012a57600080fd5b5050929190602001805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919050505087600390805190602001906200017f929190620004a0565b50866004908051906020019062000198929190620004a0565b508560059080519060200190620001b1929190620004a0565b5083600681905550826007819055508160ff1660088190555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506200023f600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866200024d60201b60201c565b50505050505050506200054f565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415620002f1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6200030d816002546200041760201b6200252a1790919060201c565b6002819055506200036b816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546200041760201b6200252a1790919060201c565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b60008082840190508381101562000496576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10620004e357805160ff191683800117855562000514565b8280016001018555821562000514579182015b8281111562000513578251825591602001919060010190620004f6565b5b50905062000523919062000527565b5090565b6200054c91905b80821115620005485760008160009055506001016200052e565b5090565b90565b612d4c806200055f6000396000f3fe6080604052600436106101815760003560e01c80637dfec8d7116100d1578063b7e957dc1161008a578063d079d51211610064578063d079d51214610c10578063dd62ed3e14610c4b578063de077c5314610cd0578063f889794514610d0d57610181565b8063b7e957dc1461097d578063beb65893146109a8578063c028df0614610b8057610181565b80637dfec8d714610659578063828a4aaa14610663578063853a56f91461073557806395d89b4114610807578063a457c2d714610897578063a9059cbb1461090a57610181565b8063395093511161013e5780636dbf6b0d116101185780636dbf6b0d1461047a57806370a08231146104d157806377033c711461053657806379cc6790146105fe57610181565b8063395093511461039d57806342966c6814610410578063597e1fb51461044b57610181565b806306fdde0314610186578063095ea7b31461021657806318160ddd1461028957806323b872dd146102b45780632c4e722e14610347578063313ce56714610372575b600080fd5b34801561019257600080fd5b5061019b610d38565b6040518080602001828103825283818151815260200191508051906020019080838360005b838110156101db5780820151818401526020810190506101c0565b50505050905090810190601f1680156102085780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561022257600080fd5b5061026f6004803603604081101561023957600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dd6565b604051808215151515815260200191505060405180910390f35b34801561029557600080fd5b5061029e610df4565b6040518082815260200191505060405180910390f35b3480156102c057600080fd5b5061032d600480360360608110156102d757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610dfe565b604051808215151515815260200191505060405180910390f35b34801561035357600080fd5b5061035c610ed7565b6040518082815260200191505060405180910390f35b34801561037e57600080fd5b50610387610edd565b6040518082815260200191505060405180910390f35b3480156103a957600080fd5b506103f6600480360360408110156103c057600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ee3565b604051808215151515815260200191505060405180910390f35b34801561041c57600080fd5b506104496004803603602081101561043357600080fd5b8101908080359060200190929190505050610f96565b005b34801561045757600080fd5b50610460610faa565b604051808215151515815260200191505060405180910390f35b34801561048657600080fd5b5061048f610fbd565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156104dd57600080fd5b50610520600480360360208110156104f457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610fe3565b6040518082815260200191505060405180910390f35b34801561054257600080fd5b506105fc6004803603602081101561055957600080fd5b810190808035906020019064010000000081111561057657600080fd5b82018360208201111561058857600080fd5b803590602001918460018302840111640100000000831117156105aa57600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f82011690508083019250505050505050919291929050505061102b565b005b34801561060a57600080fd5b506106576004803603604081101561062157600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611216565b005b610661611224565b005b34801561066f57600080fd5b506107336004803603604081101561068657600080fd5b8101908080359060200190929190803590602001906401000000008111156106ad57600080fd5b8201836020820111156106bf57600080fd5b803590602001918460018302840111640100000000831117156106e157600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506112cd565b005b34801561074157600080fd5b506108056004803603604081101561075857600080fd5b81019080803590602001909291908035906020019064010000000081111561077f57600080fd5b82018360208201111561079157600080fd5b803590602001918460018302840111640100000000831117156107b357600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f8201169050808301925050505050505091929192905050506115fb565b005b34801561081357600080fd5b5061081c611951565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561085c578082015181840152602081019050610841565b50505050905090810190601f1680156108895780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b3480156108a357600080fd5b506108f0600480360360408110156108ba57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506119ef565b604051808215151515815260200191505060405180910390f35b34801561091657600080fd5b506109636004803603604081101561092d57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611abc565b604051808215151515815260200191505060405180910390f35b34801561098957600080fd5b50610992611ada565b6040518082815260200191505060405180910390f35b3480156109b457600080fd5b506109e1600480360360208110156109cb57600080fd5b8101908080359060200190929190505050611ae0565b604051808873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018060200180602001806020018781526020018681526020018515151515815260200184810384528a818151815260200191508051906020019080838360005b83811015610a71578082015181840152602081019050610a56565b50505050905090810190601f168015610a9e5780820380516001836020036101000a031916815260200191505b50848103835289818151815260200191508051906020019080838360005b83811015610ad7578082015181840152602081019050610abc565b50505050905090810190601f168015610b045780820380516001836020036101000a031916815260200191505b50848103825288818151815260200191508051906020019080838360005b83811015610b3d578082015181840152602081019050610b22565b50505050905090810190601f168015610b6a5780820380516001836020036101000a031916815260200191505b509a505050505050505050505060405180910390f35b348015610b8c57600080fd5b50610b95611d17565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610bd5578082015181840152602081019050610bba565b50505050905090810190601f168015610c025780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b348015610c1c57600080fd5b50610c4960048036036020811015610c3357600080fd5b8101908080359060200190929190505050611db5565b005b348015610c5757600080fd5b50610cba60048036036040811015610c6e57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611e65565b6040518082815260200191505060405180910390f35b348015610cdc57600080fd5b50610d0b60048036036020811015610cf357600080fd5b81019080803515159060200190929190505050611eec565b005b348015610d1957600080fd5b50610d22611faf565b6040518082815260200191505060405180910390f35b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610dce5780601f10610da357610100808354040283529160200191610dce565b820191906000526020600020905b815481529060010190602001808311610db157829003601f168201915b505050505081565b6000610dea610de3611fb5565b8484611fbd565b6001905092915050565b6000600254905090565b6000610e0b8484846121b4565b610ecc84610e17611fb5565b610ec785604051806060016040528060288152602001612c1860289139600160008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610e7d611fb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b611fbd565b600190509392505050565b60065481565b60085481565b6000610f8c610ef0611fb5565b84610f878560016000610f01611fb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b611fbd565b6001905092915050565b610fa7610fa1611fb5565b826125b2565b50565b600960149054906101000a900460ff1681565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b61103e611036611fb5565b6007546125b2565b60006110566001600a5461252a90919063ffffffff16565b905061106e6001600a5461252a90919063ffffffff16565b600a819055506040518060e001604052803373ffffffffffffffffffffffffffffffffffffffff1681526020018381526020016040518060400160405280600781526020017f50454e44494e470000000000000000000000000000000000000000000000000081525081526020016040518060400160405280600881526020017f5245534552564544000000000000000000000000000000000000000000000000815250815260200182815260200142815260200160001515815250600b600083815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010190805190602001906111a0929190612ac4565b5060408201518160020190805190602001906111bd929190612ac4565b5060608201518160030190805190602001906111da929190612ac4565b506080820151816004015560a0820151816005015560c08201518160060160006101000a81548160ff0219169083151502179055509050505050565b611220828261276a565b5050565b60001515600960149054906101000a900460ff1615151461124457600080fd5b6112623361125d6006543461283990919063ffffffff16565b6128bf565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156112ca573d6000803e3d6000fd5b50565b6000600b600084815260200190815260200160002090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461134057600080fd5b600115158160060160009054906101000a900460ff1615151461136257600080fd5b6040518060e001604052808260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826001018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114455780601f1061141a57610100808354040283529160200191611445565b820191906000526020600020905b81548152906001019060200180831161142857829003601f168201915b50505050508152602001826002018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156114e75780601f106114bc576101008083540402835291602001916114e7565b820191906000526020600020905b8154815290600101906020018083116114ca57829003601f168201915b505050505081526020018381526020018481526020018260050154815260200160011515815250600b600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001019080519060200190611584929190612ac4565b5060408201518160020190805190602001906115a1929190612ac4565b5060608201518160030190805190602001906115be929190612ac4565b506080820151816004015560a0820151816005015560c08201518160060160006101000a81548160ff021916908315150217905550905050505050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146116a1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612cf36025913960400191505060405180910390fd5b6000600b600084815260200190815260200160002090506040518060e001604052808260000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001826001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561179b5780601f106117705761010080835404028352916020019161179b565b820191906000526020600020905b81548152906001019060200180831161177e57829003601f168201915b50505050508152602001838152602001826003018054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118435780601f1061181857610100808354040283529160200191611843565b820191906000526020600020905b81548152906001019060200180831161182657829003601f168201915b505050505081526020018481526020018260050154815260200160011515815250600b600085815260200190815260200160002060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060208201518160010190805190602001906118da929190612ac4565b5060408201518160020190805190602001906118f7929190612ac4565b506060820151816003019080519060200190611914929190612ac4565b506080820151816004015560a0820151816005015560c08201518160060160006101000a81548160ff021916908315150217905550905050505050565b60048054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156119e75780601f106119bc576101008083540402835291602001916119e7565b820191906000526020600020905b8154815290600101906020018083116119ca57829003601f168201915b505050505081565b6000611ab26119fc611fb5565b84611aad85604051806060016040528060258152602001612cce6025913960016000611a26611fb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b611fbd565b6001905092915050565b6000611ad0611ac9611fb5565b84846121b4565b6001905092915050565b600a5481565b600b6020528060005260406000206000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690806001018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611bb25780601f10611b8757610100808354040283529160200191611bb2565b820191906000526020600020905b815481529060010190602001808311611b9557829003601f168201915b505050505090806002018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611c505780601f10611c2557610100808354040283529160200191611c50565b820191906000526020600020905b815481529060010190602001808311611c3357829003601f168201915b505050505090806003018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611cee5780601f10611cc357610100808354040283529160200191611cee565b820191906000526020600020905b815481529060010190602001808311611cd157829003601f168201915b5050505050908060040154908060050154908060060160009054906101000a900460ff16905087565b60058054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015611dad5780601f10611d8257610100808354040283529160200191611dad565b820191906000526020600020905b815481529060010190602001808311611d9057829003601f168201915b505050505081565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611e5b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612cf36025913960400191505060405180910390fd5b8060068190555050565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611f92576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612cf36025913960400191505060405180910390fd5b80600960146101000a81548160ff02191690831515021790555050565b60075481565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415612043576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180612caa6024913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156120c9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526022815260200180612baf6022913960400191505060405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040518082815260200191505060405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561223a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526025815260200180612c856025913960400191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614156122c0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180612b6a6023913960400191505060405180910390fd5b61232b81604051806060016040528060268152602001612bd1602691396000808773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123be816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3505050565b6000838311158290612517576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156124dc5780820151818401526020810190506124c1565b50505050905090810190601f1680156125095780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b6000808284019050838110156125a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612638576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612c646021913960400191505060405180910390fd5b6126a381604051806060016040528060228152602001612b8d602291396000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506126fa81600254612a7a90919063ffffffff16565b600281905550600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b61277482826125b2565b61283582612780611fb5565b61283084604051806060016040528060248152602001612c4060249139600160008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006127e6611fb5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461246a9092919063ffffffff16565b611fbd565b5050565b60008083141561284c57600090506128b9565b600082840290508284828161285d57fe5b04146128b4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180612bf76021913960400191505060405180910390fd5b809150505b92915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612962576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f45524332303a206d696e7420746f20746865207a65726f20616464726573730081525060200191505060405180910390fd5b6129778160025461252a90919063ffffffff16565b6002819055506129ce816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461252a90919063ffffffff16565b6000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35050565b6000612abc83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061246a565b905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10612b0557805160ff1916838001178555612b33565b82800160010185558215612b33579182015b82811115612b32578251825591602001919060010190612b17565b5b509050612b409190612b44565b5090565b612b6691905b80821115612b62576000816000905550600101612b4a565b5090565b9056fe45524332303a207472616e7366657220746f20746865207a65726f206164647265737345524332303a206275726e20616d6f756e7420657863656564732062616c616e636545524332303a20617070726f766520746f20746865207a65726f206164647265737345524332303a207472616e7366657220616d6f756e7420657863656564732062616c616e6365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e20616d6f756e74206578636565647320616c6c6f77616e636545524332303a206275726e2066726f6d20746865207a65726f206164647265737345524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f206164647265737345524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726f6f66666572546f6b656e3a206f6e6c794f666665726f72202d206e6f74206f666665726f72a265627a7a7230582002c3d18c09bd1e6f1d39ae8cbc2ce5667204f54b165ea241c0d88e4ecd00a51a64736f6c634300050900320000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000001800000000000000000000000000000000000000000000000008ac7230489e80000000000000000000000000000000000000000000000000000000000000000000a0000000000000000000000000000000000000000000000008ac7230489e8000000000000000000000000000000000000000000000000000000000000000000120000000000000000000000001c0aa8ccd568d90d61659f060d1bfb1e6f855a20000000000000000000000000000000000000000000000000000000000000000f4f6666657220666f7220476f6f6473000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054f4646455200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000674f666665726f72207368616c6c2064656c69766572204172746973616e204c7574657320313a3120696e2065786368616e676520666f72204f4646455220546f6b656e20746f20636f6e746163742064657461696c6564206f6e206275726e207265717565737400000000000000000000000000000000000000000000000000

Deployed ByteCode Sourcemap

18195:4116:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18239:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18239:18:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;18239:18:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11826:152;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11826:152:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11826:152:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;10847:91;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10847:91:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12450:304;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12450:304:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;12450:304:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18436:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18436:19:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18688:23;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18688:23:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;13163:210;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13163:210:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13163:210:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;17940:83;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17940:83:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;17940:83:0;;;;;;;;;;;;;;;;;:::i;:::-;;18884:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18884:18:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18787:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18787:30:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11001:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11001:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11001:110:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20832:479;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20832:479:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20832:479:0;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;20832:479:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;20832:479:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;20832:479:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;20832:479:0;;;;;;;;;;;;;;;:::i;:::-;;18085:103;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18085:103:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;18085:103:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;20424:396;;;:::i;:::-;;21730:578;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21730:578:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21730:578:0;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;21730:578:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21730:578:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;21730:578:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;21730:578:0;;;;;;;;;;;;;;;:::i;:::-;;21323:395;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21323:395:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21323:395:0;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;21323:395:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21323:395:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;21323:395:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;21323:395:0;;;;;;;;;;;;;;;:::i;:::-;;18300:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18300:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;18300:20:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13876:261;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13876:261:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;13876:261:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;11324:158;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11324:158:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11324:158:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;18993:17;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18993:17:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;19069:48;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19069:48:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;19069:48:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;19069:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;19069:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;19069:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18365:19;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18365:19:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;18365:19:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20106:155;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20106:155:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20106:155:0;;;;;;;;;;;;;;;;;:::i;:::-;;11545:134;;8:9:-1;5:2;;;30:1;27;20:12;5:2;11545:134:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;11545:134:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;20273:139;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20273:139:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;20273:139:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;18551:18;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18551:18:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;18239;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;11826:152::-;11892:4;11909:39;11918:12;:10;:12::i;:::-;11932:7;11941:6;11909:8;:39::i;:::-;11966:4;11959:11;;11826:152;;;;:::o;10847:91::-;10891:7;10918:12;;10911:19;;10847:91;:::o;12450:304::-;12539:4;12556:36;12566:6;12574:9;12585:6;12556:9;:36::i;:::-;12603:121;12612:6;12620:12;:10;:12::i;:::-;12634:89;12672:6;12634:89;;;;;;;;;;;;;;;;;:11;:19;12646:6;12634:19;;;;;;;;;;;;;;;:33;12654:12;:10;:12::i;:::-;12634:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;12603:8;:121::i;:::-;12742:4;12735:11;;12450:304;;;;;:::o;18436:19::-;;;;:::o;18688:23::-;;;;:::o;13163:210::-;13243:4;13260:83;13269:12;:10;:12::i;:::-;13283:7;13292:50;13331:10;13292:11;:25;13304:12;:10;:12::i;:::-;13292:25;;;;;;;;;;;;;;;:34;13318:7;13292:34;;;;;;;;;;;;;;;;:38;;:50;;;;:::i;:::-;13260:8;:83::i;:::-;13361:4;13354:11;;13163:210;;;;:::o;17940:83::-;17988:27;17994:12;:10;:12::i;:::-;18008:6;17988:5;:27::i;:::-;17940:83;:::o;18884:18::-;;;;;;;;;;;;;:::o;18787:30::-;;;;;;;;;;;;;:::o;11001:110::-;11058:7;11085:9;:18;11095:7;11085:18;;;;;;;;;;;;;;;;11078:25;;11001:110;;;:::o;20832:479::-;20899:24;20905:12;:10;:12::i;:::-;20919:3;;20899:5;:24::i;:::-;20987:15;21005:9;21012:1;21005:2;;:6;;:9;;;;:::i;:::-;20987:27;;21041:9;21048:1;21041:2;;:6;;:9;;;;:::i;:::-;21036:2;:14;;;;21137:166;;;;;;;;21161:10;21137:166;;;;;;21186:7;21137:166;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21257:7;21137:166;;;;21279:3;21137:166;;;;21297:5;21137:166;;;;;21114:11;:20;21126:7;21114:20;;;;;;;;;;;:189;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20832:479;;:::o;18085:103::-;18154:26;18164:7;18173:6;18154:9;:26::i;:::-;18085:103;;:::o;20424:396::-;20557:5;20547:15;;:6;;;;;;;;;;;:15;;;20539:24;;;;;;20630:38;20636:10;20648:19;20662:4;;20648:9;:13;;:19;;;;:::i;:::-;20630:5;:38::i;:::-;20750:7;;;;;;;;;;;:16;;:27;20767:9;20750:27;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;20750:27:0;20424:396::o;21730:578::-;21818:19;21840:11;:20;21852:7;21840:20;;;;;;;;;;;21818:42;;21923:2;:12;;;;;;;;;;;;21909:26;;:10;:26;;;21901:35;;;;;;22030:4;22014:20;;:2;:12;;;;;;;;;;;;:20;;;22006:29;;;;;;22124:177;;;;;;;;22148:2;:12;;;;;;;;;;;;22124:177;;;;;;22175:2;:10;;22124:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22200:2;:11;;22124:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22226:6;22124:177;;;;22247:7;22124:177;;;;22269:2;:12;;;22124:177;;;;22296:4;22124:177;;;;;22101:11;:20;22113:7;22101:20;;;;;;;;;;;:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21730:578;;;:::o;21323:395::-;20029:7;;;;;;;;;;;20015:21;;:10;:21;;;20007:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21427:19;21449:11;:20;21461:7;21449:20;;;;;;;;;;;21427:42;;21533:177;;;;;;;;21557:2;:12;;;;;;;;;;;;21533:177;;;;;;21584:2;:10;;21533:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21609:8;21533:177;;;;21632:2;:9;;21533:177;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21656:7;21533:177;;;;21678:2;:12;;;21533:177;;;;21705:4;21533:177;;;;;21510:11;:20;21522:7;21510:20;;;;;;;;;;;:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20085:1;21323:395;;:::o;18300:20::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;13876:261::-;13961:4;13978:129;13987:12;:10;:12::i;:::-;14001:7;14010:96;14049:15;14010:96;;;;;;;;;;;;;;;;;:11;:25;14022:12;:10;:12::i;:::-;14010:25;;;;;;;;;;;;;;;:34;14036:7;14010:34;;;;;;;;;;;;;;;;:38;;:96;;;;;:::i;:::-;13978:8;:129::i;:::-;14125:4;14118:11;;13876:261;;;;:::o;11324:158::-;11393:4;11410:42;11420:12;:10;:12::i;:::-;11434:9;11445:6;11410:9;:42::i;:::-;11470:4;11463:11;;11324:158;;;;:::o;18993:17::-;;;;:::o;19069:48::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;18365:19::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;20106:155::-;20029:7;;;;;;;;;;;20015:21;;:10;:21;;;20007:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20246:7;20239:4;:14;;;;20106:155;:::o;11545:134::-;11617:7;11644:11;:18;11656:5;11644:18;;;;;;;;;;;;;;;:27;11663:7;11644:27;;;;;;;;;;;;;;;;11637:34;;11545:134;;;;:::o;20273:139::-;20029:7;;;;;;;;;;;20015:21;;:10;:21;;;20007:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20393:11;20384:6;;:20;;;;;;;;;;;;;;;;;;20273:139;:::o;18551:18::-;;;;:::o;806:98::-;851:15;886:10;879:17;;806:98;:::o;16807:338::-;16918:1;16901:19;;:5;:19;;;;16893:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16999:1;16980:21;;:7;:21;;;;16972:68;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17083:6;17053:11;:18;17065:5;17053:18;;;;;;;;;;;;;;;:27;17072:7;17053:27;;;;;;;;;;;;;;;:36;;;;17121:7;17105:32;;17114:5;17105:32;;;17130:6;17105:32;;;;;;;;;;;;;;;;;;16807:338;;;:::o;14627:471::-;14743:1;14725:20;;:6;:20;;;;14717:70;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14827:1;14806:23;;:9;:23;;;;14798:71;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14902;14924:6;14902:71;;;;;;;;;;;;;;;;;:9;:17;14912:6;14902:17;;;;;;;;;;;;;;;;:21;;:71;;;;;:::i;:::-;14882:9;:17;14892:6;14882:17;;;;;;;;;;;;;;;:91;;;;15007:32;15032:6;15007:9;:20;15017:9;15007:20;;;;;;;;;;;;;;;;:24;;:32;;;;:::i;:::-;14984:9;:20;14994:9;14984:20;;;;;;;;;;;;;;;:55;;;;15072:9;15055:35;;15064:6;15055:35;;;15083:6;15055:35;;;;;;;;;;;;;;;;;;14627:471;;;:::o;2905:192::-;2991:7;3024:1;3019;:6;;3027:12;3011:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;3011:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3051:9;3067:1;3063;:5;3051:17;;3088:1;3081:8;;;2905:192;;;;;:::o;1976:181::-;2034:7;2054:9;2070:1;2066;:5;2054:17;;2095:1;2090;:6;;2082:46;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2148:1;2141:8;;;1976:181;;;;:::o;16019:348::-;16114:1;16095:21;;:7;:21;;;;16087:67;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16188:68;16211:6;16188:68;;;;;;;;;;;;;;;;;:9;:18;16198:7;16188:18;;;;;;;;;;;;;;;;:22;;:68;;;;;:::i;:::-;16167:9;:18;16177:7;16167:18;;;;;;;;;;;;;;;:89;;;;16282:24;16299:6;16282:12;;:16;;:24;;;;:::i;:::-;16267:12;:39;;;;16348:1;16322:37;;16331:7;16322:37;;;16352:6;16322:37;;;;;;;;;;;;;;;;;;16019:348;;:::o;17331:232::-;17403:22;17409:7;17418:6;17403:5;:22::i;:::-;17436:119;17445:7;17454:12;:10;:12::i;:::-;17468:86;17507:6;17468:86;;;;;;;;;;;;;;;;;:11;:20;17480:7;17468:20;;;;;;;;;;;;;;;:34;17489:12;:10;:12::i;:::-;17468:34;;;;;;;;;;;;;;;;:38;;:86;;;;;:::i;:::-;17436:8;:119::i;:::-;17331:232;;:::o;3348:471::-;3406:7;3656:1;3651;:6;3647:47;;;3681:1;3674:8;;;;3647:47;3706:9;3722:1;3718;:5;3706:17;;3751:1;3746;3742;:5;;;;;;:10;3734:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3810:1;3803:8;;;3348:471;;;;;:::o;15379:308::-;15474:1;15455:21;;:7;:21;;;;15447:65;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15540:24;15557:6;15540:12;;:16;;:24;;;;:::i;:::-;15525:12;:39;;;;15596:30;15619:6;15596:9;:18;15606:7;15596:18;;;;;;;;;;;;;;;;:22;;:30;;;;:::i;:::-;15575:9;:18;15585:7;15575:18;;;;;;;;;;;;;;;:51;;;;15663:7;15642:37;;15659:1;15642:37;;;15672:6;15642:37;;;;;;;;;;;;;;;;;;15379:308;;:::o;2432:136::-;2490:7;2517:43;2521:1;2524;2517:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2510:50;;2432:136;;;;:::o;18195:4116::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://02c3d18c09bd1e6f1d39ae8cbc2ce5667204f54b165ea241c0d88e4ecd00a51a

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.