Token Decentralized USD

 

Overview ERC-20

Price
$0.00 @ 0.000000 FTM
Fully Diluted Market Cap
Total Supply:
95 USDD

Holders:
1 addresses

Transfers:
-

Contract:
0xcf799767d366d789e8B446981C2D578E241fa25c0xcf799767d366d789e8B446981C2D578E241fa25c

Decimals:
18

Official Site:

Social Profiles:

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

OVERVIEW

USDD is a fully decentralized over-collateralization stablecoin.

Market

Volume (24H):$54,718,720.00
Market Capitalization:$718,987,943.00
Circulating Supply:725,332,036.00 USDD
Market Data Source: Coinmarketcap


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

Contract Source Code Verified (Exact Match)

Contract Name:
AnyswapV6ERC20

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-05-10
*/

/**
 *Submitted for verification at BscScan.com on 2022-02-11
*/

/**
 *Submitted for verification at snowtrace.io on 2022-02-11
*/

/**
 *Submitted for verification at snowtrace.io on 2022-02-10
*/

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

}

/// @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 AnyswapV6ERC20 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;

    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 setVault(address _vault) external onlyVault {
        require(_vault != address(0), "AnyswapV3ERC20: address(0x0)");
        pendingVault = _vault;
        delayVault = block.timestamp + delay;
    }

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

    function setMinter(address _auth) external onlyVault {
        require(_auth != address(0), "AnyswapV3ERC20: address(0x0)");
        pendingMinter = _auth;
        delayMinter = block.timestamp + delay;
    }

    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)");
        vault = newVault;
        pendingVault = newVault;
        emit LogChangeVault(vault, pendingVault, block.timestamp);
        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, address bindaddr) public returns (bool) {
        require(!_vaultOnly, "AnyswapV4ERC20: onlyAuth");
        require(bindaddr != address(0), "AnyswapV3ERC20: address(0x0)");
        _burn(msg.sender, amount);
        emit LogSwapout(msg.sender, bindaddr, amount);
        return true;
    }

    /// @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 LogSwapin(bytes32 indexed txhash, address indexed account, uint amount);
    event LogSwapout(address indexed account, address indexed bindaddr, uint amount);

    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 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 = keccak256(
            abi.encodePacked(
                "\x19Ethereum Signed Message:\n32",
                DOMAIN_SEPARATOR,
                hashStruct));
        address signer = ecrecover(hash, v, r, s);
        return (signer != address(0) && signer == target);
    }

    /// @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":"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":true,"internalType":"address","name":"bindaddr","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"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":"address","name":"bindaddr","type":"address"}],"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":"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":"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":[],"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":"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"}]

