ETH Price: $2,507.74 (+0.30%)

Token

THREE AMIGOS CAPITAL (3AC)
 

Overview

Max Total Supply

41,353,270.122815323332607201 3AC

Holders

74

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
13,635.333476858154355869 3AC

Value
$0.00
0x9d4151ab08faa9f9e34f58ca7ee85fa5532e700b
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:
THREEAMIGOSCAPITAL

Compiler Version
v0.8.19+commit.7dd6d404

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-08-20
*/

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.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 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.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;


/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
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 Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        _checkOwner();
        _;
    }

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

    /**
     * @dev Throws if the sender is not the owner.
     */
    function _checkOwner() internal view virtual {
        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);
    }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v4.6.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @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 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 `to`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address to, 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 `from` to `to` 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 from,
        address to,
        uint256 amount
    ) external returns (bool);
}

// File: @openzeppelin/contracts/token/ERC20/extensions/IERC20Metadata.sol


// OpenZeppelin Contracts v4.4.1 (token/ERC20/extensions/IERC20Metadata.sol)

pragma solidity ^0.8.0;


/**
 * @dev Interface for the optional metadata functions from the ERC20 standard.
 *
 * _Available since v4.1._
 */
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);
}

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol


// OpenZeppelin Contracts (last updated v4.8.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;




