ETH Price: $2,864.29 (-2.62%)

Contract

0x455b20131D59f01d082df1225154fDA813E8CeE9
 

Overview

ETH Balance

0 ETH

ETH Value

$0.00

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Create Token75315002024-08-17 5:33:35526 days ago1723872815IN
Ring Protocol: Few Factory
0 ETH0.000009170.00394582
Create Token53826692024-06-28 11:45:53576 days ago1719575153IN
Ring Protocol: Few Factory
0 ETH0.00002320.00993978
Create Token52948942024-06-26 11:00:03578 days ago1719399603IN
Ring Protocol: Few Factory
0 ETH0.000022380.0096223
Create Token52361762024-06-25 2:22:47580 days ago1719282167IN
Ring Protocol: Few Factory
0 ETH0.000023560.0101547
Create Token43013802024-06-03 11:02:55601 days ago1717412575IN
Ring Protocol: Few Factory
0 ETH0.000000280.01099159
Create Token40760062024-05-29 5:50:27606 days ago1716961827IN
Ring Protocol: Few Factory
0 ETH0.000009740.00418201
Create Token39479132024-05-26 6:40:41609 days ago1716705641IN
Ring Protocol: Few Factory
0 ETH0.000007040.00088369
Create Token38628952024-05-24 7:26:45611 days ago1716535605IN
Ring Protocol: Few Factory
0 ETH0.000015740.00103685
Create Token37066842024-05-20 16:39:43615 days ago1716223183IN
Ring Protocol: Few Factory
0 ETH0.000053130.01277352
Create Token16128802024-04-02 5:26:15663 days ago1712035575IN
Ring Protocol: Few Factory
0 ETH0.00002850.00097033
Create Token14189292024-03-28 17:41:13668 days ago1711647673IN
Ring Protocol: Few Factory
0 ETH0.000072560.00085903
Create Token13298092024-03-26 16:10:33670 days ago1711469433IN
Ring Protocol: Few Factory
0 ETH0.000089310.00085877
Set Manager1917492024-02-29 7:55:13696 days ago1709193313IN
Ring Protocol: Few Factory
0 ETH0.000120431.50000025
Claim Gas1917042024-02-29 7:53:43696 days ago1709193223IN
Ring Protocol: Few Factory
0 ETH0.000213211.50000025
Create Token1710142024-02-28 20:24:03697 days ago1709151843IN
Ring Protocol: Few Factory
0 ETH0.003631231.50000025
Create Token1655662024-02-28 17:22:27697 days ago1709140947IN
Ring Protocol: Few Factory
0 ETH0.003692461.50000025
Create Token1624252024-02-28 15:37:45697 days ago1709134665IN
Ring Protocol: Few Factory
0 ETH0.000121740.00100025
Create Token1611202024-02-28 14:54:15697 days ago1709132055IN
Ring Protocol: Few Factory
0 ETH0.000104810.00100025

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
251365732025-09-28 18:09:21119 days ago1759082961
Ring Protocol: Few Factory
 Contract Creation0 ETH
224094632025-07-27 15:05:41182 days ago1753628741
Ring Protocol: Few Factory
 Contract Creation0 ETH
181272892025-04-19 12:06:33281 days ago1745064393
Ring Protocol: Few Factory
 Contract Creation0 ETH
180628752025-04-18 0:19:25283 days ago1744935565
Ring Protocol: Few Factory
 Contract Creation0 ETH
177358322025-04-10 10:37:59290 days ago1744281479
Ring Protocol: Few Factory
 Contract Creation0 ETH
177251232025-04-10 4:41:01291 days ago1744260061
Ring Protocol: Few Factory
 Contract Creation0 ETH
173944762025-04-02 12:59:27298 days ago1743598767
Ring Protocol: Few Factory
 Contract Creation0 ETH
173884262025-04-02 9:37:47298 days ago1743586667
Ring Protocol: Few Factory
 Contract Creation0 ETH
173883932025-04-02 9:36:41298 days ago1743586601
Ring Protocol: Few Factory
 Contract Creation0 ETH
173883312025-04-02 9:34:37298 days ago1743586477
Ring Protocol: Few Factory
 Contract Creation0 ETH
173752522025-04-02 2:18:39299 days ago1743560319
Ring Protocol: Few Factory
 Contract Creation0 ETH
173752122025-04-02 2:17:19299 days ago1743560239
Ring Protocol: Few Factory
 Contract Creation0 ETH
173749822025-04-02 2:09:39299 days ago1743559779
Ring Protocol: Few Factory
 Contract Creation0 ETH
173748252025-04-02 2:04:25299 days ago1743559465
Ring Protocol: Few Factory
 Contract Creation0 ETH
173747092025-04-02 2:00:33299 days ago1743559233
Ring Protocol: Few Factory
 Contract Creation0 ETH
173745652025-04-02 1:55:45299 days ago1743558945
Ring Protocol: Few Factory
 Contract Creation0 ETH
173566452025-04-01 15:58:25299 days ago1743523105
Ring Protocol: Few Factory
 Contract Creation0 ETH
173481372025-04-01 11:14:49299 days ago1743506089
Ring Protocol: Few Factory
 Contract Creation0 ETH
173480362025-04-01 11:11:27299 days ago1743505887
Ring Protocol: Few Factory
 Contract Creation0 ETH
173479762025-04-01 11:09:27299 days ago1743505767
Ring Protocol: Few Factory
 Contract Creation0 ETH
173478572025-04-01 11:05:29299 days ago1743505529
Ring Protocol: Few Factory
 Contract Creation0 ETH
173477302025-04-01 11:01:15299 days ago1743505275
Ring Protocol: Few Factory
 Contract Creation0 ETH
173476092025-04-01 10:57:13299 days ago1743505033
Ring Protocol: Few Factory
 Contract Creation0 ETH
173474752025-04-01 10:52:45299 days ago1743504765
Ring Protocol: Few Factory
 Contract Creation0 ETH
173472982025-04-01 10:46:51299 days ago1743504411
Ring Protocol: Few Factory
 Contract Creation0 ETH
View All Internal Transactions

Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FewFactory

Compiler Version
v0.6.6+commit.6c089d02

Optimization Enabled:
Yes with 999999 runs

Other Settings:
istanbul EvmVersion
// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.6.6;

import './interfaces/IFewFactory.sol';
import './refs/CoreRef.sol';
import './FewWrappedToken.sol';
import './BlastManager.sol';

contract FewFactory is IFewFactory, CoreRef, BlastManager {

    mapping(address => address) public override getWrappedToken;
    address[] public override allWrappedTokens;
    address public override parameter;

    event WrappedTokenCreated(address indexed originalToken, address wrappedToken, uint);

    constructor(address coreAddress) CoreRef(coreAddress) public {}

    function allWrappedTokensLength() external override view returns (uint) {
        return allWrappedTokens.length;
    }

    function paused() public override(IFewFactory, Pausable) view returns (bool) {
        return super.paused();
    }

    function createToken(address originalToken) external override returns (address wrappedToken) {
        require(originalToken != address(0));
        require(getWrappedToken[originalToken] == address(0)); // single check is sufficient

        parameter = originalToken;
        wrappedToken = address(new FewWrappedToken{salt: keccak256(abi.encode(originalToken))}());
        delete parameter;

        getWrappedToken[originalToken] = wrappedToken;
        allWrappedTokens.push(wrappedToken);
        emit WrappedTokenCreated(originalToken, wrappedToken, allWrappedTokens.length);
    }
}

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with GSN meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return msg.sender;
    }

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

// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

import "./Context.sol";

/**
 * @dev Contract module which allows children to implement an emergency stop
 * mechanism that can be triggered by an authorized account.
 *
 * This module is used through inheritance. It will make available the
 * modifiers `whenNotPaused` and `whenPaused`, which can be applied to
 * the functions of your contract. Note that they will not be pausable by
 * simply including this module, only once the modifiers are put in place.
 */
