Contract 0x95dd59343a893637be1c3228060ee6afbf6f0730 4

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x8d08fed31bbb2da80d5f5fffe4420b45c150a8ff7290fb442905152d6a994c57Approve387493502022-05-21 18:23:581 hr 6 mins ago0xa0697213d5d75d8d7f4d68be4c3957d075a1bf03 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.014075850274
0x4b303388b189d3d69fbb63a12caf39f0a5700bdaeed376ae81ef94d70740ee87Swapin387475012022-05-21 17:46:551 hr 43 mins ago0x2d7c36267eff3a89937fdbbf41c64d8c33bcd715 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.018945141598
0x8b5276107ff8b66a9f305368f6e6c7c4a280b2fef9ccb7361cddcae10194f5e6Approve387471572022-05-21 17:37:181 hr 52 mins ago0x3c44a6389605597a1eb346cc2184ab9b70d3d189 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.230730245323
0xee9c93e21316caba7a1f7a4f04b649b22ee57782f3f84b2f0677bc005db0d64fSwapin387470002022-05-21 17:32:511 hr 57 mins ago0x2d7c36267eff3a89937fdbbf41c64d8c33bcd715 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM1.849240458066
0xa5655e34c1eef85825c68d6daf4e14042fcf59aed2ece13a02b7e68419a1c57bApprove387459582022-05-21 17:03:222 hrs 26 mins ago0xbdaf89d8aede76a34051452390675333a3375a8c IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.394663243882
0x5e95b35b7bec9346b2bf1f84107a881d0b355bb08e83dff36a6599860abc1d45Approve387459572022-05-21 17:03:202 hrs 26 mins ago0xbdaf89d8aede76a34051452390675333a3375a8c IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.482583924638
0x9211976b3b60678c16f9c9955c3fae3195da01fb8750c2e5dbcd3893183fee74Swapout387392922022-05-21 14:30:134 hrs 59 mins ago0x8963d48c422e24da5c8fc6af7dfd6f6e2289307c IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.002325624609
0x5ed570472a595bb5a98e8de77470a187de5accb4338e79ebf65a7f47a0f86a7bSwapout387314062022-05-21 11:50:447 hrs 39 mins ago0xede374f9b0330e5fb4fefbf5cda874cfe5206750 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.000855004113
0x9551a8002904a3aed339d879d5bc289cd7461e6fa080f781f99f120d0955c1fdSwapout387296442022-05-21 11:15:038 hrs 15 mins ago0x8560336f34e7a2386ef0b8f7964429cf49ef15da IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.000454126606
0x8c77204a9ec13f807e903a69800b850e0a7a00f1597a32eb72897ab460a5db78Swapout387201682022-05-21 8:18:0511 hrs 12 mins ago0xe84efe2c386c325f84bac32bc268b5acdbbbb677 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.000710077492
0x86b134136e3a99983ed0f180d64012ec22095b00a9cd10cabe90d0dac0a250a2Swapout387131792022-05-21 6:09:1913 hrs 20 mins ago0x7a75da34c346f244e54fa2f71b25560efb1f9b20 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.001598246012
0x8caee6491726efc41de6520619fc80988bd706243b6e6403d58f7c44b872636fSwapin387073842022-05-21 4:20:0215 hrs 10 mins ago0x2d7c36267eff3a89937fdbbf41c64d8c33bcd715 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.022948016186
0xb6ef30cb9c8919c13845df581d3f7cfbbc5b9370a07f78f9d1d2ef4c9a6941b3Swapin387070562022-05-21 4:13:2915 hrs 16 mins ago0x2d7c36267eff3a89937fdbbf41c64d8c33bcd715 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.002825218593
0xc47fe4a1e52cb0f7518448579b0cf88fe3945cce3087baf4f1dd6af1dbd8da6bSwapin387067942022-05-21 4:08:4315 hrs 21 mins ago0x2d7c36267eff3a89937fdbbf41c64d8c33bcd715 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.003241799885
0x93d870786870d356a371cd57cdaee828075acbf0b8aa43e6bf182740b0b8bbabSwapin387065102022-05-21 4:03:5715 hrs 26 mins ago0x2d7c36267eff3a89937fdbbf41c64d8c33bcd715 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.003214905616
0xc557172387b102c4449c2ac47f03752715a6a158d0f890a06bbfd51011088471Swapin387062882022-05-21 3:59:4815 hrs 30 mins ago0x2d7c36267eff3a89937fdbbf41c64d8c33bcd715 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.003746016504
0x5c05d571a2a205d688eeef1ea417e570db74b3f43ffe7677b4d5dae3332228f6Approve387017002022-05-21 2:25:3817 hrs 4 mins ago0xc5d5358634ce55625c313e08a993d0340f9336c2 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.001970727354
0xcabee59a561ad2fafd0627766135879a5513d3f8b7d73a3bd1ab94d6177fc0b8Swapout387007352022-05-21 2:08:1017 hrs 21 mins ago0xede374f9b0330e5fb4fefbf5cda874cfe5206750 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.00156965614
0x4a1fbfe69b31ae4b4548e3f3e1d406c4a58eb489e9c3c2d38259875d2c03515eSwapout387006632022-05-21 2:06:5917 hrs 23 mins ago0xede374f9b0330e5fb4fefbf5cda874cfe5206750 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.001603924254
0xa56580bb82639477f08d111344c6c1adf53bc255110e1035531c404ae938e032Swapout387003862022-05-21 2:01:4017 hrs 28 mins ago0x41ea7e9113bc00d3f7ce54130eb2f6d152bf91fd IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.001874005
0xbc763da434dddfaf67e23d7d43a35397af35fc6af51c913c04c748eb937a9e56Swapin386999292022-05-21 1:53:4217 hrs 36 mins ago0x2d7c36267eff3a89937fdbbf41c64d8c33bcd715 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.002000348602
0x3fb86db8e008fbc1dd2aaf760553e41ab6157f4c8f14c3d8eafa3c5ef16ecd94Swapin386979252022-05-21 1:12:2218 hrs 17 mins ago0x2d7c36267eff3a89937fdbbf41c64d8c33bcd715 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.00395632857
0xfe835fa93a5ebf40ce8699a52795521623f9faaee8b63fb14129f9d4e5fc1d7cSwapin386979072022-05-21 1:12:0318 hrs 18 mins ago0x2d7c36267eff3a89937fdbbf41c64d8c33bcd715 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.003477131883
0xb83379013c303fb8990b5dcfb77939f2f748cc9deddbbd6b6543af79c5627d8dSwapin386976012022-05-21 1:06:3418 hrs 23 mins ago0x2d7c36267eff3a89937fdbbf41c64d8c33bcd715 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.002800592161
0x7384b0b8d00d44fb5a71446995f95b8930935f51cfa47118ae1594e464e2888aSwapin386975922022-05-21 1:06:2418 hrs 23 mins ago0x2d7c36267eff3a89937fdbbf41c64d8c33bcd715 IN  0x95dd59343a893637be1c3228060ee6afbf6f07300 FTM0.00273148775
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0x11079bc4050d03c9e317436b224257a351b5963411b83b184c79668b0a849dcb251998392021-12-17 5:59:10155 days 13 hrs ago Multichain: Deployer 2  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
AnyTerraCoinV5ERC20

Compiler Version
v0.8.2+commit.661d1103

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2021-12-17
*/

/**
 *Submitted for verification at FtmScan.com on 2021-11-22
*/

// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity 0.8.2;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function permit(address target, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external;
    function transferWithPermit(address target, address to, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

/**
 * @dev Interface of the ERC2612 standard as defined in the EIP.
 *
 * Adds the {permit} method, which can be used to change one's
 * {IERC20-allowance} without having to send a transaction, by signing a
 * message. This allows users to spend tokens without having to hold Ether.
 *
 * See https://eips.ethereum.org/EIPS/eip-2612.
 */
interface IERC2612 {

    /**
     * @dev Returns the current ERC2612 nonce for `owner`. This value must be
     * included whenever a signature is generated for {permit}.
     *
     * Every successful call to {permit} increases ``owner``'s nonce by one. This
     * prevents a signature from being used multiple times.
     */
    function nonces(address owner) external view returns (uint256);
}

/// @dev Wrapped ERC-20 v10 (AnyswapV3ERC20) is an ERC-20 ERC-20 wrapper. You can `deposit` ERC-20 and obtain an AnyswapV3ERC20 balance which can then be operated as an ERC-20 token. You can
/// `withdraw` ERC-20 from AnyswapV3ERC20, which will then burn AnyswapV3ERC20 token in your wallet. The amount of AnyswapV3ERC20 token in any wallet is always identical to the
/// balance of ERC-20 deposited minus the ERC-20 withdrawn with that specific wallet.
interface IAnyswapV3ERC20 is IERC20, IERC2612 {

    /// @dev Sets `value` as allowance of `spender` account over caller account's AnyswapV3ERC20 token,
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// Emits {Approval} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// For more information on approveAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function approveAndCall(address spender, uint256 value, bytes calldata data) external returns (bool);

    /// @dev Moves `value` AnyswapV3ERC20 token from caller's account to account (`to`),
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// A transfer to `address(0)` triggers an ERC-20 withdraw matching the sent AnyswapV3ERC20 token in favor of caller.
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` AnyswapV3ERC20 token.
    /// For more information on transferAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function transferAndCall(address to, uint value, bytes calldata data) external returns (bool);
}

interface ITransferReceiver {
    function onTokenTransfer(address, uint, bytes calldata) external returns (bool);
}

interface IApprovalReceiver {
    function onTokenApproval(address, uint, bytes calldata) external returns (bool);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != 0x0 && codehash != accountHash);
    }
}

library SafeERC20 {
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint value) internal {
        callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint value) internal {
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }
    function callOptionalReturn(IERC20 token, bytes memory data) private {
        require(address(token).isContract(), "SafeERC20: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = address(token).call(data);
        require(success, "SafeERC20: low-level call failed");

        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

contract AnyTerraCoinV5ERC20 is IAnyswapV3ERC20 {
    using SafeERC20 for IERC20;
    string public name;
    string public symbol;
    uint8  public immutable override decimals;

    address public immutable underlying;

    bytes32 public constant PERMIT_TYPEHASH = keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public constant TRANSFER_TYPEHASH = keccak256("Transfer(address owner,address to,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public immutable DOMAIN_SEPARATOR;

    /// @dev Records amount of AnyswapV3ERC20 token owned by account.
    mapping (address => uint256) public override balanceOf;
    uint256 private _totalSupply;

    // init flag for setting immediate vault, needed for CREATE2 support
    bool private _init;

    // flag to enable/disable swapout vs vault.burn so multiple events are triggered
    bool private _vaultOnly;

    // configurable delay for timelock functions
    uint public delay = 2*24*3600;


    // set of minters, can be this bridge or other bridges
    mapping(address => bool) public isMinter;
    address[] public minters;

    // primary controller of the token contract
    address public vault;

    address public pendingMinter;
    uint public delayMinter;

    address public pendingVault;
    uint public delayVault;

    uint public pendingDelay;
    uint public delayDelay;


    modifier onlyAuth() {
        require(isMinter[msg.sender], "AnyswapV4ERC20: FORBIDDEN");
        _;
    }

    modifier onlyVault() {
        require(msg.sender == mpc(), "AnyswapV3ERC20: FORBIDDEN");
        _;
    }

    function owner() public view returns (address) {
        return mpc();
    }

    function mpc() public view returns (address) {
        if (block.timestamp >= delayVault) {
            return pendingVault;
        }
        return vault;
    }

    function setVaultOnly(bool enabled) external onlyVault {
        _vaultOnly = enabled;
    }

    function initVault(address _vault) external onlyVault {
        require(_init);
        vault = _vault;
        pendingVault = _vault;
        isMinter[_vault] = true;
        minters.push(_vault);
        delayVault = block.timestamp;
        _init = false;
    }

    function setMinter(address _auth) external onlyVault {
        pendingMinter = _auth;
        delayMinter = block.timestamp + delay;
    }

    function setVault(address _vault) external onlyVault {
        pendingVault = _vault;
        delayVault = block.timestamp + delay;
    }

    function applyVault() external onlyVault {
        require(block.timestamp >= delayVault);
        vault = pendingVault;
    }

    function applyMinter() external onlyVault {
        require(block.timestamp >= delayMinter);
        isMinter[pendingMinter] = true;
        minters.push(pendingMinter);
    }

    // No time delay revoke minter emergency function
    function revokeMinter(address _auth) external onlyVault {
        isMinter[_auth] = false;
    }

    function getAllMinters() external view returns (address[] memory) {
        return minters;
    }


    function changeVault(address newVault) external onlyVault returns (bool) {
        require(newVault != address(0), "AnyswapV3ERC20: address(0x0)");
        pendingVault = newVault;
        delayVault = block.timestamp + delay;
        emit LogChangeVault(vault, pendingVault, delayVault);
        return true;
    }

    function changeMPCOwner(address newVault) public onlyVault returns (bool) {
        require(newVault != address(0), "AnyswapV3ERC20: address(0x0)");
        pendingVault = newVault;
        delayVault = block.timestamp + delay;
        emit LogChangeMPCOwner(vault, pendingVault, delayVault);
        return true;
    }

    function mint(address to, uint256 amount) external onlyAuth returns (bool) {
        _mint(to, amount);
        return true;
    }

    function burn(address from, uint256 amount) external onlyAuth returns (bool) {
        require(from != address(0), "AnyswapV3ERC20: address(0x0)");
        _burn(from, amount);
        return true;
    }

    function Swapin(bytes32 txhash, address account, uint256 amount) public onlyAuth returns (bool) {
        _mint(account, amount);
        emit LogSwapin(txhash, account, amount);
        return true;
    }

    function Swapout(uint256 amount, string memory bindaddr) public returns (bool) {
        verifyBindAddr(bindaddr);
        require(!_vaultOnly, "AnyswapV4ERC20: onlyAuth");
        _burn(msg.sender, amount);
        emit LogSwapout(msg.sender, amount, bindaddr);
        return true;
    }
    
    function verifyBindAddr(string memory bindaddr) pure internal {
        uint length = bytes(bindaddr).length;
        require(length >= 44, "address length is too short");

        bytes1 ch = bytes(bindaddr)[0];
        bytes1 ch2 = bytes(bindaddr)[1];
        bytes1 ch3 = bytes(bindaddr)[2];
        bytes1 ch4 = bytes(bindaddr)[3];
        bytes1 ch5 = bytes(bindaddr)[4];

        require(ch == 't' && ch2 == 'e' && ch3 == 'r' && ch4 == 'r' && ch5 == 'a', "address prefix error");
    }

    /// @dev Records current ERC2612 nonce for account. This value must be included whenever signature is generated for {permit}.
    /// Every successful call to {permit} increases account's nonce by one. This prevents signature from being used multiple times.
    mapping (address => uint256) public override nonces;

    /// @dev Records number of AnyswapV3ERC20 token that account (second) will be allowed to spend on behalf of another account (first) through {transferFrom}.
    mapping (address => mapping (address => uint256)) public override allowance;

    event LogChangeVault(address indexed oldVault, address indexed newVault, uint indexed effectiveTime);
    event LogChangeMPCOwner(address indexed oldOwner, address indexed newOwner, uint indexed effectiveHeight);
    event LogSwapin(bytes32 indexed txhash, address indexed account, uint amount);
    event LogSwapout(address indexed account, uint amount, string bindaddr);
    event LogAddAuth(address indexed auth, uint timestamp);

    constructor(string memory _name, string memory _symbol, uint8 _decimals, address _underlying, address _vault) {
        name = _name;
        symbol = _symbol;
        decimals = _decimals;
        underlying = _underlying;
        if (_underlying != address(0x0)) {
            require(_decimals == IERC20(_underlying).decimals());
        }

        // Use init to allow for CREATE2 accross all chains
        _init = true;

        // Disable/Enable swapout for v1 tokens vs mint/burn for v3 tokens
        _vaultOnly = false;

        vault = _vault;
        pendingVault = _vault;
        delayVault = block.timestamp;

        uint256 chainId;
        assembly {chainId := chainid()}
        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)"),
                keccak256(bytes(name)),
                keccak256(bytes("1")),
                chainId,
                address(this)));
    }

    /// @dev Returns the total supply of AnyswapV3ERC20 token as the ETH held in this contract.
    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function depositWithPermit(address target, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s, address to) external returns (uint) {
        IERC20(underlying).permit(target, address(this), value, deadline, v, r, s);
        IERC20(underlying).safeTransferFrom(target, address(this), value);
        return _deposit(value, to);
    }

    function depositWithTransferPermit(address target, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s, address to) external returns (uint) {
        IERC20(underlying).transferWithPermit(target, address(this), value, deadline, v, r, s);
        return _deposit(value, to);
    }

    function deposit() external returns (uint) {
        uint _amount = IERC20(underlying).balanceOf(msg.sender);
        IERC20(underlying).safeTransferFrom(msg.sender, address(this), _amount);
        return _deposit(_amount, msg.sender);
    }

    function deposit(uint amount) external returns (uint) {
        IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount);
        return _deposit(amount, msg.sender);
    }

    function deposit(uint amount, address to) external returns (uint) {
        IERC20(underlying).safeTransferFrom(msg.sender, address(this), amount);
        return _deposit(amount, to);
    }

    function depositVault(uint amount, address to) external onlyVault returns (uint) {
        return _deposit(amount, to);
    }

    function _deposit(uint amount, address to) internal returns (uint) {
        require(underlying != address(0x0) && underlying != address(this));
        _mint(to, amount);
        return amount;
    }

    function withdraw() external returns (uint) {
        return _withdraw(msg.sender, balanceOf[msg.sender], msg.sender);
    }

    function withdraw(uint amount) external returns (uint) {
        return _withdraw(msg.sender, amount, msg.sender);
    }

    function withdraw(uint amount, address to) external returns (uint) {
        return _withdraw(msg.sender, amount, to);
    }

    function withdrawVault(address from, uint amount, address to) external onlyVault returns (uint) {
        return _withdraw(from, amount, to);
    }

    function _withdraw(address from, uint amount, address to) internal returns (uint) {
        _burn(from, amount);
        IERC20(underlying).safeTransfer(to, amount);
        return amount;
    }

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

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

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

        balanceOf[account] -= amount;
        _totalSupply -= amount;
        emit Transfer(account, address(0), amount);
    }

    /// @dev Sets `value` as allowance of `spender` account over caller account's AnyswapV3ERC20 token.
    /// Emits {Approval} event.
    /// Returns boolean value indicating whether operation succeeded.
    function approve(address spender, uint256 value) external override returns (bool) {
        // _approve(msg.sender, spender, value);
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);

        return true;
    }

    /// @dev Sets `value` as allowance of `spender` account over caller account's AnyswapV3ERC20 token,
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// Emits {Approval} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// For more information on approveAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function approveAndCall(address spender, uint256 value, bytes calldata data) external override returns (bool) {
        // _approve(msg.sender, spender, value);
        allowance[msg.sender][spender] = value;
        emit Approval(msg.sender, spender, value);

        return IApprovalReceiver(spender).onTokenApproval(msg.sender, value, data);
    }

    /// @dev Sets `value` as allowance of `spender` account over `owner` account's AnyswapV3ERC20 token, given `owner` account's signed approval.
    /// Emits {Approval} event.
    /// Requirements:
    ///   - `deadline` must be timestamp in future.
    ///   - `v`, `r` and `s` must be valid `secp256k1` signature from `owner` account over EIP712-formatted function arguments.
    ///   - the signature must use `owner` account's current nonce (see {nonces}).
    ///   - the signer cannot be zero address and must be `owner` account.
    /// For more information on signature format, see https://eips.ethereum.org/EIPS/eip-2612#specification[relevant EIP section].
    /// AnyswapV3ERC20 token implementation adapted from https://github.com/albertocuestacanada/ERC20Permit/blob/master/contracts/ERC20Permit.sol.
    function permit(address target, address spender, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external override {
        require(block.timestamp <= deadline, "AnyswapV3ERC20: Expired permit");

        bytes32 hashStruct = keccak256(
            abi.encode(
                PERMIT_TYPEHASH,
                target,
                spender,
                value,
                nonces[target]++,
                deadline));

        require(verifyEIP712(target, hashStruct, v, r, s) || verifyPersonalSign(target, hashStruct, v, r, s));

        // _approve(owner, spender, value);
        allowance[target][spender] = value;
        emit Approval(target, spender, value);
    }

    function transferWithPermit(address target, address to, uint256 value, uint256 deadline, uint8 v, bytes32 r, bytes32 s) external override returns (bool) {
        require(block.timestamp <= deadline, "AnyswapV3ERC20: Expired permit");

        bytes32 hashStruct = keccak256(
            abi.encode(
                TRANSFER_TYPEHASH,
                target,
                to,
                value,
                nonces[target]++,
                deadline));

        require(verifyEIP712(target, hashStruct, v, r, s) || verifyPersonalSign(target, hashStruct, v, r, s));

        require(to != address(0) || to != address(this));

        uint256 balance = balanceOf[target];
        require(balance >= value, "AnyswapV3ERC20: transfer amount exceeds balance");

        balanceOf[target] = balance - value;
        balanceOf[to] += value;
        emit Transfer(target, to, value);

        return true;
    }

    function verifyEIP712(address target, bytes32 hashStruct, uint8 v, bytes32 r, bytes32 s) internal view returns (bool) {
        bytes32 hash = keccak256(
            abi.encodePacked(
                "\x19\x01",
                DOMAIN_SEPARATOR,
                hashStruct));
        address signer = ecrecover(hash, v, r, s);
        return (signer != address(0) && signer == target);
    }

    function verifyPersonalSign(address target, bytes32 hashStruct, uint8 v, bytes32 r, bytes32 s) internal view returns (bool) {
        bytes32 hash = prefixed(hashStruct);
        address signer = ecrecover(hash, v, r, s);
        return (signer != address(0) && signer == target);
    }

    // Builds a prefixed hash to mimic the behavior of eth_sign.
    function prefixed(bytes32 hash) internal view returns (bytes32) {
        return keccak256(abi.encodePacked("\x19Ethereum Signed Message:\n32", DOMAIN_SEPARATOR, hash));
    }

    /// @dev Moves `value` AnyswapV3ERC20 token from caller's account to account (`to`).
    /// A transfer to `address(0)` triggers an ETH withdraw matching the sent AnyswapV3ERC20 token in favor of caller.
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` AnyswapV3ERC20 token.
    function transfer(address to, uint256 value) external override returns (bool) {
        require(to != address(0) || to != address(this));
        uint256 balance = balanceOf[msg.sender];
        require(balance >= value, "AnyswapV3ERC20: transfer amount exceeds balance");

        balanceOf[msg.sender] = balance - value;
        balanceOf[to] += value;
        emit Transfer(msg.sender, to, value);

        return true;
    }

    /// @dev Moves `value` AnyswapV3ERC20 token from account (`from`) to account (`to`) using allowance mechanism.
    /// `value` is then deducted from caller account's allowance, unless set to `type(uint256).max`.
    /// A transfer to `address(0)` triggers an ETH withdraw matching the sent AnyswapV3ERC20 token in favor of caller.
    /// Emits {Approval} event to reflect reduced allowance `value` for caller account to spend from account (`from`),
    /// unless allowance is set to `type(uint256).max`
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - `from` account must have at least `value` balance of AnyswapV3ERC20 token.
    ///   - `from` account must have approved caller to spend at least `value` of AnyswapV3ERC20 token, unless `from` and caller are the same account.
    function transferFrom(address from, address to, uint256 value) external override returns (bool) {
        require(to != address(0) || to != address(this));
        if (from != msg.sender) {
            // _decreaseAllowance(from, msg.sender, value);
            uint256 allowed = allowance[from][msg.sender];
            if (allowed != type(uint256).max) {
                require(allowed >= value, "AnyswapV3ERC20: request exceeds allowance");
                uint256 reduced = allowed - value;
                allowance[from][msg.sender] = reduced;
                emit Approval(from, msg.sender, reduced);
            }
        }

        uint256 balance = balanceOf[from];
        require(balance >= value, "AnyswapV3ERC20: transfer amount exceeds balance");

        balanceOf[from] = balance - value;
        balanceOf[to] += value;
        emit Transfer(from, to, value);

        return true;
    }

    /// @dev Moves `value` AnyswapV3ERC20 token from caller's account to account (`to`),
    /// after which a call is executed to an ERC677-compliant contract with the `data` parameter.
    /// A transfer to `address(0)` triggers an ETH withdraw matching the sent AnyswapV3ERC20 token in favor of caller.
    /// Emits {Transfer} event.
    /// Returns boolean value indicating whether operation succeeded.
    /// Requirements:
    ///   - caller account must have at least `value` AnyswapV3ERC20 token.
    /// For more information on transferAndCall format, see https://github.com/ethereum/EIPs/issues/677.
    function transferAndCall(address to, uint value, bytes calldata data) external override returns (bool) {
        require(to != address(0) || to != address(this));

        uint256 balance = balanceOf[msg.sender];
        require(balance >= value, "AnyswapV3ERC20: transfer amount exceeds balance");

        balanceOf[msg.sender] = balance - value;
        balanceOf[to] += value;
        emit Transfer(msg.sender, to, value);

        return ITransferReceiver(to).onTokenTransfer(msg.sender, value, data);
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"uint8","name":"_decimals","type":"uint8"},{"internalType":"address","name":"_underlying","type":"address"},{"internalType":"address","name":"_vault","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"auth","type":"address"},{"indexed":false,"internalType":"uint256","name":"timestamp","type":"uint256"}],"name":"LogAddAuth","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveHeight","type":"uint256"}],"name":"LogChangeMPCOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldVault","type":"address"},{"indexed":true,"internalType":"address","name":"newVault","type":"address"},{"indexed":true,"internalType":"uint256","name":"effectiveTime","type":"uint256"}],"name":"LogChangeVault","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"bytes32","name":"txhash","type":"bytes32"},{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"LogSwapin","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"string","name":"bindaddr","type":"string"}],"name":"LogSwapout","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":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PERMIT_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes32","name":"txhash","type":"bytes32"},{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Swapin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"string","name":"bindaddr","type":"string"}],"name":"Swapout","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"TRANSFER_TYPEHASH","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"applyMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"applyVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVault","type":"address"}],"name":"changeMPCOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVault","type":"address"}],"name":"changeVault","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayMinter","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"delayVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"deposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"depositVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"address","name":"to","type":"address"}],"name":"depositWithPermit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"},{"internalType":"address","name":"to","type":"address"}],"name":"depositWithTransferPermit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getAllMinters","outputs":[{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"initVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isMinter","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"minters","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mpc","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","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":"pendingDelay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingMinter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingVault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_auth","type":"address"}],"name":"revokeMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_auth","type":"address"}],"name":"setMinter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_vault","type":"address"}],"name":"setVault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"enabled","type":"bool"}],"name":"setVaultOnly","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"bytes","name":"data","type":"bytes"}],"name":"transferAndCall","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"target","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"transferWithPermit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"underlying","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"vault","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"address","name":"to","type":"address"}],"name":"withdrawVault","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"}]