/**
 * @dev Implementation of the {IERC20} interface.
 *
 * This implementation is agnostic to the way tokens are created. This means
 * that a supply mechanism has to be added in a derived contract using {_mint}.
 * For a generic mechanism see {ERC20PresetMinterPauser}.
 *
 * TIP: For a detailed writeup see our guide
 * https://forum.openzeppelin.com/t/how-to-implement-erc20-supply-mechanisms/226[How
 * to implement supply mechanisms].
 *
 * We have followed general OpenZeppelin Contracts guidelines: functions revert
 * instead 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, 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:
     *
     * - `to` cannot be the zero address.
     * - the caller must have a balance of at least `amount`.
     */
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, 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) {
        address owner = _msgSender();
        _approve(owner, 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:
     *
     * - `from` and `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     * - the caller must have allowance for ``from``'s tokens of at least
     * `amount`.
     */
    function transferFrom(
        address from,
        address to,
        uint256 amount
    ) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, 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) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, 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) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

    /**
     * @dev Moves `amount` of tokens from `from` to `to`.
     *
     * 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:
     *
     * - `from` cannot be the zero address.
     * - `to` cannot be the zero address.
     * - `from` must have a balance of at least `amount`.
     */
    function _transfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(from, to, amount);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
            // Overflow not possible: the sum of all balances is capped by totalSupply, and the sum is preserved by
            // decrementing then incrementing.
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, 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;
        unchecked {
            // Overflow not possible: balance + amount is at most totalSupply + amount, which is checked above.
            _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;
            // Overflow not possible: amount <= accountBalance <= totalSupply.
            _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 Updates `owner` s allowance for `spender` based on spent `amount`.
     *
     * Does not update the allowance amount in case of infinite allowance.
     * Revert if not enough allowance is available.
     *
     * Might emit an {Approval} event.
     */
    function _spendAllowance(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - 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 {}
}

// File: 3AC.sol


// THREE AMIGOS CAPITAL (3AC)
// Website:  https://3AC.club/

pragma solidity ^0.8.0;



contract THREEAMIGOSCAPITAL is ERC20, Ownable {
	address public uniswapV2Pair;
	uint256 public uniswapLimit;
	uint8 public burningRate;
	uint8 public stakingRate;

	uint256 public constant STAKING_REWARD = 30;
	uint256 public constant STAKING_PENALTY = 15;

	struct Stake {
		uint256 amount;
		uint256 totalAmount;
		uint256 startTime;
		uint256 firstStartTime;
		uint256 period;
		uint256 totalPeriod;
		uint256 reward;
		uint256 totalReward;
	}

	mapping(address => Stake) public stakes;
	mapping(address => bool) public hasStaked;
	address[] public stakingAddresses;
	uint256 public totalStaked = 0;
	uint256 public assignedRewards = 0;

	constructor() ERC20("THREE AMIGOS CAPITAL", "3AC") {
		_mint(address(this), 36540000 * (10 ** 18));
		_mint(msg.sender, 5460000 * (10 ** 18));
	}

	function setRules(
		address _uniswapV2Pair,
		uint256 _uniswapLimit,
		uint8 _burningRate,
		uint8 _stakingRate
	) external onlyOwner {
		uniswapV2Pair = _uniswapV2Pair;
		uniswapLimit = _uniswapLimit;
		burningRate = _burningRate;
		stakingRate = _stakingRate;
	}

	function _beforeTokenTransfer(address from, address to, uint256 amount) internal virtual override {
		if (uniswapV2Pair == address(0)) {
			require(from == address(this) || to == address(this) || from == owner() || to == owner(), "TradingNotStarted");
		}
		if (uniswapLimit > 0 && from == uniswapV2Pair && to != address(this)) {
			uint256 _balance = balanceOf(to);
			require(
				_balance + amount <= uniswapLimit,
				"Limited"
			);
		}
	}

	function _transfer(address sender, address recipient, uint256 amount) internal virtual override {
		_beforeTokenTransfer(sender, recipient, amount);

		uint256 burnLiq = calculateLiq(amount, burningRate);
		uint256 stakeLiq = calculateLiq(amount, stakingRate);
		uint256 _balance = balanceOf(address(this));
		uint256 _availableRewards = _balance - totalStaked - assignedRewards;

		if (sender == uniswapV2Pair) {

			super._transfer(uniswapV2Pair, recipient, amount);
			if(burnLiq <= _availableRewards) _burn(address(this), burnLiq);
			else _burn(address(this), _availableRewards);

		} else if (recipient == uniswapV2Pair) {

			super._transfer(sender, recipient, amount - stakeLiq);
			super._transfer(sender, address(this), stakeLiq);

		} else {
			super._transfer(sender, recipient, amount);
		}
	}

	function stake(uint256 _amount, uint256 _period) external {
		require(_amount > 0, "Amount must be greater than 0");
		require(_period > 0 && _period <= 30, "Period must be between 1 and 30");
		require(stakes[msg.sender].amount == 0, "Address already staking");

		if (hasStaked[msg.sender] == false) {
			stakingAddresses.push(msg.sender);
			hasStaked[msg.sender] = true;
		}

		uint256 _balance = balanceOf(address(this));
		uint256 _availableRewards = _balance - totalStaked - assignedRewards;


		uint256 _reward = _amount * STAKING_REWARD * _period / (30 * 100);
		if(_reward > _availableRewards) _reward = _availableRewards;
		
		assignedRewards += _reward;
		totalStaked += _amount;

		stakes[msg.sender].amount += _amount;
		stakes[msg.sender].startTime = block.timestamp;
		stakes[msg.sender].reward = _reward;
		stakes[msg.sender].period = _period;
		if(stakes[msg.sender].firstStartTime == 0) stakes[msg.sender].firstStartTime = block.timestamp;

		super._transfer(msg.sender, address(this), _amount);
	}

	function unstake() external {
    	Stake memory userStake = stakes[msg.sender];
        require(userStake.amount > 0, "No stake to withdraw");

		uint256 unstakeAmount = userStake.amount + userStake.reward;
		uint256 penalty = calculatePenalty(userStake);
		if(penalty > 0) {
			super._transfer(address(this), msg.sender, userStake.amount - penalty);
		}else{
			super._transfer(address(this), msg.sender, unstakeAmount);
			stakes[msg.sender].totalAmount += userStake.amount;
			stakes[msg.sender].totalPeriod += userStake.period;
			stakes[msg.sender].totalReward += userStake.reward;
		}

		stakes[msg.sender].amount = 0;
		stakes[msg.sender].reward = 0;
		stakes[msg.sender].period = 0;
		stakes[msg.sender].startTime = 0;
		removeStakingAddress(msg.sender);

		assignedRewards -= userStake.reward;
		totalStaked -= userStake.amount;
	}

	function calculateLiq(uint256 _amount, uint8 _rate) internal pure returns (uint256) {
		return (_amount * _rate) / 100;
	}

	function calculatePenalty(Stake memory _stake) internal view returns (uint256) {
		if (block.timestamp < _stake.startTime + (_stake.period * 1 days)) {
			return (_stake.amount * STAKING_PENALTY) / 100;
		}
		return 0;
	}

	function removeStakingAddress(address _address) internal {
		for (uint256 i = 0; i < stakingAddresses.length; i++) {
			if (stakingAddresses[i] == _address) {
				stakingAddresses[i] = stakingAddresses[stakingAddresses.length - 1];
				stakingAddresses.pop();
				break;
			}
		}
	}

}

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":"STAKING_PENALTY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"STAKING_REWARD","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"assignedRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burningRate","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","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":"","type":"address"}],"name":"hasStaked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_uniswapV2Pair","type":"address"},{"internalType":"uint256","name":"_uniswapLimit","type":"uint256"},{"internalType":"uint8","name":"_burningRate","type":"uint8"},{"internalType":"uint8","name":"_stakingRate","type":"uint8"}],"name":"setRules","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"uint256","name":"_period","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"stakes","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"totalAmount","type":"uint256"},{"internalType":"uint256","name":"startTime","type":"uint256"},{"internalType":"uint256","name":"firstStartTime","type":"uint256"},{"internalType":"uint256","name":"period","type":"uint256"},{"internalType":"uint256","name":"totalPeriod","type":"uint256"},{"internalType":"uint256","name":"reward","type":"uint256"},{"internalType":"uint256","name":"totalReward","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"stakingAddresses","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"stakingRate","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unstake","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000600c556000600d553480156200001b57600080fd5b506040518060400160405280601481526020017f544852454520414d49474f53204341504954414c0000000000000000000000008152506040518060400160405280600381526020017f33414300000000000000000000000000000000000000000000000000000000008152508160039081620000999190620008d6565b508060049081620000ab9190620008d6565b505050620000ce620000c26200010e60201b60201c565b6200011660201b60201c565b620000eb306a1e39a55e7f5ecc3d800000620001dc60201b60201c565b62000108336a048433316e40302c800000620001dc60201b60201c565b62000bbc565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200024e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002459062000a1e565b60405180910390fd5b62000262600083836200034960201b60201c565b806002600082825462000276919062000a6f565b92505081905550806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000329919062000abb565b60405180910390a36200034560008383620005e560201b60201c565b5050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603620004d5573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614806200040657503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b806200044c57506200041d620005ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8062000492575062000463620005ea60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b620004d4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004cb9062000b28565b60405180910390fd5b5b6000600754118015620005355750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80156200056e57503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15620005e057600062000587836200061460201b60201c565b905060075482826200059a919062000a6f565b1115620005de576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620005d59062000b9a565b60405180910390fd5b505b505050565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620006de57607f821691505b602082108103620006f457620006f362000696565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200075e7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826200071f565b6200076a86836200071f565b95508019841693508086168417925050509392505050565b6000819050919050565b6000819050919050565b6000620007b7620007b1620007ab8462000782565b6200078c565b62000782565b9050919050565b6000819050919050565b620007d38362000796565b620007eb620007e282620007be565b8484546200072c565b825550505050565b600090565b62000802620007f3565b6200080f818484620007c8565b505050565b5b8181101562000837576200082b600082620007f8565b60018101905062000815565b5050565b601f82111562000886576200085081620006fa565b6200085b846200070f565b810160208510156200086b578190505b620008836200087a856200070f565b83018262000814565b50505b505050565b600082821c905092915050565b6000620008ab600019846008026200088b565b1980831691505092915050565b6000620008c6838362000898565b9150826002028217905092915050565b620008e1826200065c565b67ffffffffffffffff811115620008fd57620008fc62000667565b5b620009098254620006c5565b620009168282856200083b565b600060209050601f8311600181146200094e576000841562000939578287015190505b620009458582620008b8565b865550620009b5565b601f1984166200095e86620006fa565b60005b82811015620009885784890151825560018201915060208501945060208101905062000961565b86831015620009a85784890151620009a4601f89168262000898565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f206164647265737300600082015250565b600062000a06601f83620009bd565b915062000a1382620009ce565b602082019050919050565b6000602082019050818103600083015262000a3981620009f7565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600062000a7c8262000782565b915062000a898362000782565b925082820190508082111562000aa45762000aa362000a40565b5b92915050565b62000ab58162000782565b82525050565b600060208201905062000ad2600083018462000aaa565b92915050565b7f54726164696e674e6f7453746172746564000000000000000000000000000000600082015250565b600062000b10601183620009bd565b915062000b1d8262000ad8565b602082019050919050565b6000602082019050818103600083015262000b438162000b01565b9050919050565b7f4c696d6974656400000000000000000000000000000000000000000000000000600082015250565b600062000b82600783620009bd565b915062000b8f8262000b4a565b602082019050919050565b6000602082019050818103600083015262000bb58162000b73565b9050919050565b6131098062000bcc6000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806386516e13116100f9578063c0ab78e311610097578063dcfbd07511610071578063dcfbd07514610516578063dd62ed3e14610534578063e64c3e9214610564578063f2fde38b14610582576101c4565b8063c0ab78e3146104ac578063c63a6ad2146104c8578063c93c8f34146104e6576101c4565b8063a08a6a4c116100d3578063a08a6a4c14610410578063a457c2d71461042e578063a9059cbb1461045e578063b00e66301461048e576101c4565b806386516e13146103a45780638da5cb5b146103d457806395d89b41146103f2576101c4565b8063313ce5671161016657806370a082311161014057806370a0823114610330578063715018a6146103605780637b0472f01461036a578063817b1cd214610386576101c4565b8063313ce567146102c457806339509351146102e257806349bd5a5e14610312576101c4565b806316934fc4116101a257806316934fc41461023557806318160ddd1461026c57806323b872dd1461028a5780632def6620146102ba576101c4565b8063066c724b146101c957806306fdde03146101e7578063095ea7b314610205575b600080fd5b6101d161059e565b6040516101de91906121a1565b60405180910390f35b6101ef6105a3565b6040516101fc919061224c565b60405180910390f35b61021f600480360381019061021a91906122fd565b610635565b60405161022c9190612358565b60405180910390f35b61024f600480360381019061024a9190612373565b610658565b6040516102639897969594939291906123a0565b60405180910390f35b6102746106a0565b60405161028191906121a1565b60405180910390f35b6102a4600480360381019061029f919061241e565b6106aa565b6040516102b19190612358565b60405180910390f35b6102c26106d9565b005b6102cc610a97565b6040516102d9919061248d565b60405180910390f35b6102fc60048036038101906102f791906122fd565b610aa0565b6040516103099190612358565b60405180910390f35b61031a610ad7565b60405161032791906124b7565b60405180910390f35b61034a60048036038101906103459190612373565b610afd565b60405161035791906121a1565b60405180910390f35b610368610b45565b005b610384600480360381019061037f91906124d2565b610b59565b005b61038e610fea565b60405161039b91906121a1565b60405180910390f35b6103be60048036038101906103b99190612512565b610ff0565b6040516103cb91906124b7565b60405180910390f35b6103dc61102f565b6040516103e991906124b7565b60405180910390f35b6103fa611059565b604051610407919061224c565b60405180910390f35b6104186110eb565b60405161042591906121a1565b60405180910390f35b610448600480360381019061044391906122fd565b6110f1565b6040516104559190612358565b60405180910390f35b610478600480360381019061047391906122fd565b611168565b6040516104859190612358565b60405180910390f35b61049661118b565b6040516104a391906121a1565b60405180910390f35b6104c660048036038101906104c1919061256b565b611191565b005b6104d061121d565b6040516104dd919061248d565b60405180910390f35b61050060048036038101906104fb9190612373565b611230565b60405161050d9190612358565b60405180910390f35b61051e611250565b60405161052b91906121a1565b60405180910390f35b61054e600480360381019061054991906125d2565b611255565b60405161055b91906121a1565b60405180910390f35b61056c6112dc565b604051610579919061248d565b60405180910390f35b61059c60048036038101906105979190612373565b6112ef565b005b600f81565b6060600380546105b290612641565b80601f01602080910402602001604051908101604052809291908181526020018280546105de90612641565b801561062b5780601f106106005761010080835404028352916020019161062b565b820191906000526020600020905b81548152906001019060200180831161060e57829003601f168201915b5050505050905090565b600080610640611372565b905061064d81858561137a565b600191505092915050565b60096020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154905088565b6000600254905090565b6000806106b5611372565b90506106c2858285611543565b6106cd8585856115cf565b60019150509392505050565b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061010001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481525050905060008160000151116107bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b6906126be565b60405180910390fd5b60008160c0015182600001516107d5919061270d565b905060006107e283611779565b9050600081111561080c5761080730338386600001516108029190612741565b6117d2565b61092f565b6108173033846117d2565b8260000151600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825461086d919061270d565b925050819055508260800151600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008282546108ca919061270d565b925050819055508260c00151600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007016000828254610927919061270d565b925050819055505b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610a5833611a48565b8260c00151600d6000828254610a6e9190612741565b925050819055508260000151600c6000828254610a8b9190612741565b92505081905550505050565b60006012905090565b600080610aab611372565b9050610acc818585610abd8589611255565b610ac7919061270d565b61137a565b600191505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b4d611bd8565b610b576000611c56565b565b60008211610b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b93906127c1565b60405180910390fd5b600081118015610bad5750601e8111155b610bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be39061282d565b60405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414610c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6890612899565b60405180910390fd5b60001515600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610d8557600b339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000610d9030610afd565b90506000600d54600c5483610da59190612741565b610daf9190612741565b90506000610bb884601e87610dc491906128b9565b610dce91906128b9565b610dd8919061292a565b905081811115610de6578190505b80600d6000828254610df8919061270d565b9250508190555084600c6000828254610e11919061270d565b9250508190555084600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254610e6a919061270d565b9250508190555042600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555083600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015403610fd85742600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055505b610fe33330876117d2565b5050505050565b600c5481565b600b818154811061100057600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461106890612641565b80601f016020809104026020016040519081016040528092919081815260200182805461109490612641565b80156110e15780601f106110b6576101008083540402835291602001916110e1565b820191906000526020600020905b8154815290600101906020018083116110c457829003601f168201915b5050505050905090565b600d5481565b6000806110fc611372565b9050600061110a8286611255565b90508381101561114f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611146906129cd565b60405180910390fd5b61115c828686840361137a565b60019250505092915050565b600080611173611372565b90506111808185856115cf565b600191505092915050565b60075481565b611199611bd8565b83600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260078190555081600860006101000a81548160ff021916908360ff16021790555080600860016101000a81548160ff021916908360ff16021790555050505050565b600860019054906101000a900460ff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b601e81565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600860009054906101000a900460ff1681565b6112f7611bd8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d90612a5f565b60405180910390fd5b61136f81611c56565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e090612af1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144f90612b83565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161153691906121a1565b60405180910390a3505050565b600061154f8484611255565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115c957818110156115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b290612bef565b60405180910390fd5b6115c8848484840361137a565b5b50505050565b6115da838383611d1c565b60006115f582600860009054906101000a900460ff16611f91565b9050600061161283600860019054906101000a900460ff16611f91565b9050600061161f30610afd565b90506000600d54600c54836116349190612741565b61163e9190612741565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036116e8576116c2600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687876117d2565b8084116116d8576116d33085611fb6565b6116e3565b6116e23082611fb6565b5b611770565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611763576117538787858861174e9190612741565b6117d2565b61175e8730856117d2565b61176f565b61176e8787876117d2565b5b5b50505050505050565b600062015180826080015161178e91906128b9565b826040015161179d919061270d565b4210156117c8576064600f83600001516117b791906128b9565b6117c1919061292a565b90506117cd565b600090505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183890612c81565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a790612d13565b60405180910390fd5b6118bb838383611d1c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193890612da5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a2f91906121a1565b60405180910390a3611a42848484612183565b50505050565b60005b600b80549050811015611bd4578173ffffffffffffffffffffffffffffffffffffffff16600b8281548110611a8357611a82612dc5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611bc157600b6001600b80549050611add9190612741565b81548110611aee57611aed612dc5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b8281548110611b2d57611b2c612dc5565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b805480611b8757611b86612df4565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611bd4565b8080611bcc90612e23565b915050611a4b565b5050565b611be0611372565b73ffffffffffffffffffffffffffffffffffffffff16611bfe61102f565b73ffffffffffffffffffffffffffffffffffffffff1614611c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4b90612eb7565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611e91573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611dd757503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611e145750611de561102f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611e515750611e2261102f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8790612f23565b60405180910390fd5b5b6000600754118015611ef05750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611f2857503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f8c576000611f3883610afd565b90506007548282611f49919061270d565b1115611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8190612f8f565b60405180910390fd5b505b505050565b600060648260ff1684611fa491906128b9565b611fae919061292a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c90613021565b60405180910390fd5b61203182600083611d1c565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156120b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ae906130b3565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161216a91906121a1565b60405180910390a361217e83600084612183565b505050565b505050565b6000819050919050565b61219b81612188565b82525050565b60006020820190506121b66000830184612192565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121f65780820151818401526020810190506121db565b60008484015250505050565b6000601f19601f8301169050919050565b600061221e826121bc565b61222881856121c7565b93506122388185602086016121d8565b61224181612202565b840191505092915050565b600060208201905081810360008301526122668184612213565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061229e82612273565b9050919050565b6122ae81612293565b81146122b957600080fd5b50565b6000813590506122cb816122a5565b92915050565b6122da81612188565b81146122e557600080fd5b50565b6000813590506122f7816122d1565b92915050565b600080604083850312156123145761231361226e565b5b6000612322858286016122bc565b9250506020612333858286016122e8565b9150509250929050565b60008115159050919050565b6123528161233d565b82525050565b600060208201905061236d6000830184612349565b92915050565b6000602082840312156123895761238861226e565b5b6000612397848285016122bc565b91505092915050565b6000610100820190506123b6600083018b612192565b6123c3602083018a612192565b6123d06040830189612192565b6123dd6060830188612192565b6123ea6080830187612192565b6123f760a0830186612192565b61240460c0830185612192565b61241160e0830184612192565b9998505050505050505050565b6000806000606084860312156124375761243661226e565b5b6000612445868287016122bc565b9350506020612456868287016122bc565b9250506040612467868287016122e8565b9150509250925092565b600060ff82169050919050565b61248781612471565b82525050565b60006020820190506124a2600083018461247e565b92915050565b6124b181612293565b82525050565b60006020820190506124cc60008301846124a8565b92915050565b600080604083850312156124e9576124e861226e565b5b60006124f7858286016122e8565b9250506020612508858286016122e8565b9150509250929050565b6000602082840312156125285761252761226e565b5b6000612536848285016122e8565b91505092915050565b61254881612471565b811461255357600080fd5b50565b6000813590506125658161253f565b92915050565b600080600080608085870312156125855761258461226e565b5b6000612593878288016122bc565b94505060206125a4878288016122e8565b93505060406125b587828801612556565b92505060606125c687828801612556565b91505092959194509250565b600080604083850312156125e9576125e861226e565b5b60006125f7858286016122bc565b9250506020612608858286016122bc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061265957607f821691505b60208210810361266c5761266b612612565b5b50919050565b7f4e6f207374616b6520746f207769746864726177000000000000000000000000600082015250565b60006126a86014836121c7565b91506126b382612672565b602082019050919050565b600060208201905081810360008301526126d78161269b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061271882612188565b915061272383612188565b925082820190508082111561273b5761273a6126de565b5b92915050565b600061274c82612188565b915061275783612188565b925082820390508181111561276f5761276e6126de565b5b92915050565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006127ab601d836121c7565b91506127b682612775565b602082019050919050565b600060208201905081810360008301526127da8161279e565b9050919050565b7f506572696f64206d757374206265206265747765656e203120616e6420333000600082015250565b6000612817601f836121c7565b9150612822826127e1565b602082019050919050565b600060208201905081810360008301526128468161280a565b9050919050565b7f4164647265737320616c7265616479207374616b696e67000000000000000000600082015250565b60006128836017836121c7565b915061288e8261284d565b602082019050919050565b600060208201905081810360008301526128b281612876565b9050919050565b60006128c482612188565b91506128cf83612188565b92508282026128dd81612188565b915082820484148315176128f4576128f36126de565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061293582612188565b915061294083612188565b9250826129505761294f6128fb565b5b828204905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006129b76025836121c7565b91506129c28261295b565b604082019050919050565b600060208201905081810360008301526129e6816129aa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612a496026836121c7565b9150612a54826129ed565b604082019050919050565b60006020820190508181036000830152612a7881612a3c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612adb6024836121c7565b9150612ae682612a7f565b604082019050919050565b60006020820190508181036000830152612b0a81612ace565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b6d6022836121c7565b9150612b7882612b11565b604082019050919050565b60006020820190508181036000830152612b9c81612b60565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612bd9601d836121c7565b9150612be482612ba3565b602082019050919050565b60006020820190508181036000830152612c0881612bcc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c6b6025836121c7565b9150612c7682612c0f565b604082019050919050565b60006020820190508181036000830152612c9a81612c5e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612cfd6023836121c7565b9150612d0882612ca1565b604082019050919050565b60006020820190508181036000830152612d2c81612cf0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612d8f6026836121c7565b9150612d9a82612d33565b604082019050919050565b60006020820190508181036000830152612dbe81612d82565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000612e2e82612188565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e6057612e5f6126de565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ea16020836121c7565b9150612eac82612e6b565b602082019050919050565b60006020820190508181036000830152612ed081612e94565b9050919050565b7f54726164696e674e6f7453746172746564000000000000000000000000000000600082015250565b6000612f0d6011836121c7565b9150612f1882612ed7565b602082019050919050565b60006020820190508181036000830152612f3c81612f00565b9050919050565b7f4c696d6974656400000000000000000000000000000000000000000000000000600082015250565b6000612f796007836121c7565b9150612f8482612f43565b602082019050919050565b60006020820190508181036000830152612fa881612f6c565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061300b6021836121c7565b915061301682612faf565b604082019050919050565b6000602082019050818103600083015261303a81612ffe565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061309d6022836121c7565b91506130a882613041565b604082019050919050565b600060208201905081810360008301526130cc81613090565b905091905056fea26469706673582212209c6fbdf7780dca82a2cafeb1d040e719795ef0e2f3debf4e01daca25b47457a364736f6c63430008130033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c806386516e13116100f9578063c0ab78e311610097578063dcfbd07511610071578063dcfbd07514610516578063dd62ed3e14610534578063e64c3e9214610564578063f2fde38b14610582576101c4565b8063c0ab78e3146104ac578063c63a6ad2146104c8578063c93c8f34146104e6576101c4565b8063a08a6a4c116100d3578063a08a6a4c14610410578063a457c2d71461042e578063a9059cbb1461045e578063b00e66301461048e576101c4565b806386516e13146103a45780638da5cb5b146103d457806395d89b41146103f2576101c4565b8063313ce5671161016657806370a082311161014057806370a0823114610330578063715018a6146103605780637b0472f01461036a578063817b1cd214610386576101c4565b8063313ce567146102c457806339509351146102e257806349bd5a5e14610312576101c4565b806316934fc4116101a257806316934fc41461023557806318160ddd1461026c57806323b872dd1461028a5780632def6620146102ba576101c4565b8063066c724b146101c957806306fdde03146101e7578063095ea7b314610205575b600080fd5b6101d161059e565b6040516101de91906121a1565b60405180910390f35b6101ef6105a3565b6040516101fc919061224c565b60405180910390f35b61021f600480360381019061021a91906122fd565b610635565b60405161022c9190612358565b60405180910390f35b61024f600480360381019061024a9190612373565b610658565b6040516102639897969594939291906123a0565b60405180910390f35b6102746106a0565b60405161028191906121a1565b60405180910390f35b6102a4600480360381019061029f919061241e565b6106aa565b6040516102b19190612358565b60405180910390f35b6102c26106d9565b005b6102cc610a97565b6040516102d9919061248d565b60405180910390f35b6102fc60048036038101906102f791906122fd565b610aa0565b6040516103099190612358565b60405180910390f35b61031a610ad7565b60405161032791906124b7565b60405180910390f35b61034a60048036038101906103459190612373565b610afd565b60405161035791906121a1565b60405180910390f35b610368610b45565b005b610384600480360381019061037f91906124d2565b610b59565b005b61038e610fea565b60405161039b91906121a1565b60405180910390f35b6103be60048036038101906103b99190612512565b610ff0565b6040516103cb91906124b7565b60405180910390f35b6103dc61102f565b6040516103e991906124b7565b60405180910390f35b6103fa611059565b604051610407919061224c565b60405180910390f35b6104186110eb565b60405161042591906121a1565b60405180910390f35b610448600480360381019061044391906122fd565b6110f1565b6040516104559190612358565b60405180910390f35b610478600480360381019061047391906122fd565b611168565b6040516104859190612358565b60405180910390f35b61049661118b565b6040516104a391906121a1565b60405180910390f35b6104c660048036038101906104c1919061256b565b611191565b005b6104d061121d565b6040516104dd919061248d565b60405180910390f35b61050060048036038101906104fb9190612373565b611230565b60405161050d9190612358565b60405180910390f35b61051e611250565b60405161052b91906121a1565b60405180910390f35b61054e600480360381019061054991906125d2565b611255565b60405161055b91906121a1565b60405180910390f35b61056c6112dc565b604051610579919061248d565b60405180910390f35b61059c60048036038101906105979190612373565b6112ef565b005b600f81565b6060600380546105b290612641565b80601f01602080910402602001604051908101604052809291908181526020018280546105de90612641565b801561062b5780601f106106005761010080835404028352916020019161062b565b820191906000526020600020905b81548152906001019060200180831161060e57829003601f168201915b5050505050905090565b600080610640611372565b905061064d81858561137a565b600191505092915050565b60096020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040154908060050154908060060154908060070154905088565b6000600254905090565b6000806106b5611372565b90506106c2858285611543565b6106cd8585856115cf565b60019150509392505050565b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206040518061010001604052908160008201548152602001600182015481526020016002820154815260200160038201548152602001600482015481526020016005820154815260200160068201548152602001600782015481525050905060008160000151116107bf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107b6906126be565b60405180910390fd5b60008160c0015182600001516107d5919061270d565b905060006107e283611779565b9050600081111561080c5761080730338386600001516108029190612741565b6117d2565b61092f565b6108173033846117d2565b8260000151600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101600082825461086d919061270d565b925050819055508260800151600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050160008282546108ca919061270d565b925050819055508260c00151600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007016000828254610927919061270d565b925050819055505b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550610a5833611a48565b8260c00151600d6000828254610a6e9190612741565b925050819055508260000151600c6000828254610a8b9190612741565b92505081905550505050565b60006012905090565b600080610aab611372565b9050610acc818585610abd8589611255565b610ac7919061270d565b61137a565b600191505092915050565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610b4d611bd8565b610b576000611c56565b565b60008211610b9c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b93906127c1565b60405180910390fd5b600081118015610bad5750601e8111155b610bec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610be39061282d565b60405180910390fd5b6000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000015414610c71576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c6890612899565b60405180910390fd5b60001515600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151503610d8557600b339080600181540180825580915050600190039060005260206000200160009091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505b6000610d9030610afd565b90506000600d54600c5483610da59190612741565b610daf9190612741565b90506000610bb884601e87610dc491906128b9565b610dce91906128b9565b610dd8919061292a565b905081811115610de6578190505b80600d6000828254610df8919061270d565b9250508190555084600c6000828254610e11919061270d565b9250508190555084600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000016000828254610e6a919061270d565b9250508190555042600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002018190555080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206006018190555083600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600401819055506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206003015403610fd85742600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055505b610fe33330876117d2565b5050505050565b600c5481565b600b818154811061100057600080fd5b906000526020600020016000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606004805461106890612641565b80601f016020809104026020016040519081016040528092919081815260200182805461109490612641565b80156110e15780601f106110b6576101008083540402835291602001916110e1565b820191906000526020600020905b8154815290600101906020018083116110c457829003601f168201915b5050505050905090565b600d5481565b6000806110fc611372565b9050600061110a8286611255565b90508381101561114f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611146906129cd565b60405180910390fd5b61115c828686840361137a565b60019250505092915050565b600080611173611372565b90506111808185856115cf565b600191505092915050565b60075481565b611199611bd8565b83600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260078190555081600860006101000a81548160ff021916908360ff16021790555080600860016101000a81548160ff021916908360ff16021790555050505050565b600860019054906101000a900460ff1681565b600a6020528060005260406000206000915054906101000a900460ff1681565b601e81565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600860009054906101000a900460ff1681565b6112f7611bd8565b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611366576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161135d90612a5f565b60405180910390fd5b61136f81611c56565b50565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036113e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113e090612af1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611458576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144f90612b83565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161153691906121a1565b60405180910390a3505050565b600061154f8484611255565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff81146115c957818110156115bb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115b290612bef565b60405180910390fd5b6115c8848484840361137a565b5b50505050565b6115da838383611d1c565b60006115f582600860009054906101000a900460ff16611f91565b9050600061161283600860019054906101000a900460ff16611f91565b9050600061161f30610afd565b90506000600d54600c54836116349190612741565b61163e9190612741565b9050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168773ffffffffffffffffffffffffffffffffffffffff16036116e8576116c2600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687876117d2565b8084116116d8576116d33085611fb6565b6116e3565b6116e23082611fb6565b5b611770565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff1603611763576117538787858861174e9190612741565b6117d2565b61175e8730856117d2565b61176f565b61176e8787876117d2565b5b5b50505050505050565b600062015180826080015161178e91906128b9565b826040015161179d919061270d565b4210156117c8576064600f83600001516117b791906128b9565b6117c1919061292a565b90506117cd565b600090505b919050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611841576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183890612c81565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036118b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a790612d13565b60405180910390fd5b6118bb838383611d1c565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015611941576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161193890612da5565b60405180910390fd5b8181036000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611a2f91906121a1565b60405180910390a3611a42848484612183565b50505050565b60005b600b80549050811015611bd4578173ffffffffffffffffffffffffffffffffffffffff16600b8281548110611a8357611a82612dc5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611bc157600b6001600b80549050611add9190612741565b81548110611aee57611aed612dc5565b5b9060005260206000200160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b8281548110611b2d57611b2c612dc5565b5b9060005260206000200160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b805480611b8757611b86612df4565b5b6001900381819060005260206000200160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690559055611bd4565b8080611bcc90612e23565b915050611a4b565b5050565b611be0611372565b73ffffffffffffffffffffffffffffffffffffffff16611bfe61102f565b73ffffffffffffffffffffffffffffffffffffffff1614611c54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c4b90612eb7565b60405180910390fd5b565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b600073ffffffffffffffffffffffffffffffffffffffff16600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611e91573073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611dd757503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b80611e145750611de561102f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b80611e515750611e2261102f565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b611e90576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8790612f23565b60405180910390fd5b5b6000600754118015611ef05750600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16145b8015611f2857503073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611f8c576000611f3883610afd565b90506007548282611f49919061270d565b1115611f8a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f8190612f8f565b60405180910390fd5b505b505050565b600060648260ff1684611fa491906128b9565b611fae919061292a565b905092915050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612025576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201c90613021565b60405180910390fd5b61203182600083611d1c565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050818110156120b7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ae906130b3565b60405180910390fd5b8181036000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282540392505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161216a91906121a1565b60405180910390a361217e83600084612183565b505050565b505050565b6000819050919050565b61219b81612188565b82525050565b60006020820190506121b66000830184612192565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b838110156121f65780820151818401526020810190506121db565b60008484015250505050565b6000601f19601f8301169050919050565b600061221e826121bc565b61222881856121c7565b93506122388185602086016121d8565b61224181612202565b840191505092915050565b600060208201905081810360008301526122668184612213565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061229e82612273565b9050919050565b6122ae81612293565b81146122b957600080fd5b50565b6000813590506122cb816122a5565b92915050565b6122da81612188565b81146122e557600080fd5b50565b6000813590506122f7816122d1565b92915050565b600080604083850312156123145761231361226e565b5b6000612322858286016122bc565b9250506020612333858286016122e8565b9150509250929050565b60008115159050919050565b6123528161233d565b82525050565b600060208201905061236d6000830184612349565b92915050565b6000602082840312156123895761238861226e565b5b6000612397848285016122bc565b91505092915050565b6000610100820190506123b6600083018b612192565b6123c3602083018a612192565b6123d06040830189612192565b6123dd6060830188612192565b6123ea6080830187612192565b6123f760a0830186612192565b61240460c0830185612192565b61241160e0830184612192565b9998505050505050505050565b6000806000606084860312156124375761243661226e565b5b6000612445868287016122bc565b9350506020612456868287016122bc565b9250506040612467868287016122e8565b9150509250925092565b600060ff82169050919050565b61248781612471565b82525050565b60006020820190506124a2600083018461247e565b92915050565b6124b181612293565b82525050565b60006020820190506124cc60008301846124a8565b92915050565b600080604083850312156124e9576124e861226e565b5b60006124f7858286016122e8565b9250506020612508858286016122e8565b9150509250929050565b6000602082840312156125285761252761226e565b5b6000612536848285016122e8565b91505092915050565b61254881612471565b811461255357600080fd5b50565b6000813590506125658161253f565b92915050565b600080600080608085870312156125855761258461226e565b5b6000612593878288016122bc565b94505060206125a4878288016122e8565b93505060406125b587828801612556565b92505060606125c687828801612556565b91505092959194509250565b600080604083850312156125e9576125e861226e565b5b60006125f7858286016122bc565b9250506020612608858286016122bc565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061265957607f821691505b60208210810361266c5761266b612612565b5b50919050565b7f4e6f207374616b6520746f207769746864726177000000000000000000000000600082015250565b60006126a86014836121c7565b91506126b382612672565b602082019050919050565b600060208201905081810360008301526126d78161269b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061271882612188565b915061272383612188565b925082820190508082111561273b5761273a6126de565b5b92915050565b600061274c82612188565b915061275783612188565b925082820390508181111561276f5761276e6126de565b5b92915050565b7f416d6f756e74206d7573742062652067726561746572207468616e2030000000600082015250565b60006127ab601d836121c7565b91506127b682612775565b602082019050919050565b600060208201905081810360008301526127da8161279e565b9050919050565b7f506572696f64206d757374206265206265747765656e203120616e6420333000600082015250565b6000612817601f836121c7565b9150612822826127e1565b602082019050919050565b600060208201905081810360008301526128468161280a565b9050919050565b7f4164647265737320616c7265616479207374616b696e67000000000000000000600082015250565b60006128836017836121c7565b915061288e8261284d565b602082019050919050565b600060208201905081810360008301526128b281612876565b9050919050565b60006128c482612188565b91506128cf83612188565b92508282026128dd81612188565b915082820484148315176128f4576128f36126de565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061293582612188565b915061294083612188565b9250826129505761294f6128fb565b5b828204905092915050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b60006129b76025836121c7565b91506129c28261295b565b604082019050919050565b600060208201905081810360008301526129e6816129aa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612a496026836121c7565b9150612a54826129ed565b604082019050919050565b60006020820190508181036000830152612a7881612a3c565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612adb6024836121c7565b9150612ae682612a7f565b604082019050919050565b60006020820190508181036000830152612b0a81612ace565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612b6d6022836121c7565b9150612b7882612b11565b604082019050919050565b60006020820190508181036000830152612b9c81612b60565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e6365000000600082015250565b6000612bd9601d836121c7565b9150612be482612ba3565b602082019050919050565b60006020820190508181036000830152612c0881612bcc565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612c6b6025836121c7565b9150612c7682612c0f565b604082019050919050565b60006020820190508181036000830152612c9a81612c5e565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612cfd6023836121c7565b9150612d0882612ca1565b604082019050919050565b60006020820190508181036000830152612d2c81612cf0565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000612d8f6026836121c7565b9150612d9a82612d33565b604082019050919050565b60006020820190508181036000830152612dbe81612d82565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603160045260246000fd5b6000612e2e82612188565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612e6057612e5f6126de565b5b600182019050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612ea16020836121c7565b9150612eac82612e6b565b602082019050919050565b60006020820190508181036000830152612ed081612e94565b9050919050565b7f54726164696e674e6f7453746172746564000000000000000000000000000000600082015250565b6000612f0d6011836121c7565b9150612f1882612ed7565b602082019050919050565b60006020820190508181036000830152612f3c81612f00565b9050919050565b7f4c696d6974656400000000000000000000000000000000000000000000000000600082015250565b6000612f796007836121c7565b9150612f8482612f43565b602082019050919050565b60006020820190508181036000830152612fa881612f6c565b9050919050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b600061300b6021836121c7565b915061301682612faf565b604082019050919050565b6000602082019050818103600083015261303a81612ffe565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b600061309d6022836121c7565b91506130a882613041565b604082019050919050565b600060208201905081810360008301526130cc81613090565b905091905056fea26469706673582212209c6fbdf7780dca82a2cafeb1d040e719795ef0e2f3debf4e01daca25b47457a364736f6c63430008130033

Deployed Bytecode Sourcemap

20657:4966:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20875:44;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9351:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11702:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21126:39;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;;;;;;:::i;:::-;;;;;;;;10471:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12483:295;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;24100:863;;;:::i;:::-;;10313:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13187:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20707:28;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10642:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2776:103;;;:::i;:::-;;23051:1044;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;21251:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21214:33;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2128:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9570:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21285:34;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13928:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10975:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20739:27;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21478:275;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20798:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21169:41;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20828:43;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11231:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20770:24;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3034:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20875:44;20917:2;20875:44;:::o;9351:100::-;9405:13;9438:5;9431:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9351:100;:::o;11702:201::-;11785:4;11802:13;11818:12;:10;:12::i;:::-;11802:28;;11841:32;11850:5;11857:7;11866:6;11841:8;:32::i;:::-;11891:4;11884:11;;;11702:201;;;;:::o;21126:39::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;10471:108::-;10532:7;10559:12;;10552:19;;10471:108;:::o;12483:295::-;12614:4;12631:15;12649:12;:10;:12::i;:::-;12631:30;;12672:38;12688:4;12694:7;12703:6;12672:15;:38::i;:::-;12721:27;12731:4;12737:2;12741:6;12721:9;:27::i;:::-;12766:4;12759:11;;;12483:295;;;;;:::o;24100:863::-;24136:22;24161:6;:18;24168:10;24161:18;;;;;;;;;;;;;;;24136:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24217:1;24198:9;:16;;;:20;24190:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;24250:21;24293:9;:16;;;24274:9;:16;;;:35;;;;:::i;:::-;24250:59;;24314:15;24332:27;24349:9;24332:16;:27::i;:::-;24314:45;;24377:1;24367:7;:11;24364:339;;;24386:70;24410:4;24417:10;24448:7;24429:9;:16;;;:26;;;;:::i;:::-;24386:15;:70::i;:::-;24364:339;;;24472:57;24496:4;24503:10;24515:13;24472:15;:57::i;:::-;24569:9;:16;;;24535:6;:18;24542:10;24535:18;;;;;;;;;;;;;;;:30;;;:50;;;;;;;:::i;:::-;;;;;;;;24625:9;:16;;;24591:6;:18;24598:10;24591:18;;;;;;;;;;;;;;;:30;;;:50;;;;;;;:::i;:::-;;;;;;;;24681:9;:16;;;24647:6;:18;24654:10;24647:18;;;;;;;;;;;;;;;:30;;;:50;;;;;;;:::i;:::-;;;;;;;;24364:339;24737:1;24709:6;:18;24716:10;24709:18;;;;;;;;;;;;;;;:25;;:29;;;;24771:1;24743:6;:18;24750:10;24743:18;;;;;;;;;;;;;;;:25;;:29;;;;24805:1;24777:6;:18;24784:10;24777:18;;;;;;;;;;;;;;;:25;;:29;;;;24842:1;24811:6;:18;24818:10;24811:18;;;;;;;;;;;;;;;:28;;:32;;;;24848;24869:10;24848:20;:32::i;:::-;24906:9;:16;;;24887:15;;:35;;;;;;;:::i;:::-;;;;;;;;24942:9;:16;;;24927:11;;:31;;;;;;;:::i;:::-;;;;;;;;24128:835;;;24100:863::o;10313:93::-;10371:5;10396:2;10389:9;;10313:93;:::o;13187:238::-;13275:4;13292:13;13308:12;:10;:12::i;:::-;13292:28;;13331:64;13340:5;13347:7;13384:10;13356:25;13366:5;13373:7;13356:9;:25::i;:::-;:38;;;;:::i;:::-;13331:8;:64::i;:::-;13413:4;13406:11;;;13187:238;;;;:::o;20707:28::-;;;;;;;;;;;;;:::o;10642:127::-;10716:7;10743:9;:18;10753:7;10743:18;;;;;;;;;;;;;;;;10736:25;;10642:127;;;:::o;2776:103::-;2014:13;:11;:13::i;:::-;2841:30:::1;2868:1;2841:18;:30::i;:::-;2776:103::o:0;23051:1044::-;23132:1;23122:7;:11;23114:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;23190:1;23180:7;:11;:28;;;;;23206:2;23195:7;:13;;23180:28;23172:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;23286:1;23257:6;:18;23264:10;23257:18;;;;;;;;;;;;;;;:25;;;:30;23249:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;23351:5;23326:30;;:9;:21;23336:10;23326:21;;;;;;;;;;;;;;;;;;;;;;;;;:30;;;23322:115;;23364:16;23386:10;23364:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23427:4;23403:9;:21;23413:10;23403:21;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;23322:115;23443:16;23462:24;23480:4;23462:9;:24::i;:::-;23443:43;;23491:25;23544:15;;23530:11;;23519:8;:22;;;;:::i;:::-;:40;;;;:::i;:::-;23491:68;;23568:15;23624:8;23613:7;20869:2;23586:7;:24;;;;:::i;:::-;:34;;;;:::i;:::-;:47;;;;:::i;:::-;23568:65;;23651:17;23641:7;:27;23638:59;;;23680:17;23670:27;;23638:59;23725:7;23706:15;;:26;;;;;;;:::i;:::-;;;;;;;;23752:7;23737:11;;:22;;;;;;;:::i;:::-;;;;;;;;23795:7;23766:6;:18;23773:10;23766:18;;;;;;;;;;;;;;;:25;;;:36;;;;;;;:::i;:::-;;;;;;;;23838:15;23807:6;:18;23814:10;23807:18;;;;;;;;;;;;;;;:28;;:46;;;;23886:7;23858:6;:18;23865:10;23858:18;;;;;;;;;;;;;;;:25;;:35;;;;23926:7;23898:6;:18;23905:10;23898:18;;;;;;;;;;;;;;;:25;;:35;;;;23978:1;23941:6;:18;23948:10;23941:18;;;;;;;;;;;;;;;:33;;;:38;23938:94;;24017:15;23981:6;:18;23988:10;23981:18;;;;;;;;;;;;;;;:33;;:51;;;;23938:94;24039:51;24055:10;24075:4;24082:7;24039:15;:51::i;:::-;23109:986;;;23051:1044;;:::o;21251:30::-;;;;:::o;21214:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2128:87::-;2174:7;2201:6;;;;;;;;;;;2194:13;;2128:87;:::o;9570:104::-;9626:13;9659:7;9652:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9570:104;:::o;21285:34::-;;;;:::o;13928:436::-;14021:4;14038:13;14054:12;:10;:12::i;:::-;14038:28;;14077:24;14104:25;14114:5;14121:7;14104:9;:25::i;:::-;14077:52;;14168:15;14148:16;:35;;14140:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;14261:60;14270:5;14277:7;14305:15;14286:16;:34;14261:8;:60::i;:::-;14352:4;14345:11;;;;13928:436;;;;:::o;10975:193::-;11054:4;11071:13;11087:12;:10;:12::i;:::-;11071:28;;11110;11120:5;11127:2;11131:6;11110:9;:28::i;:::-;11156:4;11149:11;;;10975:193;;;;:::o;20739:27::-;;;;:::o;21478:275::-;2014:13;:11;:13::i;:::-;21639:14:::1;21623:13;;:30;;;;;;;;;;;;;;;;;;21673:13;21658:12;:28;;;;21705:12;21691:11;;:26;;;;;;;;;;;;;;;;;;21736:12;21722:11;;:26;;;;;;;;;;;;;;;;;;21478:275:::0;;;;:::o;20798:24::-;;;;;;;;;;;;;:::o;21169:41::-;;;;;;;;;;;;;;;;;;;;;;:::o;20828:43::-;20869:2;20828:43;:::o;11231:151::-;11320:7;11347:11;:18;11359:5;11347:18;;;;;;;;;;;;;;;:27;11366:7;11347:27;;;;;;;;;;;;;;;;11340:34;;11231:151;;;;:::o;20770:24::-;;;;;;;;;;;;;:::o;3034:201::-;2014:13;:11;:13::i;:::-;3143:1:::1;3123:22;;:8;:22;;::::0;3115:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;3199:28;3218:8;3199:18;:28::i;:::-;3034:201:::0;:::o;679:98::-;732:7;759:10;752:17;;679:98;:::o;17955:380::-;18108:1;18091:19;;:5;:19;;;18083:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18189:1;18170:21;;:7;:21;;;18162:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18273:6;18243:11;:18;18255:5;18243:18;;;;;;;;;;;;;;;:27;18262:7;18243:27;;;;;;;;;;;;;;;:36;;;;18311:7;18295:32;;18304:5;18295:32;;;18320:6;18295:32;;;;;;:::i;:::-;;;;;;;;17955:380;;;:::o;18626:453::-;18761:24;18788:25;18798:5;18805:7;18788:9;:25::i;:::-;18761:52;;18848:17;18828:16;:37;18824:248;;18910:6;18890:16;:26;;18882:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;18994:51;19003:5;19010:7;19038:6;19019:16;:25;18994:8;:51::i;:::-;18824:248;18750:329;18626:453;;;:::o;22218:828::-;22319:47;22340:6;22348:9;22359:6;22319:20;:47::i;:::-;22373:15;22391:33;22404:6;22412:11;;;;;;;;;;;22391:12;:33::i;:::-;22373:51;;22429:16;22448:33;22461:6;22469:11;;;;;;;;;;;22448:12;:33::i;:::-;22429:52;;22486:16;22505:24;22523:4;22505:9;:24::i;:::-;22486:43;;22534:25;22587:15;;22573:11;;22562:8;:22;;;;:::i;:::-;:40;;;;:::i;:::-;22534:68;;22623:13;;;;;;;;;;;22613:23;;:6;:23;;;22609:433;;22646:49;22662:13;;;;;;;;;;;22677:9;22688:6;22646:15;:49::i;:::-;22715:17;22704:7;:28;22701:112;;22734:29;22748:4;22755:7;22734:5;:29::i;:::-;22701:112;;;22774:39;22788:4;22795:17;22774:5;:39::i;:::-;22701:112;22609:433;;;22844:13;;;;;;;;;;;22831:26;;:9;:26;;;22827:215;;22867:53;22883:6;22891:9;22911:8;22902:6;:17;;;;:::i;:::-;22867:15;:53::i;:::-;22926:48;22942:6;22958:4;22965:8;22926:15;:48::i;:::-;22827:215;;;22994:42;23010:6;23018:9;23029:6;22994:15;:42::i;:::-;22827:215;22609:433;22314:732;;;;22218:828;;;:::o;25097:226::-;25167:7;25239:6;25223;:13;;;:22;;;;:::i;:::-;25203:6;:16;;;:43;;;;:::i;:::-;25185:15;:61;25181:125;;;25297:3;20917:2;25262:6;:13;;;:31;;;;:::i;:::-;25261:39;;;;:::i;:::-;25254:46;;;;25181:125;25317:1;25310:8;;25097:226;;;;:::o;14834:840::-;14981:1;14965:18;;:4;:18;;;14957:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;15058:1;15044:16;;:2;:16;;;15036:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;15113:38;15134:4;15140:2;15144:6;15113:20;:38::i;:::-;15164:19;15186:9;:15;15196:4;15186:15;;;;;;;;;;;;;;;;15164:37;;15235:6;15220:11;:21;;15212:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;15352:6;15338:11;:20;15320:9;:15;15330:4;15320:15;;;;;;;;;;;;;;;:38;;;;15555:6;15538:9;:13;15548:2;15538:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;15605:2;15590:26;;15599:4;15590:26;;;15609:6;15590:26;;;;;;:::i;:::-;;;;;;;;15629:37;15649:4;15655:2;15659:6;15629:19;:37::i;:::-;14946:728;14834:840;;;:::o;25328:290::-;25395:9;25390:224;25414:16;:23;;;;25410:1;:27;25390:224;;;25477:8;25454:31;;:16;25471:1;25454:19;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:31;;;25450:159;;25516:16;25559:1;25533:16;:23;;;;:27;;;;:::i;:::-;25516:45;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;25494:16;25511:1;25494:19;;;;;;;;:::i;:::-;;;;;;;;;;:67;;;;;;;;;;;;;;;;;;25568:16;:22;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;25597:5;;25450:159;25439:3;;;;;:::i;:::-;;;;25390:224;;;;25328:290;:::o;2293:132::-;2368:12;:10;:12::i;:::-;2357:23;;:7;:5;:7::i;:::-;:23;;;2349:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;2293:132::o;3395:191::-;3469:16;3488:6;;;;;;;;;;;3469:25;;3514:8;3505:6;;:17;;;;;;;;;;;;;;;;;;3569:8;3538:40;;3559:8;3538:40;;;;;;;;;;;;3458:128;3395:191;:::o;21758:455::-;21890:1;21865:27;;:13;;;;;;;;;;;:27;;;21861:155;;21924:4;21908:21;;:4;:21;;;:44;;;;21947:4;21933:19;;:2;:19;;;21908:44;:63;;;;21964:7;:5;:7::i;:::-;21956:15;;:4;:15;;;21908:63;:80;;;;21981:7;:5;:7::i;:::-;21975:13;;:2;:13;;;21908:80;21900:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;21861:155;22039:1;22024:12;;:16;:41;;;;;22052:13;;;;;;;;;;;22044:21;;:4;:21;;;22024:41;:64;;;;;22083:4;22069:19;;:2;:19;;;;22024:64;22020:189;;;22096:16;22115:13;22125:2;22115:9;:13::i;:::-;22096:32;;22169:12;;22159:6;22148:8;:17;;;;:::i;:::-;:33;;22134:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;22090:119;22020:189;21758:455;;;:::o;24968:124::-;25043:7;25084:3;25075:5;25065:15;;:7;:15;;;;:::i;:::-;25064:23;;;;:::i;:::-;25057:30;;24968:124;;;;:::o;16842:675::-;16945:1;16926:21;;:7;:21;;;16918:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;16998:49;17019:7;17036:1;17040:6;16998:20;:49::i;:::-;17060:22;17085:9;:18;17095:7;17085:18;;;;;;;;;;;;;;;;17060:43;;17140:6;17122:14;:24;;17114:71;;;;;;;;;;;;:::i;:::-;;;;;;;;;17259:6;17242:14;:23;17221:9;:18;17231:7;17221:18;;;;;;;;;;;;;;;:44;;;;17376:6;17360:12;;:22;;;;;;;;;;;17437:1;17411:37;;17420:7;17411:37;;;17441:6;17411:37;;;;;;:::i;:::-;;;;;;;;17461:48;17481:7;17498:1;17502:6;17461:19;:48::i;:::-;16907:610;16842:675;;:::o;20408:124::-;;;;:::o;7:77:1:-;44:7;73:5;62:16;;7:77;;;:::o;90:118::-;177:24;195:5;177:24;:::i;:::-;172:3;165:37;90:118;;:::o;214:222::-;307:4;345:2;334:9;330:18;322:26;;358:71;426:1;415:9;411:17;402:6;358:71;:::i;:::-;214:222;;;;:::o;442:99::-;494:6;528:5;522:12;512:22;;442:99;;;:::o;547:169::-;631:11;665:6;660:3;653:19;705:4;700:3;696:14;681:29;;547:169;;;;:::o;722:246::-;803:1;813:113;827:6;824:1;821:13;813:113;;;912:1;907:3;903:11;897:18;893:1;888:3;884:11;877:39;849:2;846:1;842:10;837:15;;813:113;;;960:1;951:6;946:3;942:16;935:27;784:184;722:246;;;:::o;974:102::-;1015:6;1066:2;1062:7;1057:2;1050:5;1046:14;1042:28;1032:38;;974:102;;;:::o;1082:377::-;1170:3;1198:39;1231:5;1198:39;:::i;:::-;1253:71;1317:6;1312:3;1253:71;:::i;:::-;1246:78;;1333:65;1391:6;1386:3;1379:4;1372:5;1368:16;1333:65;:::i;:::-;1423:29;1445:6;1423:29;:::i;:::-;1418:3;1414:39;1407:46;;1174:285;1082:377;;;;:::o;1465:313::-;1578:4;1616:2;1605:9;1601:18;1593:26;;1665:9;1659:4;1655:20;1651:1;1640:9;1636:17;1629:47;1693:78;1766:4;1757:6;1693:78;:::i;:::-;1685:86;;1465:313;;;;:::o;1865:117::-;1974:1;1971;1964:12;2111:126;2148:7;2188:42;2181:5;2177:54;2166:65;;2111:126;;;:::o;2243:96::-;2280:7;2309:24;2327:5;2309:24;:::i;:::-;2298:35;;2243:96;;;:::o;2345:122::-;2418:24;2436:5;2418:24;:::i;:::-;2411:5;2408:35;2398:63;;2457:1;2454;2447:12;2398:63;2345:122;:::o;2473:139::-;2519:5;2557:6;2544:20;2535:29;;2573:33;2600:5;2573:33;:::i;:::-;2473:139;;;;:::o;2618:122::-;2691:24;2709:5;2691:24;:::i;:::-;2684:5;2681:35;2671:63;;2730:1;2727;2720:12;2671:63;2618:122;:::o;2746:139::-;2792:5;2830:6;2817:20;2808:29;;2846:33;2873:5;2846:33;:::i;:::-;2746:139;;;;:::o;2891:474::-;2959:6;2967;3016:2;3004:9;2995:7;2991:23;2987:32;2984:119;;;3022:79;;:::i;:::-;2984:119;3142:1;3167:53;3212:7;3203:6;3192:9;3188:22;3167:53;:::i;:::-;3157:63;;3113:117;3269:2;3295:53;3340:7;3331:6;3320:9;3316:22;3295:53;:::i;:::-;3285:63;;3240:118;2891:474;;;;;:::o;3371:90::-;3405:7;3448:5;3441:13;3434:21;3423:32;;3371:90;;;:::o;3467:109::-;3548:21;3563:5;3548:21;:::i;:::-;3543:3;3536:34;3467:109;;:::o;3582:210::-;3669:4;3707:2;3696:9;3692:18;3684:26;;3720:65;3782:1;3771:9;3767:17;3758:6;3720:65;:::i;:::-;3582:210;;;;:::o;3798:329::-;3857:6;3906:2;3894:9;3885:7;3881:23;3877:32;3874:119;;;3912:79;;:::i;:::-;3874:119;4032:1;4057:53;4102:7;4093:6;4082:9;4078:22;4057:53;:::i;:::-;4047:63;;4003:117;3798:329;;;;:::o;4133:997::-;4422:4;4460:3;4449:9;4445:19;4437:27;;4474:71;4542:1;4531:9;4527:17;4518:6;4474:71;:::i;:::-;4555:72;4623:2;4612:9;4608:18;4599:6;4555:72;:::i;:::-;4637;4705:2;4694:9;4690:18;4681:6;4637:72;:::i;:::-;4719;4787:2;4776:9;4772:18;4763:6;4719:72;:::i;:::-;4801:73;4869:3;4858:9;4854:19;4845:6;4801:73;:::i;:::-;4884;4952:3;4941:9;4937:19;4928:6;4884:73;:::i;:::-;4967;5035:3;5024:9;5020:19;5011:6;4967:73;:::i;:::-;5050;5118:3;5107:9;5103:19;5094:6;5050:73;:::i;:::-;4133:997;;;;;;;;;;;:::o;5136:619::-;5213:6;5221;5229;5278:2;5266:9;5257:7;5253:23;5249:32;5246:119;;;5284:79;;:::i;:::-;5246:119;5404:1;5429:53;5474:7;5465:6;5454:9;5450:22;5429:53;:::i;:::-;5419:63;;5375:117;5531:2;5557:53;5602:7;5593:6;5582:9;5578:22;5557:53;:::i;:::-;5547:63;;5502:118;5659:2;5685:53;5730:7;5721:6;5710:9;5706:22;5685:53;:::i;:::-;5675:63;;5630:118;5136:619;;;;;:::o;5761:86::-;5796:7;5836:4;5829:5;5825:16;5814:27;;5761:86;;;:::o;5853:112::-;5936:22;5952:5;5936:22;:::i;:::-;5931:3;5924:35;5853:112;;:::o;5971:214::-;6060:4;6098:2;6087:9;6083:18;6075:26;;6111:67;6175:1;6164:9;6160:17;6151:6;6111:67;:::i;:::-;5971:214;;;;:::o;6191:118::-;6278:24;6296:5;6278:24;:::i;:::-;6273:3;6266:37;6191:118;;:::o;6315:222::-;6408:4;6446:2;6435:9;6431:18;6423:26;;6459:71;6527:1;6516:9;6512:17;6503:6;6459:71;:::i;:::-;6315:222;;;;:::o;6543:474::-;6611:6;6619;6668:2;6656:9;6647:7;6643:23;6639:32;6636:119;;;6674:79;;:::i;:::-;6636:119;6794:1;6819:53;6864:7;6855:6;6844:9;6840:22;6819:53;:::i;:::-;6809:63;;6765:117;6921:2;6947:53;6992:7;6983:6;6972:9;6968:22;6947:53;:::i;:::-;6937:63;;6892:118;6543:474;;;;;:::o;7023:329::-;7082:6;7131:2;7119:9;7110:7;7106:23;7102:32;7099:119;;;7137:79;;:::i;:::-;7099:119;7257:1;7282:53;7327:7;7318:6;7307:9;7303:22;7282:53;:::i;:::-;7272:63;;7228:117;7023:329;;;;:::o;7358:118::-;7429:22;7445:5;7429:22;:::i;:::-;7422:5;7419:33;7409:61;;7466:1;7463;7456:12;7409:61;7358:118;:::o;7482:135::-;7526:5;7564:6;7551:20;7542:29;;7580:31;7605:5;7580:31;:::i;:::-;7482:135;;;;:::o;7623:757::-;7705:6;7713;7721;7729;7778:3;7766:9;7757:7;7753:23;7749:33;7746:120;;;7785:79;;:::i;:::-;7746:120;7905:1;7930:53;7975:7;7966:6;7955:9;7951:22;7930:53;:::i;:::-;7920:63;;7876:117;8032:2;8058:53;8103:7;8094:6;8083:9;8079:22;8058:53;:::i;:::-;8048:63;;8003:118;8160:2;8186:51;8229:7;8220:6;8209:9;8205:22;8186:51;:::i;:::-;8176:61;;8131:116;8286:2;8312:51;8355:7;8346:6;8335:9;8331:22;8312:51;:::i;:::-;8302:61;;8257:116;7623:757;;;;;;;:::o;8386:474::-;8454:6;8462;8511:2;8499:9;8490:7;8486:23;8482:32;8479:119;;;8517:79;;:::i;:::-;8479:119;8637:1;8662:53;8707:7;8698:6;8687:9;8683:22;8662:53;:::i;:::-;8652:63;;8608:117;8764:2;8790:53;8835:7;8826:6;8815:9;8811:22;8790:53;:::i;:::-;8780:63;;8735:118;8386:474;;;;;:::o;8866:180::-;8914:77;8911:1;8904:88;9011:4;9008:1;9001:15;9035:4;9032:1;9025:15;9052:320;9096:6;9133:1;9127:4;9123:12;9113:22;;9180:1;9174:4;9170:12;9201:18;9191:81;;9257:4;9249:6;9245:17;9235:27;;9191:81;9319:2;9311:6;9308:14;9288:18;9285:38;9282:84;;9338:18;;:::i;:::-;9282:84;9103:269;9052:320;;;:::o;9378:170::-;9518:22;9514:1;9506:6;9502:14;9495:46;9378:170;:::o;9554:366::-;9696:3;9717:67;9781:2;9776:3;9717:67;:::i;:::-;9710:74;;9793:93;9882:3;9793:93;:::i;:::-;9911:2;9906:3;9902:12;9895:19;;9554:366;;;:::o;9926:419::-;10092:4;10130:2;10119:9;10115:18;10107:26;;10179:9;10173:4;10169:20;10165:1;10154:9;10150:17;10143:47;10207:131;10333:4;10207:131;:::i;:::-;10199:139;;9926:419;;;:::o;10351:180::-;10399:77;10396:1;10389:88;10496:4;10493:1;10486:15;10520:4;10517:1;10510:15;10537:191;10577:3;10596:20;10614:1;10596:20;:::i;:::-;10591:25;;10630:20;10648:1;10630:20;:::i;:::-;10625:25;;10673:1;10670;10666:9;10659:16;;10694:3;10691:1;10688:10;10685:36;;;10701:18;;:::i;:::-;10685:36;10537:191;;;;:::o;10734:194::-;10774:4;10794:20;10812:1;10794:20;:::i;:::-;10789:25;;10828:20;10846:1;10828:20;:::i;:::-;10823:25;;10872:1;10869;10865:9;10857:17;;10896:1;10890:4;10887:11;10884:37;;;10901:18;;:::i;:::-;10884:37;10734:194;;;;:::o;10934:179::-;11074:31;11070:1;11062:6;11058:14;11051:55;10934:179;:::o;11119:366::-;11261:3;11282:67;11346:2;11341:3;11282:67;:::i;:::-;11275:74;;11358:93;11447:3;11358:93;:::i;:::-;11476:2;11471:3;11467:12;11460:19;;11119:366;;;:::o;11491:419::-;11657:4;11695:2;11684:9;11680:18;11672:26;;11744:9;11738:4;11734:20;11730:1;11719:9;11715:17;11708:47;11772:131;11898:4;11772:131;:::i;:::-;11764:139;;11491:419;;;:::o;11916:181::-;12056:33;12052:1;12044:6;12040:14;12033:57;11916:181;:::o;12103:366::-;12245:3;12266:67;12330:2;12325:3;12266:67;:::i;:::-;12259:74;;12342:93;12431:3;12342:93;:::i;:::-;12460:2;12455:3;12451:12;12444:19;;12103:366;;;:::o;12475:419::-;12641:4;12679:2;12668:9;12664:18;12656:26;;12728:9;12722:4;12718:20;12714:1;12703:9;12699:17;12692:47;12756:131;12882:4;12756:131;:::i;:::-;12748:139;;12475:419;;;:::o;12900:173::-;13040:25;13036:1;13028:6;13024:14;13017:49;12900:173;:::o;13079:366::-;13221:3;13242:67;13306:2;13301:3;13242:67;:::i;:::-;13235:74;;13318:93;13407:3;13318:93;:::i;:::-;13436:2;13431:3;13427:12;13420:19;;13079:366;;;:::o;13451:419::-;13617:4;13655:2;13644:9;13640:18;13632:26;;13704:9;13698:4;13694:20;13690:1;13679:9;13675:17;13668:47;13732:131;13858:4;13732:131;:::i;:::-;13724:139;;13451:419;;;:::o;13876:410::-;13916:7;13939:20;13957:1;13939:20;:::i;:::-;13934:25;;13973:20;13991:1;13973:20;:::i;:::-;13968:25;;14028:1;14025;14021:9;14050:30;14068:11;14050:30;:::i;:::-;14039:41;;14229:1;14220:7;14216:15;14213:1;14210:22;14190:1;14183:9;14163:83;14140:139;;14259:18;;:::i;:::-;14140:139;13924:362;13876:410;;;;:::o;14292:180::-;14340:77;14337:1;14330:88;14437:4;14434:1;14427:15;14461:4;14458:1;14451:15;14478:185;14518:1;14535:20;14553:1;14535:20;:::i;:::-;14530:25;;14569:20;14587:1;14569:20;:::i;:::-;14564:25;;14608:1;14598:35;;14613:18;;:::i;:::-;14598:35;14655:1;14652;14648:9;14643:14;;14478:185;;;;:::o;14669:224::-;14809:34;14805:1;14797:6;14793:14;14786:58;14878:7;14873:2;14865:6;14861:15;14854:32;14669:224;:::o;14899:366::-;15041:3;15062:67;15126:2;15121:3;15062:67;:::i;:::-;15055:74;;15138:93;15227:3;15138:93;:::i;:::-;15256:2;15251:3;15247:12;15240:19;;14899:366;;;:::o;15271:419::-;15437:4;15475:2;15464:9;15460:18;15452:26;;15524:9;15518:4;15514:20;15510:1;15499:9;15495:17;15488:47;15552:131;15678:4;15552:131;:::i;:::-;15544:139;;15271:419;;;:::o;15696:225::-;15836:34;15832:1;15824:6;15820:14;15813:58;15905:8;15900:2;15892:6;15888:15;15881:33;15696:225;:::o;15927:366::-;16069:3;16090:67;16154:2;16149:3;16090:67;:::i;:::-;16083:74;;16166:93;16255:3;16166:93;:::i;:::-;16284:2;16279:3;16275:12;16268:19;;15927:366;;;:::o;16299:419::-;16465:4;16503:2;16492:9;16488:18;16480:26;;16552:9;16546:4;16542:20;16538:1;16527:9;16523:17;16516:47;16580:131;16706:4;16580:131;:::i;:::-;16572:139;;16299:419;;;:::o;16724:223::-;16864:34;16860:1;16852:6;16848:14;16841:58;16933:6;16928:2;16920:6;16916:15;16909:31;16724:223;:::o;16953:366::-;17095:3;17116:67;17180:2;17175:3;17116:67;:::i;:::-;17109:74;;17192:93;17281:3;17192:93;:::i;:::-;17310:2;17305:3;17301:12;17294:19;;16953:366;;;:::o;17325:419::-;17491:4;17529:2;17518:9;17514:18;17506:26;;17578:9;17572:4;17568:20;17564:1;17553:9;17549:17;17542:47;17606:131;17732:4;17606:131;:::i;:::-;17598:139;;17325:419;;;:::o;17750:221::-;17890:34;17886:1;17878:6;17874:14;17867:58;17959:4;17954:2;17946:6;17942:15;17935:29;17750:221;:::o;17977:366::-;18119:3;18140:67;18204:2;18199:3;18140:67;:::i;:::-;18133:74;;18216:93;18305:3;18216:93;:::i;:::-;18334:2;18329:3;18325:12;18318:19;;17977:366;;;:::o;18349:419::-;18515:4;18553:2;18542:9;18538:18;18530:26;;18602:9;18596:4;18592:20;18588:1;18577:9;18573:17;18566:47;18630:131;18756:4;18630:131;:::i;:::-;18622:139;;18349:419;;;:::o;18774:179::-;18914:31;18910:1;18902:6;18898:14;18891:55;18774:179;:::o;18959:366::-;19101:3;19122:67;19186:2;19181:3;19122:67;:::i;:::-;19115:74;;19198:93;19287:3;19198:93;:::i;:::-;19316:2;19311:3;19307:12;19300:19;;18959:366;;;:::o;19331:419::-;19497:4;19535:2;19524:9;19520:18;19512:26;;19584:9;19578:4;19574:20;19570:1;19559:9;19555:17;19548:47;19612:131;19738:4;19612:131;:::i;:::-;19604:139;;19331:419;;;:::o;19756:224::-;19896:34;19892:1;19884:6;19880:14;19873:58;19965:7;19960:2;19952:6;19948:15;19941:32;19756:224;:::o;19986:366::-;20128:3;20149:67;20213:2;20208:3;20149:67;:::i;:::-;20142:74;;20225:93;20314:3;20225:93;:::i;:::-;20343:2;20338:3;20334:12;20327:19;;19986:366;;;:::o;20358:419::-;20524:4;20562:2;20551:9;20547:18;20539:26;;20611:9;20605:4;20601:20;20597:1;20586:9;20582:17;20575:47;20639:131;20765:4;20639:131;:::i;:::-;20631:139;;20358:419;;;:::o;20783:222::-;20923:34;20919:1;20911:6;20907:14;20900:58;20992:5;20987:2;20979:6;20975:15;20968:30;20783:222;:::o;21011:366::-;21153:3;21174:67;21238:2;21233:3;21174:67;:::i;:::-;21167:74;;21250:93;21339:3;21250:93;:::i;:::-;21368:2;21363:3;21359:12;21352:19;;21011:366;;;:::o;21383:419::-;21549:4;21587:2;21576:9;21572:18;21564:26;;21636:9;21630:4;21626:20;21622:1;21611:9;21607:17;21600:47;21664:131;21790:4;21664:131;:::i;:::-;21656:139;;21383:419;;;:::o;21808:225::-;21948:34;21944:1;21936:6;21932:14;21925:58;22017:8;22012:2;22004:6;22000:15;21993:33;21808:225;:::o;22039:366::-;22181:3;22202:67;22266:2;22261:3;22202:67;:::i;:::-;22195:74;;22278:93;22367:3;22278:93;:::i;:::-;22396:2;22391:3;22387:12;22380:19;;22039:366;;;:::o;22411:419::-;22577:4;22615:2;22604:9;22600:18;22592:26;;22664:9;22658:4;22654:20;22650:1;22639:9;22635:17;22628:47;22692:131;22818:4;22692:131;:::i;:::-;22684:139;;22411:419;;;:::o;22836:180::-;22884:77;22881:1;22874:88;22981:4;22978:1;22971:15;23005:4;23002:1;22995:15;23022:180;23070:77;23067:1;23060:88;23167:4;23164:1;23157:15;23191:4;23188:1;23181:15;23208:233;23247:3;23270:24;23288:5;23270:24;:::i;:::-;23261:33;;23316:66;23309:5;23306:77;23303:103;;23386:18;;:::i;:::-;23303:103;23433:1;23426:5;23422:13;23415:20;;23208:233;;;:::o;23447:182::-;23587:34;23583:1;23575:6;23571:14;23564:58;23447:182;:::o;23635:366::-;23777:3;23798:67;23862:2;23857:3;23798:67;:::i;:::-;23791:74;;23874:93;23963:3;23874:93;:::i;:::-;23992:2;23987:3;23983:12;23976:19;;23635:366;;;:::o;24007:419::-;24173:4;24211:2;24200:9;24196:18;24188:26;;24260:9;24254:4;24250:20;24246:1;24235:9;24231:17;24224:47;24288:131;24414:4;24288:131;:::i;:::-;24280:139;;24007:419;;;:::o;24432:167::-;24572:19;24568:1;24560:6;24556:14;24549:43;24432:167;:::o;24605:366::-;24747:3;24768:67;24832:2;24827:3;24768:67;:::i;:::-;24761:74;;24844:93;24933:3;24844:93;:::i;:::-;24962:2;24957:3;24953:12;24946:19;;24605:366;;;:::o;24977:419::-;25143:4;25181:2;25170:9;25166:18;25158:26;;25230:9;25224:4;25220:20;25216:1;25205:9;25201:17;25194:47;25258:131;25384:4;25258:131;:::i;:::-;25250:139;;24977:419;;;:::o;25402:157::-;25542:9;25538:1;25530:6;25526:14;25519:33;25402:157;:::o;25565:365::-;25707:3;25728:66;25792:1;25787:3;25728:66;:::i;:::-;25721:73;;25803:93;25892:3;25803:93;:::i;:::-;25921:2;25916:3;25912:12;25905:19;;25565:365;;;:::o;25936:419::-;26102:4;26140:2;26129:9;26125:18;26117:26;;26189:9;26183:4;26179:20;26175:1;26164:9;26160:17;26153:47;26217:131;26343:4;26217:131;:::i;:::-;26209:139;;25936:419;;;:::o;26361:220::-;26501:34;26497:1;26489:6;26485:14;26478:58;26570:3;26565:2;26557:6;26553:15;26546:28;26361:220;:::o;26587:366::-;26729:3;26750:67;26814:2;26809:3;26750:67;:::i;:::-;26743:74;;26826:93;26915:3;26826:93;:::i;:::-;26944:2;26939:3;26935:12;26928:19;;26587:366;;;:::o;26959:419::-;27125:4;27163:2;27152:9;27148:18;27140:26;;27212:9;27206:4;27202:20;27198:1;27187:9;27183:17;27176:47;27240:131;27366:4;27240:131;:::i;:::-;27232:139;;26959:419;;;:::o;27384:221::-;27524:34;27520:1;27512:6;27508:14;27501:58;27593:4;27588:2;27580:6;27576:15;27569:29;27384:221;:::o;27611:366::-;27753:3;27774:67;27838:2;27833:3;27774:67;:::i;:::-;27767:74;;27850:93;27939:3;27850:93;:::i;:::-;27968:2;27963:3;27959:12;27952:19;;27611:366;;;:::o;27983:419::-;28149:4;28187:2;28176:9;28172:18;28164:26;;28236:9;28230:4;28226:20;28222:1;28211:9;28207:17;28200:47;28264:131;28390:4;28264:131;:::i;:::-;28256:139;;27983:419;;;:::o

Swarm Source

ipfs://9c6fbdf7780dca82a2cafeb1d040e719795ef0e2f3debf4e01daca25b47457a3
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.