abstract contract Pausable is Context {
    /**
     * @dev Emitted when the pause is triggered by `account`.
     */
    event Paused(address account);

    /**
     * @dev Emitted when the pause is lifted by `account`.
     */
    event Unpaused(address account);

    bool private _paused;

    /**
     * @dev Initializes the contract in unpaused state.
     */
    constructor () internal {
        _paused = false;
    }

    /**
     * @dev Returns true if the contract is paused, and false otherwise.
     */
    function paused() public view virtual returns (bool) {
        return _paused;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is not paused.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    modifier whenNotPaused() {
        require(!paused(), "Pausable: paused");
        _;
    }

    /**
     * @dev Modifier to make a function callable only when the contract is paused.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    modifier whenPaused() {
        require(paused(), "Pausable: not paused");
        _;
    }

    /**
     * @dev Triggers stopped state.
     *
     * Requirements:
     *
     * - The contract must not be paused.
     */
    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    /**
     * @dev Returns to normal state.
     *
     * Requirements:
     *
     * - The contract must be paused.
     */
    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

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

pragma solidity >=0.6.0;

// helper methods for interacting with ERC20 tokens and sending ETH that do not consistently return true/false
library TransferHelper {
    function safeApprove(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('approve(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x095ea7b3, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::safeApprove: approve failed'
        );
    }

    function safeTransfer(
        address token,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transfer(address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0xa9059cbb, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::safeTransfer: transfer failed'
        );
    }

    function safeTransferFrom(
        address token,
        address from,
        address to,
        uint256 value
    ) internal {
        // bytes4(keccak256(bytes('transferFrom(address,address,uint256)')));
        (bool success, bytes memory data) = token.call(abi.encodeWithSelector(0x23b872dd, from, to, value));
        require(
            success && (data.length == 0 || abi.decode(data, (bool))),
            'TransferHelper::transferFrom: transferFrom failed'
        );
    }

    function safeTransferETH(address to, uint256 value) internal {
        (bool success, ) = to.call{value: value}(new bytes(0));
        require(success, 'TransferHelper::safeTransferETH: ETH transfer failed');
    }
}

// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.6.6;

import './interfaces/IBlast.sol';
import './interfaces/IBlastPoints.sol';
import './interfaces/IBlastManager.sol';

contract BlastManager is IBlastManager {
    IBlast public constant BLAST = IBlast(0x4300000000000000000000000000000000000002);
    address public override manager;

    modifier onlyManager() {
        require(msg.sender == manager, "FORBIDDEN");
        _;
    }

    constructor() public {
        manager = msg.sender;
        BLAST.configureAutomaticYield();
        BLAST.configureClaimableGas();
    }

    function claimGas(address recipient, bool isMax) external override onlyManager returns (uint256) {
        if (isMax) {
            return BLAST.claimMaxGas(address(this), recipient);
        } else {
            return BLAST.claimAllGas(address(this), recipient);
        }
    }

    function setManager(address _manager) external override onlyManager {
        manager = _manager;
    }

    function setGasMode(address blastGas) external override onlyManager {
        IBlast(blastGas).configureClaimableGas();
    }

    function setPointsOperator(address blastPoints, address operator) external override onlyManager {
        // This method can be called only once, and operator must be an EOA.
        IBlastPoints(blastPoints).configurePointsOperator(operator);
    }
}

// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.6.6;

import './interfaces/IBlast.sol';
import './interfaces/IBlastPoints.sol';
import './interfaces/IBlastManager.sol';
import './refs/ICoreRef.sol';

contract BlastManagerFromFactory is IBlastManager {
    IBlast public constant BLAST = IBlast(0x4300000000000000000000000000000000000002);
    address public override manager;

    modifier onlyManager() {
        require(ICoreRef(manager).core().isGovernor(msg.sender), "FORBIDDEN");
        _;
    }

    constructor() public {
        manager = msg.sender;
        BLAST.configureAutomaticYield();
        BLAST.configureClaimableGas();
    }

    function claimGas(address recipient, bool isMax) external override onlyManager returns (uint256) {
        if (isMax) {
            return BLAST.claimMaxGas(address(this), recipient);
        } else {
            return BLAST.claimAllGas(address(this), recipient);
        }
    }

    function setManager(address _manager) external override onlyManager {
        manager = _manager;
    }

    function setGasMode(address blastGas) external override onlyManager {
        IBlast(blastGas).configureClaimableGas();
    }

    function setPointsOperator(address blastPoints, address operator) external override onlyManager {
        // This method can be called only once, and operator must be an EOA.
        IBlastPoints(blastPoints).configurePointsOperator(operator);
    }
}

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.5.0;

interface ICore {
    // ----------- Getters -----------

    function isBurner(address _address) external view returns (bool);

    function isMinter(address _address) external view returns (bool);

    function isGovernor(address _address) external view returns (bool);

    function isGuardian(address _address) external view returns (bool);
}

// SPDX-License-Identifier: BUSL-1.1
pragma solidity =0.6.6;

import '@uniswap/lib/contracts/libraries/TransferHelper.sol';

import './interfaces/IFewWrappedToken.sol';
import './libraries/SafeMath.sol';
import './refs/ICoreRef.sol';
import './interfaces/IFewFactory.sol';
import './BlastManagerFromFactory.sol';

/// @title Few Wrapped Token
contract FewWrappedToken is IFewWrappedToken, BlastManagerFromFactory {
    using SafeMath for uint;

    string public override name;
    string public override symbol;
    uint8 public override constant decimals = 18;
    uint  public override totalSupply;
    mapping(address => uint) public override balanceOf;
    mapping(address => mapping(address => uint)) public override allowance;

    bytes32 public override DOMAIN_SEPARATOR;
    // keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");
    bytes32 public override constant PERMIT_TYPEHASH = 0x6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c9;
    mapping(address => uint) public override nonces;

    address public override factory;
    address public override token;

    modifier onlyMinter() {
        require(ICoreRef(factory).core().isMinter(msg.sender), "CoreRef: Caller is not a minter");
        _;
    }

    modifier onlyBurner() {
        require(ICoreRef(factory).core().isBurner(msg.sender), "CoreRef: Caller is not a burner");
        _;
    }

    modifier whenNotPaused() {
        require(!IFewFactory(factory).paused(), "CoreRef: Caller is paused");
        _;
    }

    event Mint(address indexed minter, uint256 amount, address indexed to);
    event Burn(address indexed burner, uint256 amount, address indexed to);
    event Wrap(address indexed sender, uint256 amount, address indexed to);
    event Unwrap(address indexed sender, uint256 amount, address indexed to);

    /// @notice Few wrapped token constructor
    constructor() public {
        uint chainId;
        assembly {
            chainId := chainid()
        }

        factory = msg.sender;
        token = IFewFactory(msg.sender).parameter();
        name = string(abi.encodePacked("Few Wrapped ", IERC20(token).name()));
        symbol = string(abi.encodePacked("fw", IERC20(token).symbol()));

        DOMAIN_SEPARATOR = keccak256(
            abi.encode(
                keccak256('EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)'),
                keccak256(bytes(name)),
                keccak256(bytes('1')),
                chainId,
                address(this)
            )
        );
    }

    function _mint(address to, uint value) internal {
        totalSupply = totalSupply.add(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(address(0), to, value);
    }

    function _burn(address from, uint value) internal {
        balanceOf[from] = balanceOf[from].sub(value);
        totalSupply = totalSupply.sub(value);
        emit Transfer(from, address(0), value);
    }

    function _approve(address owner, address spender, uint value) internal {
        allowance[owner][spender] = value;
        emit Approval(owner, spender, value);
    }

    function _transfer(address from, address to, uint value) private {
        balanceOf[from] = balanceOf[from].sub(value);
        balanceOf[to] = balanceOf[to].add(value);
        emit Transfer(from, to, value);
    }

    function approve(address spender, uint value) external override returns (bool) {
        _approve(msg.sender, spender, value);
        return true;
    }

    function transfer(address to, uint value) external override returns (bool) {
        _transfer(msg.sender, to, value);
        return true;
    }

    function transferFrom(address from, address to, uint value) external override returns (bool) {
        if (allowance[from][msg.sender] != uint(-1)) {
            allowance[from][msg.sender] = allowance[from][msg.sender].sub(value);
        }
        _transfer(from, to, value);
        return true;
    }

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external override {
        require(deadline >= block.timestamp, 'Few: EXPIRED');
        bytes32 digest = keccak256(
            abi.encodePacked(
                '\x19\x01',
                DOMAIN_SEPARATOR,
                keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, nonces[owner]++, deadline))
            )
        );
        address recoveredAddress = ecrecover(digest, v, r, s);
        require(recoveredAddress != address(0) && recoveredAddress == owner, 'Few: INVALID_SIGNATURE');
        _approve(owner, spender, value);
    }

    /// @notice mint Few wrapped tokens
    /// @param account the account to mint to
    /// @param amount the amount to mint
    function mint(address account, uint256 amount)
        external
        override
        onlyMinter
        whenNotPaused
    {
        _mint(account, amount);
        emit Mint(msg.sender, amount, account);
    }

    /// @notice burn Few wrapped tokens from caller
    /// @param amount the amount to burn
    function burn(uint256 amount) public override {
        _burn(msg.sender, amount);
        emit Burn(msg.sender, amount, msg.sender);
    }

    /// @notice burn Few wrapped tokens from specified account
    /// @param account the account to burn from
    /// @param amount the amount to burn
    function burnFrom(address account, uint256 amount)
        public
        override
        onlyBurner
        whenNotPaused
    {
        _burn(account, amount);
        emit Burn(msg.sender, amount, account);
    }

    /// @notice exchanges token to Few wrapped token
    /// @param amount the amount to wrap
    /// @param to wrapped token reciver address
    function wrapTo(uint256 amount, address to) public override returns (uint256) {
        require(amount > 0, "Few: can't wrap zero token");
        TransferHelper.safeTransferFrom(token, msg.sender, address(this), amount);
        _mint(to, amount);
        emit Wrap(msg.sender, amount, to);
        return amount;
    }

    function wrap(uint256 amount) external override returns (uint256) {
        return wrapTo(amount, msg.sender);
    }

    /// @notice exchange Few wrapped token to token
    /// @param amount the amount to unwrap
    /// @param to token receiver address
    function unwrapTo(uint256 amount, address to) public override returns (uint256) {
        require(amount > 0, "Few: zero amount unwrap not allowed");
        _burn(msg.sender, amount);
        TransferHelper.safeTransfer(address(token), to, amount);
        emit Unwrap(msg.sender, amount, to);
        return amount;
    }

    function unwrap(uint256 amount) external override returns (uint256) {
        return unwrapTo(amount, msg.sender);
    }
}

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.5.0;

interface IBlast{
    function configureAutomaticYield() external;
    function configureClaimableGas() external;
    function claimAllGas(address contractAddress, address recipient) external returns (uint256);
    function claimMaxGas(address contractAddress, address recipientOfGas) external returns (uint256);
}

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.5.0;

interface IBlastManager {
    function manager() external view returns (address);
    function claimGas(address recipient, bool isMax) external returns (uint256);
    function setManager(address _manager) external;
    function setGasMode(address blastGas) external;
    function setPointsOperator(address blastPoints, address operator) external;
}

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.5.0;

interface IBlastPoints {
	function configurePointsOperator(address operator) external;
}

pragma solidity >=0.5.0;

interface IERC20 {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint value);

    function name() external view returns (string memory);
    function symbol() external view returns (string memory);
    function decimals() external view returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);
}

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.5.0;

