ETH Price: $3,251.80 (+3.51%)
Gas: 6 Gwei

Token

Save the Moon (MOON)
 

Overview

Max Total Supply

6,500,000,000,000 MOON

Holders

27

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
360,047,360,803.68701300956202216 MOON

Value
$0.00
0xeb1a44e9e2860fe257ac4cb7d64fd8adf788d9a4
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:
SaveTheMoon

Compiler Version
v0.8.15+commit.e14f2714

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-06-29
*/

pragma solidity ^0.8.0;

// SPDX-License-Identifier: Unlicensed
interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

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

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

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

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return
            functionCallWithValue(
                target,
                data,
                value,
                "Address: low-level call with value failed"
            );
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{value: weiValue}(
            data
        );
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

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

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _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 {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

interface IUniswapV2Router02 {
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function WETH() external pure returns (address);
}

contract SaveTheMoon is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

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

    mapping(address => bool) public _isExcludedFromFee;

    mapping(address => bool) public ammPairs;

    mapping(address => bool) private _isExcluded;
    address[] private _excluded;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 6500000000000 * 10**18;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    address public immutable WETH;
    uint256 private _tFeeTotal;

    string private _name = "Save the Moon";
    string private _symbol = "MOON";
    uint8 private _decimals = 18;

    uint256 public LunaOrBurn = 2;
    uint256 public previousLunaOrBurn = LunaOrBurn;

    uint256 public reflectionFee = 2;
    uint256 public previousReflectionFee = reflectionFee;

    bool public isTaxEnabled;

    uint256 public totalLunaConverted;

    address public bridgingAddress;
    IERC20 public constant LUNA = IERC20(0xd2877702675e6cEb975b4A1dFf9fb7BAF4C91ea9);

    IUniswapV2Router02 public immutable uniswapV2Router;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;

    uint256 public numTokensSellToBurnLuna = 500000 * 10**18;

    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(uint256 tokensSwapped, uint256 lunaReceived);

    modifier lockTheSwap() {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor(address _bridgingAddress) {
        _rOwned[_msgSender()] = _rTotal;
        bridgingAddress = _bridgingAddress;
        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(
            0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D
        );
        // set the rest of the contract variables
        uniswapV2Router = _uniswapV2Router;

        WETH = _uniswapV2Router.WETH();

        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;

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

    function flipTaxEnable() public onlyOwner {
        isTaxEnabled = !isTaxEnabled;
    }

    function setNumOfTokensToLuna(uint256 newLimit) public onlyOwner {
        numTokensSellToBurnLuna = newLimit;
    }

    function setBridgingAddres(address newAddress) public onlyOwner {
        bridgingAddress = newAddress;
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function totalSupply() public view override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function manageAmmPairs(address addr, bool isAdd) public onlyOwner {
        ammPairs[addr] = isAdd;
    }

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount, , , , , ) = _getValues(tAmount);
            return rAmount;
        } else {
            (, uint256 rTransferAmount, , , , ) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount)
        public
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function excludeFromReward(address account) public onlyOwner {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner {
        require(_isExcluded[account], "Account is already included");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _transferBothExcluded(
        address sender,
        address recipient,
        uint256 tAmount,
        bool isSell
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLunaOrBurn
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _reflectFee(rFee, tFee);
        if (isSell) {
            _takeBurnFee(tLunaOrBurn);
        } else {
            _takeLuna(tLunaOrBurn);
        }
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function enableOrDisableTax(bool isEnabled) external onlyOwner {
        if (isEnabled) {
            restoreAllFee();
        } else {
            removeAllFee();
        }
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    //to recieve ETH from uniswapV2Router when swaping
    receive() external payable {}

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLunaOrBurn
        ) = _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) = _getRValues(
            tAmount,
            tFee,
            tLunaOrBurn,
            _getRate()
        );
        return (
            rAmount,
            rTransferAmount,
            rFee,
            tTransferAmount,
            tFee,
            tLunaOrBurn
        );
    }

    function _getTValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tLunaOrBurn = calculateLunaOrBurn(tAmount);
        uint256 tFee = calculateReflectionFee(tAmount);

        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLunaOrBurn);
        return (tTransferAmount, tFee, tLunaOrBurn);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tLunaOrBurn,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLunaOrBurn = tLunaOrBurn.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLunaOrBurn);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _rOwned[_excluded[i]] > rSupply ||
                _tOwned[_excluded[i]] > tSupply
            ) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLuna(uint256 tLunaOrBurn) private {
        uint256 currentRate = _getRate();
        uint256 rLunaOrBurn = tLunaOrBurn.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLunaOrBurn);
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLunaOrBurn);
    }

    function _takeBurnFee(uint256 tBurn) private {
        uint256 currentRate = _getRate();
        uint256 rBurn = tBurn.mul(currentRate);
        _rOwned[0x000000000000000000000000000000000000dEaD] = _rOwned[
            0x000000000000000000000000000000000000dEaD
        ].add(rBurn);
        if (_isExcluded[0x000000000000000000000000000000000000dEaD])
            _tOwned[0x000000000000000000000000000000000000dEaD] = _tOwned[
                0x000000000000000000000000000000000000dEaD
            ].add(tBurn);
    }

    function calculateLunaOrBurn(uint256 _amount)
        private
        view
        returns (uint256)
    {
        return _amount.mul(LunaOrBurn).div(10**2);
    }

    function calculateReflectionFee(uint256 _amount)
        private
        view
        returns (uint256)
    {
        return _amount.mul(reflectionFee).div(10**2);
    }

    function removeAllFee() private {
        if (LunaOrBurn == 0 && reflectionFee == 0) return;

        previousLunaOrBurn = LunaOrBurn;
        previousReflectionFee = reflectionFee;
        LunaOrBurn = 0;
        reflectionFee = 0;
    }

    function restoreAllFee() private {
        LunaOrBurn = previousLunaOrBurn;
        reflectionFee = previousReflectionFee;
    }

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

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

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

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

        uint256 contractTokenBalance = balanceOf(address(this));

        bool overMinTokenBalance = contractTokenBalance >=
            numTokensSellToBurnLuna;
        if (overMinTokenBalance && !inSwapAndLiquify && swapAndLiquifyEnabled) {
            contractTokenBalance = numTokensSellToBurnLuna;
            swapAndLiquify(contractTokenBalance);
        }
        //indicates if fee should be deducted from transfer
        bool takeFee = (ammPairs[from] || ammPairs[to]) && isTaxEnabled;

        if (_isExcludedFromFee[from] || _isExcludedFromFee[to]) {
            takeFee = false;
        }

        _tokenTransfer(from, to, amount, takeFee, ammPairs[to]);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 initialBalance = LUNA.balanceOf(address(this));
        swapTokensForLuna(contractTokenBalance);
        uint256 newBalance = LUNA.balanceOf(address(this)).sub(initialBalance);
        LUNA.transfer(bridgingAddress, newBalance);
        totalLunaConverted += newBalance;
        emit SwapAndLiquify(contractTokenBalance, newBalance);
    }

    function swapTokensForLuna(uint256 tokenAmount) private {
        address[] memory path = new address[](3);
        path[0] = address(this);
        path[1] = WETH;
        path[2] = address(LUNA);

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

        // make the swap
        uniswapV2Router.swapExactTokensForTokensSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee,
        bool isSell
    ) private {
        if (!takeFee) removeAllFee();

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount, isSell);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount, isSell);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount, isSell);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount, isSell);
        } else {
            _transferStandard(sender, recipient, amount, isSell);
        }

        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount,
        bool isSell
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLunaOrBurn
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);

        if (isSell) {
            _takeBurnFee(tLunaOrBurn);
        } else {
            _takeLuna(tLunaOrBurn);
        }

        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(
        address sender,
        address recipient,
        uint256 tAmount,
        bool isSell
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLunaOrBurn
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);

        if (isSell) {
            _takeBurnFee(tLunaOrBurn);
        } else {
            _takeLuna(tLunaOrBurn);
        }
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(
        address sender,
        address recipient,
        uint256 tAmount,
        bool isSell
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLunaOrBurn
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);

        if (isSell) {
            _takeBurnFee(tLunaOrBurn);
        } else {
            _takeLuna(tLunaOrBurn);
        }
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_bridgingAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"lunaReceived","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","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":"LUNA","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LunaOrBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ammPairs","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bridgingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"bool","name":"isEnabled","type":"bool"}],"name":"enableOrDisableTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"flipTaxEnable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isTaxEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"isAdd","type":"bool"}],"name":"manageAmmPairs","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"numTokensSellToBurnLuna","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousLunaOrBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"previousReflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setBridgingAddres","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newLimit","type":"uint256"}],"name":"setNumOfTokensToLuna","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalLunaConverted","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":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