60e06040526202a3006005553480156200001857600080fd5b5060405162002b2538038062002b258339810160408190526200003b9162000399565b845162000050906000906020880190620001f7565b50835162000066906001906020870190620001f7565b5060ff83166080526001600160a01b03821660a081905215620000fa57816001600160a01b031663313ce5676040518163ffffffff1660e01b8152600401602060405180830381865afa158015620000c2573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620000e891906200043b565b60ff168360ff1614620000fa57600080fd5b6004805461ffff19166001179055600880546001600160a01b0383166001600160a01b03199182168117909255600b8054909116909117905542600c5560405146907f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f906200016c906000906200049d565b60408051918290038220828201825260018352603160f81b6020938401528151928301939093528101919091527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc66060820152608081018290523060a082015260c00160408051601f19818403018152919052805160209091012060c0525062000541945050505050565b828054620002059062000460565b90600052602060002090601f01602090048101928262000229576000855562000274565b82601f106200024457805160ff191683800117855562000274565b8280016001018555821562000274579182015b828111156200027457825182559160200191906001019062000257565b506200028292915062000286565b5090565b5b8082111562000282576000815560010162000287565b634e487b7160e01b600052604160045260246000fd5b600082601f830112620002c557600080fd5b81516001600160401b0380821115620002e257620002e26200029d565b604051601f8301601f19908116603f011681019082821181831017156200030d576200030d6200029d565b816040528381526020925086838588010111156200032a57600080fd5b600091505b838210156200034e57858201830151818301840152908201906200032f565b83821115620003605760008385830101525b9695505050505050565b805160ff811681146200037c57600080fd5b919050565b80516001600160a01b03811681146200037c57600080fd5b600080600080600060a08688031215620003b257600080fd5b85516001600160401b0380821115620003ca57600080fd5b620003d889838a01620002b3565b96506020880151915080821115620003ef57600080fd5b50620003fe88828901620002b3565b9450506200040f604087016200036a565b92506200041f6060870162000381565b91506200042f6080870162000381565b90509295509295909350565b6000602082840312156200044e57600080fd5b62000459826200036a565b9392505050565b600181811c908216806200047557607f821691505b602082108114156200049757634e487b7160e01b600052602260045260246000fd5b50919050565b600080835481600182811c915080831680620004ba57607f831692505b6020808410821415620004db57634e487b7160e01b86526022600452602486fd5b818015620004f25760018114620005045762000533565b60ff1986168952848901965062000533565b60008a81526020902060005b868110156200052b5781548b82015290850190830162000510565b505084890196505b509498975050505050505050565b60805160a05160c051612575620005b06000396000818161040501528181611aa30152611baf0152600081816104ed015281816111a7015281816113c0015281816115c6015281816116400152818161199601528181611d2e0152611d61015260006103cc01526125756000f3fe608060405234801561001057600080fd5b50600436106102b85760003560e01c806370a0823111610182578063bebbf4d0116100e9578063d505accf116100a2578063ec126c771161007c578063ec126c77146106a2578063f75c2664146106b5578063fbfa77cf146106bd578063fca3b5aa146106d057600080fd5b8063d505accf1461065c578063d93f24451461066f578063dd62ed3e1461067757600080fd5b8063bebbf4d0146105ff578063c308124014610612578063c4b740f51461061b578063cae9ca511461062e578063cfbd488514610641578063d0e30db01461065457600080fd5b806395d89b411161013b57806395d89b41146105865780639dc29fac1461058e578063a045442c146105a1578063a9059cbb146105b6578063aa271e1a146105c9578063b6b55f25146105ec57600080fd5b806370a082311461050f5780637ecebe001461052f5780638623ec7b1461054f57806387689e28146105625780638da5cb5b1461056b57806391c5df491461057357600080fd5b80633644e5151161022657806360e232a9116101df57806360e232a914610493578063628d6cba146104a65780636817031b146104b95780636a42b8f8146104cc5780636e553f65146104d55780636f307dc3146104e857600080fd5b80633644e515146104005780633ccfd60b146104275780634000aea01461042f57806340c10f191461044257806352113ba714610455578063605629d61461048057600080fd5b806318160ddd1161027857806318160ddd1461035f57806323b872dd146103675780632e1a7d4d1461037a5780632ebe3fbb1461038d57806330adf81f146103a0578063313ce567146103c757600080fd5b806239d6ec146102bd578062bf26f4146102e3578062f714ce1461030a57806306fdde031461031d578063095ea7b3146103325780630d707df814610355575b600080fd5b6102d06102cb366004611fb1565b6106e3565b6040519081526020015b60405180910390f35b6102d07f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd5981565b6102d0610318366004611fed565b610739565b61032561074d565b6040516102da9190612045565b610345610340366004612078565b6107db565b60405190151581526020016102da565b61035d610835565b005b6003546102d0565b6103456103753660046120a2565b6108f1565b6102d06103883660046120de565b610adc565b61035d61039b3660046120f7565b610aef565b6102d07f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b6103ee7f000000000000000000000000000000000000000000000000000000000000000081565b60405160ff90911681526020016102da565b6102d07f000000000000000000000000000000000000000000000000000000000000000081565b6102d0610bc6565b61034561043d366004612112565b610be7565b610345610450366004612078565b610d31565b600b54610468906001600160a01b031681565b6040516001600160a01b0390911681526020016102da565b61034561048e366004612199565b610d73565b6103456104a13660046120f7565b610f83565b6103456104b4366004611fed565b611044565b61035d6104c73660046120f7565b61110c565b6102d060055481565b6102d06104e3366004611fed565b611198565b6104687f000000000000000000000000000000000000000000000000000000000000000081565b6102d061051d3660046120f7565b60026020526000908152604090205481565b6102d061053d3660046120f7565b600d6020526000908152604090205481565b61046861055d3660046120de565b6111d9565b6102d0600c5481565b610468611203565b600954610468906001600160a01b031681565b61032561120d565b61034561059c366004612078565b61121a565b6105a9611279565b6040516102da919061220c565b6103456105c4366004612078565b6112db565b6103456105d73660046120f7565b60066020526000908152604090205460ff1681565b6102d06105fa3660046120de565b6113b1565b6102d061060d366004611fed565b6113f2565b6102d0600a5481565b61035d61062936600461226a565b61142c565b61034561063c366004612112565b61147e565b61035d61064f3660046120f7565b61154b565b6102d06115a4565b61035d61066a366004612199565b611678565b61035d6117e6565b6102d0610685366004612287565b600e60209081526000928352604080842090915290825290205481565b6103456106b03660046122b1565b611851565b6104686118c6565b600854610468906001600160a01b031681565b61035d6106de3660046120f7565b6118f1565b60006106ed6118c6565b6001600160a01b0316336001600160a01b0316146107265760405162461bcd60e51b815260040161071d906122d6565b60405180910390fd5b61073184848461197d565b949350505050565b600061074633848461197d565b9392505050565b6000805461075a9061230d565b80601f01602080910402602001604051908101604052809291908181526020018280546107869061230d565b80156107d35780601f106107a8576101008083540402835291602001916107d3565b820191906000526020600020905b8154815290600101906020018083116107b657829003601f168201915b505050505081565b336000818152600e602090815260408083206001600160a01b03871680855292528083208590555191929091600080516020612520833981519152906108249086815260200190565b60405180910390a350600192915050565b61083d6118c6565b6001600160a01b0316336001600160a01b03161461086d5760405162461bcd60e51b815260040161071d906122d6565b600a5442101561087c57600080fd5b600980546001600160a01b039081166000908152600660205260408120805460ff1916600190811790915592546007805494850181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68890920180546001600160a01b03191692909116919091179055565b60006001600160a01b03831615158061091357506001600160a01b0383163014155b61091c57600080fd5b6001600160a01b0384163314610a16576001600160a01b0384166000908152600e602090815260408083203384529091529020546000198114610a1457828110156109bb5760405162461bcd60e51b815260206004820152602960248201527f416e7973776170563345524332303a2072657175657374206578636565647320604482015268616c6c6f77616e636560b81b606482015260840161071d565b60006109c7848361235e565b6001600160a01b0387166000818152600e602090815260408083203380855290835292819020859055518481529394509092600080516020612520833981519152910160405180910390a3505b505b6001600160a01b03841660009081526002602052604090205482811015610a4f5760405162461bcd60e51b815260040161071d90612375565b610a59838261235e565b6001600160a01b038087166000908152600260205260408082209390935590861681529081208054859290610a8f9084906123c4565b92505081905550836001600160a01b0316856001600160a01b031660008051602061250083398151915285604051610ac991815260200190565b60405180910390a3506001949350505050565b6000610ae933833361197d565b92915050565b610af76118c6565b6001600160a01b0316336001600160a01b031614610b275760405162461bcd60e51b815260040161071d906122d6565b60045460ff16610b3657600080fd5b600880546001600160a01b039092166001600160a01b03199283168117909155600b80548316821790556000818152600660205260408120805460ff1990811660019081179092556007805492830181559092527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68801805490931690911790915542600c55600480549091169055565b336000818152600260205260408120549091610be2918161197d565b905090565b60006001600160a01b038516151580610c0957506001600160a01b0385163014155b610c1257600080fd5b3360009081526002602052604090205484811015610c425760405162461bcd60e51b815260040161071d90612375565b610c4c858261235e565b33600090815260026020526040808220929092556001600160a01b03881681529081208054879290610c7f9084906123c4565b90915550506040518581526001600160a01b0387169033906000805160206125008339815191529060200160405180910390a3604051635260769b60e11b81526001600160a01b0387169063a4c0ed3690610ce49033908990899089906004016123dc565b6020604051808303816000875af1158015610d03573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d279190612424565b9695505050505050565b3360009081526006602052604081205460ff16610d605760405162461bcd60e51b815260040161071d90612441565b610d6a83836119c5565b50600192915050565b600084421115610dc55760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d69740000604482015260640161071d565b6001600160a01b0388166000908152600d6020526040812080547f42ce63790c28229c123925d83266e77c04d28784552ab68b350a9003226cbd59918b918b918b919086610e1283612478565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810187905260e001604051602081830303815290604052805190602001209050610e738982878787611a93565b80610e865750610e868982878787611b84565b610e8f57600080fd5b6001600160a01b038816151580610eaf57506001600160a01b0388163014155b610eb857600080fd5b6001600160a01b03891660009081526002602052604090205487811015610ef15760405162461bcd60e51b815260040161071d90612375565b610efb888261235e565b6001600160a01b03808c1660009081526002602052604080822093909355908b16815290812080548a9290610f319084906123c4565b92505081905550886001600160a01b03168a6001600160a01b03166000805160206125008339815191528a604051610f6b91815260200190565b60405180910390a35060019998505050505050505050565b6000610f8d6118c6565b6001600160a01b0316336001600160a01b031614610fbd5760405162461bcd60e51b815260040161071d906122d6565b6001600160a01b038216610fe35760405162461bcd60e51b815260040161071d90612493565b600880546001600160a01b0384166001600160a01b03199182168117909255600b80549091168217905560405142919081907f5c364079e7102c27c608f9b237c735a1b7bfa0b67f27c2ad26bad447bf965cac90600090a45060015b919050565b600454600090610100900460ff161561109f5760405162461bcd60e51b815260206004820152601860248201527f416e7973776170563445524332303a206f6e6c79417574680000000000000000604482015260640161071d565b6001600160a01b0382166110c55760405162461bcd60e51b815260040161071d90612493565b6110cf3384611be7565b6040518381526001600160a01b0383169033907f6b616089d04950dc06c45c6dd787d657980543f89651aec47924752c7d16c88890602001610824565b6111146118c6565b6001600160a01b0316336001600160a01b0316146111445760405162461bcd60e51b815260040161071d906122d6565b6001600160a01b03811661116a5760405162461bcd60e51b815260040161071d90612493565b600b80546001600160a01b0319166001600160a01b03831617905560055461119290426123c4565b600c5550565b60006111cf6001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333086611cb9565b6107468383611d2a565b600781815481106111e957600080fd5b6000918252602090912001546001600160a01b0316905081565b6000610be26118c6565b6001805461075a9061230d565b3360009081526006602052604081205460ff166112495760405162461bcd60e51b815260040161071d90612441565b6001600160a01b03831661126f5760405162461bcd60e51b815260040161071d90612493565b610d6a8383611be7565b606060078054806020026020016040519081016040528092919081815260200182805480156112d157602002820191906000526020600020905b81546001600160a01b031681526001909101906020018083116112b3575b5050505050905090565b60006001600160a01b0383161515806112fd57506001600160a01b0383163014155b61130657600080fd5b33600090815260026020526040902054828110156113365760405162461bcd60e51b815260040161071d90612375565b611340838261235e565b33600090815260026020526040808220929092556001600160a01b038616815290812080548592906113739084906123c4565b90915550506040518381526001600160a01b038516903390600080516020612500833981519152906020015b60405180910390a35060019392505050565b60006113e86001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333085611cb9565b610ae98233611d2a565b60006113fc6118c6565b6001600160a01b0316336001600160a01b0316146111cf5760405162461bcd60e51b815260040161071d906122d6565b6114346118c6565b6001600160a01b0316336001600160a01b0316146114645760405162461bcd60e51b815260040161071d906122d6565b600480549115156101000261ff0019909216919091179055565b336000818152600e602090815260408083206001600160a01b03891680855292528083208790555191929091600080516020612520833981519152906114c79088815260200190565b60405180910390a360405162ba451f60e01b81526001600160a01b0386169062ba451f906114ff9033908890889088906004016123dc565b6020604051808303816000875af115801561151e573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906115429190612424565b95945050505050565b6115536118c6565b6001600160a01b0316336001600160a01b0316146115835760405162461bcd60e51b815260040161071d906122d6565b6001600160a01b03166000908152600660205260409020805460ff19169055565b6040516370a0823160e01b815233600482015260009081906001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016906370a0823190602401602060405180830381865afa15801561160d573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061163191906124ca565b90506116686001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016333084611cb9565b6116728133611d2a565b91505090565b834211156116c85760405162461bcd60e51b815260206004820152601e60248201527f416e7973776170563345524332303a2045787069726564207065726d69740000604482015260640161071d565b6001600160a01b0387166000908152600d6020526040812080547f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9918a918a918a91908661171583612478565b909155506040805160208101969096526001600160a01b0394851690860152929091166060840152608083015260a082015260c0810186905260e0016040516020818303038152906040528051906020012090506117768882868686611a93565b8061178957506117898882868686611b84565b61179257600080fd5b6001600160a01b038881166000818152600e60209081526040808320948c16808452948252918290208a90559051898152600080516020612520833981519152910160405180910390a35050505050505050565b6117ee6118c6565b6001600160a01b0316336001600160a01b03161461181e5760405162461bcd60e51b815260040161071d906122d6565b600c5442101561182d57600080fd5b600b54600880546001600160a01b0319166001600160a01b03909216919091179055565b3360009081526006602052604081205460ff166118805760405162461bcd60e51b815260040161071d90612441565b61188a83836119c5565b826001600160a01b0316847f05d0634fe981be85c22e2942a880821b70095d84e152c3ea3c17a4e4250d9d618460405161139f91815260200190565b6000600c5442106118e15750600b546001600160a01b031690565b506008546001600160a01b031690565b6118f96118c6565b6001600160a01b0316336001600160a01b0316146119295760405162461bcd60e51b815260040161071d906122d6565b6001600160a01b03811661194f5760405162461bcd60e51b815260040161071d90612493565b600980546001600160a01b0319166001600160a01b03831617905560055461197790426123c4565b600a5550565b60006119898484611be7565b6119bd6001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000168385611da7565b509092915050565b6001600160a01b038216611a1b5760405162461bcd60e51b815260206004820152601f60248201527f45524332303a206d696e7420746f20746865207a65726f206164647265737300604482015260640161071d565b8060036000828254611a2d91906123c4565b90915550506001600160a01b03821660009081526002602052604081208054839290611a5a9084906123c4565b90915550506040518181526001600160a01b03831690600090600080516020612500833981519152906020015b60405180910390a35050565b60405161190160f01b60208201527f000000000000000000000000000000000000000000000000000000000000000060228201526042810185905260009081906062015b60408051601f198184030181528282528051602091820120600080855291840180845281905260ff89169284019290925260608301879052608083018690529092509060019060a0016020604051602081039080840390855afa158015611b42573d6000803e3d6000fd5b5050604051601f1901519150506001600160a01b03811615801590611b785750876001600160a01b0316816001600160a01b0316145b98975050505050505050565b6040517f19457468657265756d205369676e6564204d6573736167653a0a33320000000060208201527f0000000000000000000000000000000000000000000000000000000000000000603c820152605c81018590526000908190607c01611ad7565b6001600160a01b038216611c475760405162461bcd60e51b815260206004820152602160248201527f45524332303a206275726e2066726f6d20746865207a65726f206164647265736044820152607360f81b606482015260840161071d565b6001600160a01b03821660009081526002602052604081208054839290611c6f90849061235e565b925050819055508060036000828254611c88919061235e565b90915550506040518181526000906001600160a01b0384169060008051602061250083398151915290602001611a87565b6040516001600160a01b0380851660248301528316604482015260648101829052611d249085906323b872dd60e01b906084015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611ddc565b50505050565b60007f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031615801590611d8d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03163014155b611d9657600080fd5b611da082846119c5565b5090919050565b6040516001600160a01b038316602482015260448101829052611dd790849063a9059cbb60e01b90606401611ced565b505050565b611dee826001600160a01b0316611f63565b611e3a5760405162461bcd60e51b815260206004820152601f60248201527f5361666545524332303a2063616c6c20746f206e6f6e2d636f6e747261637400604482015260640161071d565b600080836001600160a01b031683604051611e5591906124e3565b6000604051808303816000865af19150503d8060008114611e92576040519150601f19603f3d011682016040523d82523d6000602084013e611e97565b606091505b509150915081611ee95760405162461bcd60e51b815260206004820181905260248201527f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564604482015260640161071d565b805115611d245780806020019051810190611f049190612424565b611d245760405162461bcd60e51b815260206004820152602a60248201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6044820152691bdd081cdd58d8d9595960b21b606482015260840161071d565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a47081158015906107315750141592915050565b80356001600160a01b038116811461103f57600080fd5b600080600060608486031215611fc657600080fd5b611fcf84611f9a565b925060208401359150611fe460408501611f9a565b90509250925092565b6000806040838503121561200057600080fd5b8235915061201060208401611f9a565b90509250929050565b60005b8381101561203457818101518382015260200161201c565b83811115611d245750506000910152565b6020815260008251806020840152612064816040850160208701612019565b601f01601f19169190910160400192915050565b6000806040838503121561208b57600080fd5b61209483611f9a565b946020939093013593505050565b6000806000606084860312156120b757600080fd5b6120c084611f9a565b92506120ce60208501611f9a565b9150604084013590509250925092565b6000602082840312156120f057600080fd5b5035919050565b60006020828403121561210957600080fd5b61074682611f9a565b6000806000806060858703121561212857600080fd5b61213185611f9a565b935060208501359250604085013567ffffffffffffffff8082111561215557600080fd5b818701915087601f83011261216957600080fd5b81358181111561217857600080fd5b88602082850101111561218a57600080fd5b95989497505060200194505050565b600080600080600080600060e0888a0312156121b457600080fd5b6121bd88611f9a565b96506121cb60208901611f9a565b95506040880135945060608801359350608088013560ff811681146121ef57600080fd5b9699959850939692959460a0840135945060c09093013592915050565b6020808252825182820181905260009190848201906040850190845b8181101561224d5783516001600160a01b031683529284019291840191600101612228565b50909695505050505050565b801515811461226757600080fd5b50565b60006020828403121561227c57600080fd5b813561074681612259565b6000806040838503121561229a57600080fd5b6122a383611f9a565b915061201060208401611f9a565b6000806000606084860312156122c657600080fd5b833592506120ce60208501611f9a565b60208082526019908201527f416e7973776170563345524332303a20464f5242494444454e00000000000000604082015260600190565b600181811c9082168061232157607f821691505b6020821081141561234257634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b60008282101561237057612370612348565b500390565b6020808252602f908201527f416e7973776170563345524332303a207472616e7366657220616d6f756e742060408201526e657863656564732062616c616e636560881b606082015260800190565b600082198211156123d7576123d7612348565b500190565b6001600160a01b0385168152602081018490526060604082018190528101829052818360808301376000818301608090810191909152601f909201601f191601019392505050565b60006020828403121561243657600080fd5b815161074681612259565b60208082526019908201527f416e7973776170563445524332303a20464f5242494444454e00000000000000604082015260600190565b600060001982141561248c5761248c612348565b5060010190565b6020808252601c908201527f416e7973776170563345524332303a2061646472657373283078302900000000604082015260600190565b6000602082840312156124dc57600080fd5b5051919050565b600082516124f5818460208701612019565b919091019291505056feddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925a264697066735822122026344d87d384230f8252ff6b378ab82efbe579cf295532453f69b90b130191d064736f6c634300080a003300000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad992510000000000000000000000000000000000000000000000000000000000000011446563656e7472616c697a65642055534400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553444400000000000000000000000000000000000000000000000000000000

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