60e06040526202a3006005553480156200001857600080fd5b5060405162003290380380620032908339810160408190526200003b91620003c5565b8451620000509060009060208801906200023d565b508351620000669060019060208701906200023d565b507fff0000000000000000000000000000000000000000000000000000000000000060f884901b166080526001600160601b0319606083901b1660a0526001600160a01b038216156200013a57816001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b158015620000ed57600080fd5b505afa15801562000102573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000128919062000464565b60ff168360ff16146200013a57600080fd5b6004805461ff001960ff19909116600117169055600880546001600160a01b0383166001600160a01b03199182168117909255600b8054909116909117905542600c5560405146907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f90620001b29060009062000488565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051601f19818403018152919052805160209091012060c052506200057e945050505050565b8280546200024b906200052b565b90600052602060002090601f0160209004810192826200026f5760008555620002ba565b82601f106200028a57805160ff1916838001178555620002ba565b82800160010185558215620002ba579182015b82811115620002ba5782518255916020019190600101906200029d565b50620002c8929150620002cc565b5090565b5b80821115620002c85760008155600101620002cd565b80516001600160a01b0381168114620002fb57600080fd5b919050565b600082601f83011262000311578081fd5b81516001600160401b03808211156200032e576200032e62000568565b604051601f8301601f19908116603f0116810190828211818310171562000359576200035962000568565b8160405283815260209250868385880101111562000375578485fd5b8491505b8382101562000398578582018301518183018401529082019062000379565b83821115620003a957848385830101525b9695505050505050565b805160ff81168114620002fb57600080fd5b600080600080600060a08688031215620003dd578081fd5b85516001600160401b0380821115620003f4578283fd5b6200040289838a0162000300565b9650602088015191508082111562000418578283fd5b50620004278882890162000300565b9450506200043860408701620003b3565b92506200044860608701620002e3565b91506200045860808701620002e3565b90509295509295909350565b60006020828403121562000476578081fd5b6200048182620003b3565b9392505050565b8154600090819060028104600180831680620004a557607f831692505b6020808410821415620004c657634e487b7160e01b87526022600452602487fd5b818015620004dd5760018114620004ef576200051d565b60ff198616895284890196506200051d565b60008a815260209020885b86811015620005155781548b820152908501908301620004fa565b505084890196505b509498975050505050505050565b6002810460018216806200054057607f821691505b602082108114156200056257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052604160045260246000fd5b60805160f81c60a05160601c60c051612c88620006086000396000818161048c01528181611dcb0152611edd01526000818161057d0152818161128a015281816112d601528181611356015281816116360152818161184b015281816118d401528181611ba101528181611cbe01528181611fdb015261200e015260006104530152612c886000f3fe608060405234801561001057600080fd5b506004361061033f5760003560e01c806381a37c18116101b8578063bebbf4d011610104578063d93f2445116100a2578063f75c26641161007c578063f75c266414610774578063f954734e1461077c578063fbfa77cf1461078f578063fca3b5aa146107a25761033f565b8063d93f24451461072e578063dd62ed3e14610736578063ec126c77146107615761033f565b8063cae9ca51116100de578063cae9ca51146106ed578063cfbd488514610700578063d0e30db014610713578063d505accf1461071b5761033f565b8063bebbf4d0146106be578063c3081240146106d1578063c4b740f5146106da5761033f565b80639dc29fac11610171578063a9059cbb1161014b578063a9059cbb14610662578063aa271e1a14610675578063ad54056d14610698578063b6b55f25146106ab5761033f565b80639dc29fac14610631578063a045442c14610644578063a29dff72146106595761033f565b806381a37c18146105df5780638623ec7b146105f257806387689e28146106055780638da5cb5b1461060e57806391c5df491461061657806395d89b41146106295761033f565b80633ccfd60b1161029257806360e232a9116102305780636e553f651161020a5780636e553f65146105655780636f307dc31461057857806370a082311461059f5780637ecebe00146105bf5761033f565b806360e232a9146105365780636817031b146105495780636a42b8f81461055c5761033f565b80634ca8f0ed1161026c5780634ca8f0ed146104dc57806352113ba7146104e55780635f9b105d14610510578063605629d6146105235761033f565b80633ccfd60b146104ae5780634000aea0146104b657806340c10f19146104c95761033f565b806318160ddd116102ff5780632ebe3fbb116102d95780632ebe3fbb1461041457806330adf81f14610427578063313ce5671461044e5780633644e515146104875761033f565b806318160ddd146103e657806323b872dd146103ee5780632e1a7d4d146104015761033f565b806239d6ec14610344578062bf26f41461036a578062f714ce1461039157806306fdde03146103a4578063095ea7b3146103b95780630d707df8146103dc575b600080fd5b61035761035236600461265c565b6107b5565b6040519081526020015b60405180910390f35b6103577f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd5981565b61035761039f36600461280e565b61080b565b6103ac61081f565b6040516103619190612a04565b6103cc6103c7366004612633565b6108ad565b6040519015158152602001610361565b6103e4610907565b005b6103576109c3565b6103cc6103fc36600461258f565b6109ca565b61035761040f3660046127de565b610bb5565b6103e4610422366004612543565b610bca565b6103577f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6104757f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff9091168152602001610361565b6103577f000000000000000000000000000000000000000000000000000000000000000081565b610357610ca1565b6103cc6104c4366004612697565b610cc2565b6103cc6104d7366004612633565b610e1b565b610357600d5481565b600b546104f8906001600160a01b031681565b6040516001600160a01b039091168152602001610361565b6103cc61051e366004612543565b610e5d565b6103cc6105313660046125ca565b610f31565b6103cc610544366004612543565b611141565b6103e4610557366004612543565b611215565b61035760055481565b61035761057336600461280e565b61127b565b6104f87f000000000000000000000000000000000000000000000000000000000000000081565b6103576105ad366004612543565b60026020526000908152604090205481565b6103576105cd366004612543565b600f6020526000908152604090205481565b6103576105ed366004612719565b6112bc565b6104f86106003660046127de565b611396565b610357600c5481565b6104f86113c0565b6009546104f8906001600160a01b031681565b6103ac6113ca565b6103cc61063f366004612633565b6113d7565b61064c611436565b60405161036191906129b7565b610357600e5481565b6103cc610670366004612633565b611498565b6103cc610683366004612543565b60066020526000908152604090205460ff1681565b6103cc6106a6366004612830565b61156e565b6103576106b93660046127de565b611627565b6103576106cc36600461280e565b611668565b610357600a5481565b6103e46106e8366004612782565b6116a2565b6103cc6106fb366004612697565b6116f4565b6103e461070e366004612543565b6117d0565b610357611829565b6103e46107293660046125ca565b61190c565b6103e4611a7a565b61035761074436600461255d565b601060209081526000928352604080842090915290825290205481565b6103cc61076f3660046127ba565b611ae5565b6104f8611b5a565b61035761078a366004612719565b611b87565b6008546104f8906001600160a01b031681565b6103e46107b0366004612543565b611c3f565b60006107bf611b5a565b6001600160a01b0316336001600160a01b0316146107f85760405162461bcd60e51b81526004016107ef90612a17565b60405180910390fd5b610803848484611ca5565b949350505050565b6000610818338484611ca5565b9392505050565b6000805461082c90612b7f565b80601f016020809104026020016040519081016040528092919081815260200182805461085890612b7f565b80156108a55780601f1061087a576101008083540402835291602001916108a5565b820191906000526020600020905b81548152906001019060200180831161088857829003601f168201915b505050505081565b3360008181526010602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020612c33833981519152906108f69086815260200190565b60405180910390a350600192915050565b61090f611b5a565b6001600160a01b0316336001600160a01b03161461093f5760405162461bcd60e51b81526004016107ef90612a17565b600a5442101561094e57600080fd5b600980546001600160a01b039081166000908152600660205260408120805460ff1916600190811790915592546007805494850181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890920180546001600160a01b03191692909116919091179055565b6003545b90565b60006001600160a01b0383161515806109ec57506001600160a01b0383163014155b6109f557600080fd5b6001600160a01b0384163314610aef576001600160a01b03841660009081526010602090815260408083203384529091529020546000198114610aed5782811015610a945760405162461bcd60e51b815260206004820152602960248201527f416e7973776170563345524332303a2072657175657374206578636565647320604482015268616c6c6f77616e636560b81b60648201526084016107ef565b6000610aa08483612b3c565b6001600160a01b03871660008181526010602090815260408083203380855290835292819020859055518481529394509092600080516020612c33833981519152910160405180910390a3505b505b6001600160a01b03841660009081526002602052604090205482811015610b285760405162461bcd60e51b81526004016107ef90612a85565b610b328382612b3c565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610b68908490612b24565b92505081905550836001600160a01b0316856001600160a01b0316600080516020612c1383398151915285604051610ba291815260200190565b60405180910390a3506001949350505050565b6000610bc2338333611ca5565b90505b919050565b610bd2611b5a565b6001600160a01b0316336001600160a01b031614610c025760405162461bcd60e51b81526004016107ef90612a17565b60045460ff16610c1157600080fd5b600880546001600160a01b039092166001600160a01b03199283168117909155600b80548316821790556000818152600660205260408120805460ff1990811660019081179092556007805492830181559092527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801805490931690911790915542600c55600480549091169055565b336000818152600260205260408120549091610cbd9181611ca5565b905090565b60006001600160a01b038516151580610ce457506001600160a01b0385163014155b610ced57600080fd5b3360009081526002602052604090205484811015610d1d5760405162461bcd60e51b81526004016107ef90612a85565b610d278582612b3c565b33600090815260026020526040808220929092556001600160a01b03881681529081208054879290610d5a908490612b24565b90915550506040518581526001600160a01b038716903390600080516020612c138339815191529060200160405180910390a3604051635260769b60e11b81526001600160a01b0387169063a4c0ed3690610dbf90339089908990899060040161296f565b602060405180830381600087803b158015610dd957600080fd5b505af1158015610ded573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e11919061279e565b9695505050505050565b3360009081526006602052604081205460ff16610e4a5760405162461bcd60e51b81526004016107ef90612ad4565b610e548383611ced565b50600192915050565b6000610e67611b5a565b6001600160a01b0316336001600160a01b031614610e975760405162461bcd60e51b81526004016107ef90612a17565b6001600160a01b038216610ebd5760405162461bcd60e51b81526004016107ef90612a4e565b600b80546001600160a01b0319166001600160a01b038416179055600554610ee59042612b24565b600c819055600b546008546040516001600160a01b0392831692909116907f1d065115f314fb9bad9557bd5460b9e3c66f7223b1dd04e73e828f0bb5afe89f90600090a4506001919050565b600084421115610f835760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d6974000060448201526064016107ef565b6001600160a01b0388166000908152600f6020526040812080547f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd59918b918b918b919086610fd083612bba565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e0016040516020818303038152906040528051906020012090506110318982878787611dbb565b8061104457506110448982878787611eab565b61104d57600080fd5b6001600160a01b03881615158061106d57506001600160a01b0388163014155b61107657600080fd5b6001600160a01b038916600090815260026020526040902054878110156110af5760405162461bcd60e51b81526004016107ef90612a85565b6110b98882612b3c565b6001600160a01b03808c1660009081526002602052604080822093909355908b16815290812080548a92906110ef908490612b24565b92505081905550886001600160a01b03168a6001600160a01b0316600080516020612c138339815191528a60405161112991815260200190565b60405180910390a35060019998505050505050505050565b600061114b611b5a565b6001600160a01b0316336001600160a01b03161461117b5760405162461bcd60e51b81526004016107ef90612a17565b6001600160a01b0382166111a15760405162461bcd60e51b81526004016107ef90612a4e565b600b80546001600160a01b0319166001600160a01b0384161790556005546111c99042612b24565b600c819055600b546008546040516001600160a01b0392831692909116907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a4506001919050565b61121d611b5a565b6001600160a01b0316336001600160a01b03161461124d5760405162461bcd60e51b81526004016107ef90612a17565b600b80546001600160a01b0319166001600160a01b0383161790556005546112759042612b24565b600c5550565b60006112b26001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611f66565b6108188383611fd7565b60405163d505accf60e01b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063d505accf90611317908b9030908c908c908c908c908c9060040161292e565b600060405180830381600087803b15801561133157600080fd5b505af1158015611345573d6000803e3d6000fd5b506113809250506001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016905089308a611f66565b61138a8783611fd7565b98975050505050505050565b600781815481106113a657600080fd5b6000918252602090912001546001600160a01b0316905081565b6000610cbd611b5a565b6001805461082c90612b7f565b3360009081526006602052604081205460ff166114065760405162461bcd60e51b81526004016107ef90612ad4565b6001600160a01b03831661142c5760405162461bcd60e51b81526004016107ef90612a4e565b610e548383612054565b6060600780548060200260200160405190810160405280929190818152602001828054801561148e57602002820191906000526020600020905b81546001600160a01b03168152600190910190602001808311611470575b5050505050905090565b60006001600160a01b0383161515806114ba57506001600160a01b0383163014155b6114c357600080fd5b33600090815260026020526040902054828110156114f35760405162461bcd60e51b81526004016107ef90612a85565b6114fd8382612b3c565b33600090815260026020526040808220929092556001600160a01b03861681529081208054859290611530908490612b24565b90915550506040518381526001600160a01b038516903390600080516020612c13833981519152906020015b60405180910390a35060019392505050565b600061157982612126565b600454610100900460ff16156115d15760405162461bcd60e51b815260206004820152601860248201527f416e7973776170563445524332303a206f6e6c7941757468000000000000000060448201526064016107ef565b6115db3384612054565b336001600160a01b03167f9c92ad817e5474d30a4378deface765150479363a897b0590fbb12ae9d89396b8484604051611616929190612b0b565b60405180910390a250600192915050565b600061165e6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611f66565b610bc28233611fd7565b6000611672611b5a565b6001600160a01b0316336001600160a01b0316146112b25760405162461bcd60e51b81526004016107ef90612a17565b6116aa611b5a565b6001600160a01b0316336001600160a01b0316146116da5760405162461bcd60e51b81526004016107ef90612a17565b600480549115156101000261ff0019909216919091179055565b3360008181526010602090815260408083206001600160a01b03891680855292528083208790555191929091600080516020612c338339815191529061173d9088815260200190565b60405180910390a360405162ba451f60e01b81526001600160a01b0386169062ba451f9061177590339088908890889060040161296f565b602060405180830381600087803b15801561178f57600080fd5b505af11580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c7919061279e565b95945050505050565b6117d8611b5a565b6001600160a01b0316336001600160a01b0316146118085760405162461bcd60e51b81526004016107ef90612a17565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a082319060240160206040518083038186803b15801561188d57600080fd5b505afa1580156118a1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118c591906127f6565b90506118fc6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611f66565b6119068133611fd7565b91505090565b8342111561195c5760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d6974000060448201526064016107ef565b6001600160a01b0387166000908152600f6020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a9190866119a983612bba565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e001604051602081830303815290604052805190602001209050611a0a8882868686611dbb565b80611a1d5750611a1d8882868686611eab565b611a2657600080fd5b6001600160a01b038881166000818152601060209081526040808320948c16808452948252918290208a90559051898152600080516020612c33833981519152910160405180910390a35050505050505050565b611a82611b5a565b6001600160a01b0316336001600160a01b031614611ab25760405162461bcd60e51b81526004016107ef90612a17565b600c54421015611ac157600080fd5b600b54600880546001600160a01b0319166001600160a01b03909216919091179055565b3360009081526006602052604081205460ff16611b145760405162461bcd60e51b81526004016107ef90612ad4565b611b1e8383611ced565b826001600160a01b0316847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d618460405161155c91815260200190565b6000600c544210611b775750600b546001600160a01b03166109c7565b506008546001600160a01b031690565b60405163302b14eb60e11b81526000906001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169063605629d690611be2908b9030908c908c908c908c908c9060040161292e565b602060405180830381600087803b158015611bfc57600080fd5b505af1158015611c10573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c34919061279e565b5061138a8783611fd7565b611c47611b5a565b6001600160a01b0316336001600160a01b031614611c775760405162461bcd60e51b81526004016107ef90612a17565b600980546001600160a01b0319166001600160a01b038316179055600554611c9f9042612b24565b600a5550565b6000611cb18484612054565b611ce56001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168385612328565b509092915050565b6001600160a01b038216611d435760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f20616464726573730060448201526064016107ef565b8060036000828254611d559190612b24565b90915550506001600160a01b03821660009081526002602052604081208054839290611d82908490612b24565b90915550506040518181526001600160a01b03831690600090600080516020612c13833981519152906020015b60405180910390a35050565b60405161190160f01b60208201527f0000000000000000000000000000000000000000000000000000000000000000602282015260428101859052600090819060620160408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0015b6020604051602081039080840390855afa158015611e6a573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b0381161580159061138a5750876001600160a01b0316816001600160a01b03161498975050505050505050565b600080611f2b866040517f19457468657265756d205369676e6564204d6573736167653a0a33320000000060208201527f0000000000000000000000000000000000000000000000000000000000000000603c820152605c8101829052600090607c01604051602081830303815290604052805190602001209050919050565b6040805160008082526020820180845284905260ff89169282019290925260608101879052608081018690529192509060019060a001611e48565b6040516001600160a01b0380851660248301528316604482015260648101829052611fd19085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b03199093169290921790915261235d565b50505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03161580159061203a57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163014155b61204357600080fd5b61204d8284611ced565b5090919050565b6001600160a01b0382166120b45760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b60648201526084016107ef565b6001600160a01b038216600090815260026020526040812080548392906120dc908490612b3c565b9250508190555080600360008282546120f59190612b3c565b90915550506040518181526000906001600160a01b03841690600080516020612c1383398151915290602001611daf565b8051602c8110156121795760405162461bcd60e51b815260206004820152601b60248201527f61646472657373206c656e67746820697320746f6f2073686f7274000000000060448201526064016107ef565b60008260008151811061219c57634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b90506000836001815181106121cc57634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b90506000846002815181106121fc57634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b905060008560038151811061222c57634e487b7160e01b600052603260045260246000fd5b602001015160f81c60f81b905060008660048151811061225c57634e487b7160e01b600052603260045260246000fd5b01602001516001600160f81b03199081169150601d60fa1b9086161480156122915750606560f81b6001600160f81b03198516145b80156122aa5750603960f91b6001600160f81b03198416145b80156122c35750603960f91b6001600160f81b03198316145b80156122dc5750606160f81b6001600160f81b03198216145b61231f5760405162461bcd60e51b815260206004820152601460248201527330b2323932b9b990383932b334bc1032b93937b960611b60448201526064016107ef565b50505050505050565b6040516001600160a01b03831660248201526044810182905261235890849063a9059cbb60e01b90606401611f9a565b505050565b61236f826001600160a01b03166124e4565b6123bb5760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e74726163740060448201526064016107ef565b600080836001600160a01b0316836040516123d69190612912565b6000604051808303816000865af19150503d8060008114612413576040519150601f19603f3d011682016040523d82523d6000602084013e612418565b606091505b50915091508161246a5760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c656460448201526064016107ef565b805115611fd15780806020019051810190612485919061279e565b611fd15760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b60648201526084016107ef565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906108035750141592915050565b80356001600160a01b0381168114610bc557600080fd5b803560ff81168114610bc557600080fd5b600060208284031215612554578081fd5b6108188261251b565b6000806040838503121561256f578081fd5b6125788361251b565b91506125866020840161251b565b90509250929050565b6000806000606084860312156125a3578081fd5b6125ac8461251b565b92506125ba6020850161251b565b9150604084013590509250925092565b600080600080600080600060e0888a0312156125e4578283fd5b6125ed8861251b565b96506125fb6020890161251b565b9550604088013594506060880135935061261760808901612532565b925060a0880135915060c0880135905092959891949750929550565b60008060408385031215612645578182fd5b61264e8361251b565b946020939093013593505050565b600080600060608486031215612670578283fd5b6126798461251b565b92506020840135915061268e6040850161251b565b90509250925092565b600080600080606085870312156126ac578384fd5b6126b58561251b565b935060208501359250604085013567ffffffffffffffff808211156126d8578384fd5b818701915087601f8301126126eb578384fd5b8135818111156126f9578485fd5b88602082850101111561270a578485fd5b95989497505060200194505050565b600080600080600080600060e0888a031215612733578283fd5b61273c8861251b565b9650602088013595506040880135945061275860608901612532565b93506080880135925060a0880135915061277460c0890161251b565b905092959891949750929550565b600060208284031215612793578081fd5b813561081881612c01565b6000602082840312156127af578081fd5b815161081881612c01565b6000806000606084860312156127ce578081fd5b833592506125ba6020850161251b565b6000602082840312156127ef578081fd5b5035919050565b600060208284031215612807578081fd5b5051919050565b60008060408385031215612820578182fd5b823591506125866020840161251b565b60008060408385031215612842578182fd5b82359150602083013567ffffffffffffffff80821115612860578283fd5b818501915085601f830112612873578283fd5b81358181111561288557612885612beb565b604051601f8201601f19908116603f011681019083821181831017156128ad576128ad612beb565b816040528281528860208487010111156128c5578586fd5b82602086016020830137856020848301015280955050505050509250929050565b600081518084526128fe816020860160208601612b53565b601f01601f19169290920160200192915050565b60008251612924818460208701612b53565b9190910192915050565b6001600160a01b0397881681529590961660208601526040850193909352606084019190915260ff16608083015260a082015260c081019190915260e00190565b6001600160a01b0385168152602081018490526060604082018190528101829052600082846080840137818301608090810191909152601f909201601f191601019392505050565b6020808252825182820181905260009190848201906040850190845b818110156129f85783516001600160a01b0316835292840192918401916001016129d3565b50909695505050505050565b60006020825261081860208301846128e6565b60208082526019908201527f416e7973776170563345524332303a20464f5242494444454e00000000000000604082015260600190565b6020808252601c908201527f416e7973776170563345524332303a2061646472657373283078302900000000604082015260600190565b6020808252602f908201527f416e7973776170563345524332303a207472616e7366657220616d6f756e742060408201526e657863656564732062616c616e636560881b606082015260800190565b60208082526019908201527f416e7973776170563445524332303a20464f5242494444454e00000000000000604082015260600190565b60008382526040602083015261080360408301846128e6565b60008219821115612b3757612b37612bd5565b500190565b600082821015612b4e57612b4e612bd5565b500390565b60005b83811015612b6e578181015183820152602001612b56565b83811115611fd15750506000910152565b600281046001821680612b9357607f821691505b60208210811415612bb457634e487b7160e01b600052602260045260246000fd5b50919050565b6000600019821415612bce57612bce612bd5565b5060010190565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052604160045260246000fd5b8015158114612c0f57600080fd5b5056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a2646970667358221220a6a099c80899d52f35d3cc73a8d5782eaee7171f9ee816bddf0097423844741264736f6c6343000802003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad9925100000000000000000000000000000000000000000000000000000000000000044c756e610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044c554e4100000000000000000000000000000000000000000000000000000000

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000060000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad9925100000000000000000000000000000000000000000000000000000000000000044c756e610000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000044c554e4100000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Luna
Arg [1] : _symbol (string): LUNA
Arg [2] : _decimals (uint8): 6
Arg [3] : _underlying (address): 0x0000000000000000000000000000000000000000
Arg [4] : _vault (address): 0xfa9da51631268a30ec3ddd1ccbf46c65fad99251

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000006
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [6] : 4c756e6100000000000000000000000000000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [8] : 4c554e4100000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