import './IERC20.sol';

interface IFewERC20 is IERC20 {
    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

    function permit(address owner, address spender, uint value, uint deadline, uint8 v, bytes32 r, bytes32 s) external;
}

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.5.0;

interface IFewFactory {
    event WrappedTokenCreated(address indexed originalToken, address wrappedToken, uint);

    function getWrappedToken(address originalToken) external view returns (address wrappedToken);
    function allWrappedTokens(uint) external view returns (address wrappedToken);
    function parameter() external view returns (address);
    function allWrappedTokensLength() external view returns (uint);
    function paused() external view returns (bool);
    function createToken(address originalToken) external returns (address wrappedToken);
}

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.5.0;

import '../interfaces/IFewERC20.sol';

interface IFewWrappedToken is IFewERC20 {
    event Mint(address indexed minter, uint256 amount, address indexed to);
    event Burn(address indexed burner, uint256 amount, address indexed to);
    event Wrap(address indexed sender, uint256 amount, address indexed to);
    event Unwrap(address indexed sender, uint256 amount, address indexed to);

    function factory() external view returns (address);
    function token() external view returns (address);

    function mint(address account, uint256 amount) external;
    function burn(uint256 amount) external;
    function burnFrom(address account, uint256 amount) external;
    function wrapTo(uint256 amount, address to) external returns (uint256);
    function wrap(uint256 amount) external returns (uint256);
    function unwrapTo(uint256 amount, address to) external returns (uint256);
    function unwrap(uint256 amount) external returns (uint256);
}

pragma solidity =0.6.6;

// a library for performing overflow-safe math, courtesy of DappHub (https://github.com/dapphub/ds-math)

library SafeMath {
    function add(uint x, uint y) internal pure returns (uint z) {
        require((z = x + y) >= x, 'ds-math-add-overflow');
    }

    function sub(uint x, uint y) internal pure returns (uint z) {
        require((z = x - y) <= x, 'ds-math-sub-underflow');
    }

    function mul(uint x, uint y) internal pure returns (uint z) {
        require(y == 0 || (z = x * y) / y == x, 'ds-math-mul-overflow');
    }
}

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity =0.6.6;

import './ICoreRef.sol';
import '@openzeppelin/contracts/utils/Pausable.sol';

/// @title A Reference to Core
/// @notice defines some modifiers and utilities around interacting with Core
abstract contract CoreRef is ICoreRef, Pausable {
    ICore private _core;

    /// @notice CoreRef constructor
    /// @param coreAddress Few Core to reference
    constructor(address coreAddress) public {
        _core = ICore(coreAddress);
    }

    modifier onlyMinter() {
        require(_core.isMinter(msg.sender), "CoreRef: Caller is not a minter");
        _;
    }

    modifier onlyBurner() {
        require(_core.isBurner(msg.sender), "CoreRef: Caller is not a burner");
        _;
    }

    modifier onlyGovernor() {
        require(
            _core.isGovernor(msg.sender),
            "CoreRef: Caller is not a governor"
        );
        _;
    }

    modifier onlyGuardianOrGovernor() {
        require(
            _core.isGovernor(msg.sender) ||
            _core.isGuardian(msg.sender),
            "CoreRef: Caller is not a guardian or governor"
        );
        _;
    }

    /// @notice set new Core reference address
    /// @param coreAddress the new core address
    function setCore(address coreAddress) external override onlyGovernor {
        _core = ICore(coreAddress);
        emit CoreUpdate(coreAddress);
    }

    /// @notice set pausable methods to paused
    function pause() public override onlyGuardianOrGovernor {
        _pause();
    }

    /// @notice set pausable methods to unpaused
    function unpause() public override onlyGuardianOrGovernor {
        _unpause();
    }

    /// @notice address of the Core contract referenced
    /// @return ICore implementation address
    function core() public view override returns (ICore) {
        return _core;
    }
}

// SPDX-License-Identifier: GPL-2.0-or-later
pragma solidity >=0.5.0;

import '../core/ICore.sol';

/// @title CoreRef interface
interface ICoreRef {
    event CoreUpdate(address indexed _core);

    function setCore(address coreAddress) external;
    function pause() external;
    function unpause() external;
    function core() external view returns (ICore);
}