60c06040526c520aa1fb49c9f80a72a0000000600a8190556200002590600019620002bc565b6200003390600019620002df565b600b5560408051808201909152600d8082526c29b0bb32903a34329026b7b7b760991b602083015290620000689082620003aa565b5060408051808201909152600481526326a7a7a760e11b6020820152600e90620000939082620003aa565b50600f805460ff19166012908117909155600260108190556011819055908190556013556016805460ff60a81b1916600160a81b1790556969e10de76676d0800000601755348015620000e557600080fd5b5060405162002de038038062002de0833981016040819052620001089162000476565b600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600b543360009081526003602090815260409182902092909255601680546001600160a01b0319166001600160a01b038516179055737a250d5630b4cf539739df2c5dacb4c659f2488d60a081905281516315ab88c960e31b815291519092839263ad5c464892600480830193928290030181865afa158015620001d1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001f7919062000476565b6001600160a01b03166080526001600660006200021c6000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526006909252902080549091166001179055620002643390565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a54604051620002ac91815260200190565b60405180910390a35050620004a8565b600082620002da57634e487b7160e01b600052601260045260246000fd5b500690565b6000828210156200030057634e487b7160e01b600052601160045260246000fd5b500390565b634e487b7160e01b600052604160045260246000fd5b600181811c908216806200033057607f821691505b6020821081036200035157634e487b7160e01b600052602260045260246000fd5b50919050565b601f821115620003a557600081815260208120601f850160051c81016020861015620003805750805b601f850160051c820191505b81811015620003a1578281556001016200038c565b5050505b505050565b81516001600160401b03811115620003c657620003c662000305565b620003de81620003d784546200031b565b8462000357565b602080601f831160018114620004165760008415620003fd5750858301515b600019600386901b1c1916600185901b178555620003a1565b600085815260208120601f198616915b82811015620004475788860151825594840194600190910190840162000426565b5085821015620004665787850151600019600388901b60f8161c191681555b5050505050600190811b01905550565b6000602082840312156200048957600080fd5b81516001600160a01b0381168114620004a157600080fd5b9392505050565b60805160a0516128fd620004e3600039600081816102f801528181611de30152611e1f0152600081816106990152611d4301526128fd6000f3fe6080604052600436106102605760003560e01c80637ec0676811610144578063c49b9a80116100b6578063dec4e1e91161007a578063dec4e1e91461078b578063e6c1909b146107ab578063ea0b0fa1146107c5578063ea2f0b37146107e5578063f0f292e614610805578063f2fde38b1461081b57600080fd5b8063c49b9a80146106e3578063cf92181314610703578063d0411f2314610719578063d31b06a21461072f578063dd62ed3e1461074557600080fd5b806395d89b411161010857806395d89b4114610602578063a457c2d714610617578063a72905a214610637578063a9059cbb14610667578063ad5c464814610687578063aed2cd61146106bb57600080fd5b80637ec067681461055f57806383ad79941461057f57806388f82020146105955780638b77a6be146105ce5780638da5cb5b146105e457600080fd5b806339509351116101dd5780635342acb4116101a15780635342acb41461048c57806370a08231146104c5578063715018a6146104e5578063768dc710146104fa5780637aae744c1461052a5780637bafac3a1461054a57600080fd5b806339509351146103eb578063437823ec1461040b5780634549b0391461042b5780634a74bb021461044b57806352390c021461046c57600080fd5b806318e61cd71161022457806318e61cd71461034757806323b872dd146103675780632d83811914610387578063313ce567146103a75780633685d419146103c957600080fd5b806306fdde031461026c578063095ea7b31461029757806313114a9d146102c75780631694505e146102e657806318160ddd1461033257600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5061028161083b565b60405161028e91906124d4565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004612545565b6108cd565b604051901515815260200161028e565b3480156102d357600080fd5b50600c545b60405190815260200161028e565b3480156102f257600080fd5b5061031a7f000000000000000000000000000000000000000000000000000000000000000081565b6040516001600160a01b03909116815260200161028e565b34801561033e57600080fd5b50600a546102d8565b34801561035357600080fd5b5060165461031a906001600160a01b031681565b34801561037357600080fd5b506102b761038236600461256f565b6108e4565b34801561039357600080fd5b506102d86103a23660046125ab565b61094d565b3480156103b357600080fd5b50600f5460405160ff909116815260200161028e565b3480156103d557600080fd5b506103e96103e43660046125c4565b6109d6565b005b3480156103f757600080fd5b506102b7610406366004612545565b610b8c565b34801561041757600080fd5b506103e96104263660046125c4565b610bc2565b34801561043757600080fd5b506102d86104463660046125ed565b610c10565b34801561045757600080fd5b506016546102b790600160a81b900460ff1681565b34801561047857600080fd5b506103e96104873660046125c4565b610c9d565b34801561049857600080fd5b506102b76104a73660046125c4565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156104d157600080fd5b506102d86104e03660046125c4565b610df0565b3480156104f157600080fd5b506103e9610e4f565b34801561050657600080fd5b506102b76105153660046125c4565b60066020526000908152604090205460ff1681565b34801561053657600080fd5b506103e961054536600461261d565b610ec3565b34801561055657600080fd5b506103e9610f0f565b34801561056b57600080fd5b506103e961057a3660046125ab565b610f4d565b34801561058b57600080fd5b506102d860125481565b3480156105a157600080fd5b506102b76105b03660046125c4565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156105da57600080fd5b506102d860155481565b3480156105f057600080fd5b506000546001600160a01b031661031a565b34801561060e57600080fd5b50610281610f7c565b34801561062357600080fd5b506102b7610632366004612545565b610f8b565b34801561064357600080fd5b506102b76106523660046125c4565b60076020526000908152604090205460ff1681565b34801561067357600080fd5b506102b7610682366004612545565b610fda565b34801561069357600080fd5b5061031a7f000000000000000000000000000000000000000000000000000000000000000081565b3480156106c757600080fd5b5061031a73d2877702675e6ceb975b4a1dff9fb7baf4c91ea981565b3480156106ef57600080fd5b506103e96106fe36600461261d565b610fe7565b34801561070f57600080fd5b506102d860175481565b34801561072557600080fd5b506102d860105481565b34801561073b57600080fd5b506102d860135481565b34801561075157600080fd5b506102d861076036600461263a565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561079757600080fd5b506103e96107a63660046125c4565b611069565b3480156107b757600080fd5b506014546102b79060ff1681565b3480156107d157600080fd5b506103e96107e036600461266d565b6110b5565b3480156107f157600080fd5b506103e96108003660046125c4565b61110a565b34801561081157600080fd5b506102d860115481565b34801561082757600080fd5b506103e96108363660046125c4565b611155565b6060600d805461084a90612699565b80601f016020809104026020016040519081016040528092919081815260200182805461087690612699565b80156108c35780601f10610898576101008083540402835291602001916108c3565b820191906000526020600020905b8154815290600101906020018083116108a657829003601f168201915b5050505050905090565b60006108da33848461123f565b5060015b92915050565b60006108f1848484611363565b610943843361093e8560405180606001604052806028815260200161287b602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906115ac565b61123f565b5060019392505050565b6000600b548211156109b95760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084015b60405180910390fd5b60006109c36115e6565b90506109cf8382611609565b9392505050565b6000546001600160a01b03163314610a005760405162461bcd60e51b81526004016109b0906126d3565b6001600160a01b03811660009081526008602052604090205460ff16610a685760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016109b0565b60005b600954811015610b8857816001600160a01b031660098281548110610a9257610a92612708565b6000918252602090912001546001600160a01b031603610b765760098054610abc90600190612734565b81548110610acc57610acc612708565b600091825260209091200154600980546001600160a01b039092169183908110610af857610af8612708565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600890925220805460ff191690556009805480610b5057610b5061274b565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610b8081612761565b915050610a6b565b5050565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916108da91859061093e908661164b565b6000546001600160a01b03163314610bec5760405162461bcd60e51b81526004016109b0906126d3565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000600a54831115610c645760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109b0565b81610c83576000610c74846116aa565b509395506108de945050505050565b6000610c8e846116aa565b509295506108de945050505050565b6000546001600160a01b03163314610cc75760405162461bcd60e51b81526004016109b0906126d3565b6001600160a01b03811660009081526008602052604090205460ff1615610d305760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109b0565b6001600160a01b03811660009081526003602052604090205415610d8a576001600160a01b038116600090815260036020526040902054610d709061094d565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526008602052604081205460ff1615610e2d57506001600160a01b031660009081526004602052604090205490565b6001600160a01b0382166000908152600360205260409020546108de9061094d565b6000546001600160a01b03163314610e795760405162461bcd60e51b81526004016109b0906126d3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610eed5760405162461bcd60e51b81526004016109b0906126d3565b8015610f0757610f04601154601055601354601255565b50565b610f046116f9565b6000546001600160a01b03163314610f395760405162461bcd60e51b81526004016109b0906126d3565b6014805460ff19811660ff90911615179055565b6000546001600160a01b03163314610f775760405162461bcd60e51b81526004016109b0906126d3565b601755565b6060600e805461084a90612699565b60006108da338461093e856040518060600160405280602581526020016128a3602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906115ac565b60006108da338484611363565b6000546001600160a01b031633146110115760405162461bcd60e51b81526004016109b0906126d3565b60168054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061105e90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146110935760405162461bcd60e51b81526004016109b0906126d3565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110df5760405162461bcd60e51b81526004016109b0906126d3565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111345760405162461bcd60e51b81526004016109b0906126d3565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b0316331461117f5760405162461bcd60e51b81526004016109b0906126d3565b6001600160a01b0381166111e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b0565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166112a15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109b0565b6001600160a01b0382166113025760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109b0565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113c75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109b0565b6001600160a01b0382166114295760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109b0565b6000811161148b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109b0565b600061149630610df0565b601754909150811080159081906114b75750601654600160a01b900460ff16155b80156114cc5750601654600160a81b900460ff165b156114df5760175491506114df82611727565b6001600160a01b03851660009081526007602052604081205460ff168061151e57506001600160a01b03851660009081526007602052604090205460ff165b801561152c575060145460ff165b6001600160a01b03871660009081526006602052604090205490915060ff168061156e57506001600160a01b03851660009081526006602052604090205460ff165b15611577575060005b6001600160a01b0385166000908152600760205260409020546115a490879087908790859060ff1661192c565b505050505050565b600081848411156115d05760405162461bcd60e51b81526004016109b091906124d4565b5060006115dd8486612734565b95945050505050565b60008060006115f3611aaf565b90925090506116028282611609565b9250505090565b60006109cf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c31565b600080611658838561277a565b9050838110156109cf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109b0565b60008060008060008060008060006116c18a611c5f565b92509250925060008060006116df8d86866116da6115e6565b611c9a565b919f909e50909c50959a5093985091965092945050505050565b6010541580156117095750601254155b1561171057565b601080546011556012805460135560009182905555565b6016805460ff60a01b1916600160a01b1790556040516370a0823160e01b815230600482015260009073d2877702675e6ceb975b4a1dff9fb7baf4c91ea9906370a0823190602401602060405180830381865afa15801561178c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b09190612792565b90506117bb82611cea565b6040516370a0823160e01b815230600482015260009061183d90839073d2877702675e6ceb975b4a1dff9fb7baf4c91ea9906370a0823190602401602060405180830381865afa158015611813573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118379190612792565b90611e8b565b60165460405163a9059cbb60e01b81526001600160a01b0390911660048201526024810182905290915073d2877702675e6ceb975b4a1dff9fb7baf4c91ea99063a9059cbb906044016020604051808303816000875af11580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c991906127ab565b5080601560008282546118dc919061277a565b909155505060408051848152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a150506016805460ff60a01b1916905550565b81611939576119396116f9565b6001600160a01b03851660009081526008602052604090205460ff16801561197a57506001600160a01b03841660009081526008602052604090205460ff16155b156119905761198b85858584611ecd565b611a92565b6001600160a01b03851660009081526008602052604090205460ff161580156119d157506001600160a01b03841660009081526008602052604090205460ff165b156119e25761198b8585858461201a565b6001600160a01b03851660009081526008602052604090205460ff16158015611a2457506001600160a01b03841660009081526008602052604090205460ff16155b15611a355761198b858585846120d5565b6001600160a01b03851660009081526008602052604090205460ff168015611a7557506001600160a01b03841660009081526008602052604090205460ff165b15611a865761198b8585858461212b565b611a92858585846120d5565b81611aa857611aa8601154601055601354601255565b5050505050565b600b54600a546000918291825b600954811015611c0157826003600060098481548110611ade57611ade612708565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611b495750816004600060098481548110611b2257611b22612708565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611b5f57600b54600a54945094505050509091565b611ba56003600060098481548110611b7957611b79612708565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611e8b565b9250611bed6004600060098481548110611bc157611bc1612708565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611e8b565b915080611bf981612761565b915050611abc565b50600a54600b54611c1191611609565b821015611c2857600b54600a549350935050509091565b90939092509050565b60008183611c525760405162461bcd60e51b81526004016109b091906124d4565b5060006115dd84866127c8565b600080600080611c6e85612255565b90506000611c7b86612277565b90506000611c8d836118378985611e8b565b9791965091945092505050565b6000808080611ca98886612293565b90506000611cb78887612293565b90506000611cc58888612293565b90506000611cd7826118378686611e8b565b939b939a50919850919650505050505050565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110611d2157611d21612708565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000000000000000000000000000000000000000000081600181518110611d7557611d75612708565b60200260200101906001600160a01b031690816001600160a01b03168152505073d2877702675e6ceb975b4a1dff9fb7baf4c91ea981600281518110611dbd57611dbd612708565b60200260200101906001600160a01b031690816001600160a01b031681525050611e08307f00000000000000000000000000000000000000000000000000000000000000008461123f565b604051635c11d79560e01b81526001600160a01b037f00000000000000000000000000000000000000000000000000000000000000001690635c11d79590611e5d9085906000908690309042906004016127ea565b600060405180830381600087803b158015611e7757600080fd5b505af11580156115a4573d6000803e3d6000fd5b60006109cf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115ac565b600080600080600080611edf886116aa565b955095509550955095509550611f2388600460008d6001600160a01b03166001600160a01b0316815260200190815260200160002054611e8b90919063ffffffff16565b6001600160a01b038b16600090815260046020908152604080832093909355600390522054611f529087611e8b565b6001600160a01b03808c1660009081526003602052604080822093909355908b1681522054611f81908661164b565b6001600160a01b038a166000908152600360205260409020558615611fae57611fa981612315565b611fb7565b611fb781612428565b611fc184836124b0565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161200691815260200190565b60405180910390a350505050505050505050565b60008060008060008061202c886116aa565b95509550955095509550955061207086600360008d6001600160a01b03166001600160a01b0316815260200190815260200160002054611e8b90919063ffffffff16565b6001600160a01b03808c16600090815260036020908152604080832094909455918c168152600490915220546120a6908461164b565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054611f81908661164b565b6000806000806000806120e7886116aa565b955095509550955095509550611f5286600360008d6001600160a01b03166001600160a01b0316815260200190815260200160002054611e8b90919063ffffffff16565b60008060008060008061213d886116aa565b95509550955095509550955061218188600460008d6001600160a01b03166001600160a01b0316815260200190815260200160002054611e8b90919063ffffffff16565b6001600160a01b038b166000908152600460209081526040808320939093556003905220546121b09087611e8b565b6001600160a01b03808c16600090815260036020908152604080832094909455918c168152600490915220546121e6908461164b565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612215908661164b565b6001600160a01b038a1660009081526003602052604090205561223884836124b0565b861561224c5761224781612315565b611fc1565b611fc181612428565b60006108de60646122716010548561229390919063ffffffff16565b90611609565b60006108de60646122716012548561229390919063ffffffff16565b6000826000036122a5575060006108de565b60006122b1838561285b565b9050826122be85836127c8565b146109cf5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109b0565b600061231f6115e6565b9050600061232d8383612293565b61dead60005260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c54909150612367908261164b565b61dead6000527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c5560086020527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342995460ff16156124235761dead60005260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd546123f5908461164b565b61dead60005260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd555b505050565b60006124326115e6565b905060006124408383612293565b3060009081526003602052604090205490915061245d908261164b565b3060009081526003602090815260408083209390935560089052205460ff1615612423573060009081526004602052604090205461249b908461164b565b30600090815260046020526040902055505050565b600b546124bd9083611e8b565b600b55600c546124cd908261164b565b600c555050565b600060208083528351808285015260005b81811015612501578581018301518582016040015282016124e5565b81811115612513576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461254057600080fd5b919050565b6000806040838503121561255857600080fd5b61256183612529565b946020939093013593505050565b60008060006060848603121561258457600080fd5b61258d84612529565b925061259b60208501612529565b9150604084013590509250925092565b6000602082840312156125bd57600080fd5b5035919050565b6000602082840312156125d657600080fd5b6109cf82612529565b8015158114610f0457600080fd5b6000806040838503121561260057600080fd5b823591506020830135612612816125df565b809150509250929050565b60006020828403121561262f57600080fd5b81356109cf816125df565b6000806040838503121561264d57600080fd5b61265683612529565b915061266460208401612529565b90509250929050565b6000806040838503121561268057600080fd5b61268983612529565b91506020830135612612816125df565b600181811c908216806126ad57607f821691505b6020821081036126cd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156127465761274661271e565b500390565b634e487b7160e01b600052603160045260246000fd5b6000600182016127735761277361271e565b5060010190565b6000821982111561278d5761278d61271e565b500190565b6000602082840312156127a457600080fd5b5051919050565b6000602082840312156127bd57600080fd5b81516109cf816125df565b6000826127e557634e487b7160e01b600052601260045260246000fd5b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561283a5784516001600160a01b031683529383019391830191600101612815565b50506001600160a01b03969096166060850152505050608001529392505050565b60008160001904831182151516156128755761287561271e565b50029056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200690c7f257a7ad5644fdaee833a2df448e7faca7505c8bff481826e64146cdcb64736f6c634300080f0033000000000000000000000000719e4b50a08d653b2ad3244f4ba230b4f31de5dd