5798:19645:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15399:149;;;;;;:::i;:::-;;:::i;:::-;;;10872:25:1;;;10860:2;10845:18;15399:149:0;;;;;;;;6176:136;;6220:92;6176:136;;15265:126;;;;;;:::i;:::-;;:::i;5886:18::-;;;:::i;:::-;;;;;;;:::i;17122:265::-;;;;;;:::i;:::-;;:::i;:::-;;;10699:14:1;;10692:22;10674:41;;10662:2;10647:18;17122:265:0;10629:92:1;8572:179:0;;;:::i;:::-;;13234:102;;;:::i;23363:927::-;;;;;;:::i;:::-;;:::i;15135:122::-;;;;;;:::i;:::-;;:::i;7858:272::-;;;;;;:::i;:::-;;:::i;6032:137::-;;6074:95;6032:137;;5938:41;;;;;;;;17984:4:1;17972:17;;;17954:36;;17942:2;17927:18;5938:41:0;17909:87:1;6319:41:0;;;;;15001:126;;;:::i;24917:523::-;;;;;;:::i;:::-;;:::i;9691:133::-;;;;;;:::i;:::-;;:::i;7197:24::-;;;;;;7132:27;;;;;-1:-1:-1;;;;;7132:27:0;;;;;;-1:-1:-1;;;;;7923:32:1;;;7905:51;;7893:2;7878:18;7132:27:0;7860:102:1;9358:325:0;;;;;;:::i;:::-;;:::i;19720:938::-;;;;;;:::i;:::-;;:::i;9029:321::-;;;;;;:::i;:::-;;:::i;8287:140::-;;;;;;:::i;:::-;;:::i;6807:29::-;;;;;;14453:193;;;;;;:::i;:::-;;:::i;5988:35::-;;;;;6440:54;;;;;;:::i;:::-;;;;;;;;;;;;;;11345:51;;;;;;:::i;:::-;;;;;;;;;;;;;;13344:349;;;;;;:::i;:::-;;:::i;6954:24::-;;;;;;:::i;:::-;;:::i;7166:22::-;;;;;;7495:78;;;:::i;7065:28::-;;;;;-1:-1:-1;;;;;7065:28:0;;;5911:20;;;:::i;9832:207::-;;;;;;:::i;:::-;;:::i;8920:99::-;;;:::i;:::-;;;;;;;:::i;7228:22::-;;;;;;22036:438;;;;;;:::i;:::-;;:::i;6907:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;10264:295;;;;;;:::i;:::-;;:::i;14256:189::-;;;;;;:::i;:::-;;:::i;14654:127::-;;;;;;:::i;:::-;;:::i;7100:23::-;;;;;;7756:94;;;;;;:::i;:::-;;:::i;17808:356::-;;;;;;:::i;:::-;;:::i;8814:98::-;;;;;;:::i;:::-;;:::i;14002:246::-;;;:::i;18997:715::-;;;;;;:::i;:::-;;:::i;8435:129::-;;;:::i;11566:75::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;10047:209;;;;;;:::i;:::-;;:::i;7581:167::-;;;:::i;13701:293::-;;;;;;:::i;:::-;;:::i;7036:20::-;;;;;-1:-1:-1;;;;;7036:20:0;;;8138:141;;;;;;:::i;:::-;;:::i;15399:149::-;15489:4;7432:5;:3;:5::i;:::-;-1:-1:-1;;;;;7418:19:0;:10;-1:-1:-1;;;;;7418:19:0;;7410:57;;;;-1:-1:-1;;;7410:57:0;;;;;;;:::i;:::-;;;;;;;;;15513:27:::1;15523:4;15529:6;15537:2;15513:9;:27::i;:::-;15506:34:::0;15399:149;-1:-1:-1;;;;15399:149:0:o;15265:126::-;15326:4;15350:33;15360:10;15372:6;15380:2;15350:9;:33::i;:::-;15343:40;15265:126;-1:-1:-1;;;15265:126:0:o;5886:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;17122:265::-;17275:10;17198:4;17265:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;17265:30:0;;;;;;;;;;:38;;;17319:36;17198:4;;17265:30;;-1:-1:-1;;;;;;;;;;;17319:36:0;;;17298:5;10872:25:1;;10860:2;10845:18;;10827:76;17319:36:0;;;;;;;;-1:-1:-1;17375:4:0;17122:265;;;;:::o;8572:179::-;7432:5;:3;:5::i;:::-;-1:-1:-1;;;;;7418:19:0;:10;-1:-1:-1;;;;;7418:19:0;;7410:57;;;;-1:-1:-1;;;7410:57:0;;;;;;;:::i;:::-;8652:11:::1;;8633:15;:30;;8625:39;;;::::0;::::1;;8684:13;::::0;;-1:-1:-1;;;;;8684:13:0;;::::1;8675:23;::::0;;;:8:::1;:23;::::0;;;;:30;;-1:-1:-1;;8675:30:0::1;8701:4;8675:30:::0;;::::1;::::0;;;8729:13;;8716:7:::1;:27:::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;8716:27:0::1;8729:13:::0;;;::::1;8716:27:::0;;;::::1;::::0;;8572:179::o;13234:102::-;13316:12;;13234:102;;:::o;23363:927::-;23453:4;-1:-1:-1;;;;;23478:16:0;;;;;:39;;-1:-1:-1;;;;;;23498:19:0;;23512:4;23498:19;;23478:39;23470:48;;;;;;-1:-1:-1;;;;;23533:18:0;;23541:10;23533:18;23529:477;;-1:-1:-1;;;;;23647:15:0;;23629;23647;;;:9;:15;;;;;;;;23663:10;23647:27;;;;;;;;-1:-1:-1;;23693:28:0;;23689:306;;23761:5;23750:7;:16;;23742:70;;;;-1:-1:-1;;;23742:70:0;;15995:2:1;23742:70:0;;;15977:21:1;16034:2;16014:18;;;16007:30;16073:34;16053:18;;;16046:62;-1:-1:-1;;;16124:18:1;;;16117:39;16173:19;;23742:70:0;15967:231:1;23742:70:0;23831:15;23849;23859:5;23849:7;:15;:::i;:::-;-1:-1:-1;;;;;23883:15:0;;;;;;:9;:15;;;;;;;;23899:10;23883:27;;;;;;;;;;:37;;;23944:35;10872:25:1;;;23883:37:0;;-1:-1:-1;23899:10:0;;-1:-1:-1;;;;;;;;;;;23944:35:0;10845:18:1;23944:35:0;;;;;;;23689:306;;23529:477;;-1:-1:-1;;;;;24036:15:0;;24018;24036;;;:9;:15;;;;;;24070:16;;;;24062:76;;;;-1:-1:-1;;;24062:76:0;;;;;;;:::i;:::-;24169:15;24179:5;24169:7;:15;:::i;:::-;-1:-1:-1;;;;;24151:15:0;;;;;;;:9;:15;;;;;;:33;;;;24195:13;;;;;;;;:22;;24212:5;;24151:15;24195:22;;24212:5;;24195:22;:::i;:::-;;;;;;;;24248:2;-1:-1:-1;;;;;24233:25:0;24242:4;-1:-1:-1;;;;;24233:25:0;-1:-1:-1;;;;;;;;;;;24252:5:0;24233:25;;;;10872::1;;10860:2;10845:18;;10827:76;24233:25:0;;;;;;;;-1:-1:-1;24278:4:0;;23363:927;-1:-1:-1;;;;23363:927:0:o;15135:122::-;15184:4;15208:41;15218:10;15230:6;15238:10;15208:9;:41::i;:::-;15201:48;;15135:122;;;;:::o;7858:272::-;7432:5;:3;:5::i;:::-;-1:-1:-1;;;;;7418:19:0;:10;-1:-1:-1;;;;;7418:19:0;;7410:57;;;;-1:-1:-1;;;7410:57:0;;;;;;;:::i;:::-;7931:5:::1;::::0;::::1;;7923:14;;;::::0;::::1;;7948:5;:14:::0;;-1:-1:-1;;;;;7948:14:0;;::::1;-1:-1:-1::0;;;;;;7948:14:0;;::::1;::::0;::::1;::::0;;;7973:12:::1;:21:::0;;;::::1;::::0;::::1;::::0;;7948:5:::1;8005:16:::0;;;:8:::1;:16;::::0;;;;:23;;-1:-1:-1;;8005:23:0;;::::1;7948:14:::0;8005:23;;::::1;::::0;;;8039:7:::1;:20:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;8083:15:::1;8070:10;:28:::0;8109:5:::1;:13:::0;;;;::::1;::::0;;7858:272::o;15001:126::-;15073:10;15039:4;15085:21;;;:9;:21;;;;;;15039:4;;15063:56;;15073:10;15063:9;:56::i;:::-;15056:63;;15001:126;:::o;24917:523::-;25014:4;-1:-1:-1;;;;;25039:16:0;;;;;:39;;-1:-1:-1;;;;;;25059:19:0;;25073:4;25059:19;;25039:39;25031:48;;;;;;25120:10;25092:15;25110:21;;;:9;:21;;;;;;25150:16;;;;25142:76;;;;-1:-1:-1;;;25142:76:0;;;;;;;:::i;:::-;25255:15;25265:5;25255:7;:15;:::i;:::-;25241:10;25231:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;25281:13:0;;;;;;;:22;;25298:5;;25231:21;25281:22;;25298:5;;25281:22;:::i;:::-;;;;-1:-1:-1;;25319:31:0;;10872:25:1;;;-1:-1:-1;;;;;25319:31:0;;;25328:10;;-1:-1:-1;;;;;;;;;;;25319:31:0;10860:2:1;10845:18;25319:31:0;;;;;;;25370:62;;-1:-1:-1;;;25370:62:0;;-1:-1:-1;;;;;25370:37:0;;;;;:62;;25408:10;;25420:5;;25427:4;;;;25370:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;25363:69;24917:523;-1:-1:-1;;;;;;24917:523:0:o;9691:133::-;7309:10;9760:4;7300:20;;;:8;:20;;;;;;;;7292:58;;;;-1:-1:-1;;;7292:58:0;;;;;;;:::i;:::-;9777:17:::1;9783:2;9787:6;9777:5;:17::i;:::-;-1:-1:-1::0;9812:4:0::1;9691:133:::0;;;;:::o;9358:325::-;9426:4;7432:5;:3;:5::i;:::-;-1:-1:-1;;;;;7418:19:0;:10;-1:-1:-1;;;;;7418:19:0;;7410:57;;;;-1:-1:-1;;;7410:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9451:22:0;::::1;9443:63;;;;-1:-1:-1::0;;;9443:63:0::1;;;;;;;:::i;:::-;9517:12;:23:::0;;-1:-1:-1;;;;;;9517:23:0::1;-1:-1:-1::0;;;;;9517:23:0;::::1;;::::0;;9582:5:::1;::::0;9564:23:::1;::::0;:15:::1;:23;:::i;:::-;9551:10;:36:::0;;;9628:12:::1;::::0;9621:5:::1;::::0;9603:50:::1;::::0;-1:-1:-1;;;;;9628:12:0;;::::1;::::0;9621:5;;::::1;::::0;9603:50:::1;::::0;9628:12:::1;::::0;9603:50:::1;-1:-1:-1::0;9671:4:0::1;9358:325:::0;;;:::o;19720:938::-;19867:4;19911:8;19892:15;:27;;19884:70;;;;-1:-1:-1;;;19884:70:0;;14178:2:1;19884:70:0;;;14160:21:1;14217:2;14197:18;;;14190:30;14256:32;14236:18;;;14229:60;14306:18;;19884:70:0;14150:180:1;19884:70:0;-1:-1:-1;;;;;20147:14:0;;19967:18;20147:14;;;:6;:14;;;;;:16;;6220:92;;20077:6;;20102:2;;20123:5;;20147:16;19967:18;20147:16;;;:::i;:::-;;;;-1:-1:-1;20012:179:0;;;;;;11195:25:1;;;;-1:-1:-1;;;;;11294:15:1;;;11274:18;;;11267:43;11346:15;;;;11326:18;;;11319:43;11378:18;;;11371:34;11421:19;;;11414:35;11465:19;;;11458:35;;;11167:19;;20012:179:0;;;;;;;;;;;;19988:204;;;;;;19967:225;;20213:41;20226:6;20234:10;20246:1;20249;20252;20213:12;:41::i;:::-;:92;;;;20258:47;20277:6;20285:10;20297:1;20300;20303;20258:18;:47::i;:::-;20205:101;;;;;;-1:-1:-1;;;;;20327:16:0;;;;;:39;;-1:-1:-1;;;;;;20347:19:0;;20361:4;20347:19;;20327:39;20319:48;;;;;;-1:-1:-1;;;;;20398:17:0;;20380:15;20398:17;;;:9;:17;;;;;;20434:16;;;;20426:76;;;;-1:-1:-1;;;20426:76:0;;;;;;;:::i;:::-;20535:15;20545:5;20535:7;:15;:::i;:::-;-1:-1:-1;;;;;20515:17:0;;;;;;;:9;:17;;;;;;:35;;;;20561:13;;;;;;;;:22;;20578:5;;20515:17;20561:22;;20578:5;;20561:22;:::i;:::-;;;;;;;;20616:2;-1:-1:-1;;;;;20599:27:0;20608:6;-1:-1:-1;;;;;20599:27:0;-1:-1:-1;;;;;;;;;;;20620:5:0;20599:27;;;;10872:25:1;;10860:2;10845:18;;10827:76;20599:27:0;;;;;;;;-1:-1:-1;20646:4:0;;19720:938;-1:-1:-1;;;;;;;;;19720:938:0:o;9029:321::-;9096:4;7432:5;:3;:5::i;:::-;-1:-1:-1;;;;;7418:19:0;:10;-1:-1:-1;;;;;7418:19:0;;7410:57;;;;-1:-1:-1;;;7410:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9121:22:0;::::1;9113:63;;;;-1:-1:-1::0;;;9113:63:0::1;;;;;;;:::i;:::-;9187:12;:23:::0;;-1:-1:-1;;;;;;9187:23:0::1;-1:-1:-1::0;;;;;9187:23:0;::::1;;::::0;;9252:5:::1;::::0;9234:23:::1;::::0;:15:::1;:23;:::i;:::-;9221:10;:36:::0;;;9295:12:::1;::::0;9288:5:::1;::::0;9273:47:::1;::::0;-1:-1:-1;;;;;9295:12:0;;::::1;::::0;9288:5;;::::1;::::0;9273:47:::1;::::0;9295:12:::1;::::0;9273:47:::1;-1:-1:-1::0;9338:4:0::1;9029:321:::0;;;:::o;8287:140::-;7432:5;:3;:5::i;:::-;-1:-1:-1;;;;;7418:19:0;:10;-1:-1:-1;;;;;7418:19:0;;7410:57;;;;-1:-1:-1;;;7410:57:0;;;;;;;:::i;:::-;8351:12:::1;:21:::0;;-1:-1:-1;;;;;;8351:21:0::1;-1:-1:-1::0;;;;;8351:21:0;::::1;;::::0;;8414:5:::1;::::0;8396:23:::1;::::0;:15:::1;:23;:::i;:::-;8383:10;:36:::0;-1:-1:-1;8287:140:0:o;14453:193::-;14513:4;14530:70;-1:-1:-1;;;;;14537:10:0;14530:35;14566:10;14586:4;14593:6;14530:35;:70::i;:::-;14618:20;14627:6;14635:2;14618:8;:20::i;13344:349::-;13498:74;;-1:-1:-1;;;13498:74:0;;13481:4;;-1:-1:-1;;;;;13505:10:0;13498:25;;;;:74;;13524:6;;13540:4;;13547:5;;13554:8;;13564:1;;13567;;13570;;13498:74;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13583:65:0;;-1:-1:-1;;;;;;;13590:10:0;13583:35;;-1:-1:-1;13619:6:0;13635:4;13642:5;13583:35;:65::i;:::-;13666:19;13675:5;13682:2;13666:8;:19::i;:::-;13659:26;13344:349;-1:-1:-1;;;;;;;;13344:349:0:o;6954:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6954:24:0;;-1:-1:-1;6954:24:0;:::o;7495:78::-;7533:7;7560:5;:3;:5::i;5911:20::-;;;;;;;:::i;9832:207::-;7309:10;9903:4;7300:20;;;:8;:20;;;;;;;;7292:58;;;;-1:-1:-1;;;7292:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9928:18:0;::::1;9920:59;;;;-1:-1:-1::0;;;9920:59:0::1;;;;;;;:::i;:::-;9990:19;9996:4;10002:6;9990:5;:19::i;8920:99::-:0;8968:16;9004:7;8997:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;8997:14:0;;;;;;;;;;;;;;;;;;;;;;;8920:99;:::o;22036:438::-;22108:4;-1:-1:-1;;;;;22133:16:0;;;;;:39;;-1:-1:-1;;;;;;22153:19:0;;22167:4;22153:19;;22133:39;22125:48;;;;;;22212:10;22184:15;22202:21;;;:9;:21;;;;;;22242:16;;;;22234:76;;;;-1:-1:-1;;;22234:76:0;;;;;;;:::i;:::-;22347:15;22357:5;22347:7;:15;:::i;:::-;22333:10;22323:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;22373:13:0;;;;;;;:22;;22390:5;;22323:21;22373:22;;22390:5;;22373:22;:::i;:::-;;;;-1:-1:-1;;22411:31:0;;10872:25:1;;;-1:-1:-1;;;;;22411:31:0;;;22420:10;;-1:-1:-1;;;;;;;;;;;22411:31:0;10860:2:1;10845:18;22411:31:0;;;;;;;;-1:-1:-1;22462:4:0;;22036:438;-1:-1:-1;;;22036:438:0:o;10264:295::-;10337:4;10354:24;10369:8;10354:14;:24::i;:::-;10398:10;;;;;;;10397:11;10389:48;;;;-1:-1:-1;;;10389:48:0;;14537:2:1;10389:48:0;;;14519:21:1;14576:2;14556:18;;;14549:30;14615:26;14595:18;;;14588:54;14659:18;;10389:48:0;14509:174:1;10389:48:0;10448:25;10454:10;10466:6;10448:5;:25::i;:::-;10500:10;-1:-1:-1;;;;;10489:40:0;;10512:6;10520:8;10489:40;;;;;;;:::i;:::-;;;;;;;;-1:-1:-1;10547:4:0;10264:295;;;;:::o;14256:189::-;14304:4;14321:70;-1:-1:-1;;;;;14328:10:0;14321:35;14357:10;14377:4;14384:6;14321:35;:70::i;:::-;14409:28;14418:6;14426:10;14409:8;:28::i;14654:127::-;14729:4;7432:5;:3;:5::i;:::-;-1:-1:-1;;;;;7418:19:0;:10;-1:-1:-1;;;;;7418:19:0;;7410:57;;;;-1:-1:-1;;;7410:57:0;;;;;;;:::i;7756:94::-;7432:5;:3;:5::i;:::-;-1:-1:-1;;;;;7418:19:0;:10;-1:-1:-1;;;;;7418:19:0;;7410:57;;;;-1:-1:-1;;;7410:57:0;;;;;;;:::i;:::-;7822:10:::1;:20:::0;;;::::1;;;;-1:-1:-1::0;;7822:20:0;;::::1;::::0;;;::::1;::::0;;7756:94::o;17808:356::-;17989:10;17912:4;17979:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;17979:30:0;;;;;;;;;;:38;;;18033:36;17912:4;;17979:30;;-1:-1:-1;;;;;;;;;;;18033:36:0;;;18012:5;10872:25:1;;10860:2;10845:18;;10827:76;18033:36:0;;;;;;;;18089:67;;-1:-1:-1;;;18089:67:0;;-1:-1:-1;;;;;18089:42:0;;;;;:67;;18132:10;;18144:5;;18151:4;;;;18089:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;18082:74;17808:356;-1:-1:-1;;;;;17808:356:0:o;8814:98::-;7432:5;:3;:5::i;:::-;-1:-1:-1;;;;;7418:19:0;:10;-1:-1:-1;;;;;7418:19:0;;7410:57;;;;-1:-1:-1;;;7410:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8881:15:0::1;8899:5;8881:15:::0;;;:8:::1;:15;::::0;;;;:23;;-1:-1:-1;;8881:23:0::1;::::0;;8814:98::o;14002:246::-;14071:40;;-1:-1:-1;;;14071:40:0;;14100:10;14071:40;;;7905:51:1;14039:4:0;;;;-1:-1:-1;;;;;14078:10:0;14071:28;;;;7878:18:1;;14071:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14056:55;-1:-1:-1;14122:71:0;-1:-1:-1;;;;;14129:10:0;14122:35;14158:10;14178:4;14056:55;14122:35;:71::i;:::-;14211:29;14220:7;14229:10;14211:8;:29::i;:::-;14204:36;;;14002:246;:::o;18997:715::-;19166:8;19147:15;:27;;19139:70;;;;-1:-1:-1;;;19139:70:0;;14178:2:1;19139:70:0;;;14160:21:1;14217:2;14197:18;;;14190:30;14256:32;14236:18;;;14229:60;14306:18;;19139:70:0;14150:180:1;19139:70:0;-1:-1:-1;;;;;19405:14:0;;19222:18;19405:14;;;:6;:14;;;;;:16;;6074:95;;19330:6;;19355:7;;19381:5;;19405:16;19222:18;19405:16;;;:::i;:::-;;;;-1:-1:-1;19267:182:0;;;;;;11195:25:1;;;;-1:-1:-1;;;;;11294:15:1;;;11274:18;;;11267:43;11346:15;;;;11326:18;;;11319:43;11378:18;;;11371:34;11421:19;;;11414:35;11465:19;;;11458:35;;;11167:19;;19267:182:0;;;;;;;;;;;;19243:207;;;;;;19222:228;;19471:41;19484:6;19492:10;19504:1;19507;19510;19471:12;:41::i;:::-;:92;;;;19516:47;19535:6;19543:10;19555:1;19558;19561;19516:18;:47::i;:::-;19463:101;;;;;;-1:-1:-1;;;;;19622:17:0;;;;;;;:9;:17;;;;;;;;:26;;;;;;;;;;;;;:34;;;19672:32;;10872:25:1;;;-1:-1:-1;;;;;;;;;;;19672:32:0;10845:18:1;19672:32:0;;;;;;;18997:715;;;;;;;;:::o;8435:129::-;7432:5;:3;:5::i;:::-;-1:-1:-1;;;;;7418:19:0;:10;-1:-1:-1;;;;;7418:19:0;;7410:57;;;;-1:-1:-1;;;7410:57:0;;;;;;;:::i;:::-;8514:10:::1;;8495:15;:29;;8487:38;;;::::0;::::1;;8544:12;::::0;8536:5:::1;:20:::0;;-1:-1:-1;;;;;;8536:20:0::1;-1:-1:-1::0;;;;;8544:12:0;;::::1;8536:20:::0;;;::::1;::::0;;8435:129::o;10047:209::-;7309:10;10137:4;7300:20;;;:8;:20;;;;;;;;7292:58;;;;-1:-1:-1;;;7292:58:0;;;;;;;:::i;:::-;10154:22:::1;10160:7;10169:6;10154:5;:22::i;:::-;10210:7;-1:-1:-1::0;;;;;10192:34:0::1;10202:6;10192:34;10219:6;10192:34;;;;10872:25:1::0;;10860:2;10845:18;;10827:76;7581:167:0;7617:7;7660:10;;7641:15;:29;7637:81;;-1:-1:-1;7694:12:0;;-1:-1:-1;;;;;7694:12:0;7687:19;;7637:81;-1:-1:-1;7735:5:0;;-1:-1:-1;;;;;7735:5:0;7581:167;:::o;13701:293::-;13863:86;;-1:-1:-1;;;13863:86:0;;13846:4;;-1:-1:-1;;;;;13870:10:0;13863:37;;;;:86;;13901:6;;13917:4;;13924:5;;13931:8;;13941:1;;13944;;13947;;13863:86;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;13967:19;13976:5;13983:2;13967:8;:19::i;8138:141::-;7432:5;:3;:5::i;:::-;-1:-1:-1;;;;;7418:19:0;:10;-1:-1:-1;;;;;7418:19:0;;7410:57;;;;-1:-1:-1;;;7410:57:0;;;;;;;:::i;:::-;8202:13:::1;:21:::0;;-1:-1:-1;;;;;;8202:21:0::1;-1:-1:-1::0;;;;;8202:21:0;::::1;;::::0;;8266:5:::1;::::0;8248:23:::1;::::0;:15:::1;:23;:::i;:::-;8234:11;:37:::0;-1:-1:-1;8138:141:0:o;15556:198::-;15632:4;15649:19;15655:4;15661:6;15649:5;:19::i;:::-;15679:43;-1:-1:-1;;;;;15686:10:0;15679:31;15711:2;15715:6;15679:31;:43::i;:::-;-1:-1:-1;15740:6:0;;15556:198;-1:-1:-1;;15556:198:0:o;16035:268::-;-1:-1:-1;;;;;16111:21:0;;16103:65;;;;-1:-1:-1;;;16103:65:0;;17176:2:1;16103:65:0;;;17158:21:1;17215:2;17195:18;;;17188:30;17254:33;17234:18;;;17227:61;17305:18;;16103:65:0;17148:181:1;16103:65:0;16197:6;16181:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;16214:18:0;;;;;;:9;:18;;;;;:28;;16236:6;;16214:18;:28;;16236:6;;16214:28;:::i;:::-;;;;-1:-1:-1;;16258:37:0;;10872:25:1;;;-1:-1:-1;;;;;16258:37:0;;;16275:1;;-1:-1:-1;;;;;;;;;;;16258:37:0;10860:2:1;10845:18;16258:37:0;;;;;;;;16035:268;;:::o;20666:399::-;20834:110;;-1:-1:-1;;;20834:110:0;;;7620:27:1;20898:16:0;7663:11:1;;;7656:27;7699:12;;;7692:28;;;20778:4:0;;;;7736:12:1;;20834:110:0;;;-1:-1:-1;;20834:110:0;;;;;;;;;20810:135;;20834:110;20810:135;;;;20956:14;20973:24;;;;;;;;;11731:25:1;;;11804:4;11792:17;;11772:18;;;11765:45;;;;11826:18;;;11819:34;;;11869:18;;;11862:34;;;20810:135:0;;-1:-1:-1;20956:14:0;20973:24;;11703:19:1;;20973:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;20973:24:0;;-1:-1:-1;;20973:24:0;;;-1:-1:-1;;;;;;;21016:20:0;;;;;;:40;;;21050:6;-1:-1:-1;;;;;21040:16:0;:6;-1:-1:-1;;;;;21040:16:0;;21008:49;20666:399;-1:-1:-1;;;;;;;;20666:399:0:o;21073:290::-;21191:4;21208:12;21223:20;21232:10;21529:76;;7182:66:1;21529:76:0;;;7170:79:1;21582:16:0;7265:12:1;;;7258:28;7302:12;;;7295:28;;;21492:7:0;;7339:12:1;;21529:76:0;;;;;;;;;;;;21519:87;;;;;;21512:94;;21437:177;;;;21223:20;21271:24;;;21254:14;21271:24;;;;;;;;;11731:25:1;;;11804:4;11792:17;;11772:18;;;11765:45;;;;11826:18;;;11819:34;;;11869:18;;;11862:34;;;21208:35:0;;-1:-1:-1;21254:14:0;21271:24;;11703:19:1;;21271:24:0;11685:217:1;4634:201:0;4758:68;;-1:-1:-1;;;;;8225:15:1;;;4758:68:0;;;8207:34:1;8277:15;;8257:18;;;8250:43;8309:18;;;8302:34;;;4732:95:0;;4751:5;;-1:-1:-1;;;4781:27:0;8142:18:1;;4758:68:0;;;;-1:-1:-1;;4758:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;4758:68:0;-1:-1:-1;;;;;;4758:68:0;;;;;;;;;;4732:18;:95::i;:::-;4634:201;;;;:::o;14789:204::-;14850:4;14875:10;-1:-1:-1;;;;;14875:26:0;;;;;:57;;-1:-1:-1;14905:10:0;-1:-1:-1;;;;;14905:27:0;14927:4;14905:27;;14875:57;14867:66;;;;;;14944:17;14950:2;14954:6;14944:5;:17::i;:::-;-1:-1:-1;14979:6:0;;14789:204;-1:-1:-1;14789:204:0:o;16635:270::-;-1:-1:-1;;;;;16711:21:0;;16703:67;;;;-1:-1:-1;;;16703:67:0;;15593:2:1;16703:67:0;;;15575:21:1;15632:2;15612:18;;;15605:30;15671:34;15651:18;;;15644:62;-1:-1:-1;;;15722:18:1;;;15715:31;15763:19;;16703:67:0;15565:223:1;16703:67:0;-1:-1:-1;;;;;16783:18:0;;;;;;:9;:18;;;;;:28;;16805:6;;16783:18;:28;;16805:6;;16783:28;:::i;:::-;;;;;;;;16838:6;16822:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;16860:37:0;;10872:25:1;;;16886:1:0;;-1:-1:-1;;;;;16860:37:0;;;-1:-1:-1;;;;;;;;;;;16860:37:0;10860:2:1;10845:18;16860:37:0;10827:76:1;10571:502:0;10658:22;;10709:2;10699:12;;;10691:52;;;;-1:-1:-1;;;10691:52:0;;13045:2:1;10691:52:0;;;13027:21:1;13084:2;13064:18;;;13057:30;13123:29;13103:18;;;13096:57;13170:18;;10691:52:0;13017:177:1;10691:52:0;10756:9;10774:8;10784:1;10768:18;;;;;;-1:-1:-1;;;10768:18:0;;;;;;;;;;;;;;;;;10756:30;;10797:10;10816:8;10826:1;10810:18;;;;;;-1:-1:-1;;;10810:18:0;;;;;;;;;;;;;;;;;10797:31;;10839:10;10858:8;10868:1;10852:18;;;;;;-1:-1:-1;;;10852:18:0;;;;;;;;;;;;;;;;;10839:31;;10881:10;10900:8;10910:1;10894:18;;;;;;-1:-1:-1;;;10894:18:0;;;;;;;;;;;;;;;;;10881:31;;10923:10;10942:8;10952:1;10936:18;;;;;;-1:-1:-1;;;10936:18:0;;;;;;;;;;;;;-1:-1:-1;;;;;;10936:18:0;;;;-1:-1:-1;;;;10975:9:0;;;;:23;;;;-1:-1:-1;;;;;;;;;;10988:10:0;;;10975:23;:37;;;;-1:-1:-1;;;;;;;;;;11002:10:0;;;10975:37;:51;;;;-1:-1:-1;;;;;;;;;;11016:10:0;;;10975:51;:65;;;;-1:-1:-1;;;;;;;;;;11030:10:0;;;10975:65;10967:98;;;;-1:-1:-1;;;10967:98:0;;14890:2:1;10967:98:0;;;14872:21:1;14929:2;14909:18;;;14902:30;-1:-1:-1;;;14948:18:1;;;14941:50;15008:18;;10967:98:0;14862:170:1;10967:98:0;10571:502;;;;;;;:::o;4453:173::-;4559:58;;-1:-1:-1;;;;;9214:32:1;;4559:58:0;;;9196:51:1;9263:18;;;9256:34;;;4533:85:0;;4552:5;;-1:-1:-1;;;4582:23:0;9169:18:1;;4559:58:0;9151:145:1;4533:85:0;4453:173;;;:::o;5193:598::-;5281:27;5289:5;-1:-1:-1;;;;;5281:25:0;;:27::i;:::-;5273:71;;;;-1:-1:-1;;;5273:71:0;;16816:2:1;5273:71:0;;;16798:21:1;16855:2;16835:18;;;16828:30;16894:33;16874:18;;;16867:61;16945:18;;5273:71:0;16788:181:1;5273:71:0;5418:12;5432:23;5467:5;-1:-1:-1;;;;;5459:19:0;5479:4;5459:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5417:67;;;;5503:7;5495:52;;;;-1:-1:-1;;;5495:52:0;;13401:2:1;5495:52:0;;;13383:21:1;;;13420:18;;;13413:30;13479:34;13459:18;;;13452:62;13531:18;;5495:52:0;13373:182:1;5495:52:0;5564:17;;:21;5560:224;;5706:10;5695:30;;;;;;;;;;;;:::i;:::-;5687:85;;;;-1:-1:-1;;;5687:85:0;;16405:2:1;5687:85:0;;;16387:21:1;16444:2;16424:18;;;16417:30;16483:34;16463:18;;;16456:62;-1:-1:-1;;;16534:18:1;;;16527:40;16584:19;;5687:85:0;16377:232:1;4013:374:0;4073:4;4296:20;;4139:66;4336:15;;;;;:42;;-1:-1:-1;4355:23:0;;;4328:51;-1:-1:-1;;4013:374:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;192:156;258:20;;318:4;307:16;;297:27;;287:2;;338:1;335;328:12;353:196;;465:2;453:9;444:7;440:23;436:32;433:2;;;486:6;478;471:22;433:2;514:29;533:9;514:29;:::i;554:270::-;;;683:2;671:9;662:7;658:23;654:32;651:2;;;704:6;696;689:22;651:2;732:29;751:9;732:29;:::i;:::-;722:39;;780:38;814:2;803:9;799:18;780:38;:::i;:::-;770:48;;641:183;;;;;:::o;829:338::-;;;;975:2;963:9;954:7;950:23;946:32;943:2;;;996:6;988;981:22;943:2;1024:29;1043:9;1024:29;:::i;:::-;1014:39;;1072:38;1106:2;1095:9;1091:18;1072:38;:::i;:::-;1062:48;;1157:2;1146:9;1142:18;1129:32;1119:42;;933:234;;;;;:::o;1172:616::-;;;;;;;;1384:3;1372:9;1363:7;1359:23;1355:33;1352:2;;;1406:6;1398;1391:22;1352:2;1434:29;1453:9;1434:29;:::i;:::-;1424:39;;1482:38;1516:2;1505:9;1501:18;1482:38;:::i;:::-;1472:48;;1567:2;1556:9;1552:18;1539:32;1529:42;;1618:2;1607:9;1603:18;1590:32;1580:42;;1641:37;1673:3;1662:9;1658:19;1641:37;:::i;:::-;1631:47;;1725:3;1714:9;1710:19;1697:33;1687:43;;1777:3;1766:9;1762:19;1749:33;1739:43;;1342:446;;;;;;;;;;:::o;1793:264::-;;;1922:2;1910:9;1901:7;1897:23;1893:32;1890:2;;;1943:6;1935;1928:22;1890:2;1971:29;1990:9;1971:29;:::i;:::-;1961:39;2047:2;2032:18;;;;2019:32;;-1:-1:-1;;;1880:177:1:o;2062:338::-;;;;2208:2;2196:9;2187:7;2183:23;2179:32;2176:2;;;2229:6;2221;2214:22;2176:2;2257:29;2276:9;2257:29;:::i;:::-;2247:39;;2333:2;2322:9;2318:18;2305:32;2295:42;;2356:38;2390:2;2379:9;2375:18;2356:38;:::i;:::-;2346:48;;2166:234;;;;;:::o;2405:783::-;;;;;2570:2;2558:9;2549:7;2545:23;2541:32;2538:2;;;2591:6;2583;2576:22;2538:2;2619:29;2638:9;2619:29;:::i;:::-;2609:39;;2695:2;2684:9;2680:18;2667:32;2657:42;;2750:2;2739:9;2735:18;2722:32;2773:18;2814:2;2806:6;2803:14;2800:2;;;2835:6;2827;2820:22;2800:2;2878:6;2867:9;2863:22;2853:32;;2923:7;2916:4;2912:2;2908:13;2904:27;2894:2;;2950:6;2942;2935:22;2894:2;2995;2982:16;3021:2;3013:6;3010:14;3007:2;;;3042:6;3034;3027:22;3007:2;3092:7;3087:2;3078:6;3074:2;3070:15;3066:24;3063:37;3060:2;;;3118:6;3110;3103:22;3060:2;2528:660;;;;-1:-1:-1;;3154:2:1;3146:11;;-1:-1:-1;;;2528:660:1:o;3193:616::-;;;;;;;;3405:3;3393:9;3384:7;3380:23;3376:33;3373:2;;;3427:6;3419;3412:22;3373:2;3455:29;3474:9;3455:29;:::i;:::-;3445:39;;3531:2;3520:9;3516:18;3503:32;3493:42;;3582:2;3571:9;3567:18;3554:32;3544:42;;3605:36;3637:2;3626:9;3622:18;3605:36;:::i;:::-;3595:46;;3688:3;3677:9;3673:19;3660:33;3650:43;;3740:3;3729:9;3725:19;3712:33;3702:43;;3764:39;3798:3;3787:9;3783:19;3764:39;:::i;:::-;3754:49;;3363:446;;;;;;;;;;:::o;3814:251::-;;3923:2;3911:9;3902:7;3898:23;3894:32;3891:2;;;3944:6;3936;3929:22;3891:2;3988:9;3975:23;4007:28;4029:5;4007:28;:::i;4070:255::-;;4190:2;4178:9;4169:7;4165:23;4161:32;4158:2;;;4211:6;4203;4196:22;4158:2;4248:9;4242:16;4267:28;4289:5;4267:28;:::i;4330:332::-;;;;4476:2;4464:9;4455:7;4451:23;4447:32;4444:2;;;4497:6;4489;4482:22;4444:2;4538:9;4525:23;4515:33;;4567:38;4601:2;4590:9;4586:18;4567:38;:::i;4667:190::-;;4779:2;4767:9;4758:7;4754:23;4750:32;4747:2;;;4800:6;4792;4785:22;4747:2;-1:-1:-1;4828:23:1;;4737:120;-1:-1:-1;4737:120:1:o;4862:194::-;;4985:2;4973:9;4964:7;4960:23;4956:32;4953:2;;;5006:6;4998;4991:22;4953:2;-1:-1:-1;5034:16:1;;4943:113;-1:-1:-1;4943:113:1:o;5061:264::-;;;5190:2;5178:9;5169:7;5165:23;5161:32;5158:2;;;5211:6;5203;5196:22;5158:2;5252:9;5239:23;5229:33;;5281:38;5315:2;5304:9;5300:18;5281:38;:::i;5330:1035::-;;;5469:2;5457:9;5448:7;5444:23;5440:32;5437:2;;;5490:6;5482;5475:22;5437:2;5531:9;5518:23;5508:33;;5592:2;5581:9;5577:18;5564:32;5615:18;5656:2;5648:6;5645:14;5642:2;;;5677:6;5669;5662:22;5642:2;5720:6;5709:9;5705:22;5695:32;;5765:7;5758:4;5754:2;5750:13;5746:27;5736:2;;5792:6;5784;5777:22;5736:2;5833;5820:16;5855:2;5851;5848:10;5845:2;;;5861:18;;:::i;:::-;5936:2;5930:9;5904:2;5990:13;;-1:-1:-1;;5986:22:1;;;6010:2;5982:31;5978:40;5966:53;;;6034:18;;;6054:22;;;6031:46;6028:2;;;6080:18;;:::i;:::-;6120:10;6116:2;6109:22;6155:2;6147:6;6140:18;6195:7;6190:2;6185;6181;6177:11;6173:20;6170:33;6167:2;;;6221:6;6213;6206:22;6167:2;6282;6277;6273;6269:11;6264:2;6256:6;6252:15;6239:46;6327:6;6322:2;6317;6309:6;6305:15;6301:24;6294:40;6353:6;6343:16;;;;;;;5427:938;;;;;:::o;6370:258::-;;6450:5;6444:12;6477:6;6472:3;6465:19;6493:63;6549:6;6542:4;6537:3;6533:14;6526:4;6519:5;6515:16;6493:63;:::i;:::-;6610:2;6589:15;-1:-1:-1;;6585:29:1;6576:39;;;;6617:4;6572:50;;6420:208;-1:-1:-1;;6420:208:1:o;6633:274::-;;6800:6;6794:13;6816:53;6862:6;6857:3;6850:4;6842:6;6838:17;6816:53;:::i;:::-;6885:16;;;;;6770:137;-1:-1:-1;;6770:137:1:o;8347:670::-;-1:-1:-1;;;;;8714:15:1;;;8696:34;;8766:15;;;;8761:2;8746:18;;8739:43;8813:2;8798:18;;8791:34;;;;8856:2;8841:18;;8834:34;;;;8917:4;8905:17;8899:3;8884:19;;8877:46;8676:3;8939:19;;8932:35;8998:3;8983:19;;8976:35;;;;8645:3;8630:19;;8612:405::o;9301:562::-;-1:-1:-1;;;;;9514:32:1;;9496:51;;9578:2;9563:18;;9556:34;;;9626:2;9621;9606:18;;9599:30;;;9645:18;;9638:34;;;9301:562;9665:6;9715;9709:3;9694:19;;9681:49;9750:22;;;9774:3;9746:32;;;9739:46;;;;9846:2;9825:15;;;-1:-1:-1;;9821:29:1;9806:45;9802:55;;9486:377;-1:-1:-1;;;9486:377:1:o;9868:661::-;10039:2;10091:21;;;10161:13;;10064:18;;;10183:22;;;9868:661;;10039:2;10262:15;;;;10236:2;10221:18;;;9868:661;10308:195;10322:6;10319:1;10316:13;10308:195;;;10387:13;;-1:-1:-1;;;;;10383:39:1;10371:52;;10478:15;;;;10443:12;;;;10419:1;10337:9;10308:195;;;-1:-1:-1;10520:3:1;;10019:510;-1:-1:-1;;;;;;10019:510:1:o;11907:220::-;;12056:2;12045:9;12038:21;12076:45;12117:2;12106:9;12102:18;12094:6;12076:45;:::i;12132:349::-;12334:2;12316:21;;;12373:2;12353:18;;;12346:30;12412:27;12407:2;12392:18;;12385:55;12472:2;12457:18;;12306:175::o;12486:352::-;12688:2;12670:21;;;12727:2;12707:18;;;12700:30;12766;12761:2;12746:18;;12739:58;12829:2;12814:18;;12660:178::o;13560:411::-;13762:2;13744:21;;;13801:2;13781:18;;;13774:30;13840:34;13835:2;13820:18;;13813:62;-1:-1:-1;;;13906:2:1;13891:18;;13884:45;13961:3;13946:19;;13734:237::o;15037:349::-;15239:2;15221:21;;;15278:2;15258:18;;;15251:30;15317:27;15312:2;15297:18;;15290:55;15377:2;15362:18;;15211:175::o;17516:291::-;;17693:6;17682:9;17675:25;17736:2;17731;17720:9;17716:18;17709:30;17756:45;17797:2;17786:9;17782:18;17774:6;17756:45;:::i;18001:128::-;;18072:1;18068:6;18065:1;18062:13;18059:2;;;18078:18;;:::i;:::-;-1:-1:-1;18114:9:1;;18049:80::o;18134:125::-;;18202:1;18199;18196:8;18193:2;;;18207:18;;:::i;:::-;-1:-1:-1;18244:9:1;;18183:76::o;18264:258::-;18336:1;18346:113;18360:6;18357:1;18354:13;18346:113;;;18436:11;;;18430:18;18417:11;;;18410:39;18382:2;18375:10;18346:113;;;18477:6;18474:1;18471:13;18468:2;;;-1:-1:-1;;18512:1:1;18494:16;;18487:27;18317:205::o;18527:380::-;18612:1;18602:12;;18659:1;18649:12;;;18670:2;;18724:4;18716:6;18712:17;18702:27;;18670:2;18777;18769:6;18766:14;18746:18;18743:38;18740:2;;;18823:10;18818:3;18814:20;18811:1;18804:31;18858:4;18855:1;18848:15;18886:4;18883:1;18876:15;18740:2;;18582:325;;;:::o;18912:135::-;;-1:-1:-1;;18972:17:1;;18969:2;;;18992:18;;:::i;:::-;-1:-1:-1;19039:1:1;19028:13;;18959:88::o;19052:127::-;19113:10;19108:3;19104:20;19101:1;19094:31;19144:4;19141:1;19134:15;19168:4;19165:1;19158:15;19184:127;19245:10;19240:3;19236:20;19233:1;19226:31;19276:4;19273:1;19266:15;19300:4;19297:1;19290:15;19316:118;19402:5;19395:13;19388:21;19381:5;19378:32;19368:2;;19424:1;19421;19414:12;19368:2;19358:76;:::o

Swarm Source

ipfs://a6a099c80899d52f35d3cc73a8d5782eaee7171f9ee816bddf00974238447412
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.