Settings
{
  "optimizer": {
    "enabled": true,
    "runs": 999999
  },
  "evmVersion": "istanbul",
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"coreAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"_core","type":"address"}],"name":"CoreUpdate","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"originalToken","type":"address"},{"indexed":false,"internalType":"address","name":"wrappedToken","type":"address"},{"indexed":false,"internalType":"uint256","name":"","type":"uint256"}],"name":"WrappedTokenCreated","type":"event"},{"inputs":[],"name":"BLAST","outputs":[{"internalType":"contract IBlast","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"allWrappedTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"allWrappedTokensLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"bool","name":"isMax","type":"bool"}],"name":"claimGas","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"core","outputs":[{"internalType":"contract ICore","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"originalToken","type":"address"}],"name":"createToken","outputs":[{"internalType":"address","name":"wrappedToken","type":"address"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"getWrappedToken","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"parameter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"coreAddress","type":"address"}],"name":"setCore","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"blastGas","type":"address"}],"name":"setGasMode","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_manager","type":"address"}],"name":"setManager","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"blastPoints","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"setPointsOperator","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405234801561001057600080fd5b50604051613fe6380380613fe68339818101604052602081101561003357600080fd5b5051600080546001600160a01b038316610100026001600160a81b0319909116178155600180546001600160a01b031916331790556040805163388a0bbd60e11b8152905173430000000000000000000000000000000000000292637114177a926004808201939182900301818387803b1580156100b057600080fd5b505af11580156100c4573d6000803e3d6000fd5b505050507343000000000000000000000000000000000000026001600160a01b0316634e606c476040518163ffffffff1660e01b8152600401600060405180830381600087803b15801561011757600080fd5b505af115801561012b573d6000803e3d6000fd5b5050505050613ea78061013f6000396000f3fe60806040523480156200001157600080fd5b5060043610620001185760003560e01c8063a7dc2d7811620000a5578063d0ebdbe7116200006f578063d0ebdbe714620002e0578063ddbfe2431462000316578063e220831d1462000320578063f2f4eb26146200035e5762000118565b8063a7dc2d78146200021a578063ad4d4e291462000250578063c21ab7f9146200025a578063c8b11dfe14620002905762000118565b806367bab12811620000e757806367bab12814620001b05780638000963014620001d05780638456cb59146200020657806397d7577614620002105762000118565b80632d195bd2146200011d5780633f4ba83a1462000155578063481c6a75146200015f5780635c975abb1462000192575b600080fd5b62000153600480360360208110156200013557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000368565b005b6200015362000454565b6200016962000607565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6200019c62000623565b604080519115158252519081900360200190f35b6200016960048036036020811015620001c857600080fd5b503562000634565b6200015360048036036020811015620001e857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000669565b62000153620007d8565b6200016962000989565b62000169600480360360208110156200023257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16620009a1565b62000169620009c9565b62000169600480360360208110156200027257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16620009e5565b620002ce60048036036040811015620002a857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135151562000bae565b60408051918252519081900360200190f35b6200015360048036036020811015620002f857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000d8d565b620002ce62000e5b565b62000153600480360360408110156200033857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351662000e61565b6200016962000f85565b60015473ffffffffffffffffffffffffffffffffffffffff163314620003ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff16634e606c476040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200043857600080fd5b505af11580156200044d573d6000803e3d6000fd5b5050505050565b600054604080517fe43581b8000000000000000000000000000000000000000000000000000000008152336004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff169163e43581b891602480820192602092909190829003018186803b158015620004ca57600080fd5b505afa158015620004df573d6000803e3d6000fd5b505050506040513d6020811015620004f657600080fd5b505180620005a45750600054604080517f0c68ba21000000000000000000000000000000000000000000000000000000008152336004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff1691630c68ba2191602480820192602092909190829003018186803b1580156200057557600080fd5b505afa1580156200058a573d6000803e3d6000fd5b505050506040513d6020811015620005a157600080fd5b50515b620005fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018062003e24602d913960400191505060405180910390fd5b6200060562000fa6565b565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60006200062f62001099565b905090565b600381815481106200064257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600054604080517fe43581b8000000000000000000000000000000000000000000000000000000008152336004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff169163e43581b891602480820192602092909190829003018186803b158015620006df57600080fd5b505afa158015620006f4573d6000803e3d6000fd5b505050506040513d60208110156200070b57600080fd5b505162000764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018062003e516021913960400191505060405180910390fd5b600080547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff841690810291909117825560405190917fad9400e618eb1344fde53db22397a1b82c765527ecbba3a5c86bcac15090828b91a250565b600054604080517fe43581b8000000000000000000000000000000000000000000000000000000008152336004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff169163e43581b891602480820192602092909190829003018186803b1580156200084e57600080fd5b505afa15801562000863573d6000803e3d6000fd5b505050506040513d60208110156200087a57600080fd5b505180620009285750600054604080517f0c68ba21000000000000000000000000000000000000000000000000000000008152336004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff1691630c68ba2191602480820192602092909190829003018186803b158015620008f957600080fd5b505afa1580156200090e573d6000803e3d6000fd5b505050506040513d60208110156200092557600080fd5b50515b6200097f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018062003e24602d913960400191505060405180910390fd5b62000605620010a2565b73430000000000000000000000000000000000000281565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff821662000a0857600080fd5b73ffffffffffffffffffffffffffffffffffffffff828116600090815260026020526040902054161562000a3b57600080fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155604080516020808201939093528151808203840181529082019182905280519201919091209062000aaf906200116e565b8190604051809103906000f590508015801562000ad0573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff848116600081815260026020908152604080832080549588169587168617905560038054600181018255938190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9093018054909616851790955590548451938452908301528251939450927f940398321949af993516f7d144a2b9f43100b1de59365ba376e2b458d840c091929181900390910190a2919050565b60015460009073ffffffffffffffffffffffffffffffffffffffff16331462000c3857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b811562000cfe57604080517f662aa11d00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8516602482015290517343000000000000000000000000000000000000029163662aa11d9160448083019260209291908290030181600087803b15801562000cc857600080fd5b505af115801562000cdd573d6000803e3d6000fd5b505050506040513d602081101562000cf457600080fd5b5051905062000d87565b604080517f954fa5ee00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8516602482015290517343000000000000000000000000000000000000029163954fa5ee9160448083019260209291908290030181600087803b15801562000cc857600080fd5b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff16331462000e1457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035490565b60015473ffffffffffffffffffffffffffffffffffffffff16331462000ee857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff166336b91f2b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000f6857600080fd5b505af115801562000f7d573d6000803e3d6000fd5b505050505050565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1690565b62000fb062000623565b6200101c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6200106f6200116a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190a1565b60005460ff1690565b620010ac62000623565b156200111957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586200106f5b3390565b612ca7806200117d8339019056fe60806040523480156200001157600080fd5b50600080546001600160a01b031916331781556040805163388a0bbd60e11b8152905173430000000000000000000000000000000000000292637114177a926004808201939182900301818387803b1580156200006d57600080fd5b505af115801562000082573d6000803e3d6000fd5b505050507343000000000000000000000000000000000000026001600160a01b0316634e606c476040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620000d657600080fd5b505af1158015620000eb573d6000803e3d6000fd5b5050600880546001600160a01b031916339081179091556040805163ad4d4e2960e01b8152905146945091925063ad4d4e29916004808301926020929190829003018186803b1580156200013e57600080fd5b505afa15801562000153573d6000803e3d6000fd5b505050506040513d60208110156200016a57600080fd5b5051600980546001600160a01b0319166001600160a01b039283161790819055604080516306fdde0360e01b8152905191909216916306fdde03916004808301926000929190829003018186803b158015620001c557600080fd5b505afa158015620001da573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156200020457600080fd5b81019080805160405193929190846401000000008211156200022557600080fd5b9083019060208201858111156200023b57600080fd5b82516401000000008111828201881017156200025657600080fd5b82525081516020918201929091019080838360005b83811015620002855781810151838201526020016200026b565b50505050905090810190601f168015620002b35780820380516001836020036101000a031916815260200191505b5060405250505060405160200180806b02332bb902bb930b83832b2160a51b815250600c0182805190602001908083835b60208310620003055780518252601f199092019160209182019101620002e4565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052600190805190602001906200035092919062000623565b50600960009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015620003a057600080fd5b505afa158015620003b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015620003df57600080fd5b81019080805160405193929190846401000000008211156200040057600080fd5b9083019060208201858111156200041657600080fd5b82516401000000008111828201881017156200043157600080fd5b82525081516020918201929091019080838360005b838110156200046057818101518382015260200162000446565b50505050905090810190601f1680156200048e5780820380516001836020036101000a031916815260200191505b50604052505050604051602001808061667760f01b81525060020182805190602001908083835b60208310620004d65780518252601f199092019160209182019101620004b5565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052600290805190602001906200052192919062000623565b5060405180605262002c55823960520190506040518091039020600160405180828054600181600116156101000203166002900480156200059c5780601f10620005795761010080835404028352918201916200059c565b820191906000526020600020905b81548152906001019060200180831162000587575b505060408051918290038220828201825260018352603160f81b602093840152815180840196909652858201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606086015260808501959095523060a0808601919091528551808603909101815260c090940190945250508051910120600655620006c8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200066657805160ff191683800117855562000696565b8280016001018555821562000696579182015b828111156200069657825182559160200191906001019062000679565b50620006a4929150620006a8565b5090565b620006c591905b80821115620006a45760008155600101620006af565b90565b61257d80620006d86000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806379cc6790116100f9578063d0ebdbe711610097578063de0e9a3e11610071578063de0e9a3e14610643578063e220831d14610660578063ea598cb01461069b578063fc0c546a146106b8576101c4565b8063d0ebdbe714610577578063d505accf146105aa578063dd62ed3e14610608576101c4565b806397d75776116100d357806397d75776146104f3578063a9059cbb146104fb578063c45a015514610534578063c8b11dfe1461053c576101c4565b806379cc67901461047f5780637ecebe00146104b857806395d89b41146104eb576101c4565b8063313ce5671161016657806342966c681161014057806342966c68146103c5578063481c6a75146103e25780635dbd60591461041357806370a082311461044c576101c4565b8063313ce567146103665780633644e5151461038457806340c10f191461038c576101c4565b806323b872dd116101a257806323b872dd146102ad57806326599850146102f05780632d195bd21461032957806330adf81f1461035e576101c4565b806306fdde03146101c9578063095ea7b31461024657806318160ddd14610293575b600080fd5b6101d16106c0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561020b5781810151838201526020016101f3565b50505050905090810190601f1680156102385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027f6004803603604081101561025c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561076b565b604080519115158252519081900360200190f35b61029b610782565b60408051918252519081900360200190f35b61027f600480360360608110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610788565b61029b6004803603604081101561030657600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16610867565b61035c6004803603602081101561033f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661095a565b005b61029b610b55565b61036e610b79565b6040805160ff9092168252519081900360200190f35b61029b610b7e565b61035c600480360360408110156103a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b84565b61035c600480360360208110156103db57600080fd5b5035610e78565b6103ea610ebc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61029b6004803603604081101561042957600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16610ed8565b61029b6004803603602081101561046257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fb4565b61035c6004803603604081101561049557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610fc6565b61029b600480360360208110156104ce57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166112ba565b6101d16112cc565b6103ea611342565b61027f6004803603604081101561051157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561135a565b6103ea611367565b61029b6004803603604081101561055257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515611383565b61035c6004803603602081101561058d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611666565b61035c600480360360e08110156105c057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611845565b61029b6004803603604081101561061e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611b11565b61029b6004803603602081101561065957600080fd5b5035611b2e565b61035c6004803603604081101561067657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611b3a565b61029b600480360360208110156106b157600080fd5b5035611d6d565b6103ea611d79565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156107635780601f1061073857610100808354040283529160200191610763565b820191906000526020600020905b81548152906001019060200180831161074657829003601f168201915b505050505081565b6000610778338484611d95565b5060015b92915050565b60035481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146108525773ffffffffffffffffffffffffffffffffffffffff84166000908152600560209081526040808320338452909152902054610820908363ffffffff611e0416565b73ffffffffffffffffffffffffffffffffffffffff851660009081526005602090815260408083203384529091529020555b61085d848484611e76565b5060019392505050565b60008083116108d757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4665773a2063616e27742077726170207a65726f20746f6b656e000000000000604482015290519081900360640190fd5b6009546108fc9073ffffffffffffffffffffffffffffffffffffffff16333086611f57565b610906828461211f565b60408051848152905173ffffffffffffffffffffffffffffffffffffffff84169133917feb5580a0908e96b78bdcb1a3c5638793b491a6073c3ff56061a069cb205817739181900360200190a35090919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b1580156109c157600080fd5b505afa1580156109d5573d6000803e3d6000fd5b505050506040513d60208110156109eb57600080fd5b5051604080517fe43581b8000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff9092169163e43581b891602480820192602092909190829003018186803b158015610a5b57600080fd5b505afa158015610a6f573d6000803e3d6000fd5b505050506040513d6020811015610a8557600080fd5b5051610af257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff16634e606c476040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b3a57600080fd5b505af1158015610b4e573d6000803e3d6000fd5b5050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60065481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b158015610bec57600080fd5b505afa158015610c00573d6000803e3d6000fd5b505050506040513d6020811015610c1657600080fd5b5051604080517faa271e1a000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff9092169163aa271e1a91602480820192602092909190829003018186803b158015610c8657600080fd5b505afa158015610c9a573d6000803e3d6000fd5b505050506040513d6020811015610cb057600080fd5b5051610d1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f436f72655265663a2043616c6c6572206973206e6f742061206d696e74657200604482015290519081900360640190fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8557600080fd5b505afa158015610d99573d6000803e3d6000fd5b505050506040513d6020811015610daf57600080fd5b505115610e1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f436f72655265663a2043616c6c65722069732070617573656400000000000000604482015290519081900360640190fd5b610e27828261211f565b60408051828152905173ffffffffffffffffffffffffffffffffffffffff84169133917fbcad3d7d3dfccb90d49c6063bf70f828901fefc88937d90af74e58e6e55bc39d9181900360200190a35050565b610e8233826121d0565b604080518281529051339182917fdbdf9b8e4b75e75b162d151ec8fc7f0561cabab5fcccfa2600be62223e4300c49181900360200190a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000808311610f32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806124f86023913960400191505060405180910390fd5b610f3c33846121d0565b600954610f609073ffffffffffffffffffffffffffffffffffffffff168385612294565b60408051848152905173ffffffffffffffffffffffffffffffffffffffff84169133917f12d6424519838e57637c6db9df31af32d7926ff0a53dd37007c191d0fe3028189181900360200190a35090919050565b60046020526000908152604090205481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b15801561102e57600080fd5b505afa158015611042573d6000803e3d6000fd5b505050506040513d602081101561105857600080fd5b5051604080517f4334614a000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff90921691634334614a91602480820192602092909190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b505161115f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f436f72655265663a2043616c6c6572206973206e6f742061206275726e657200604482015290519081900360640190fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c757600080fd5b505afa1580156111db573d6000803e3d6000fd5b505050506040513d60208110156111f157600080fd5b50511561125f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f436f72655265663a2043616c6c65722069732070617573656400000000000000604482015290519081900360640190fd5b61126982826121d0565b60408051828152905173ffffffffffffffffffffffffffffffffffffffff84169133917fdbdf9b8e4b75e75b162d151ec8fc7f0561cabab5fcccfa2600be62223e4300c49181900360200190a35050565b60076020526000908152604090205481565b600280546040805160206001841615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909316849004601f810184900484028201840190925281815292918301828280156107635780601f1061073857610100808354040283529160200191610763565b73430000000000000000000000000000000000000281565b6000610778338484611e76565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b1580156113ec57600080fd5b505afa158015611400573d6000803e3d6000fd5b505050506040513d602081101561141657600080fd5b5051604080517fe43581b8000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff9092169163e43581b891602480820192602092909190829003018186803b15801561148657600080fd5b505afa15801561149a573d6000803e3d6000fd5b505050506040513d60208110156114b057600080fd5b505161151d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b81156115de57604080517f662aa11d00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8516602482015290517343000000000000000000000000000000000000029163662aa11d9160448083019260209291908290030181600087803b1580156115ab57600080fd5b505af11580156115bf573d6000803e3d6000fd5b505050506040513d60208110156115d557600080fd5b5051905061077c565b604080517f954fa5ee00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8516602482015290517343000000000000000000000000000000000000029163954fa5ee9160448083019260209291908290030181600087803b1580156115ab57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b1580156116cd57600080fd5b505afa1580156116e1573d6000803e3d6000fd5b505050506040513d60208110156116f757600080fd5b5051604080517fe43581b8000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff9092169163e43581b891602480820192602092909190829003018186803b15801561176757600080fd5b505afa15801561177b573d6000803e3d6000fd5b505050506040513d602081101561179157600080fd5b50516117fe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b428410156118b457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4665773a20455850495245440000000000000000000000000000000000000000604482015290519081900360640190fd5b60065473ffffffffffffffffffffffffffffffffffffffff80891660008181526007602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611a15573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611a9057508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611afb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4665773a20494e56414c49445f5349474e415455524500000000000000000000604482015290519081900360640190fd5b611b06898989611d95565b505050505050505050565b600560209081526000928352604080842090915290825290205481565b600061077c8233610ed8565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b158015611ba157600080fd5b505afa158015611bb5573d6000803e3d6000fd5b505050506040513d6020811015611bcb57600080fd5b5051604080517fe43581b8000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff9092169163e43581b891602480820192602092909190829003018186803b158015611c3b57600080fd5b505afa158015611c4f573d6000803e3d6000fd5b505050506040513d6020811015611c6557600080fd5b5051611cd257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff166336b91f2b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611d5157600080fd5b505af1158015611d65573d6000803e3d6000fd5b505050505050565b600061077c8233610867565b60095473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b8082038281111561077c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260046020526040902054611eac908263ffffffff611e0416565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600460205260408082209390935590841681522054611eee908263ffffffff61245416565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061203557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611ff8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612097576040519150601f19603f3d011682016040523d82523d6000602084013e61209c565b606091505b50915091508180156120ca5750805115806120ca57508080602001905160208110156120c757600080fd5b50515b611d65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806124c76031913960400191505060405180910390fd5b600354612132908263ffffffff61245416565b60035573ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205461216b908263ffffffff61245416565b73ffffffffffffffffffffffffffffffffffffffff831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054612206908263ffffffff611e0416565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205560035461223f908263ffffffff611e0416565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b6020831061236a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161232d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146123cc576040519150601f19603f3d011682016040523d82523d6000602084013e6123d1565b606091505b50915091508180156123ff5750805115806123ff57508080602001905160208110156123fc57600080fd5b50515b610b4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061251b602d913960400191505060405180910390fd5b8082018281101561077c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65644665773a207a65726f20616d6f756e7420756e77726170206e6f7420616c6c6f7765645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564a26469706673582212203fc33f19631f6982b9939229a37c5e4a768f74907515d9ac5ebe0d64086ae03d64736f6c63430006060033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429436f72655265663a2043616c6c6572206973206e6f74206120677561726469616e206f7220676f7665726e6f72436f72655265663a2043616c6c6572206973206e6f74206120676f7665726e6f72a2646970667358221220029206231e80926e4ec79cfdeb33f7100710a08d8d553b2707459a8c5b536f8864736f6c63430006060033000000000000000000000000c7475929fd7c2d4bde7de5f9db863ea62101321c

Deployed Bytecode

0x60806040523480156200001157600080fd5b5060043610620001185760003560e01c8063a7dc2d7811620000a5578063d0ebdbe7116200006f578063d0ebdbe714620002e0578063ddbfe2431462000316578063e220831d1462000320578063f2f4eb26146200035e5762000118565b8063a7dc2d78146200021a578063ad4d4e291462000250578063c21ab7f9146200025a578063c8b11dfe14620002905762000118565b806367bab12811620000e757806367bab12814620001b05780638000963014620001d05780638456cb59146200020657806397d7577614620002105762000118565b80632d195bd2146200011d5780633f4ba83a1462000155578063481c6a75146200015f5780635c975abb1462000192575b600080fd5b62000153600480360360208110156200013557600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000368565b005b6200015362000454565b6200016962000607565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b6200019c62000623565b604080519115158252519081900360200190f35b6200016960048036036020811015620001c857600080fd5b503562000634565b6200015360048036036020811015620001e857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000669565b62000153620007d8565b6200016962000989565b62000169600480360360208110156200023257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16620009a1565b62000169620009c9565b62000169600480360360208110156200027257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16620009e5565b620002ce60048036036040811015620002a857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135151562000bae565b60408051918252519081900360200190f35b6200015360048036036020811015620002f857600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1662000d8d565b620002ce62000e5b565b62000153600480360360408110156200033857600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135811691602001351662000e61565b6200016962000f85565b60015473ffffffffffffffffffffffffffffffffffffffff163314620003ef57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff16634e606c476040518163ffffffff1660e01b8152600401600060405180830381600087803b1580156200043857600080fd5b505af11580156200044d573d6000803e3d6000fd5b5050505050565b600054604080517fe43581b8000000000000000000000000000000000000000000000000000000008152336004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff169163e43581b891602480820192602092909190829003018186803b158015620004ca57600080fd5b505afa158015620004df573d6000803e3d6000fd5b505050506040513d6020811015620004f657600080fd5b505180620005a45750600054604080517f0c68ba21000000000000000000000000000000000000000000000000000000008152336004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff1691630c68ba2191602480820192602092909190829003018186803b1580156200057557600080fd5b505afa1580156200058a573d6000803e3d6000fd5b505050506040513d6020811015620005a157600080fd5b50515b620005fb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018062003e24602d913960400191505060405180910390fd5b6200060562000fa6565b565b60015473ffffffffffffffffffffffffffffffffffffffff1681565b60006200062f62001099565b905090565b600381815481106200064257fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16905081565b600054604080517fe43581b8000000000000000000000000000000000000000000000000000000008152336004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff169163e43581b891602480820192602092909190829003018186803b158015620006df57600080fd5b505afa158015620006f4573d6000803e3d6000fd5b505050506040513d60208110156200070b57600080fd5b505162000764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602181526020018062003e516021913960400191505060405180910390fd5b600080547fffffffffffffffffffffff0000000000000000000000000000000000000000ff1661010073ffffffffffffffffffffffffffffffffffffffff841690810291909117825560405190917fad9400e618eb1344fde53db22397a1b82c765527ecbba3a5c86bcac15090828b91a250565b600054604080517fe43581b8000000000000000000000000000000000000000000000000000000008152336004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff169163e43581b891602480820192602092909190829003018186803b1580156200084e57600080fd5b505afa15801562000863573d6000803e3d6000fd5b505050506040513d60208110156200087a57600080fd5b505180620009285750600054604080517f0c68ba21000000000000000000000000000000000000000000000000000000008152336004820152905161010090920473ffffffffffffffffffffffffffffffffffffffff1691630c68ba2191602480820192602092909190829003018186803b158015620008f957600080fd5b505afa1580156200090e573d6000803e3d6000fd5b505050506040513d60208110156200092557600080fd5b50515b6200097f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018062003e24602d913960400191505060405180910390fd5b62000605620010a2565b73430000000000000000000000000000000000000281565b60026020526000908152604090205473ffffffffffffffffffffffffffffffffffffffff1681565b60045473ffffffffffffffffffffffffffffffffffffffff1681565b600073ffffffffffffffffffffffffffffffffffffffff821662000a0857600080fd5b73ffffffffffffffffffffffffffffffffffffffff828116600090815260026020526040902054161562000a3b57600080fd5b600480547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff8416908117909155604080516020808201939093528151808203840181529082019182905280519201919091209062000aaf906200116e565b8190604051809103906000f590508015801562000ad0573d6000803e3d6000fd5b50600480547fffffffffffffffffffffffff000000000000000000000000000000000000000090811690915573ffffffffffffffffffffffffffffffffffffffff848116600081815260026020908152604080832080549588169587168617905560038054600181018255938190527fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b9093018054909616851790955590548451938452908301528251939450927f940398321949af993516f7d144a2b9f43100b1de59365ba376e2b458d840c091929181900390910190a2919050565b60015460009073ffffffffffffffffffffffffffffffffffffffff16331462000c3857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b811562000cfe57604080517f662aa11d00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8516602482015290517343000000000000000000000000000000000000029163662aa11d9160448083019260209291908290030181600087803b15801562000cc857600080fd5b505af115801562000cdd573d6000803e3d6000fd5b505050506040513d602081101562000cf457600080fd5b5051905062000d87565b604080517f954fa5ee00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8516602482015290517343000000000000000000000000000000000000029163954fa5ee9160448083019260209291908290030181600087803b15801562000cc857600080fd5b92915050565b60015473ffffffffffffffffffffffffffffffffffffffff16331462000e1457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b60035490565b60015473ffffffffffffffffffffffffffffffffffffffff16331462000ee857604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff166336b91f2b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b15801562000f6857600080fd5b505af115801562000f7d573d6000803e3d6000fd5b505050505050565b600054610100900473ffffffffffffffffffffffffffffffffffffffff1690565b62000fb062000623565b6200101c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f5061757361626c653a206e6f7420706175736564000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001690557f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa6200106f6200116a565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190a1565b60005460ff1690565b620010ac62000623565b156200111957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601060248201527f5061757361626c653a2070617573656400000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff001660011790557f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586200106f5b3390565b612ca7806200117d8339019056fe60806040523480156200001157600080fd5b50600080546001600160a01b031916331781556040805163388a0bbd60e11b8152905173430000000000000000000000000000000000000292637114177a926004808201939182900301818387803b1580156200006d57600080fd5b505af115801562000082573d6000803e3d6000fd5b505050507343000000000000000000000000000000000000026001600160a01b0316634e606c476040518163ffffffff1660e01b8152600401600060405180830381600087803b158015620000d657600080fd5b505af1158015620000eb573d6000803e3d6000fd5b5050600880546001600160a01b031916339081179091556040805163ad4d4e2960e01b8152905146945091925063ad4d4e29916004808301926020929190829003018186803b1580156200013e57600080fd5b505afa15801562000153573d6000803e3d6000fd5b505050506040513d60208110156200016a57600080fd5b5051600980546001600160a01b0319166001600160a01b039283161790819055604080516306fdde0360e01b8152905191909216916306fdde03916004808301926000929190829003018186803b158015620001c557600080fd5b505afa158015620001da573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f1916820160405260208110156200020457600080fd5b81019080805160405193929190846401000000008211156200022557600080fd5b9083019060208201858111156200023b57600080fd5b82516401000000008111828201881017156200025657600080fd5b82525081516020918201929091019080838360005b83811015620002855781810151838201526020016200026b565b50505050905090810190601f168015620002b35780820380516001836020036101000a031916815260200191505b5060405250505060405160200180806b02332bb902bb930b83832b2160a51b815250600c0182805190602001908083835b60208310620003055780518252601f199092019160209182019101620002e4565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052600190805190602001906200035092919062000623565b50600960009054906101000a90046001600160a01b03166001600160a01b03166395d89b416040518163ffffffff1660e01b815260040160006040518083038186803b158015620003a057600080fd5b505afa158015620003b5573d6000803e3d6000fd5b505050506040513d6000823e601f3d908101601f191682016040526020811015620003df57600080fd5b81019080805160405193929190846401000000008211156200040057600080fd5b9083019060208201858111156200041657600080fd5b82516401000000008111828201881017156200043157600080fd5b82525081516020918201929091019080838360005b838110156200046057818101518382015260200162000446565b50505050905090810190601f1680156200048e5780820380516001836020036101000a031916815260200191505b50604052505050604051602001808061667760f01b81525060020182805190602001908083835b60208310620004d65780518252601f199092019160209182019101620004b5565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051602081830303815290604052600290805190602001906200052192919062000623565b5060405180605262002c55823960520190506040518091039020600160405180828054600181600116156101000203166002900480156200059c5780601f10620005795761010080835404028352918201916200059c565b820191906000526020600020905b81548152906001019060200180831162000587575b505060408051918290038220828201825260018352603160f81b602093840152815180840196909652858201527fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6606086015260808501959095523060a0808601919091528551808603909101815260c090940190945250508051910120600655620006c8565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200066657805160ff191683800117855562000696565b8280016001018555821562000696579182015b828111156200069657825182559160200191906001019062000679565b50620006a4929150620006a8565b5090565b620006c591905b80821115620006a45760008155600101620006af565b90565b61257d80620006d86000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c806379cc6790116100f9578063d0ebdbe711610097578063de0e9a3e11610071578063de0e9a3e14610643578063e220831d14610660578063ea598cb01461069b578063fc0c546a146106b8576101c4565b8063d0ebdbe714610577578063d505accf146105aa578063dd62ed3e14610608576101c4565b806397d75776116100d357806397d75776146104f3578063a9059cbb146104fb578063c45a015514610534578063c8b11dfe1461053c576101c4565b806379cc67901461047f5780637ecebe00146104b857806395d89b41146104eb576101c4565b8063313ce5671161016657806342966c681161014057806342966c68146103c5578063481c6a75146103e25780635dbd60591461041357806370a082311461044c576101c4565b8063313ce567146103665780633644e5151461038457806340c10f191461038c576101c4565b806323b872dd116101a257806323b872dd146102ad57806326599850146102f05780632d195bd21461032957806330adf81f1461035e576101c4565b806306fdde03146101c9578063095ea7b31461024657806318160ddd14610293575b600080fd5b6101d16106c0565b6040805160208082528351818301528351919283929083019185019080838360005b8381101561020b5781810151838201526020016101f3565b50505050905090810190601f1680156102385780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b61027f6004803603604081101561025c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561076b565b604080519115158252519081900360200190f35b61029b610782565b60408051918252519081900360200190f35b61027f600480360360608110156102c357600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060400135610788565b61029b6004803603604081101561030657600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16610867565b61035c6004803603602081101561033f57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661095a565b005b61029b610b55565b61036e610b79565b6040805160ff9092168252519081900360200190f35b61029b610b7e565b61035c600480360360408110156103a257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610b84565b61035c600480360360208110156103db57600080fd5b5035610e78565b6103ea610ebc565b6040805173ffffffffffffffffffffffffffffffffffffffff9092168252519081900360200190f35b61029b6004803603604081101561042957600080fd5b508035906020013573ffffffffffffffffffffffffffffffffffffffff16610ed8565b61029b6004803603602081101561046257600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16610fb4565b61035c6004803603604081101561049557600080fd5b5073ffffffffffffffffffffffffffffffffffffffff8135169060200135610fc6565b61029b600480360360208110156104ce57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff166112ba565b6101d16112cc565b6103ea611342565b61027f6004803603604081101561051157600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813516906020013561135a565b6103ea611367565b61029b6004803603604081101561055257600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001351515611383565b61035c6004803603602081101561058d57600080fd5b503573ffffffffffffffffffffffffffffffffffffffff16611666565b61035c600480360360e08110156105c057600080fd5b5073ffffffffffffffffffffffffffffffffffffffff813581169160208101359091169060408101359060608101359060ff6080820135169060a08101359060c00135611845565b61029b6004803603604081101561061e57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611b11565b61029b6004803603602081101561065957600080fd5b5035611b2e565b61035c6004803603604081101561067657600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81358116916020013516611b3a565b61029b600480360360208110156106b157600080fd5b5035611d6d565b6103ea611d79565b60018054604080516020600284861615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0190941693909304601f810184900484028201840190925281815292918301828280156107635780601f1061073857610100808354040283529160200191610763565b820191906000526020600020905b81548152906001019060200180831161074657829003601f168201915b505050505081565b6000610778338484611d95565b5060015b92915050565b60035481565b73ffffffffffffffffffffffffffffffffffffffff831660009081526005602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff146108525773ffffffffffffffffffffffffffffffffffffffff84166000908152600560209081526040808320338452909152902054610820908363ffffffff611e0416565b73ffffffffffffffffffffffffffffffffffffffff851660009081526005602090815260408083203384529091529020555b61085d848484611e76565b5060019392505050565b60008083116108d757604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601a60248201527f4665773a2063616e27742077726170207a65726f20746f6b656e000000000000604482015290519081900360640190fd5b6009546108fc9073ffffffffffffffffffffffffffffffffffffffff16333086611f57565b610906828461211f565b60408051848152905173ffffffffffffffffffffffffffffffffffffffff84169133917feb5580a0908e96b78bdcb1a3c5638793b491a6073c3ff56061a069cb205817739181900360200190a35090919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b1580156109c157600080fd5b505afa1580156109d5573d6000803e3d6000fd5b505050506040513d60208110156109eb57600080fd5b5051604080517fe43581b8000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff9092169163e43581b891602480820192602092909190829003018186803b158015610a5b57600080fd5b505afa158015610a6f573d6000803e3d6000fd5b505050506040513d6020811015610a8557600080fd5b5051610af257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8073ffffffffffffffffffffffffffffffffffffffff16634e606c476040518163ffffffff1660e01b8152600401600060405180830381600087803b158015610b3a57600080fd5b505af1158015610b4e573d6000803e3d6000fd5b5050505050565b7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c981565b601281565b60065481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b158015610bec57600080fd5b505afa158015610c00573d6000803e3d6000fd5b505050506040513d6020811015610c1657600080fd5b5051604080517faa271e1a000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff9092169163aa271e1a91602480820192602092909190829003018186803b158015610c8657600080fd5b505afa158015610c9a573d6000803e3d6000fd5b505050506040513d6020811015610cb057600080fd5b5051610d1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f436f72655265663a2043616c6c6572206973206e6f742061206d696e74657200604482015290519081900360640190fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8557600080fd5b505afa158015610d99573d6000803e3d6000fd5b505050506040513d6020811015610daf57600080fd5b505115610e1d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f436f72655265663a2043616c6c65722069732070617573656400000000000000604482015290519081900360640190fd5b610e27828261211f565b60408051828152905173ffffffffffffffffffffffffffffffffffffffff84169133917fbcad3d7d3dfccb90d49c6063bf70f828901fefc88937d90af74e58e6e55bc39d9181900360200190a35050565b610e8233826121d0565b604080518281529051339182917fdbdf9b8e4b75e75b162d151ec8fc7f0561cabab5fcccfa2600be62223e4300c49181900360200190a350565b60005473ffffffffffffffffffffffffffffffffffffffff1681565b6000808311610f32576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260238152602001806124f86023913960400191505060405180910390fd5b610f3c33846121d0565b600954610f609073ffffffffffffffffffffffffffffffffffffffff168385612294565b60408051848152905173ffffffffffffffffffffffffffffffffffffffff84169133917f12d6424519838e57637c6db9df31af32d7926ff0a53dd37007c191d0fe3028189181900360200190a35090919050565b60046020526000908152604090205481565b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b15801561102e57600080fd5b505afa158015611042573d6000803e3d6000fd5b505050506040513d602081101561105857600080fd5b5051604080517f4334614a000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff90921691634334614a91602480820192602092909190829003018186803b1580156110c857600080fd5b505afa1580156110dc573d6000803e3d6000fd5b505050506040513d60208110156110f257600080fd5b505161115f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601f60248201527f436f72655265663a2043616c6c6572206973206e6f742061206275726e657200604482015290519081900360640190fd5b600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16635c975abb6040518163ffffffff1660e01b815260040160206040518083038186803b1580156111c757600080fd5b505afa1580156111db573d6000803e3d6000fd5b505050506040513d60208110156111f157600080fd5b50511561125f57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601960248201527f436f72655265663a2043616c6c65722069732070617573656400000000000000604482015290519081900360640190fd5b61126982826121d0565b60408051828152905173ffffffffffffffffffffffffffffffffffffffff84169133917fdbdf9b8e4b75e75b162d151ec8fc7f0561cabab5fcccfa2600be62223e4300c49181900360200190a35050565b60076020526000908152604090205481565b600280546040805160206001841615610100027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01909316849004601f810184900484028201840190925281815292918301828280156107635780601f1061073857610100808354040283529160200191610763565b73430000000000000000000000000000000000000281565b6000610778338484611e76565b60085473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b1580156113ec57600080fd5b505afa158015611400573d6000803e3d6000fd5b505050506040513d602081101561141657600080fd5b5051604080517fe43581b8000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff9092169163e43581b891602480820192602092909190829003018186803b15801561148657600080fd5b505afa15801561149a573d6000803e3d6000fd5b505050506040513d60208110156114b057600080fd5b505161151d57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b81156115de57604080517f662aa11d00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8516602482015290517343000000000000000000000000000000000000029163662aa11d9160448083019260209291908290030181600087803b1580156115ab57600080fd5b505af11580156115bf573d6000803e3d6000fd5b505050506040513d60208110156115d557600080fd5b5051905061077c565b604080517f954fa5ee00000000000000000000000000000000000000000000000000000000815230600482015273ffffffffffffffffffffffffffffffffffffffff8516602482015290517343000000000000000000000000000000000000029163954fa5ee9160448083019260209291908290030181600087803b1580156115ab57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b1580156116cd57600080fd5b505afa1580156116e1573d6000803e3d6000fd5b505050506040513d60208110156116f757600080fd5b5051604080517fe43581b8000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff9092169163e43581b891602480820192602092909190829003018186803b15801561176757600080fd5b505afa15801561177b573d6000803e3d6000fd5b505050506040513d602081101561179157600080fd5b50516117fe57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff92909216919091179055565b428410156118b457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600c60248201527f4665773a20455850495245440000000000000000000000000000000000000000604482015290519081900360640190fd5b60065473ffffffffffffffffffffffffffffffffffffffff80891660008181526007602090815260408083208054600180820190925582517f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c98186015280840196909652958d166060860152608085018c905260a085019590955260c08085018b90528151808603909101815260e0850182528051908301207f19010000000000000000000000000000000000000000000000000000000000006101008601526101028501969096526101228085019690965280518085039096018652610142840180825286519683019690962095839052610162840180825286905260ff89166101828501526101a284018890526101c28401879052519193926101e2808201937fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe081019281900390910190855afa158015611a15573d6000803e3d6000fd5b50506040517fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0015191505073ffffffffffffffffffffffffffffffffffffffff811615801590611a9057508873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611afb57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601660248201527f4665773a20494e56414c49445f5349474e415455524500000000000000000000604482015290519081900360640190fd5b611b06898989611d95565b505050505050505050565b600560209081526000928352604080842090915290825290205481565b600061077c8233610ed8565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f2f4eb266040518163ffffffff1660e01b815260040160206040518083038186803b158015611ba157600080fd5b505afa158015611bb5573d6000803e3d6000fd5b505050506040513d6020811015611bcb57600080fd5b5051604080517fe43581b8000000000000000000000000000000000000000000000000000000008152336004820152905173ffffffffffffffffffffffffffffffffffffffff9092169163e43581b891602480820192602092909190829003018186803b158015611c3b57600080fd5b505afa158015611c4f573d6000803e3d6000fd5b505050506040513d6020811015611c6557600080fd5b5051611cd257604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600960248201527f464f5242494444454e0000000000000000000000000000000000000000000000604482015290519081900360640190fd5b8173ffffffffffffffffffffffffffffffffffffffff166336b91f2b826040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050600060405180830381600087803b158015611d5157600080fd5b505af1158015611d65573d6000803e3d6000fd5b505050505050565b600061077c8233610867565b60095473ffffffffffffffffffffffffffffffffffffffff1681565b73ffffffffffffffffffffffffffffffffffffffff808416600081815260056020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b8082038281111561077c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601560248201527f64732d6d6174682d7375622d756e646572666c6f770000000000000000000000604482015290519081900360640190fd5b73ffffffffffffffffffffffffffffffffffffffff8316600090815260046020526040902054611eac908263ffffffff611e0416565b73ffffffffffffffffffffffffffffffffffffffff8085166000908152600460205260408082209390935590841681522054611eee908263ffffffff61245416565b73ffffffffffffffffffffffffffffffffffffffff80841660008181526004602090815260409182902094909455805185815290519193928716927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a3505050565b6040805173ffffffffffffffffffffffffffffffffffffffff85811660248301528481166044830152606480830185905283518084039091018152608490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017815292518251600094606094938a169392918291908083835b6020831061203557805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe09092019160209182019101611ff8565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d8060008114612097576040519150601f19603f3d011682016040523d82523d6000602084013e61209c565b606091505b50915091508180156120ca5750805115806120ca57508080602001905160208110156120c757600080fd5b50515b611d65576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260318152602001806124c76031913960400191505060405180910390fd5b600354612132908263ffffffff61245416565b60035573ffffffffffffffffffffffffffffffffffffffff821660009081526004602052604090205461216b908263ffffffff61245416565b73ffffffffffffffffffffffffffffffffffffffff831660008181526004602090815260408083209490945583518581529351929391927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a35050565b73ffffffffffffffffffffffffffffffffffffffff8216600090815260046020526040902054612206908263ffffffff611e0416565b73ffffffffffffffffffffffffffffffffffffffff831660009081526004602052604090205560035461223f908263ffffffff611e0416565b60035560408051828152905160009173ffffffffffffffffffffffffffffffffffffffff8516917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9181900360200190a35050565b6040805173ffffffffffffffffffffffffffffffffffffffff8481166024830152604480830185905283518084039091018152606490920183526020820180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167fa9059cbb00000000000000000000000000000000000000000000000000000000178152925182516000946060949389169392918291908083835b6020831061236a57805182527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0909201916020918201910161232d565b6001836020036101000a0380198251168184511680821785525050505050509050019150506000604051808303816000865af19150503d80600081146123cc576040519150601f19603f3d011682016040523d82523d6000602084013e6123d1565b606091505b50915091508180156123ff5750805115806123ff57508080602001905160208110156123fc57600080fd5b50515b610b4e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602d81526020018061251b602d913960400191505060405180910390fd5b8082018281101561077c57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601460248201527f64732d6d6174682d6164642d6f766572666c6f77000000000000000000000000604482015290519081900360640190fdfe5472616e7366657248656c7065723a3a7472616e7366657246726f6d3a207472616e7366657246726f6d206661696c65644665773a207a65726f20616d6f756e7420756e77726170206e6f7420616c6c6f7765645472616e7366657248656c7065723a3a736166655472616e736665723a207472616e73666572206661696c6564a26469706673582212203fc33f19631f6982b9939229a37c5e4a768f74907515d9ac5ebe0d64086ae03d64736f6c63430006060033454950373132446f6d61696e28737472696e67206e616d652c737472696e672076657273696f6e2c75696e7432353620636861696e49642c6164647265737320766572696679696e67436f6e747261637429436f72655265663a2043616c6c6572206973206e6f74206120677561726469616e206f7220676f7665726e6f72436f72655265663a2043616c6c6572206973206e6f74206120676f7665726e6f72a2646970667358221220029206231e80926e4ec79cfdeb33f7100710a08d8d553b2707459a8c5b536f8864736f6c63430006060033

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

000000000000000000000000c7475929fd7c2d4bde7de5f9db863ea62101321c

-----Decoded View---------------
Arg [0] : coreAddress (address): 0xC7475929FD7c2D4BDe7dE5f9DB863eA62101321C

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c7475929fd7c2d4bde7de5f9db863ea62101321c


Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.