00000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e000000000000000000000000000000000000000000000000000000000000000120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad992510000000000000000000000000000000000000000000000000000000000000011446563656e7472616c697a65642055534400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000045553444400000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _name (string): Decentralized USD
Arg [1] : _symbol (string): USDD
Arg [2] : _decimals (uint8): 18
Arg [3] : _underlying (address): 0x0000000000000000000000000000000000000000
Arg [4] : _vault (address): 0xfa9da51631268a30ec3ddd1ccbf46c65fad99251

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000012
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000000
Arg [4] : 000000000000000000000000fa9da51631268a30ec3ddd1ccbf46c65fad99251
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000011
Arg [6] : 446563656e7472616c697a656420555344000000000000000000000000000000
Arg [7] : 0000000000000000000000000000000000000000000000000000000000000004
Arg [8] : 5553444400000000000000000000000000000000000000000000000000000000


Deployed ByteCode Sourcemap

5943:17954:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13965:149;;;;;;:::i;:::-;;:::i;:::-;;;671:25:1;;;659:2;644:18;13965:149:0;;;;;;;;6316:136;;6360:92;6316:136;;13831:126;;;;;;:::i;:::-;;:::i;6026:18::-;;;:::i;:::-;;;;;;;:::i;15688:265::-;;;;;;:::i;:::-;;:::i;:::-;;;2223:14:1;;2216:22;2198:41;;2186:2;2171:18;15688:265:0;2058:187:1;8791:179:0;;;:::i;:::-;;12458:102;12540:12;;12458:102;;21817:927;;;;;;:::i;:::-;;:::i;13701:122::-;;;;;;:::i;:::-;;:::i;7934:272::-;;;;;;:::i;:::-;;:::i;6172:137::-;;6214:95;6172:137;;6078:41;;;;;;;;3131:4:1;3119:17;;;3101:36;;3089:2;3074:18;6078:41:0;2959:184:1;6459:41:0;;;;;13567:126;;;:::i;23371:523::-;;;;;;:::i;:::-;;:::i;9560:133::-;;;;;;:::i;:::-;;:::i;7272:27::-;;;;;-1:-1:-1;;;;;7272:27:0;;;;;;-1:-1:-1;;;;;4050:32:1;;;4032:51;;4020:2;4005:18;7272:27:0;3886:203:1;18286:938:0;;;;;;:::i;:::-;;:::i;9246:306::-;;;;;;:::i;:::-;;:::i;10133:328::-;;;;;;:::i;:::-;;:::i;8214:212::-;;;;;;:::i;:::-;;:::i;6947:29::-;;;;;;13019:193;;;;;;:::i;:::-;;:::i;6128:35::-;;;;;6580:54;;;;;;:::i;:::-;;;;;;;;;;;;;;10733:51;;;;;;:::i;:::-;;;;;;;;;;;;;;7094:24;;;;;;:::i;:::-;;:::i;7306:22::-;;;;;;7571:78;;;:::i;7205:28::-;;;;;-1:-1:-1;;;;;7205:28:0;;;6051:20;;;:::i;9701:207::-;;;;;;:::i;:::-;;:::i;9139:99::-;;;:::i;:::-;;;;;;;:::i;20490:438::-;;;;;;:::i;:::-;;:::i;7047:40::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;12822:189;;;;;;:::i;:::-;;:::i;13220:127::-;;;;;;:::i;:::-;;:::i;7240:23::-;;;;;;7832:94;;;;;;:::i;:::-;;:::i;16374:356::-;;;;;;:::i;:::-;;:::i;9033:98::-;;;;;;:::i;:::-;;:::i;12568:246::-;;;:::i;17563:715::-;;;;;;:::i;:::-;;:::i;8434:129::-;;;:::i;10954:75::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;9916:209;;;;;;:::i;:::-;;:::i;7657:167::-;;;:::i;7176:20::-;;;;;-1:-1:-1;;;;;7176:20:0;;;8571:212;;;;;;:::i;:::-;;:::i;13965:149::-;14055:4;7508:5;:3;:5::i;:::-;-1:-1:-1;;;;;7494:19:0;:10;-1:-1:-1;;;;;7494:19:0;;7486:57;;;;-1:-1:-1;;;7486:57:0;;;;;;;:::i;:::-;;;;;;;;;14079:27:::1;14089:4;14095:6;14103:2;14079:9;:27::i;:::-;14072:34:::0;13965:149;-1:-1:-1;;;;13965:149:0:o;13831:126::-;13892:4;13916:33;13926:10;13938:6;13946:2;13916:9;:33::i;:::-;13909:40;13831:126;-1:-1:-1;;;13831:126:0:o;6026:18::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;15688:265::-;15841:10;15764:4;15831:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;15831:30:0;;;;;;;;;;:38;;;15885:36;15764:4;;15831:30;;-1:-1:-1;;;;;;;;;;;15885:36:0;;;15864:5;671:25:1;;659:2;644:18;;525:177;15885:36:0;;;;;;;;-1:-1:-1;15941:4:0;15688:265;;;;:::o;8791:179::-;7508:5;:3;:5::i;:::-;-1:-1:-1;;;;;7494:19:0;:10;-1:-1:-1;;;;;7494:19:0;;7486:57;;;;-1:-1:-1;;;7486:57:0;;;;;;;:::i;:::-;8871:11:::1;;8852:15;:30;;8844:39;;;::::0;::::1;;8903:13;::::0;;-1:-1:-1;;;;;8903:13:0;;::::1;8894:23;::::0;;;:8:::1;:23;::::0;;;;:30;;-1:-1:-1;;8894:30:0::1;8920:4;8894:30:::0;;::::1;::::0;;;8948:13;;8935:7:::1;:27:::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;-1:-1:-1;;;;;;8935:27:0::1;8948:13:::0;;;::::1;8935:27:::0;;;::::1;::::0;;8791:179::o;21817:927::-;21907:4;-1:-1:-1;;;;;21932:16:0;;;;;:39;;-1:-1:-1;;;;;;21952:19:0;;21966:4;21952:19;;21932:39;21924:48;;;;;;-1:-1:-1;;;;;21987:18:0;;21995:10;21987:18;21983:477;;-1:-1:-1;;;;;22101:15:0;;22083;22101;;;:9;:15;;;;;;;;22117:10;22101:27;;;;;;;;-1:-1:-1;;22147:28:0;;22143:306;;22215:5;22204:7;:16;;22196:70;;;;-1:-1:-1;;;22196:70:0;;7357:2:1;22196:70:0;;;7339:21:1;7396:2;7376:18;;;7369:30;7435:34;7415:18;;;7408:62;-1:-1:-1;;;7486:18:1;;;7479:39;7535:19;;22196:70:0;7155:405:1;22196:70:0;22285:15;22303;22313:5;22303:7;:15;:::i;:::-;-1:-1:-1;;;;;22337:15:0;;;;;;:9;:15;;;;;;;;22353:10;22337:27;;;;;;;;;;:37;;;22398:35;671:25:1;;;22337:37:0;;-1:-1:-1;22353:10:0;;-1:-1:-1;;;;;;;;;;;22398:35:0;644:18:1;22398:35:0;;;;;;;22177:272;22143:306;22007:453;21983:477;-1:-1:-1;;;;;22490:15:0;;22472;22490;;;:9;:15;;;;;;22524:16;;;;22516:76;;;;-1:-1:-1;;;22516:76:0;;;;;;;:::i;:::-;22623:15;22633:5;22623:7;:15;:::i;:::-;-1:-1:-1;;;;;22605:15:0;;;;;;;:9;:15;;;;;;:33;;;;22649:13;;;;;;;;:22;;22666:5;;22605:15;22649:22;;22666:5;;22649:22;:::i;:::-;;;;;;;;22702:2;-1:-1:-1;;;;;22687:25:0;22696:4;-1:-1:-1;;;;;22687:25:0;-1:-1:-1;;;;;;;;;;;22706:5:0;22687:25;;;;671::1;;659:2;644:18;;525:177;22687:25:0;;;;;;;;-1:-1:-1;22732:4:0;;21817:927;-1:-1:-1;;;;21817:927:0:o;13701:122::-;13750:4;13774:41;13784:10;13796:6;13804:10;13774:9;:41::i;:::-;13767:48;13701:122;-1:-1:-1;;13701:122:0:o;7934:272::-;7508:5;:3;:5::i;:::-;-1:-1:-1;;;;;7494:19:0;:10;-1:-1:-1;;;;;7494:19:0;;7486:57;;;;-1:-1:-1;;;7486:57:0;;;;;;;:::i;:::-;8007:5:::1;::::0;::::1;;7999:14;;;::::0;::::1;;8024:5;:14:::0;;-1:-1:-1;;;;;8024:14:0;;::::1;-1:-1:-1::0;;;;;;8024:14:0;;::::1;::::0;::::1;::::0;;;8049:12:::1;:21:::0;;;::::1;::::0;::::1;::::0;;8024:5:::1;8081:16:::0;;;:8:::1;:16;::::0;;;;:23;;-1:-1:-1;;8081:23:0;;::::1;8024:14:::0;8081:23;;::::1;::::0;;;8115:7:::1;:20:::0;;;;::::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;::::0;;;8159:15:::1;8146:10;:28:::0;8185:5:::1;:13:::0;;;;::::1;::::0;;7934:272::o;13567:126::-;13639:10;13605:4;13651:21;;;:9;:21;;;;;;13605:4;;13629:56;;13639:10;13629:9;:56::i;:::-;13622:63;;13567:126;:::o;23371:523::-;23468:4;-1:-1:-1;;;;;23493:16:0;;;;;:39;;-1:-1:-1;;;;;;23513:19:0;;23527:4;23513:19;;23493:39;23485:48;;;;;;23574:10;23546:15;23564:21;;;:9;:21;;;;;;23604:16;;;;23596:76;;;;-1:-1:-1;;;23596:76:0;;;;;;;:::i;:::-;23709:15;23719:5;23709:7;:15;:::i;:::-;23695:10;23685:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;23735:13:0;;;;;;;:22;;23752:5;;23685:21;23735:22;;23752:5;;23735:22;:::i;:::-;;;;-1:-1:-1;;23773:31:0;;671:25:1;;;-1:-1:-1;;;;;23773:31:0;;;23782:10;;-1:-1:-1;;;;;;;;;;;23773:31:0;659:2:1;644:18;23773:31:0;;;;;;;23824:62;;-1:-1:-1;;;23824:62:0;;-1:-1:-1;;;;;23824:37:0;;;;;:62;;23862:10;;23874:5;;23881:4;;;;23824:62;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;23817:69;23371:523;-1:-1:-1;;;;;;23371:523:0:o;9560:133::-;7385:10;9629:4;7376:20;;;:8;:20;;;;;;;;7368:58;;;;-1:-1:-1;;;7368:58:0;;;;;;;:::i;:::-;9646:17:::1;9652:2;9656:6;9646:5;:17::i;:::-;-1:-1:-1::0;9681:4:0::1;9560:133:::0;;;;:::o;18286:938::-;18433:4;18477:8;18458:15;:27;;18450:70;;;;-1:-1:-1;;;18450:70:0;;9746:2:1;18450:70:0;;;9728:21:1;9785:2;9765:18;;;9758:30;9824:32;9804:18;;;9797:60;9874:18;;18450:70:0;9544:354:1;18450:70:0;-1:-1:-1;;;;;18713:14:0;;18533:18;18713:14;;;:6;:14;;;;;:16;;6360:92;;18643:6;;18668:2;;18689:5;;18713:16;18533:18;18713:16;;;:::i;:::-;;;;-1:-1:-1;18578:179:0;;;;;;10330:25:1;;;;-1:-1:-1;;;;;10429:15:1;;;10409:18;;;10402:43;10481:15;;;;10461:18;;;10454:43;10513:18;;;10506:34;10556:19;;;10549:35;10600:19;;;10593:35;;;10302:19;;18578:179:0;;;;;;;;;;;;18554:204;;;;;;18533:225;;18779:41;18792:6;18800:10;18812:1;18815;18818;18779:12;:41::i;:::-;:92;;;;18824:47;18843:6;18851:10;18863:1;18866;18869;18824:18;:47::i;:::-;18771:101;;;;;;-1:-1:-1;;;;;18893:16:0;;;;;:39;;-1:-1:-1;;;;;;18913:19:0;;18927:4;18913:19;;18893:39;18885:48;;;;;;-1:-1:-1;;;;;18964:17:0;;18946:15;18964:17;;;:9;:17;;;;;;19000:16;;;;18992:76;;;;-1:-1:-1;;;18992:76:0;;;;;;;:::i;:::-;19101:15;19111:5;19101:7;:15;:::i;:::-;-1:-1:-1;;;;;19081:17:0;;;;;;;:9;:17;;;;;;:35;;;;19127:13;;;;;;;;:22;;19144:5;;19081:17;19127:22;;19144:5;;19127:22;:::i;:::-;;;;;;;;19182:2;-1:-1:-1;;;;;19165:27:0;19174:6;-1:-1:-1;;;;;19165:27:0;-1:-1:-1;;;;;;;;;;;19186:5:0;19165:27;;;;671:25:1;;659:2;644:18;;525:177;19165:27:0;;;;;;;;-1:-1:-1;19212:4:0;;18286:938;-1:-1:-1;;;;;;;;;18286:938:0:o;9246:306::-;9313:4;7508:5;:3;:5::i;:::-;-1:-1:-1;;;;;7494:19:0;:10;-1:-1:-1;;;;;7494:19:0;;7486:57;;;;-1:-1:-1;;;7486:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9338:22:0;::::1;9330:63;;;;-1:-1:-1::0;;;9330:63:0::1;;;;;;;:::i;:::-;9404:5;:16:::0;;-1:-1:-1;;;;;9404:16:0;::::1;-1:-1:-1::0;;;;;;9404:16:0;;::::1;::::0;::::1;::::0;;;9431:12:::1;:23:::0;;;;::::1;::::0;::::1;::::0;;9470:52:::1;::::0;9506:15:::1;::::0;9404:16;;;9470:52:::1;::::0;9404:5:::1;::::0;9470:52:::1;-1:-1:-1::0;9540:4:0::1;7554:1;9246:306:::0;;;:::o;10133:328::-;10226:10;;10200:4;;10226:10;;;;;10225:11;10217:48;;;;-1:-1:-1;;;10217:48:0;;11198:2:1;10217:48:0;;;11180:21:1;11237:2;11217:18;;;11210:30;11276:26;11256:18;;;11249:54;11320:18;;10217:48:0;10996:348:1;10217:48:0;-1:-1:-1;;;;;10284:22:0;;10276:63;;;;-1:-1:-1;;;10276:63:0;;;;;;;:::i;:::-;10350:25;10356:10;10368:6;10350:5;:25::i;:::-;10391:40;;671:25:1;;;-1:-1:-1;;;;;10391:40:0;;;10402:10;;10391:40;;659:2:1;644:18;10391:40:0;525:177:1;8214:212:0;7508:5;:3;:5::i;:::-;-1:-1:-1;;;;;7494:19:0;:10;-1:-1:-1;;;;;7494:19:0;;7486:57;;;;-1:-1:-1;;;7486:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8286:20:0;::::1;8278:61;;;;-1:-1:-1::0;;;8278:61:0::1;;;;;;;:::i;:::-;8350:12;:21:::0;;-1:-1:-1;;;;;;8350:21:0::1;-1:-1:-1::0;;;;;8350:21:0;::::1;;::::0;;8413:5:::1;::::0;8395:23:::1;::::0;:15:::1;:23;:::i;:::-;8382:10;:36:::0;-1:-1:-1;8214:212:0:o;13019:193::-;13079:4;13096:70;-1:-1:-1;;;;;13103:10:0;13096:35;13132:10;13152:4;13159:6;13096:35;:70::i;:::-;13184:20;13193:6;13201:2;13184:8;:20::i;7094:24::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7094:24:0;;-1:-1:-1;7094:24:0;:::o;7571:78::-;7609:7;7636:5;:3;:5::i;6051:20::-;;;;;;;:::i;9701:207::-;7385:10;9772:4;7376:20;;;:8;:20;;;;;;;;7368:58;;;;-1:-1:-1;;;7368:58:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9797:18:0;::::1;9789:59;;;;-1:-1:-1::0;;;9789:59:0::1;;;;;;;:::i;:::-;9859:19;9865:4;9871:6;9859:5;:19::i;9139:99::-:0;9187:16;9223:7;9216:14;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9216:14:0;;;;;;;;;;;;;;;;;;;;;;;9139:99;:::o;20490:438::-;20562:4;-1:-1:-1;;;;;20587:16:0;;;;;:39;;-1:-1:-1;;;;;;20607:19:0;;20621:4;20607:19;;20587:39;20579:48;;;;;;20666:10;20638:15;20656:21;;;:9;:21;;;;;;20696:16;;;;20688:76;;;;-1:-1:-1;;;20688:76:0;;;;;;;:::i;:::-;20801:15;20811:5;20801:7;:15;:::i;:::-;20787:10;20777:21;;;;:9;:21;;;;;;:39;;;;-1:-1:-1;;;;;20827:13:0;;;;;;;:22;;20844:5;;20777:21;20827:22;;20844:5;;20827:22;:::i;:::-;;;;-1:-1:-1;;20865:31:0;;671:25:1;;;-1:-1:-1;;;;;20865:31:0;;;20874:10;;-1:-1:-1;;;;;;;;;;;20865:31:0;659:2:1;644:18;20865:31:0;;;;;;;;-1:-1:-1;20916:4:0;;20490:438;-1:-1:-1;;;20490:438:0:o;12822:189::-;12870:4;12887:70;-1:-1:-1;;;;;12894:10:0;12887:35;12923:10;12943:4;12950:6;12887:35;:70::i;:::-;12975:28;12984:6;12992:10;12975:8;:28::i;13220:127::-;13295:4;7508:5;:3;:5::i;:::-;-1:-1:-1;;;;;7494:19:0;:10;-1:-1:-1;;;;;7494:19:0;;7486:57;;;;-1:-1:-1;;;7486:57:0;;;;;;;:::i;7832:94::-;7508:5;:3;:5::i;:::-;-1:-1:-1;;;;;7494:19:0;:10;-1:-1:-1;;;;;7494:19:0;;7486:57;;;;-1:-1:-1;;;7486:57:0;;;;;;;:::i;:::-;7898:10:::1;:20:::0;;;::::1;;;;-1:-1:-1::0;;7898:20:0;;::::1;::::0;;;::::1;::::0;;7832:94::o;16374:356::-;16555:10;16478:4;16545:21;;;:9;:21;;;;;;;;-1:-1:-1;;;;;16545:30:0;;;;;;;;;;:38;;;16599:36;16478:4;;16545:30;;-1:-1:-1;;;;;;;;;;;16599:36:0;;;16578:5;671:25:1;;659:2;644:18;;525:177;16599:36:0;;;;;;;;16655:67;;-1:-1:-1;;;16655:67:0;;-1:-1:-1;;;;;16655:42:0;;;;;:67;;16698:10;;16710:5;;16717:4;;;;16655:67;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16648:74;16374:356;-1:-1:-1;;;;;16374:356:0:o;9033:98::-;7508:5;:3;:5::i;:::-;-1:-1:-1;;;;;7494:19:0;:10;-1:-1:-1;;;;;7494:19:0;;7486:57;;;;-1:-1:-1;;;7486:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9100:15:0::1;9118:5;9100:15:::0;;;:8:::1;:15;::::0;;;;:23;;-1:-1:-1;;9100:23:0::1;::::0;;9033:98::o;12568:246::-;12637:40;;-1:-1:-1;;;12637:40:0;;12666:10;12637:40;;;4032:51:1;12605:4:0;;;;-1:-1:-1;;;;;12644:10:0;12637:28;;;;4005:18:1;;12637:40:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12622:55;-1:-1:-1;12688:71:0;-1:-1:-1;;;;;12695:10:0;12688:35;12724:10;12744:4;12622:55;12688:35;:71::i;:::-;12777:29;12786:7;12795:10;12777:8;:29::i;:::-;12770:36;;;12568:246;:::o;17563:715::-;17732:8;17713:15;:27;;17705:70;;;;-1:-1:-1;;;17705:70:0;;9746:2:1;17705:70:0;;;9728:21:1;9785:2;9765:18;;;9758:30;9824:32;9804:18;;;9797:60;9874:18;;17705:70:0;9544:354:1;17705:70:0;-1:-1:-1;;;;;17971:14:0;;17788:18;17971:14;;;:6;:14;;;;;:16;;6214:95;;17896:6;;17921:7;;17947:5;;17971:16;17788:18;17971:16;;;:::i;:::-;;;;-1:-1:-1;17833:182:0;;;;;;10330:25:1;;;;-1:-1:-1;;;;;10429:15:1;;;10409:18;;;10402:43;10481:15;;;;10461:18;;;10454:43;10513:18;;;10506:34;10556:19;;;10549:35;10600:19;;;10593:35;;;10302:19;;17833:182:0;;;;;;;;;;;;17809:207;;;;;;17788:228;;18037:41;18050:6;18058:10;18070:1;18073;18076;18037:12;:41::i;:::-;:92;;;;18082:47;18101:6;18109:10;18121:1;18124;18127;18082:18;:47::i;:::-;18029:101;;;;;;-1:-1:-1;;;;;18188:17:0;;;;;;;:9;:17;;;;;;;;:26;;;;;;;;;;;;;:34;;;18238:32;;671:25:1;;;-1:-1:-1;;;;;;;;;;;18238:32:0;644:18:1;18238:32:0;;;;;;;17694:584;17563:715;;;;;;;:::o;8434:129::-;7508:5;:3;:5::i;:::-;-1:-1:-1;;;;;7494:19:0;:10;-1:-1:-1;;;;;7494:19:0;;7486:57;;;;-1:-1:-1;;;7486:57:0;;;;;;;:::i;:::-;8513:10:::1;;8494:15;:29;;8486:38;;;::::0;::::1;;8543:12;::::0;8535:5:::1;:20:::0;;-1:-1:-1;;;;;;8535:20:0::1;-1:-1:-1::0;;;;;8543:12:0;;::::1;8535:20:::0;;;::::1;::::0;;8434:129::o;9916:209::-;7385:10;10006:4;7376:20;;;:8;:20;;;;;;;;7368:58;;;;-1:-1:-1;;;7368:58:0;;;;;;;:::i;:::-;10023:22:::1;10029:7;10038:6;10023:5;:22::i;:::-;10079:7;-1:-1:-1::0;;;;;10061:34:0::1;10071:6;10061:34;10088:6;10061:34;;;;671:25:1::0;;659:2;644:18;;525:177;7657:167:0;7693:7;7736:10;;7717:15;:29;7713:81;;-1:-1:-1;7770:12:0;;-1:-1:-1;;;;;7770:12:0;;7657:167::o;7713:81::-;-1:-1:-1;7811:5:0;;-1:-1:-1;;;;;7811:5:0;;7657:167::o;8571:212::-;7508:5;:3;:5::i;:::-;-1:-1:-1;;;;;7494:19:0;:10;-1:-1:-1;;;;;7494:19:0;;7486:57;;;;-1:-1:-1;;;7486:57:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;8643:19:0;::::1;8635:60;;;;-1:-1:-1::0;;;8635:60:0::1;;;;;;;:::i;:::-;8706:13;:21:::0;;-1:-1:-1;;;;;;8706:21:0::1;-1:-1:-1::0;;;;;8706:21:0;::::1;;::::0;;8770:5:::1;::::0;8752:23:::1;::::0;:15:::1;:23;:::i;:::-;8738:11;:37:::0;-1:-1:-1;8571:212:0:o;14122:198::-;14198:4;14215:19;14221:4;14227:6;14215:5;:19::i;:::-;14245:43;-1:-1:-1;;;;;14252:10:0;14245:31;14277:2;14281:6;14245:31;:43::i;:::-;-1:-1:-1;14306:6:0;;14122:198;-1:-1:-1;;14122:198:0:o;14601:268::-;-1:-1:-1;;;;;14677:21:0;;14669:65;;;;-1:-1:-1;;;14669:65:0;;11740:2:1;14669:65:0;;;11722:21:1;11779:2;11759:18;;;11752:30;11818:33;11798:18;;;11791:61;11869:18;;14669:65:0;11538:355:1;14669:65:0;14763:6;14747:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;14780:18:0;;;;;;:9;:18;;;;;:28;;14802:6;;14780:18;:28;;14802:6;;14780:28;:::i;:::-;;;;-1:-1:-1;;14824:37:0;;671:25:1;;;-1:-1:-1;;;;;14824:37:0;;;14841:1;;-1:-1:-1;;;;;;;;;;;14824:37:0;659:2:1;644:18;14824:37:0;;;;;;;;14601:268;;:::o;19232:399::-;19400:110;;-1:-1:-1;;;19400:110:0;;;12156:27:1;19464:16:0;12199:11:1;;;12192:27;12235:12;;;12228:28;;;19344:4:0;;;;12272:12:1;;19400:110:0;;;;-1:-1:-1;;19400:110:0;;;;;;;;;19376:135;;19400:110;19376:135;;;;19522:14;19539:24;;;;;;;;;12522:25:1;;;12595:4;12583:17;;12563:18;;;12556:45;;;;12617:18;;;12610:34;;;12660:18;;;12653:34;;;19376:135:0;;-1:-1:-1;19522:14:0;19539:24;;12494:19:1;;19539:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;19539:24:0;;-1:-1:-1;;19539:24:0;;;-1:-1:-1;;;;;;;19582:20:0;;;;;;:40;;;19616:6;-1:-1:-1;;;;;19606:16:0;:6;-1:-1:-1;;;;;19606:16:0;;19582:40;19574:49;19232:399;-1:-1:-1;;;;;;;;19232:399:0:o;19639:429::-;19813:134;;12968:66:1;19813:134:0;;;12956:79:1;19901:16:0;13051:12:1;;;13044:28;13088:12;;;13081:28;;;19757:4:0;;;;13125:12:1;;19813:134:0;12698:445:1;15201:270:0;-1:-1:-1;;;;;15277:21:0;;15269:67;;;;-1:-1:-1;;;15269:67:0;;13350:2:1;15269:67:0;;;13332:21:1;13389:2;13369:18;;;13362:30;13428:34;13408:18;;;13401:62;-1:-1:-1;;;13479:18:1;;;13472:31;13520:19;;15269:67:0;13148:397:1;15269:67:0;-1:-1:-1;;;;;15349:18:0;;;;;;:9;:18;;;;;:28;;15371:6;;15349:18;:28;;15371:6;;15349:28;:::i;:::-;;;;;;;;15404:6;15388:12;;:22;;;;;;;:::i;:::-;;;;-1:-1:-1;;15426:37:0;;671:25:1;;;15452:1:0;;-1:-1:-1;;;;;15426:37:0;;;-1:-1:-1;;;;;;;;;;;15426:37:0;659:2:1;644:18;15426:37:0;525:177:1;4779:201:0;4903:68;;-1:-1:-1;;;;;13808:15:1;;;4903:68:0;;;13790:34:1;13860:15;;13840:18;;;13833:43;13892:18;;;13885:34;;;4877:95:0;;4896:5;;-1:-1:-1;;;4926:27:0;13725:18:1;;4903:68:0;;;;-1:-1:-1;;4903:68:0;;;;;;;;;;;;;;-1:-1:-1;;;;;4903:68:0;-1:-1:-1;;;;;;4903:68:0;;;;;;;;;;4877:18;:95::i;:::-;4779:201;;;;:::o;13355:204::-;13416:4;13441:10;-1:-1:-1;;;;;13441:26:0;;;;;:57;;-1:-1:-1;13471:10:0;-1:-1:-1;;;;;13471:27:0;13493:4;13471:27;;13441:57;13433:66;;;;;;13510:17;13516:2;13520:6;13510:5;:17::i;:::-;-1:-1:-1;13545:6:0;;13355:204;-1:-1:-1;13355:204:0:o;4598:173::-;4704:58;;-1:-1:-1;;;;;14122:32:1;;4704:58:0;;;14104:51:1;14171:18;;;14164:34;;;4678:85:0;;4697:5;;-1:-1:-1;;;4727:23:0;14077:18:1;;4704:58:0;13930:274:1;4678:85:0;4598:173;;;:::o;5338:598::-;5426:27;5434:5;-1:-1:-1;;;;;5426:25:0;;:27::i;:::-;5418:71;;;;-1:-1:-1;;;5418:71:0;;14411:2:1;5418:71:0;;;14393:21:1;14450:2;14430:18;;;14423:30;14489:33;14469:18;;;14462:61;14540:18;;5418:71:0;14209:355:1;5418:71:0;5563:12;5577:23;5612:5;-1:-1:-1;;;;;5604:19:0;5624:4;5604:25;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5562:67;;;;5648:7;5640:52;;;;-1:-1:-1;;;5640:52:0;;15050:2:1;5640:52:0;;;15032:21:1;;;15069:18;;;15062:30;15128:34;15108:18;;;15101:62;15180:18;;5640:52:0;14848:356:1;5640:52:0;5709:17;;:21;5705:224;;5851:10;5840:30;;;;;;;;;;;;:::i;:::-;5832:85;;;;-1:-1:-1;;;5832:85:0;;15411:2:1;5832:85:0;;;15393:21:1;15450:2;15430:18;;;15423:30;15489:34;15469:18;;;15462:62;-1:-1:-1;;;15540:18:1;;;15533:40;15590:19;;5832:85:0;15209:406:1;4158:374:0;4218:4;4441:20;;4284:66;4481:15;;;;;:42;;-1:-1:-1;4500:23:0;;;4473:51;-1:-1:-1;;4158:374:0:o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:70;;177:1;174;167:12;192:328;269:6;277;285;338:2;326:9;317:7;313:23;309:32;306:52;;;354:1;351;344:12;306:52;377:29;396:9;377:29;:::i;:::-;367:39;;453:2;442:9;438:18;425:32;415:42;;476:38;510:2;499:9;495:18;476:38;:::i;:::-;466:48;;192:328;;;;;:::o;889:254::-;957:6;965;1018:2;1006:9;997:7;993:23;989:32;986:52;;;1034:1;1031;1024:12;986:52;1070:9;1057:23;1047:33;;1099:38;1133:2;1122:9;1118:18;1099:38;:::i;:::-;1089:48;;889:254;;;;;:::o;1148:258::-;1220:1;1230:113;1244:6;1241:1;1238:13;1230:113;;;1320:11;;;1314:18;1301:11;;;1294:39;1266:2;1259:10;1230:113;;;1361:6;1358:1;1355:13;1352:48;;;-1:-1:-1;;1396:1:1;1378:16;;1371:27;1148:258::o;1411:383::-;1560:2;1549:9;1542:21;1523:4;1592:6;1586:13;1635:6;1630:2;1619:9;1615:18;1608:34;1651:66;1710:6;1705:2;1694:9;1690:18;1685:2;1677:6;1673:15;1651:66;:::i;:::-;1778:2;1757:15;-1:-1:-1;;1753:29:1;1738:45;;;;1785:2;1734:54;;1411:383;-1:-1:-1;;1411:383:1:o;1799:254::-;1867:6;1875;1928:2;1916:9;1907:7;1903:23;1899:32;1896:52;;;1944:1;1941;1934:12;1896:52;1967:29;1986:9;1967:29;:::i;:::-;1957:39;2043:2;2028:18;;;;2015:32;;-1:-1:-1;;;1799:254:1:o;2250:328::-;2327:6;2335;2343;2396:2;2384:9;2375:7;2371:23;2367:32;2364:52;;;2412:1;2409;2402:12;2364:52;2435:29;2454:9;2435:29;:::i;:::-;2425:39;;2483:38;2517:2;2506:9;2502:18;2483:38;:::i;:::-;2473:48;;2568:2;2557:9;2553:18;2540:32;2530:42;;2250:328;;;;;:::o;2583:180::-;2642:6;2695:2;2683:9;2674:7;2670:23;2666:32;2663:52;;;2711:1;2708;2701:12;2663:52;-1:-1:-1;2734:23:1;;2583:180;-1:-1:-1;2583:180:1:o;2768:186::-;2827:6;2880:2;2868:9;2859:7;2855:23;2851:32;2848:52;;;2896:1;2893;2886:12;2848:52;2919:29;2938:9;2919:29;:::i;3148:733::-;3236:6;3244;3252;3260;3313:2;3301:9;3292:7;3288:23;3284:32;3281:52;;;3329:1;3326;3319:12;3281:52;3352:29;3371:9;3352:29;:::i;:::-;3342:39;;3428:2;3417:9;3413:18;3400:32;3390:42;;3483:2;3472:9;3468:18;3455:32;3506:18;3547:2;3539:6;3536:14;3533:34;;;3563:1;3560;3553:12;3533:34;3601:6;3590:9;3586:22;3576:32;;3646:7;3639:4;3635:2;3631:13;3627:27;3617:55;;3668:1;3665;3658:12;3617:55;3708:2;3695:16;3734:2;3726:6;3723:14;3720:34;;;3750:1;3747;3740:12;3720:34;3795:7;3790:2;3781:6;3777:2;3773:15;3769:24;3766:37;3763:57;;;3816:1;3813;3806:12;3763:57;3148:733;;;;-1:-1:-1;;3847:2:1;3839:11;;-1:-1:-1;;;3148:733:1:o;4094:693::-;4205:6;4213;4221;4229;4237;4245;4253;4306:3;4294:9;4285:7;4281:23;4277:33;4274:53;;;4323:1;4320;4313:12;4274:53;4346:29;4365:9;4346:29;:::i;:::-;4336:39;;4394:38;4428:2;4417:9;4413:18;4394:38;:::i;:::-;4384:48;;4479:2;4468:9;4464:18;4451:32;4441:42;;4530:2;4519:9;4515:18;4502:32;4492:42;;4584:3;4573:9;4569:19;4556:33;4629:4;4622:5;4618:16;4611:5;4608:27;4598:55;;4649:1;4646;4639:12;4598:55;4094:693;;;;-1:-1:-1;4094:693:1;;;;4672:5;4724:3;4709:19;;4696:33;;-1:-1:-1;4776:3:1;4761:19;;;4748:33;;4094:693;-1:-1:-1;;4094:693:1:o;4792:658::-;4963:2;5015:21;;;5085:13;;4988:18;;;5107:22;;;4934:4;;4963:2;5186:15;;;;5160:2;5145:18;;;4934:4;5229:195;5243:6;5240:1;5237:13;5229:195;;;5308:13;;-1:-1:-1;;;;;5304:39:1;5292:52;;5399:15;;;;5364:12;;;;5340:1;5258:9;5229:195;;;-1:-1:-1;5441:3:1;;4792:658;-1:-1:-1;;;;;;4792:658:1:o;5455:118::-;5541:5;5534:13;5527:21;5520:5;5517:32;5507:60;;5563:1;5560;5553:12;5507:60;5455:118;:::o;5578:241::-;5634:6;5687:2;5675:9;5666:7;5662:23;5658:32;5655:52;;;5703:1;5700;5693:12;5655:52;5742:9;5729:23;5761:28;5783:5;5761:28;:::i;5824:260::-;5892:6;5900;5953:2;5941:9;5932:7;5928:23;5924:32;5921:52;;;5969:1;5966;5959:12;5921:52;5992:29;6011:9;5992:29;:::i;:::-;5982:39;;6040:38;6074:2;6063:9;6059:18;6040:38;:::i;6089:322::-;6166:6;6174;6182;6235:2;6223:9;6214:7;6210:23;6206:32;6203:52;;;6251:1;6248;6241:12;6203:52;6287:9;6274:23;6264:33;;6316:38;6350:2;6339:9;6335:18;6316:38;:::i;6416:349::-;6618:2;6600:21;;;6657:2;6637:18;;;6630:30;6696:27;6691:2;6676:18;;6669:55;6756:2;6741:18;;6416:349::o;6770:380::-;6849:1;6845:12;;;;6892;;;6913:61;;6967:4;6959:6;6955:17;6945:27;;6913:61;7020:2;7012:6;7009:14;6989:18;6986:38;6983:161;;;7066:10;7061:3;7057:20;7054:1;7047:31;7101:4;7098:1;7091:15;7129:4;7126:1;7119:15;6983:161;;6770:380;;;:::o;7565:127::-;7626:10;7621:3;7617:20;7614:1;7607:31;7657:4;7654:1;7647:15;7681:4;7678:1;7671:15;7697:125;7737:4;7765:1;7762;7759:8;7756:34;;;7770:18;;:::i;:::-;-1:-1:-1;7807:9:1;;7697:125::o;7827:411::-;8029:2;8011:21;;;8068:2;8048:18;;;8041:30;8107:34;8102:2;8087:18;;8080:62;-1:-1:-1;;;8173:2:1;8158:18;;8151:45;8228:3;8213:19;;7827:411::o;8243:128::-;8283:3;8314:1;8310:6;8307:1;8304:13;8301:39;;;8320:18;;:::i;:::-;-1:-1:-1;8356:9:1;;8243:128::o;8376:559::-;-1:-1:-1;;;;;8589:32:1;;8571:51;;8653:2;8638:18;;8631:34;;;8701:2;8696;8681:18;;8674:30;;;8720:18;;8713:34;;;8740:6;8790;8784:3;8769:19;;8756:49;8855:1;8825:22;;;8849:3;8821:32;;;8814:43;;;;8918:2;8897:15;;;-1:-1:-1;;8893:29:1;8878:45;8874:55;;8376:559;-1:-1:-1;;;8376:559:1:o;8940:245::-;9007:6;9060:2;9048:9;9039:7;9035:23;9031:32;9028:52;;;9076:1;9073;9066:12;9028:52;9108:9;9102:16;9127:28;9149:5;9127:28;:::i;9190:349::-;9392:2;9374:21;;;9431:2;9411:18;;;9404:30;9470:27;9465:2;9450:18;;9443:55;9530:2;9515:18;;9190:349::o;9903:135::-;9942:3;-1:-1:-1;;9963:17:1;;9960:43;;;9983:18;;:::i;:::-;-1:-1:-1;10030:1:1;10019:13;;9903:135::o;10639:352::-;10841:2;10823:21;;;10880:2;10860:18;;;10853:30;10919;10914:2;10899:18;;10892:58;10982:2;10967:18;;10639:352::o;11349:184::-;11419:6;11472:2;11460:9;11451:7;11447:23;11443:32;11440:52;;;11488:1;11485;11478:12;11440:52;-1:-1:-1;11511:16:1;;11349:184;-1:-1:-1;11349:184:1:o;14569:274::-;14698:3;14736:6;14730:13;14752:53;14798:6;14793:3;14786:4;14778:6;14774:17;14752:53;:::i;:::-;14821:16;;;;;14569:274;-1:-1:-1;;14569:274:1:o

Swarm Source

ipfs://26344d87d384230f8252ff6b378ab82efbe579cf295532453f69b90b130191d0
Loading