Deployed Bytecode

0x6080604052600436106102605760003560e01c80637ec0676811610144578063c49b9a80116100b6578063dec4e1e91161007a578063dec4e1e91461078b578063e6c1909b146107ab578063ea0b0fa1146107c5578063ea2f0b37146107e5578063f0f292e614610805578063f2fde38b1461081b57600080fd5b8063c49b9a80146106e3578063cf92181314610703578063d0411f2314610719578063d31b06a21461072f578063dd62ed3e1461074557600080fd5b806395d89b411161010857806395d89b4114610602578063a457c2d714610617578063a72905a214610637578063a9059cbb14610667578063ad5c464814610687578063aed2cd61146106bb57600080fd5b80637ec067681461055f57806383ad79941461057f57806388f82020146105955780638b77a6be146105ce5780638da5cb5b146105e457600080fd5b806339509351116101dd5780635342acb4116101a15780635342acb41461048c57806370a08231146104c5578063715018a6146104e5578063768dc710146104fa5780637aae744c1461052a5780637bafac3a1461054a57600080fd5b806339509351146103eb578063437823ec1461040b5780634549b0391461042b5780634a74bb021461044b57806352390c021461046c57600080fd5b806318e61cd71161022457806318e61cd71461034757806323b872dd146103675780632d83811914610387578063313ce567146103a75780633685d419146103c957600080fd5b806306fdde031461026c578063095ea7b31461029757806313114a9d146102c75780631694505e146102e657806318160ddd1461033257600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5061028161083b565b60405161028e91906124d4565b60405180910390f35b3480156102a357600080fd5b506102b76102b2366004612545565b6108cd565b604051901515815260200161028e565b3480156102d357600080fd5b50600c545b60405190815260200161028e565b3480156102f257600080fd5b5061031a7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6040516001600160a01b03909116815260200161028e565b34801561033e57600080fd5b50600a546102d8565b34801561035357600080fd5b5060165461031a906001600160a01b031681565b34801561037357600080fd5b506102b761038236600461256f565b6108e4565b34801561039357600080fd5b506102d86103a23660046125ab565b61094d565b3480156103b357600080fd5b50600f5460405160ff909116815260200161028e565b3480156103d557600080fd5b506103e96103e43660046125c4565b6109d6565b005b3480156103f757600080fd5b506102b7610406366004612545565b610b8c565b34801561041757600080fd5b506103e96104263660046125c4565b610bc2565b34801561043757600080fd5b506102d86104463660046125ed565b610c10565b34801561045757600080fd5b506016546102b790600160a81b900460ff1681565b34801561047857600080fd5b506103e96104873660046125c4565b610c9d565b34801561049857600080fd5b506102b76104a73660046125c4565b6001600160a01b031660009081526006602052604090205460ff1690565b3480156104d157600080fd5b506102d86104e03660046125c4565b610df0565b3480156104f157600080fd5b506103e9610e4f565b34801561050657600080fd5b506102b76105153660046125c4565b60066020526000908152604090205460ff1681565b34801561053657600080fd5b506103e961054536600461261d565b610ec3565b34801561055657600080fd5b506103e9610f0f565b34801561056b57600080fd5b506103e961057a3660046125ab565b610f4d565b34801561058b57600080fd5b506102d860125481565b3480156105a157600080fd5b506102b76105b03660046125c4565b6001600160a01b031660009081526008602052604090205460ff1690565b3480156105da57600080fd5b506102d860155481565b3480156105f057600080fd5b506000546001600160a01b031661031a565b34801561060e57600080fd5b50610281610f7c565b34801561062357600080fd5b506102b7610632366004612545565b610f8b565b34801561064357600080fd5b506102b76106523660046125c4565b60076020526000908152604090205460ff1681565b34801561067357600080fd5b506102b7610682366004612545565b610fda565b34801561069357600080fd5b5061031a7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b3480156106c757600080fd5b5061031a73d2877702675e6ceb975b4a1dff9fb7baf4c91ea981565b3480156106ef57600080fd5b506103e96106fe36600461261d565b610fe7565b34801561070f57600080fd5b506102d860175481565b34801561072557600080fd5b506102d860105481565b34801561073b57600080fd5b506102d860135481565b34801561075157600080fd5b506102d861076036600461263a565b6001600160a01b03918216600090815260056020908152604080832093909416825291909152205490565b34801561079757600080fd5b506103e96107a63660046125c4565b611069565b3480156107b757600080fd5b506014546102b79060ff1681565b3480156107d157600080fd5b506103e96107e036600461266d565b6110b5565b3480156107f157600080fd5b506103e96108003660046125c4565b61110a565b34801561081157600080fd5b506102d860115481565b34801561082757600080fd5b506103e96108363660046125c4565b611155565b6060600d805461084a90612699565b80601f016020809104026020016040519081016040528092919081815260200182805461087690612699565b80156108c35780601f10610898576101008083540402835291602001916108c3565b820191906000526020600020905b8154815290600101906020018083116108a657829003601f168201915b5050505050905090565b60006108da33848461123f565b5060015b92915050565b60006108f1848484611363565b610943843361093e8560405180606001604052806028815260200161287b602891396001600160a01b038a16600090815260056020908152604080832033845290915290205491906115ac565b61123f565b5060019392505050565b6000600b548211156109b95760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084015b60405180910390fd5b60006109c36115e6565b90506109cf8382611609565b9392505050565b6000546001600160a01b03163314610a005760405162461bcd60e51b81526004016109b0906126d3565b6001600160a01b03811660009081526008602052604090205460ff16610a685760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c75646564000000000060448201526064016109b0565b60005b600954811015610b8857816001600160a01b031660098281548110610a9257610a92612708565b6000918252602090912001546001600160a01b031603610b765760098054610abc90600190612734565b81548110610acc57610acc612708565b600091825260209091200154600980546001600160a01b039092169183908110610af857610af8612708565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600482526040808220829055600890925220805460ff191690556009805480610b5057610b5061274b565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610b8081612761565b915050610a6b565b5050565b3360008181526005602090815260408083206001600160a01b038716845290915281205490916108da91859061093e908661164b565b6000546001600160a01b03163314610bec5760405162461bcd60e51b81526004016109b0906126d3565b6001600160a01b03166000908152600660205260409020805460ff19166001179055565b6000600a54831115610c645760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c790060448201526064016109b0565b81610c83576000610c74846116aa565b509395506108de945050505050565b6000610c8e846116aa565b509295506108de945050505050565b6000546001600160a01b03163314610cc75760405162461bcd60e51b81526004016109b0906126d3565b6001600160a01b03811660009081526008602052604090205460ff1615610d305760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016109b0565b6001600160a01b03811660009081526003602052604090205415610d8a576001600160a01b038116600090815260036020526040902054610d709061094d565b6001600160a01b0382166000908152600460205260409020555b6001600160a01b03166000818152600860205260408120805460ff191660019081179091556009805491820181559091527f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af0180546001600160a01b0319169091179055565b6001600160a01b03811660009081526008602052604081205460ff1615610e2d57506001600160a01b031660009081526004602052604090205490565b6001600160a01b0382166000908152600360205260409020546108de9061094d565b6000546001600160a01b03163314610e795760405162461bcd60e51b81526004016109b0906126d3565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b6000546001600160a01b03163314610eed5760405162461bcd60e51b81526004016109b0906126d3565b8015610f0757610f04601154601055601354601255565b50565b610f046116f9565b6000546001600160a01b03163314610f395760405162461bcd60e51b81526004016109b0906126d3565b6014805460ff19811660ff90911615179055565b6000546001600160a01b03163314610f775760405162461bcd60e51b81526004016109b0906126d3565b601755565b6060600e805461084a90612699565b60006108da338461093e856040518060600160405280602581526020016128a3602591393360009081526005602090815260408083206001600160a01b038d16845290915290205491906115ac565b60006108da338484611363565b6000546001600160a01b031633146110115760405162461bcd60e51b81526004016109b0906126d3565b60168054821515600160a81b0260ff60a81b199091161790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599061105e90831515815260200190565b60405180910390a150565b6000546001600160a01b031633146110935760405162461bcd60e51b81526004016109b0906126d3565b601680546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146110df5760405162461bcd60e51b81526004016109b0906126d3565b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b6000546001600160a01b031633146111345760405162461bcd60e51b81526004016109b0906126d3565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6000546001600160a01b0316331461117f5760405162461bcd60e51b81526004016109b0906126d3565b6001600160a01b0381166111e45760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b60648201526084016109b0565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166112a15760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b60648201526084016109b0565b6001600160a01b0382166113025760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b60648201526084016109b0565b6001600160a01b0383811660008181526005602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166113c75760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b60648201526084016109b0565b6001600160a01b0382166114295760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b60648201526084016109b0565b6000811161148b5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b60648201526084016109b0565b600061149630610df0565b601754909150811080159081906114b75750601654600160a01b900460ff16155b80156114cc5750601654600160a81b900460ff165b156114df5760175491506114df82611727565b6001600160a01b03851660009081526007602052604081205460ff168061151e57506001600160a01b03851660009081526007602052604090205460ff165b801561152c575060145460ff165b6001600160a01b03871660009081526006602052604090205490915060ff168061156e57506001600160a01b03851660009081526006602052604090205460ff165b15611577575060005b6001600160a01b0385166000908152600760205260409020546115a490879087908790859060ff1661192c565b505050505050565b600081848411156115d05760405162461bcd60e51b81526004016109b091906124d4565b5060006115dd8486612734565b95945050505050565b60008060006115f3611aaf565b90925090506116028282611609565b9250505090565b60006109cf83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611c31565b600080611658838561277a565b9050838110156109cf5760405162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f77000000000060448201526064016109b0565b60008060008060008060008060006116c18a611c5f565b92509250925060008060006116df8d86866116da6115e6565b611c9a565b919f909e50909c50959a5093985091965092945050505050565b6010541580156117095750601254155b1561171057565b601080546011556012805460135560009182905555565b6016805460ff60a01b1916600160a01b1790556040516370a0823160e01b815230600482015260009073d2877702675e6ceb975b4a1dff9fb7baf4c91ea9906370a0823190602401602060405180830381865afa15801561178c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117b09190612792565b90506117bb82611cea565b6040516370a0823160e01b815230600482015260009061183d90839073d2877702675e6ceb975b4a1dff9fb7baf4c91ea9906370a0823190602401602060405180830381865afa158015611813573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118379190612792565b90611e8b565b60165460405163a9059cbb60e01b81526001600160a01b0390911660048201526024810182905290915073d2877702675e6ceb975b4a1dff9fb7baf4c91ea99063a9059cbb906044016020604051808303816000875af11580156118a5573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c991906127ab565b5080601560008282546118dc919061277a565b909155505060408051848152602081018390527f28fc98272ce761178794ad6768050fea1648e07f1e2ffe15afd3a290f8381486910160405180910390a150506016805460ff60a01b1916905550565b81611939576119396116f9565b6001600160a01b03851660009081526008602052604090205460ff16801561197a57506001600160a01b03841660009081526008602052604090205460ff16155b156119905761198b85858584611ecd565b611a92565b6001600160a01b03851660009081526008602052604090205460ff161580156119d157506001600160a01b03841660009081526008602052604090205460ff165b156119e25761198b8585858461201a565b6001600160a01b03851660009081526008602052604090205460ff16158015611a2457506001600160a01b03841660009081526008602052604090205460ff16155b15611a355761198b858585846120d5565b6001600160a01b03851660009081526008602052604090205460ff168015611a7557506001600160a01b03841660009081526008602052604090205460ff165b15611a865761198b8585858461212b565b611a92858585846120d5565b81611aa857611aa8601154601055601354601255565b5050505050565b600b54600a546000918291825b600954811015611c0157826003600060098481548110611ade57611ade612708565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180611b495750816004600060098481548110611b2257611b22612708565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15611b5f57600b54600a54945094505050509091565b611ba56003600060098481548110611b7957611b79612708565b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611e8b565b9250611bed6004600060098481548110611bc157611bc1612708565b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611e8b565b915080611bf981612761565b915050611abc565b50600a54600b54611c1191611609565b821015611c2857600b54600a549350935050509091565b90939092509050565b60008183611c525760405162461bcd60e51b81526004016109b091906124d4565b5060006115dd84866127c8565b600080600080611c6e85612255565b90506000611c7b86612277565b90506000611c8d836118378985611e8b565b9791965091945092505050565b6000808080611ca98886612293565b90506000611cb78887612293565b90506000611cc58888612293565b90506000611cd7826118378686611e8b565b939b939a50919850919650505050505050565b60408051600380825260808201909252600091602082016060803683370190505090503081600081518110611d2157611d21612708565b60200260200101906001600160a01b031690816001600160a01b0316815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281600181518110611d7557611d75612708565b60200260200101906001600160a01b031690816001600160a01b03168152505073d2877702675e6ceb975b4a1dff9fb7baf4c91ea981600281518110611dbd57611dbd612708565b60200260200101906001600160a01b031690816001600160a01b031681525050611e08307f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d8461123f565b604051635c11d79560e01b81526001600160a01b037f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d1690635c11d79590611e5d9085906000908690309042906004016127ea565b600060405180830381600087803b158015611e7757600080fd5b505af11580156115a4573d6000803e3d6000fd5b60006109cf83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506115ac565b600080600080600080611edf886116aa565b955095509550955095509550611f2388600460008d6001600160a01b03166001600160a01b0316815260200190815260200160002054611e8b90919063ffffffff16565b6001600160a01b038b16600090815260046020908152604080832093909355600390522054611f529087611e8b565b6001600160a01b03808c1660009081526003602052604080822093909355908b1681522054611f81908661164b565b6001600160a01b038a166000908152600360205260409020558615611fae57611fa981612315565b611fb7565b611fb781612428565b611fc184836124b0565b886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161200691815260200190565b60405180910390a350505050505050505050565b60008060008060008061202c886116aa565b95509550955095509550955061207086600360008d6001600160a01b03166001600160a01b0316815260200190815260200160002054611e8b90919063ffffffff16565b6001600160a01b03808c16600090815260036020908152604080832094909455918c168152600490915220546120a6908461164b565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054611f81908661164b565b6000806000806000806120e7886116aa565b955095509550955095509550611f5286600360008d6001600160a01b03166001600160a01b0316815260200190815260200160002054611e8b90919063ffffffff16565b60008060008060008061213d886116aa565b95509550955095509550955061218188600460008d6001600160a01b03166001600160a01b0316815260200190815260200160002054611e8b90919063ffffffff16565b6001600160a01b038b166000908152600460209081526040808320939093556003905220546121b09087611e8b565b6001600160a01b03808c16600090815260036020908152604080832094909455918c168152600490915220546121e6908461164b565b6001600160a01b038a16600090815260046020908152604080832093909355600390522054612215908661164b565b6001600160a01b038a1660009081526003602052604090205561223884836124b0565b861561224c5761224781612315565b611fc1565b611fc181612428565b60006108de60646122716010548561229390919063ffffffff16565b90611609565b60006108de60646122716012548561229390919063ffffffff16565b6000826000036122a5575060006108de565b60006122b1838561285b565b9050826122be85836127c8565b146109cf5760405162461bcd60e51b815260206004820152602160248201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6044820152607760f81b60648201526084016109b0565b600061231f6115e6565b9050600061232d8383612293565b61dead60005260036020527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c54909150612367908261164b565b61dead6000527f262bb27bbdd95c1cdc8e16957e36e38579ea44f7f6413dd7a9c75939def06b2c5560086020527f046fee3d77c34a6c5e10c3be6dc4b132c30449dbf4f0bc07684896dd093342995460ff16156124235761dead60005260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd546123f5908461164b565b61dead60005260046020527f42c63635470f1fb1d6d4b6441c413cb435b1ebb6fedd1896dd5e25d1399147dd555b505050565b60006124326115e6565b905060006124408383612293565b3060009081526003602052604090205490915061245d908261164b565b3060009081526003602090815260408083209390935560089052205460ff1615612423573060009081526004602052604090205461249b908461164b565b30600090815260046020526040902055505050565b600b546124bd9083611e8b565b600b55600c546124cd908261164b565b600c555050565b600060208083528351808285015260005b81811015612501578581018301518582016040015282016124e5565b81811115612513576000604083870101525b50601f01601f1916929092016040019392505050565b80356001600160a01b038116811461254057600080fd5b919050565b6000806040838503121561255857600080fd5b61256183612529565b946020939093013593505050565b60008060006060848603121561258457600080fd5b61258d84612529565b925061259b60208501612529565b9150604084013590509250925092565b6000602082840312156125bd57600080fd5b5035919050565b6000602082840312156125d657600080fd5b6109cf82612529565b8015158114610f0457600080fd5b6000806040838503121561260057600080fd5b823591506020830135612612816125df565b809150509250929050565b60006020828403121561262f57600080fd5b81356109cf816125df565b6000806040838503121561264d57600080fd5b61265683612529565b915061266460208401612529565b90509250929050565b6000806040838503121561268057600080fd5b61268983612529565b91506020830135612612816125df565b600181811c908216806126ad57607f821691505b6020821081036126cd57634e487b7160e01b600052602260045260246000fd5b50919050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000828210156127465761274661271e565b500390565b634e487b7160e01b600052603160045260246000fd5b6000600182016127735761277361271e565b5060010190565b6000821982111561278d5761278d61271e565b500190565b6000602082840312156127a457600080fd5b5051919050565b6000602082840312156127bd57600080fd5b81516109cf816125df565b6000826127e557634e487b7160e01b600052601260045260246000fd5b500490565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561283a5784516001600160a01b031683529383019391830191600101612815565b50506001600160a01b03969096166060850152505050608001529392505050565b60008160001904831182151516156128755761287561271e565b50029056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212200690c7f257a7ad5644fdaee833a2df448e7faca7505c8bff481826e64146cdcb64736f6c634300080f0033

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

000000000000000000000000719e4b50a08d653b2ad3244f4ba230b4f31de5dd

-----Decoded View---------------
Arg [0] : _bridgingAddress (address): 0x719e4B50a08d653B2AD3244f4ba230b4f31De5Dd

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000719e4b50a08d653b2ad3244f4ba230b4f31de5dd


Deployed Bytecode Sourcemap

17775:18896:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20501:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;21602:193;;;;;;;;;;-1:-1:-1;21602:193:0;;;;;:::i;:::-;;:::i;:::-;;;1218:14:1;;1211:22;1193:41;;1181:2;1166:18;21602:193:0;1053:187:1;23101:87:0;;;;;;;;;;-1:-1:-1;23170:10:0;;23101:87;;;1391:25:1;;;1379:2;1364:18;23101:87:0;1245:177:1;19014:51:0;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;1617:32:1;;;1599:51;;1587:2;1572:18;19014:51:0;1427:229:1;20778:95:0;;;;;;;;;;-1:-1:-1;20858:7:0;;20778:95;;18888:30;;;;;;;;;;-1:-1:-1;18888:30:0;;;;-1:-1:-1;;;;;18888:30:0;;;21803:446;;;;;;;;;;-1:-1:-1;21803:446:0;;;;;:::i;:::-;;:::i;23683:322::-;;;;;;;;;;-1:-1:-1;23683:322:0;;;;;:::i;:::-;;:::i;20687:83::-;;;;;;;;;;-1:-1:-1;20753:9:0;;20687:83;;20753:9;;;;2529:36:1;;2517:2;2502:18;20687:83:0;2387:184:1;24353:477:0;;;;;;;;;;-1:-1:-1;24353:477:0;;;;;:::i;:::-;;:::i;:::-;;22257:300;;;;;;;;;;-1:-1:-1;22257:300:0;;;;;:::i;:::-;;:::i;25718:111::-;;;;;;;;;;-1:-1:-1;25718:111:0;;;;;:::i;:::-;;:::i;23196:479::-;;;;;;;;;;-1:-1:-1;23196:479:0;;;;;:::i;:::-;;:::i;19102:40::-;;;;;;;;;;-1:-1:-1;19102:40:0;;;;-1:-1:-1;;;19102:40:0;;;;;;24013:332;;;;;;;;;;-1:-1:-1;24013:332:0;;;;;:::i;:::-;;:::i;30761:124::-;;;;;;;;;;-1:-1:-1;30761:124:0;;;;;:::i;:::-;-1:-1:-1;;;;;30850:27:0;30826:4;30850:27;;;:18;:27;;;;;;;;;30761:124;20881:198;;;;;;;;;;-1:-1:-1;20881:198:0;;;;;:::i;:::-;;:::i;16866:148::-;;;;;;;;;;;;;:::i;18074:50::-;;;;;;;;;;-1:-1:-1;18074:50:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25955:185;;;;;;;;;;-1:-1:-1;25955:185:0;;;;;:::i;:::-;;:::i;20159:89::-;;;;;;;;;;;;;:::i;20256:118::-;;;;;;;;;;-1:-1:-1;20256:118:0;;;;;:::i;:::-;;:::i;18713:32::-;;;;;;;;;;;;;;;;22973:120;;;;;;;;;;-1:-1:-1;22973:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;23065:20:0;23041:4;23065:20;;;:11;:20;;;;;;;;;22973:120;18846:33;;;;;;;;;;;;;;;;16224:79;;;;;;;;;;-1:-1:-1;16262:7:0;16289:6;-1:-1:-1;;;;;16289:6:0;16224:79;;20592:87;;;;;;;;;;;;;:::i;22565:400::-;;;;;;;;;;-1:-1:-1;22565:400:0;;;;;:::i;:::-;;:::i;18133:40::-;;;;;;;;;;-1:-1:-1;18133:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;21203:199;;;;;;;;;;-1:-1:-1;21203:199:0;;;;;:::i;:::-;;:::i;18431:29::-;;;;;;;;;;;;;;;18925:80;;;;;;;;;;;;18962:42;18925:80;;26148:171;;;;;;;;;;-1:-1:-1;26148:171:0;;;;;:::i;:::-;;:::i;19151:56::-;;;;;;;;;;;;;;;;18622:29;;;;;;;;;;;;;;;;18752:52;;;;;;;;;;;;;;;;21410:184;;;;;;;;;;-1:-1:-1;21410:184:0;;;;;:::i;:::-;-1:-1:-1;;;;;21559:18:0;;;21527:7;21559:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;21410:184;20382:111;;;;;;;;;;-1:-1:-1;20382:111:0;;;;;:::i;:::-;;:::i;18813:24::-;;;;;;;;;;-1:-1:-1;18813:24:0;;;;;;;;21087:108;;;;;;;;;;-1:-1:-1;21087:108:0;;;;;:::i;:::-;;:::i;25837:110::-;;;;;;;;;;-1:-1:-1;25837:110:0;;;;;:::i;:::-;;:::i;18658:46::-;;;;;;;;;;;;;;;;17169:281;;;;;;;;;;-1:-1:-1;17169:281:0;;;;;:::i;:::-;;:::i;20501:83::-;20538:13;20571:5;20564:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20501:83;:::o;21602:193::-;21704:4;21726:39;8278:10;21749:7;21758:6;21726:8;:39::i;:::-;-1:-1:-1;21783:4:0;21602:193;;;;;:::o;21803:446::-;21935:4;21952:36;21962:6;21970:9;21981:6;21952:9;:36::i;:::-;21999:220;22022:6;8278:10;22070:138;22126:6;22070:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22070:19:0;;;;;;:11;:19;;;;;;;;8278:10;22070:33;;;;;;;;;;:37;:138::i;:::-;21999:8;:220::i;:::-;-1:-1:-1;22237:4:0;21803:446;;;;;:::o;23683:322::-;23777:7;23835;;23824;:18;;23802:110;;;;-1:-1:-1;;;23802:110:0;;4843:2:1;23802:110:0;;;4825:21:1;4882:2;4862:18;;;4855:30;4921:34;4901:18;;;4894:62;-1:-1:-1;;;4972:18:1;;;4965:40;5022:19;;23802:110:0;;;;;;;;;23923:19;23945:10;:8;:10::i;:::-;23923:32;-1:-1:-1;23973:24:0;:7;23923:32;23973:11;:24::i;:::-;23966:31;23683:322;-1:-1:-1;;;23683:322:0:o;24353:477::-;16436:6;;-1:-1:-1;;;;;16436:6:0;8278:10;16436:22;16428:67;;;;-1:-1:-1;;;16428:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24433:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;24425:60;;;::::0;-1:-1:-1;;;24425:60:0;;5615:2:1;24425:60:0::1;::::0;::::1;5597:21:1::0;5654:2;5634:18;;;5627:30;5693:29;5673:18;;;5666:57;5740:18;;24425:60:0::1;5413:351:1::0;24425:60:0::1;24501:9;24496:327;24520:9;:16:::0;24516:20;::::1;24496:327;;;24578:7;-1:-1:-1::0;;;;;24562:23:0::1;:9;24572:1;24562:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;24562:12:0::1;:23:::0;24558:254:::1;;24621:9;24631:16:::0;;:20:::1;::::0;24650:1:::1;::::0;24631:20:::1;:::i;:::-;24621:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;24606:9:::1;:12:::0;;-1:-1:-1;;;;;24621:31:0;;::::1;::::0;24616:1;;24606:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;24606:46:0::1;-1:-1:-1::0;;;;;24606:46:0;;::::1;;::::0;;24671:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;24710:11:::1;:20:::0;;;;:28;;-1:-1:-1;;24710:28:0::1;::::0;;24757:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;24757:15:0;;;;;-1:-1:-1;;;;;;24757:15:0::1;::::0;;;;;24496:327:::1;24353:477:::0;:::o;24558:254::-:1;24538:3:::0;::::1;::::0;::::1;:::i;:::-;;;;24496:327;;;;24353:477:::0;:::o;22257:300::-;8278:10;22372:4;22466:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;22466:34:0;;;;;;;;;;22372:4;;22394:133;;22444:7;;22466:50;;22505:10;22466:38;:50::i;25718:111::-;16436:6;;-1:-1:-1;;;;;16436:6:0;8278:10;16436:22;16428:67;;;;-1:-1:-1;;;16428:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25787:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;25787:34:0::1;25817:4;25787:34;::::0;;25718:111::o;23196:479::-;23314:7;23358;;23347;:18;;23339:62;;;;-1:-1:-1;;;23339:62:0;;6637:2:1;23339:62:0;;;6619:21:1;6676:2;6656:18;;;6649:30;6715:33;6695:18;;;6688:61;6766:18;;23339:62:0;6435:355:1;23339:62:0;23417:17;23412:256;;23452:15;23481:19;23492:7;23481:10;:19::i;:::-;-1:-1:-1;23451:49:0;;-1:-1:-1;23515:14:0;;-1:-1:-1;;;;;23515:14:0;23412:256;23565:23;23600:19;23611:7;23600:10;:19::i;:::-;-1:-1:-1;23562:57:0;;-1:-1:-1;23634:22:0;;-1:-1:-1;;;;;23634:22:0;24013:332;16436:6;;-1:-1:-1;;;;;16436:6:0;8278:10;16436:22;16428:67;;;;-1:-1:-1;;;16428:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;24094:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;24093:21;24085:61;;;::::0;-1:-1:-1;;;24085:61:0;;6997:2:1;24085:61:0::1;::::0;::::1;6979:21:1::0;7036:2;7016:18;;;7009:30;7075:29;7055:18;;;7048:57;7122:18;;24085:61:0::1;6795:351:1::0;24085:61:0::1;-1:-1:-1::0;;;;;24161:16:0;::::1;24180:1;24161:16:::0;;;:7:::1;:16;::::0;;;;;:20;24157:109:::1;;-1:-1:-1::0;;;;;24237:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;24217:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;24198:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;24157:109:::1;-1:-1:-1::0;;;;;24276:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;24276:27:0::1;24299:4;24276:27:::0;;::::1;::::0;;;24314:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;24314:23:0::1;::::0;;::::1;::::0;;24013:332::o;20881:198::-;-1:-1:-1;;;;;20971:20:0;;20947:7;20971:20;;;:11;:20;;;;;;;;20967:49;;;-1:-1:-1;;;;;;21000:16:0;;;;;:7;:16;;;;;;;20881:198::o;20967:49::-;-1:-1:-1;;;;;21054:16:0;;;;;;:7;:16;;;;;;21034:37;;:19;:37::i;16866:148::-;16436:6;;-1:-1:-1;;;;;16436:6:0;8278:10;16436:22;16428:67;;;;-1:-1:-1;;;16428:67:0;;;;;;;:::i;:::-;16973:1:::1;16957:6:::0;;16936:40:::1;::::0;-1:-1:-1;;;;;16957:6:0;;::::1;::::0;16936:40:::1;::::0;16973:1;;16936:40:::1;17004:1;16987:19:::0;;-1:-1:-1;;;;;;16987:19:0::1;::::0;;16866:148::o;25955:185::-;16436:6;;-1:-1:-1;;;;;16436:6:0;8278:10;16436:22;16428:67;;;;-1:-1:-1;;;16428:67:0;;;;;;;:::i;:::-;26033:9:::1;26029:104;;;26059:15;30679:18:::0;;30666:10;:31;30724:21;;30708:13;:37;30622:131;26059:15:::1;25955:185:::0;:::o;26029:104::-:1;26107:14;:12;:14::i;20159:89::-:0;16436:6;;-1:-1:-1;;;;;16436:6:0;8278:10;16436:22;16428:67;;;;-1:-1:-1;;;16428:67:0;;;;;;;:::i;:::-;20228:12:::1;::::0;;-1:-1:-1;;20212:28:0;::::1;20228:12;::::0;;::::1;20227:13;20212:28;::::0;;20159:89::o;20256:118::-;16436:6;;-1:-1:-1;;;;;16436:6:0;8278:10;16436:22;16428:67;;;;-1:-1:-1;;;16428:67:0;;;;;;;:::i;:::-;20332:23:::1;:34:::0;20256:118::o;20592:87::-;20631:13;20664:7;20657:14;;;;;:::i;22565:400::-;22685:4;22707:228;8278:10;22757:7;22779:145;22836:15;22779:145;;;;;;;;;;;;;;;;;8278:10;22779:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;22779:34:0;;;;;;;;;;;;:38;:145::i;21203:199::-;21308:4;21330:42;8278:10;21354:9;21365:6;21330:9;:42::i;26148:171::-;16436:6;;-1:-1:-1;;;;;16436:6:0;8278:10;16436:22;16428:67;;;;-1:-1:-1;;;16428:67:0;;;;;;;:::i;:::-;26225:21:::1;:32:::0;;;::::1;;-1:-1:-1::0;;;26225:32:0::1;-1:-1:-1::0;;;;26225:32:0;;::::1;;::::0;;26273:38:::1;::::0;::::1;::::0;::::1;::::0;26249:8;1218:14:1;1211:22;1193:41;;1181:2;1166:18;;1053:187;26273:38:0::1;;;;;;;;26148:171:::0;:::o;20382:111::-;16436:6;;-1:-1:-1;;;;;16436:6:0;8278:10;16436:22;16428:67;;;;-1:-1:-1;;;16428:67:0;;;;;;;:::i;:::-;20457:15:::1;:28:::0;;-1:-1:-1;;;;;;20457:28:0::1;-1:-1:-1::0;;;;;20457:28:0;;;::::1;::::0;;;::::1;::::0;;20382:111::o;21087:108::-;16436:6;;-1:-1:-1;;;;;16436:6:0;8278:10;16436:22;16428:67;;;;-1:-1:-1;;;16428:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;21165:14:0;;;::::1;;::::0;;;:8:::1;:14;::::0;;;;:22;;-1:-1:-1;;21165:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;21087:108::o;25837:110::-;16436:6;;-1:-1:-1;;;;;16436:6:0;8278:10;16436:22;16428:67;;;;-1:-1:-1;;;16428:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;25904:27:0::1;25934:5;25904:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;25904:35:0::1;::::0;;25837:110::o;17169:281::-;16436:6;;-1:-1:-1;;;;;16436:6:0;8278:10;16436:22;16428:67;;;;-1:-1:-1;;;16428:67:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;17272:22:0;::::1;17250:110;;;::::0;-1:-1:-1;;;17250:110:0;;7353:2:1;17250:110:0::1;::::0;::::1;7335:21:1::0;7392:2;7372:18;;;7365:30;7431:34;7411:18;;;7404:62;-1:-1:-1;;;7482:18:1;;;7475:36;7528:19;;17250:110:0::1;7151:402:1::0;17250:110:0::1;17397:6;::::0;;17376:38:::1;::::0;-1:-1:-1;;;;;17376:38:0;;::::1;::::0;17397:6;::::1;::::0;17376:38:::1;::::0;::::1;17425:6;:17:::0;;-1:-1:-1;;;;;;17425:17:0::1;-1:-1:-1::0;;;;;17425:17:0;;;::::1;::::0;;;::::1;::::0;;17169:281::o;30893:371::-;-1:-1:-1;;;;;31020:19:0;;31012:68;;;;-1:-1:-1;;;31012:68:0;;7760:2:1;31012:68:0;;;7742:21:1;7799:2;7779:18;;;7772:30;7838:34;7818:18;;;7811:62;-1:-1:-1;;;7889:18:1;;;7882:34;7933:19;;31012:68:0;7558:400:1;31012:68:0;-1:-1:-1;;;;;31099:21:0;;31091:68;;;;-1:-1:-1;;;31091:68:0;;8165:2:1;31091:68:0;;;8147:21:1;8204:2;8184:18;;;8177:30;8243:34;8223:18;;;8216:62;-1:-1:-1;;;8294:18:1;;;8287:32;8336:19;;31091:68:0;7963:398:1;31091:68:0;-1:-1:-1;;;;;31172:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;31224:32;;1391:25:1;;;31224:32:0;;1364:18:1;31224:32:0;;;;;;;30893:371;;;:::o;31272:1026::-;-1:-1:-1;;;;;31394:18:0;;31386:68;;;;-1:-1:-1;;;31386:68:0;;8568:2:1;31386:68:0;;;8550:21:1;8607:2;8587:18;;;8580:30;8646:34;8626:18;;;8619:62;-1:-1:-1;;;8697:18:1;;;8690:35;8742:19;;31386:68:0;8366:401:1;31386:68:0;-1:-1:-1;;;;;31473:16:0;;31465:64;;;;-1:-1:-1;;;31465:64:0;;8974:2:1;31465:64:0;;;8956:21:1;9013:2;8993:18;;;8986:30;9052:34;9032:18;;;9025:62;-1:-1:-1;;;9103:18:1;;;9096:33;9146:19;;31465:64:0;8772:399:1;31465:64:0;31557:1;31548:6;:10;31540:64;;;;-1:-1:-1;;;31540:64:0;;9378:2:1;31540:64:0;;;9360:21:1;9417:2;9397:18;;;9390:30;9456:34;9436:18;;;9429:62;-1:-1:-1;;;9507:18:1;;;9500:39;9556:19;;31540:64:0;9176:405:1;31540:64:0;31617:28;31648:24;31666:4;31648:9;:24::i;:::-;31749:23;;31617:55;;-1:-1:-1;31712:60:0;;;;;;;31787:40;;-1:-1:-1;31811:16:0;;-1:-1:-1;;;31811:16:0;;;;31810:17;31787:40;:65;;;;-1:-1:-1;31831:21:0;;-1:-1:-1;;;31831:21:0;;;;31787:65;31783:195;;;31892:23;;31869:46;;31930:36;31945:20;31930:14;:36::i;:::-;-1:-1:-1;;;;;32065:14:0;;32049:12;32065:14;;;:8;:14;;;;;;;;;:30;;-1:-1:-1;;;;;;32083:12:0;;;;;;:8;:12;;;;;;;;32065:30;32064:48;;;;-1:-1:-1;32100:12:0;;;;32064:48;-1:-1:-1;;;;;32129:24:0;;;;;;:18;:24;;;;;;32049:63;;-1:-1:-1;32129:24:0;;;:50;;-1:-1:-1;;;;;;32157:22:0;;;;;;:18;:22;;;;;;;;32129:50;32125:98;;;-1:-1:-1;32206:5:0;32125:98;-1:-1:-1;;;;;32277:12:0;;;;;;:8;:12;;;;;;32235:55;;32250:4;;32256:2;;32260:6;;32268:7;;32277:12;;32235:14;:55::i;:::-;31375:923;;;31272:1026;;;:::o;4490:226::-;4610:7;4646:12;4638:6;;;;4630:29;;;;-1:-1:-1;;;4630:29:0;;;;;;;;:::i;:::-;-1:-1:-1;4670:9:0;4682:5;4686:1;4682;:5;:::i;:::-;4670:17;4490:226;-1:-1:-1;;;;;4490:226:0:o;28324:164::-;28366:7;28387:15;28404;28423:19;:17;:19::i;:::-;28386:56;;-1:-1:-1;28386:56:0;-1:-1:-1;28460:20:0;28386:56;;28460:11;:20::i;:::-;28453:27;;;;28324:164;:::o;5922:132::-;5980:7;6007:39;6011:1;6014;6007:39;;;;;;;;;;;;;;;;;:3;:39::i;3587:181::-;3645:7;;3677:5;3681:1;3677;:5;:::i;:::-;3665:17;;3706:1;3701;:6;;3693:46;;;;-1:-1:-1;;;3693:46:0;;9921:2:1;3693:46:0;;;9903:21:1;9960:2;9940:18;;;9933:30;9999:29;9979:18;;;9972:57;10046:18;;3693:46:0;9719:351:1;26575:745:0;26675:7;26697;26719;26741;26763;26785;26835:23;26873:12;26900:19;26933:20;26945:7;26933:11;:20::i;:::-;26820:133;;;;;;26965:15;26982:23;27007:12;27023:114;27049:7;27071:4;27090:11;27116:10;:8;:10::i;:::-;27023:11;:114::i;:::-;26964:173;;;;-1:-1:-1;26964:173:0;;-1:-1:-1;27241:15:0;;-1:-1:-1;27271:4:0;;-1:-1:-1;27290:11:0;;-1:-1:-1;26575:745:0;;-1:-1:-1;;;;;26575:745:0:o;30369:245::-;30416:10;;:15;:37;;;;-1:-1:-1;30435:13:0;;:18;30416:37;30412:50;;;30369:245::o;30412:50::-;30495:10;;;30474:18;:31;30540:13;;;30516:21;:37;-1:-1:-1;30564:14:0;;;;30589:17;30369:245::o;32306:438::-;19447:16;:23;;-1:-1:-1;;;;19447:23:0;-1:-1:-1;;;19447:23:0;;;32416:29:::1;::::0;-1:-1:-1;;;32416:29:0;;32439:4:::1;32416:29;::::0;::::1;1599:51:1::0;-1:-1:-1;;18962:42:0::1;::::0;32416:14:::1;::::0;1572:18:1;;32416:29:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;32391:54;;32456:39;32474:20;32456:17;:39::i;:::-;32527:29;::::0;-1:-1:-1;;;32527:29:0;;32550:4:::1;32527:29;::::0;::::1;1599:51:1::0;32506:18:0::1;::::0;32527:49:::1;::::0;32561:14;;18962:42:::1;::::0;32527:14:::1;::::0;1572:18:1;;32527:29:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;:33:::0;::::1;:49::i;:::-;32601:15;::::0;32587:42:::1;::::0;-1:-1:-1;;;32587:42:0;;-1:-1:-1;;;;;32601:15:0;;::::1;32587:42;::::0;::::1;10438:51:1::0;10505:18;;;10498:34;;;32506:70:0;;-1:-1:-1;18962:42:0::1;::::0;32587:13:::1;::::0;10411:18:1;;32587:42:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;32662:10;32640:18;;:32;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;32688:48:0::1;::::0;;10967:25:1;;;11023:2;11008:18;;11001:34;;;32688:48:0::1;::::0;10940:18:1;32688:48:0::1;;;;;;;-1:-1:-1::0;;19493:16:0;:24;;-1:-1:-1;;;;19493:24:0;;;-1:-1:-1;32306:438:0:o;33382:900::-;33560:7;33555:28;;33569:14;:12;:14::i;:::-;-1:-1:-1;;;;;33600:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;33624:22:0;;;;;;:11;:22;;;;;;;;33623:23;33600:46;33596:637;;;33663:56;33685:6;33693:9;33704:6;33712;33663:21;:56::i;:::-;33596:637;;;-1:-1:-1;;;;;33742:19:0;;;;;;:11;:19;;;;;;;;33741:20;:46;;;;-1:-1:-1;;;;;;33765:22:0;;;;;;:11;:22;;;;;;;;33741:46;33737:496;;;33804:54;33824:6;33832:9;33843:6;33851;33804:19;:54::i;33737:496::-;-1:-1:-1;;;;;33881:19:0;;;;;;:11;:19;;;;;;;;33880:20;:47;;;;-1:-1:-1;;;;;;33905:22:0;;;;;;:11;:22;;;;;;;;33904:23;33880:47;33876:357;;;33944:52;33962:6;33970:9;33981:6;33989;33944:17;:52::i;33876:357::-;-1:-1:-1;;;;;34018:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;34041:22:0;;;;;;:11;:22;;;;;;;;34018:45;34014:219;;;34080:56;34102:6;34110:9;34121:6;34129;34080:21;:56::i;34014:219::-;34169:52;34187:6;34195:9;34206:6;34214;34169:17;:52::i;:::-;34250:7;34245:29;;34259:15;30679:18;;30666:10;:31;30724:21;;30708:13;:37;30622:131;34259:15;33382:900;;;;;:::o;28496:605::-;28594:7;;28630;;28547;;;;;28648:338;28672:9;:16;28668:20;;28648:338;;;28756:7;28732;:21;28740:9;28750:1;28740:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28740:12:0;28732:21;;;;;;;;;;;;;:31;;:83;;;28808:7;28784;:21;28792:9;28802:1;28792:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28792:12:0;28784:21;;;;;;;;;;;;;:31;28732:83;28710:146;;;28839:7;;28848;;28831:25;;;;;;;28496:605;;:::o;28710:146::-;28881:34;28893:7;:21;28901:9;28911:1;28901:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28901:12:0;28893:21;;;;;;;;;;;;;28881:7;;:11;:34::i;:::-;28871:44;;28940:34;28952:7;:21;28960:9;28970:1;28960:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;28960:12:0;28952:21;;;;;;;;;;;;;28940:7;;:11;:34::i;:::-;28930:44;-1:-1:-1;28690:3:0;;;;:::i;:::-;;;;28648:338;;;-1:-1:-1;29022:7:0;;29010;;:20;;:11;:20::i;:::-;29000:7;:30;28996:61;;;29040:7;;29049;;29032:25;;;;;;28496:605;;:::o;28996:61::-;29076:7;;29085;;-1:-1:-1;28496:605:0;-1:-1:-1;28496:605:0:o;6550:312::-;6670:7;6705:12;6698:5;6690:28;;;;-1:-1:-1;;;6690:28:0;;;;;;;;:::i;:::-;-1:-1:-1;6729:9:0;6741:5;6745:1;6741;:5;:::i;27328:422::-;27429:7;27451;27473;27508:19;27530:28;27550:7;27530:19;:28::i;:::-;27508:50;;27569:12;27584:31;27607:7;27584:22;:31::i;:::-;27569:46;-1:-1:-1;27628:23:0;27654:34;27676:11;27654:17;:7;27569:46;27654:11;:17::i;:34::-;27628:60;27724:4;;-1:-1:-1;27730:11:0;;-1:-1:-1;27328:422:0;-1:-1:-1;;;27328:422:0:o;27758:558::-;27958:7;;;;28055:24;:7;28067:11;28055;:24::i;:::-;28037:42;-1:-1:-1;28090:12:0;28105:21;:4;28114:11;28105:8;:21::i;:::-;28090:36;-1:-1:-1;28137:19:0;28159:28;:11;28175;28159:15;:28::i;:::-;28137:50;-1:-1:-1;28198:23:0;28224:34;28137:50;28224:17;:7;28236:4;28224:11;:17::i;:34::-;28277:7;;;;-1:-1:-1;28303:4:0;;-1:-1:-1;27758:558:0;;-1:-1:-1;;;;;;;27758:558:0:o;32752:549::-;32843:16;;;32857:1;32843:16;;;;;;;;;32819:21;;32843:16;;;;;;;;;;-1:-1:-1;32843:16:0;32819:40;;32888:4;32870;32875:1;32870:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;32870:23:0;;;-1:-1:-1;;;;;32870:23:0;;;;;32914:4;32904;32909:1;32904:7;;;;;;;;:::i;:::-;;;;;;:14;-1:-1:-1;;;;;32904:14:0;;;-1:-1:-1;;;;;32904:14:0;;;;;18962:42;32929:4;32934:1;32929:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;32929:23:0;;;-1:-1:-1;;;;;32929:23:0;;;;;32965:62;32982:4;32997:15;33015:11;32965:8;:62::i;:::-;33066:227;;-1:-1:-1;;;33066:227:0;;-1:-1:-1;;;;;33066:15:0;:69;;;;:227;;33150:11;;33176:1;;33220:4;;33247;;33267:15;;33066:227;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4051:136;4109:7;4136:43;4140:1;4143;4136:43;;;;;;;;;;;;;;;;;:3;:43::i;35865:803::-;36038:15;36068:23;36106:12;36133:23;36171:12;36198:19;36231;36242:7;36231:10;:19::i;:::-;36023:227;;;;;;;;;;;;36279:28;36299:7;36279;:15;36287:6;-1:-1:-1;;;;;36279:15:0;-1:-1:-1;;;;;36279:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;36261:15:0;;;;;;:7;:15;;;;;;;;:46;;;;36336:7;:15;;;;:28;;36356:7;36336:19;:28::i;:::-;-1:-1:-1;;;;;36318:15:0;;;;;;;:7;:15;;;;;;:46;;;;36396:18;;;;;;;:39;;36419:15;36396:22;:39::i;:::-;-1:-1:-1;;;;;36375:18:0;;;;;;:7;:18;;;;;:60;36448:119;;;;36475:25;36488:11;36475:12;:25::i;:::-;36448:119;;;36533:22;36543:11;36533:9;:22::i;:::-;36577:23;36589:4;36595;36577:11;:23::i;:::-;36633:9;-1:-1:-1;;;;;36616:44:0;36625:6;-1:-1:-1;;;;;36616:44:0;;36644:15;36616:44;;;;1391:25:1;;1379:2;1364:18;;1245:177;36616:44:0;;;;;;;;36012:656;;;;;;35865:803;;;;:::o;35042:815::-;35213:15;35243:23;35281:12;35308:23;35346:12;35373:19;35406;35417:7;35406:10;:19::i;:::-;35198:227;;;;;;;;;;;;35454:28;35474:7;35454;:15;35462:6;-1:-1:-1;;;;;35454:15:0;-1:-1:-1;;;;;35454:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;35436:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;35514:18;;;;;:7;:18;;;;;:39;;35537:15;35514:22;:39::i;:::-;-1:-1:-1;;;;;35493:18:0;;;;;;:7;:18;;;;;;;;:60;;;;35585:7;:18;;;;:39;;35608:15;35585:22;:39::i;34290:744::-;34459:15;34489:23;34527:12;34554:23;34592:12;34619:19;34652;34663:7;34652:10;:19::i;:::-;34444:227;;;;;;;;;;;;34700:28;34720:7;34700;:15;34708:6;-1:-1:-1;;;;;34700:15:0;-1:-1:-1;;;;;34700:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;24838:872::-;25011:15;25041:23;25079:12;25106:23;25144:12;25171:19;25204;25215:7;25204:10;:19::i;:::-;24996:227;;;;;;;;;;;;25252:28;25272:7;25252;:15;25260:6;-1:-1:-1;;;;;25252:15:0;-1:-1:-1;;;;;25252:15:0;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;-1:-1:-1;;;;;25234:15:0;;;;;;:7;:15;;;;;;;;:46;;;;25309:7;:15;;;;:28;;25329:7;25309:19;:28::i;:::-;-1:-1:-1;;;;;25291:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;25369:18;;;;;:7;:18;;;;;:39;;25392:15;25369:22;:39::i;:::-;-1:-1:-1;;;;;25348:18:0;;;;;;:7;:18;;;;;;;;:60;;;;25440:7;:18;;;;:39;;25463:15;25440:22;:39::i;:::-;-1:-1:-1;;;;;25419:18:0;;;;;;:7;:18;;;;;:60;25490:23;25502:4;25508;25490:11;:23::i;:::-;25528:6;25524:119;;;25551:25;25564:11;25551:12;:25::i;:::-;25524:119;;;25609:22;25619:11;25609:9;:22::i;30009:169::-;30104:7;30136:34;30164:5;30136:23;30148:10;;30136:7;:11;;:23;;;;:::i;:::-;:27;;:34::i;30186:175::-;30284:7;30316:37;30347:5;30316:26;30328:13;;30316:7;:11;;:26;;;;:::i;4975:471::-;5033:7;5278:1;5283;5278:6;5274:47;;-1:-1:-1;5308:1:0;5301:8;;5274:47;5333:9;5345:5;5349:1;5345;:5;:::i;:::-;5333:17;-1:-1:-1;5378:1:0;5369:5;5373:1;5333:17;5369:5;:::i;:::-;:10;5361:56;;;;-1:-1:-1;;;5361:56:0;;12760:2:1;5361:56:0;;;12742:21:1;12799:2;12779:18;;;12772:30;12838:34;12818:18;;;12811:62;-1:-1:-1;;;12889:18:1;;;12882:31;12930:19;;5361:56:0;12558:397:1;29472:529:0;29528:19;29550:10;:8;:10::i;:::-;29528:32;-1:-1:-1;29571:13:0;29587:22;:5;29528:32;29587:9;:22::i;:::-;29696:42;29674:75;;:7;:75;;;;29571:38;;-1:-1:-1;29674:86:0;;29571:38;29674:79;:86::i;:::-;29628:42;29620:51;;;:140;29775:11;29620:51;29775:55;;;;;29771:222;;;29925:42;29899:83;;:7;:83;;;;:94;;29987:5;29899:87;:94::i;:::-;29853:42;29845:51;;:7;:51;;;:148;29771:222;29517:484;;29472:529;:::o;29109:355::-;29168:19;29190:10;:8;:10::i;:::-;29168:32;-1:-1:-1;29211:19:0;29233:28;:11;29168:32;29233:15;:28::i;:::-;29313:4;29297:22;;;;:7;:22;;;;;;29211:50;;-1:-1:-1;29297:39:0;;29211:50;29297:26;:39::i;:::-;29288:4;29272:22;;;;:7;:22;;;;;;;;:64;;;;29351:11;:26;;;;;;29347:109;;;29433:4;29417:22;;;;:7;:22;;;;;;:39;;29444:11;29417:26;:39::i;:::-;29408:4;29392:22;;;;:7;:22;;;;;:64;29157:307;;29109:355;:::o;26420:147::-;26498:7;;:17;;26510:4;26498:11;:17::i;:::-;26488:7;:27;26539:10;;:20;;26554:4;26539:14;:20::i;:::-;26526:10;:33;-1:-1:-1;;26420:147:0:o;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:173::-;684:20;;-1:-1:-1;;;;;733:31:1;;723:42;;713:70;;779:1;776;769:12;713:70;616:173;;;:::o;794:254::-;862:6;870;923:2;911:9;902:7;898:23;894:32;891:52;;;939:1;936;929:12;891:52;962:29;981:9;962:29;:::i;:::-;952:39;1038:2;1023:18;;;;1010:32;;-1:-1:-1;;;794:254:1:o;1869:328::-;1946:6;1954;1962;2015:2;2003:9;1994:7;1990:23;1986:32;1983:52;;;2031:1;2028;2021:12;1983:52;2054:29;2073:9;2054:29;:::i;:::-;2044:39;;2102:38;2136:2;2125:9;2121:18;2102:38;:::i;:::-;2092:48;;2187:2;2176:9;2172:18;2159:32;2149:42;;1869:328;;;;;:::o;2202:180::-;2261:6;2314:2;2302:9;2293:7;2289:23;2285:32;2282:52;;;2330:1;2327;2320:12;2282:52;-1:-1:-1;2353:23:1;;2202:180;-1:-1:-1;2202:180:1:o;2576:186::-;2635:6;2688:2;2676:9;2667:7;2663:23;2659:32;2656:52;;;2704:1;2701;2694:12;2656:52;2727:29;2746:9;2727:29;:::i;2767:118::-;2853:5;2846:13;2839:21;2832:5;2829:32;2819:60;;2875:1;2872;2865:12;2890:309;2955:6;2963;3016:2;3004:9;2995:7;2991:23;2987:32;2984:52;;;3032:1;3029;3022:12;2984:52;3068:9;3055:23;3045:33;;3128:2;3117:9;3113:18;3100:32;3141:28;3163:5;3141:28;:::i;:::-;3188:5;3178:15;;;2890:309;;;;;:::o;3204:241::-;3260:6;3313:2;3301:9;3292:7;3288:23;3284:32;3281:52;;;3329:1;3326;3319:12;3281:52;3368:9;3355:23;3387:28;3409:5;3387:28;:::i;3671:260::-;3739:6;3747;3800:2;3788:9;3779:7;3775:23;3771:32;3768:52;;;3816:1;3813;3806:12;3768:52;3839:29;3858:9;3839:29;:::i;:::-;3829:39;;3887:38;3921:2;3910:9;3906:18;3887:38;:::i;:::-;3877:48;;3671:260;;;;;:::o;3936:315::-;4001:6;4009;4062:2;4050:9;4041:7;4037:23;4033:32;4030:52;;;4078:1;4075;4068:12;4030:52;4101:29;4120:9;4101:29;:::i;:::-;4091:39;;4180:2;4169:9;4165:18;4152:32;4193:28;4215:5;4193:28;:::i;4256:380::-;4335:1;4331:12;;;;4378;;;4399:61;;4453:4;4445:6;4441:17;4431:27;;4399:61;4506:2;4498:6;4495:14;4475:18;4472:38;4469:161;;4552:10;4547:3;4543:20;4540:1;4533:31;4587:4;4584:1;4577:15;4615:4;4612:1;4605:15;4469:161;;4256:380;;;:::o;5052:356::-;5254:2;5236:21;;;5273:18;;;5266:30;5332:34;5327:2;5312:18;;5305:62;5399:2;5384:18;;5052:356::o;5769:127::-;5830:10;5825:3;5821:20;5818:1;5811:31;5861:4;5858:1;5851:15;5885:4;5882:1;5875:15;5901:127;5962:10;5957:3;5953:20;5950:1;5943:31;5993:4;5990:1;5983:15;6017:4;6014:1;6007:15;6033:125;6073:4;6101:1;6098;6095:8;6092:34;;;6106:18;;:::i;:::-;-1:-1:-1;6143:9:1;;6033:125::o;6163:127::-;6224:10;6219:3;6215:20;6212:1;6205:31;6255:4;6252:1;6245:15;6279:4;6276:1;6269:15;6295:135;6334:3;6355:17;;;6352:43;;6375:18;;:::i;:::-;-1:-1:-1;6422:1:1;6411:13;;6295:135::o;9586:128::-;9626:3;9657:1;9653:6;9650:1;9647:13;9644:39;;;9663:18;;:::i;:::-;-1:-1:-1;9699:9:1;;9586:128::o;10075:184::-;10145:6;10198:2;10186:9;10177:7;10173:23;10169:32;10166:52;;;10214:1;10211;10204:12;10166:52;-1:-1:-1;10237:16:1;;10075:184;-1:-1:-1;10075:184:1:o;10543:245::-;10610:6;10663:2;10651:9;10642:7;10638:23;10634:32;10631:52;;;10679:1;10676;10669:12;10631:52;10711:9;10705:16;10730:28;10752:5;10730:28;:::i;11046:217::-;11086:1;11112;11102:132;;11156:10;11151:3;11147:20;11144:1;11137:31;11191:4;11188:1;11181:15;11219:4;11216:1;11209:15;11102:132;-1:-1:-1;11248:9:1;;11046:217::o;11400:980::-;11662:4;11710:3;11699:9;11695:19;11741:6;11730:9;11723:25;11767:2;11805:6;11800:2;11789:9;11785:18;11778:34;11848:3;11843:2;11832:9;11828:18;11821:31;11872:6;11907;11901:13;11938:6;11930;11923:22;11976:3;11965:9;11961:19;11954:26;;12015:2;12007:6;12003:15;11989:29;;12036:1;12046:195;12060:6;12057:1;12054:13;12046:195;;;12125:13;;-1:-1:-1;;;;;12121:39:1;12109:52;;12216:15;;;;12181:12;;;;12157:1;12075:9;12046:195;;;-1:-1:-1;;;;;;;12297:32:1;;;;12292:2;12277:18;;12270:60;-1:-1:-1;;;12361:3:1;12346:19;12339:35;12258:3;11400:980;-1:-1:-1;;;11400:980:1:o;12385:168::-;12425:7;12491:1;12487;12483:6;12479:14;12476:1;12473:21;12468:1;12461:9;12454:17;12450:45;12447:71;;;12498:18;;:::i;:::-;-1:-1:-1;12538:9:1;;12385:168::o

Swarm Source

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