ETH Price: $3,159.71 (+0.53%)
Gas: 2 Gwei

Contract

0x268be5667d4e5bD036Bd608d0601ef1441604429
 

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw By Admi...123457712021-05-01 3:06:241169 days ago1619838384IN
DINNGO: Proxy
0 ETH0.0009843930
Add User123457712021-05-01 3:06:241169 days ago1619838384IN
DINNGO: Proxy
0 ETH0.0008888130
Upgrade119588982021-03-02 12:48:431229 days ago1614689323IN
DINNGO: Proxy
0 ETH0.00383007129.71428571
Deposit115248062020-12-25 19:52:351295 days ago1608925955IN
DINNGO: Proxy
0.0352 ETH0.0022670646
Add User110132832020-10-08 6:15:111374 days ago1602137711IN
DINNGO: Proxy
0 ETH0.0021211830
Settle110130132020-10-08 5:12:471374 days ago1602133967IN
DINNGO: Proxy
0 ETH0.0058269630
Deposit110062482020-10-07 3:41:201375 days ago1602042080IN
DINNGO: Proxy
0.05 ETH0.0040905783
Deposit109217182020-09-23 23:17:491388 days ago1600903069IN
DINNGO: Proxy
0.4644 ETH0.0025027373
Deposit109155092020-09-23 0:23:101389 days ago1600820590IN
DINNGO: Proxy
0.2407 ETH0.00370267108
Withdraw By Admi...109098542020-09-22 3:23:281390 days ago1600745008IN
DINNGO: Proxy
0 ETH0.00715926107
Withdraw By Admi...109098522020-09-22 3:22:441390 days ago1600744964IN
DINNGO: Proxy
0 ETH0.00715851107
Add User109098362020-09-22 3:19:131390 days ago1600744753IN
DINNGO: Proxy
0 ETH0.00756554107
Deposit Token108253462020-09-09 4:24:371403 days ago1599625477IN
DINNGO: Proxy
0 ETH0.0075154273
Deposit107786502020-09-02 0:44:351410 days ago1599007475IN
DINNGO: Proxy
0.1582 ETH0.01645632480
Deposit107676902020-08-31 8:50:341412 days ago1598863834IN
DINNGO: Proxy
0.175 ETH0.00798817233
Deposit107654662020-08-31 0:31:441412 days ago1598833904IN
DINNGO: Proxy
0.0116 ETH0.00414836121
Withdraw By Admi...104790522020-07-17 20:10:351456 days ago1595016635IN
DINNGO: Proxy
0 ETH0.0020078130
Add User104790522020-07-17 20:10:351456 days ago1595016635IN
DINNGO: Proxy
0 ETH0.0021211830
Deposit104787112020-07-17 18:55:591456 days ago1595012159IN
DINNGO: Proxy
0.0187 ETH0.0020699242
Withdraw By Admi...98819862020-04-16 6:55:211549 days ago1587020121IN
DINNGO: Proxy
0 ETH0.0006694410
Withdraw By Admi...98819762020-04-16 6:53:481549 days ago1587020028IN
DINNGO: Proxy
0 ETH0.0005193910
Withdraw By Admi...98819752020-04-16 6:53:351549 days ago1587020015IN
DINNGO: Proxy
0 ETH0.000936710
Withdraw By Admi...98819402020-04-16 6:44:271549 days ago1587019467IN
DINNGO: Proxy
0 ETH0.0007790815
Withdraw By Admi...98819402020-04-16 6:44:271549 days ago1587019467IN
DINNGO: Proxy
0 ETH0.0014315715
Withdraw By Admi...98819102020-04-16 6:36:131549 days ago1587018973IN
DINNGO: Proxy
0 ETH0.0007791615
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
109098542020-09-22 3:23:281390 days ago1600745008
DINNGO: Proxy
0.21998 ETH
109098522020-09-22 3:22:441390 days ago1600744964
DINNGO: Proxy
0.00001 ETH
109095982020-09-22 2:28:411390 days ago1600741721
DINNGO: Proxy
0.0001 ETH
104790522020-07-17 20:10:351456 days ago1595016635
DINNGO: Proxy
0.0167 ETH
98819862020-04-16 6:55:211549 days ago1587020121
DINNGO: Proxy
0.05696513 ETH
98819762020-04-16 6:53:481549 days ago1587020028
DINNGO: Proxy
0.10950506 ETH
98819402020-04-16 6:44:271549 days ago1587019467
DINNGO: Proxy
0.13615994 ETH
98819102020-04-16 6:36:131549 days ago1587018973
DINNGO: Proxy
0.12381489 ETH
98819002020-04-16 6:34:491549 days ago1587018889
DINNGO: Proxy
0.08001699 ETH
98818752020-04-16 6:29:231549 days ago1587018563
DINNGO: Proxy
0.09927116 ETH
98818032020-04-16 6:11:391549 days ago1587017499
DINNGO: Proxy
0.12085355 ETH
98817722020-04-16 6:06:161549 days ago1587017176
DINNGO: Proxy
0.1264016 ETH
98817132020-04-16 5:53:361549 days ago1587016416
DINNGO: Proxy
0.69612212 ETH
98816582020-04-16 5:42:011549 days ago1587015721
DINNGO: Proxy
0.7291 ETH
98814812020-04-16 4:58:141549 days ago1587013094
DINNGO: Proxy
0.47181384 ETH
98812982020-04-16 4:17:261549 days ago1587010646
DINNGO: Proxy
0.64530302 ETH
98194362020-04-06 15:54:551559 days ago1586188495
DINNGO: Proxy
0.00321337 ETH
97261702020-03-23 6:46:021573 days ago1584945962
DINNGO: Proxy
0.0152301 ETH
97260852020-03-23 6:27:421573 days ago1584944862
DINNGO: Proxy
0.0066 ETH
97260842020-03-23 6:27:281573 days ago1584944848
DINNGO: Proxy
0.05259256 ETH
93247092020-01-21 11:58:521635 days ago1579607932
DINNGO: Proxy
2.91108978 ETH
92006432020-01-02 11:18:321654 days ago1577963912
DINNGO: Proxy
2.3413343 ETH
91996202020-01-02 6:38:191654 days ago1577947099
DINNGO: Proxy
0.005 ETH
91855962019-12-30 11:16:501657 days ago1577704610
DINNGO: Proxy
0.03222 ETH
91855802019-12-30 11:11:071657 days ago1577704267
DINNGO: Proxy
0.1146 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
DinngoProxy

Compiler Version
v0.5.12+commit.7709ece9

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2019-11-18
*/

// File: openzeppelin-solidity/contracts/utils/Address.sol

pragma solidity ^0.5.0;

/**
 * @dev Collection of functions related to the address type,
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * This test is non-exhaustive, and there may be false-negatives: during the
     * execution of a contract's constructor, its address will be reported as
     * not containing a contract.
     *
     * > It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies in extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }
}

// File: openzeppelin-solidity/contracts/ownership/Ownable.sol

pragma solidity ^0.5.0;

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be aplied to your functions to restrict their use to
 * the owner.
 */
contract Ownable {
    address private _owner;

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(isOwner(), "Ownable: caller is not the owner");
        _;
    }

    /**
     * @dev Returns true if the caller is the current owner.
     */
    function isOwner() public view returns (bool) {
        return msg.sender == _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * > Note: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     */
    function _transferOwnership(address newOwner) internal {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

// File: localhost/contracts/proxy/Proxy.sol

pragma solidity ^0.5.0;



/**
 * @title Proxy interface for Dinngo exchange contract.
 * @author Ben Huang
 * @dev Referenced the proxy contract from zeppelin-os project.
 * https://github.com/zeppelinos/zos/tree/master/packages/lib
 */
contract Proxy is Ownable {
    using Address for address;

    // keccak256 hash of "dinngo.proxy.implementation"
    bytes32 private constant IMPLEMENTATION_SLOT =
        0x3b2ff02c0f36dba7cc1b20a669e540b974575f04ef71846d482983efb03bebb4;

    event Upgraded(address indexed implementation);

    constructor(address implementation) internal {
        assert(IMPLEMENTATION_SLOT == keccak256("dinngo.proxy.implementation"));
        _setImplementation(implementation);
    }

    /**
     * @notice Upgrade the implementation contract. Can only be triggered
     * by the owner. Emits the Upgraded event.
     * @param implementation The new implementation address.
     */
    function upgrade(address implementation) external onlyOwner {
        _setImplementation(implementation);
        emit Upgraded(implementation);
    }

    /**
     * @notice Return the version information of implementation
     * @return version The version
     */
    function implementationVersion() external view returns (uint256 version){
        (bool ok, bytes memory ret) = _implementation().staticcall(
            abi.encodeWithSignature("version()")
        );
        require(ok);
        assembly {
            version := mload(add(add(ret, 0x20), 0))
        }
        return version;
    }

    /**
     * @dev Set the implementation address in the storage slot.
     * @param implementation The new implementation address.
     */
    function _setImplementation(address implementation) internal {
        require(implementation.isContract(),
            "Implementation address should be a contract address"
        );
        bytes32 slot = IMPLEMENTATION_SLOT;

        assembly {
            sstore(slot, implementation)
        }
    }

    /**
     * @dev Returns the current implementation address.
     */
    function _implementation() internal view returns (address implementation) {
        bytes32 slot = IMPLEMENTATION_SLOT;

        assembly {
            implementation := sload(slot)
        }
    }
}

// File: openzeppelin-solidity/contracts/math/SafeMath.sol

pragma solidity ^0.5.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

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

        return c;
    }

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

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

        return c;
    }

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

        return c;
    }

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

// File: localhost/contracts/Administrable.sol

pragma solidity ^0.5.0;


/**
 * @title Administrable
 * @dev The administrator structure
 */
/**
 * @title Administrable
 */
contract Administrable {
    using SafeMath for uint256;
    mapping (address => bool) private admins;
    uint256 private _nAdmin;
    uint256 private _nLimit;

    event Activated(address indexed admin);
    event Deactivated(address indexed admin);

    /**
     * @dev The Administrable constructor sets the original `admin` of the contract to the sender
     * account. The initial limit amount of admin is 2.
     */
    constructor() internal {
        _setAdminLimit(2);
        _activateAdmin(msg.sender);
    }

    function isAdmin() public view returns(bool) {
        return admins[msg.sender];
    }

    /**
     * @dev Throws if called by non-admin.
     */
    modifier onlyAdmin() {
        require(isAdmin(), "sender not admin");
        _;
    }

    function activateAdmin(address admin) external onlyAdmin {
        _activateAdmin(admin);
    }

    function deactivateAdmin(address admin) external onlyAdmin {
        _safeDeactivateAdmin(admin);
    }

    function setAdminLimit(uint256 n) external onlyAdmin {
        _setAdminLimit(n);
    }

    function _setAdminLimit(uint256 n) internal {
        require(_nLimit != n, "same limit");
        _nLimit = n;
    }

    /**
     * @notice The Amount of admin should be bounded by _nLimit.
     */
    function _activateAdmin(address admin) internal {
        require(admin != address(0), "invalid address");
        require(_nAdmin < _nLimit, "too many admins existed");
        require(!admins[admin], "already admin");
        admins[admin] = true;
        _nAdmin = _nAdmin.add(1);
        emit Activated(admin);
    }

    /**
     * @notice At least one admin should exists.
     */
    function _safeDeactivateAdmin(address admin) internal {
        require(_nAdmin > 1, "admin should > 1");
        _deactivateAdmin(admin);
    }

    function _deactivateAdmin(address admin) internal {
        require(admins[admin], "not admin");
        admins[admin] = false;
        _nAdmin = _nAdmin.sub(1);
        emit Deactivated(admin);
    }
}

// File: localhost/contracts/DinngoProxy.sol

pragma solidity 0.5.12;





/**
 * @title Dinngo
 * @author Ben Huang
 * @notice Main exchange contract for Dinngo
 */
contract DinngoProxy is Ownable, Administrable, Proxy {
    uint256 public processTime;

    mapping (address => mapping (address => uint256)) public balances;
    mapping (bytes32 => uint256) public orderFills;
    mapping (uint256 => address payable) public userID_Address;
    mapping (uint256 => address) public tokenID_Address;
    mapping (address => uint256) public nonces;
    mapping (address => uint256) public ranks;
    mapping (address => uint256) public lockTimes;

    address public walletOwner;
    address public DGOToken;
    uint8 public eventConf;

    uint256 constant public version = 2;

    /**
     * @dev User ID 0 is the management wallet.
     * Token ID 0 is ETH (address 0). Token ID 1 is DGO.
     * @param _walletOwner The fee wallet owner
     * @param _dinngoToken The contract address of DGO
     * @param _impl The implementation contract address
     */
    constructor(
        address payable _walletOwner,
        address _dinngoToken,
        address _impl
    ) Proxy(_impl) public {
        processTime = 90 days;
        walletOwner = _walletOwner;
        tokenID_Address[0] = address(0);
        ranks[address(0)] = 1;
        tokenID_Address[1] = _dinngoToken;
        ranks[_dinngoToken] = 1;
        DGOToken = _dinngoToken;
        eventConf = 0xff;
    }

    function setEvent(uint8 conf) external onlyAdmin {
        (bool ok,) = _implementation().delegatecall(
            abi.encodeWithSignature("setEvent(uint8)", conf)
        );
        require(ok);
    }

    /**
     * @notice Add the address to the user list. Event AddUser will be emitted
     * after execution.
     * @dev Record the user list to map the user address to a specific user ID, in
     * order to compact the data size when transferring user address information
     * @param id The user id to be assigned
     * @param user The user address to be added
     */
    function addUser(uint256 id, address user) external onlyAdmin {
        (bool ok,) = _implementation().delegatecall(
            abi.encodeWithSignature("addUser(uint256,address)", id, user)
        );
        require(ok);
    }

    /**
     * @notice Remove the address from the user list.
     * @dev The user rank is set to 0 to remove the user.
     * @param user The user address to be removed
     */
    function removeUser(address user) external onlyAdmin {
        (bool ok,) = _implementation().delegatecall(
            abi.encodeWithSignature("remove(address)", user)
        );
        require(ok);
    }

    /**
     * @notice Update the rank of user. Can only be called by admin.
     * @param user The user address
     * @param rank The rank to be assigned
     */
    function updateUserRank(address user, uint256 rank) external onlyAdmin {
        (bool ok,) = _implementation().delegatecall(
            abi.encodeWithSignature("updateRank(address,uint256)", user, rank)
        );
        require(ok);
    }

    /**
     * @notice Add the token to the token list. Event AddToken will be emitted
     * after execution.
     * @dev Record the token list to map the token contract address to a specific
     * token ID, in order to compact the data size when transferring token contract
     * address information
     * @param id The token id to be assigned
     * @param token The token contract address to be added
     */
    function addToken(uint256 id, address token) external onlyOwner {
        (bool ok,) = _implementation().delegatecall(
            abi.encodeWithSignature("addToken(uint256,address)", id, token)
        );
        require(ok);
    }

    /**
     * @notice Remove the token from the token list.
     * @dev The token rank is set to 0 to remove the token.
     * @param token The token contract address to be removed.
     */
    function removeToken(address token) external onlyOwner {
        (bool ok,) = _implementation().delegatecall(
            abi.encodeWithSignature("remove(address)", token)
        );
        require(ok);
    }

    /**
     * @notice Update the rank of token. Can only be called by owner.
     * @param token The token contract address.
     * @param rank The rank to be assigned.
     */
    function updateTokenRank(address token, uint256 rank) external onlyOwner {
        (bool ok,) = _implementation().delegatecall(
            abi.encodeWithSignature("updateRank(address,uint256)", token, rank)
        );
        require(ok);
    }

    function activateAdmin(address admin) external onlyOwner {
        _activateAdmin(admin);
    }

    function deactivateAdmin(address admin) external onlyOwner {
        _safeDeactivateAdmin(admin);
    }

    /**
     * @notice Force-deactivate allows owner to deactivate admin even there will be
     * no admin left. Should only be executed under emergency situation.
     */
    function forceDeactivateAdmin(address admin) external onlyOwner {
        _deactivateAdmin(admin);
    }

    function setAdminLimit(uint256 n) external onlyOwner {
        _setAdminLimit(n);
    }

    /**
     * @notice The deposit function for ether. The ether that is sent with the function
     * call will be deposited. The first time user will be added to the user list.
     * Event Deposit will be emitted after execution.
     */
    function deposit() external payable {
        (bool ok,) = _implementation().delegatecall(abi.encodeWithSignature("deposit()"));
        require(ok);
    }

    /**
     * @notice The deposit function for tokens. The first time user will be added to
     * the user list. Event Deposit will be emitted after execution.
     * @param token Address of the token contract to be deposited
     * @param amount Amount of the token to be depositied
     */
    function depositToken(address token, uint256 amount) external {
        (bool ok,) = _implementation().delegatecall(
            abi.encodeWithSignature("depositToken(address,uint256)", token, amount)
        );
        require(ok);
    }

    /**
     * @notice The withdraw function for ether. Event Withdraw will be emitted
     * after execution. User needs to be locked before calling withdraw.
     * @param amount The amount to be withdrawn.
     */
    function withdraw(uint256 amount) external {
        (bool ok,) = _implementation().delegatecall(
            abi.encodeWithSignature("withdraw(uint256)", amount)
        );
        require(ok);
    }

    /**
     * @notice The withdraw function for tokens. Event Withdraw will be emitted
     * after execution. User needs to be locked before calling withdraw.
     * @param token The token contract address to be withdrawn.
     * @param amount The token amount to be withdrawn.
     */
    function withdrawToken(address token, uint256 amount) external {
        (bool ok,) = _implementation().delegatecall(
            abi.encodeWithSignature("withdrawToken(address,uint256)", token, amount)
        );
        require(ok);
    }

    /**
     * @notice The function to extract the fee from the fee account. This function can
     * only be triggered by the income wallet owner.
     * @param amount The amount to be extracted
     */
    function extractFee(uint256 amount) external {
        (bool ok,) = _implementation().delegatecall(
            abi.encodeWithSignature("extractFee(uint256)", amount)
        );
        require(ok);
    }

    /**
     * @notice The function to extract the fee from the fee account. This function can
     * only be triggered by the income wallet owner.
     * @param token The token to be extracted
     * @param amount The amount to be extracted
     */
    function extractTokenFee(address token, uint256 amount) external {
        (bool ok,) = _implementation().delegatecall(
            abi.encodeWithSignature("extractTokenFee(address,uint256)", token, amount)
        );
        require(ok);
    }

    /**
     * @notice The function to get the balance from fee account.
     * @param token The token of the balance to be queried
     */
    function getWalletBalance(address token) external returns (uint256 balance) {
        (bool ok, bytes memory ret) = _implementation().delegatecall(
            abi.encodeWithSignature("getWalletBalance(address)", token)
        );
        require(ok);
        balance = abi.decode(ret, (uint256));
    }

    /**
     * @notice The function to change the owner of fee wallet.
     * @param newOwner The new wallet owner to be assigned
     */
    function changeWalletOwner(address newOwner) external onlyOwner {
        (bool ok,) = _implementation().delegatecall(
            abi.encodeWithSignature("changeWalletOwner(address)", newOwner)
        );
        require(ok);
    }

    /**
     * @notice The withdraw function that can only be triggered by owner.
     * Event Withdraw will be emitted after execution.
     * @param withdrawal The serialized withdrawal data
     */
    function withdrawByAdmin(bytes calldata withdrawal, bytes calldata signature) external onlyAdmin {
        (bool ok, bytes memory ret) = _implementation().delegatecall(
            abi.encodeWithSignature("withdrawByAdmin(bytes,bytes)", withdrawal, signature)
        );
        require(ok, string(ret));
    }

    /**
     * @notice The transfer function that can only be triggered by owner.
     * Event Transfer will be emitted afer execution.
     * @param transferral The serialized transferral data.
     */
    function transferByAdmin(bytes calldata transferral, bytes calldata signature) external onlyAdmin {
        (bool ok, bytes memory ret) = _implementation().delegatecall(
            abi.encodeWithSignature("transferByAdmin(bytes,bytes)", transferral, signature)
        );
        require(ok, string(ret));
    }

    /**
     * @notice The settle function for orders. First order is taker order and the followings
     * are maker orders.
     * @param orders The serialized orders.
     */
    function settle(bytes calldata orders, bytes calldata signature) external onlyAdmin {
        (bool ok, bytes memory ret) = _implementation().delegatecall(
            abi.encodeWithSignature("settle(bytes,bytes)", orders, signature)
        );
        require(ok, string(ret));
    }

    /**
     * @notice The migrate function that can only be triggered by admin.
     * @param migration The serialized migration data
     */
    function migrateByAdmin(bytes calldata migration, bytes calldata signature) external onlyAdmin {
        (bool ok, bytes memory ret) = _implementation().delegatecall(
            abi.encodeWithSignature("migrateByAdmin(bytes,bytes)", migration, signature)
        );
        require(ok, string(ret));
    }

    /**
     * @notice The migration handler
     * @param user The user address to receive the migrated amount.
     * @param token The token address to be migrated.
     * @param amount The amount to be migrated.
     */
    function migrateTo(address user, address token, uint256 amount) payable external {
        (bool ok,) = _implementation().delegatecall(
            abi.encodeWithSignature("migrateTo(address,address,uint256)", user, token, amount)
        );
        require(ok);
    }

    /**
     * @notice Announce lock of the sender
     */
    function lock() external {
        (bool ok,) = _implementation().delegatecall(abi.encodeWithSignature("lock()"));
        require(ok);
    }

    /**
     * @notice Unlock the sender
     */
    function unlock() external {
        (bool ok,) = _implementation().delegatecall(abi.encodeWithSignature("unlock()"));
        require(ok);
    }

    /**
     * @notice Change the processing time of locking the user address
     */
    function changeProcessTime(uint256 time) external onlyOwner {
        (bool ok,) = _implementation().delegatecall(
            abi.encodeWithSignature("changeProcessTime(uint256)", time)
        );
        require(ok);
    }

    /**
     * @notice Get hash from the transferral parameters.
     */
    function getTransferralHash(
        address from,
        uint8 config,
        uint32 nonce,
        address[] calldata tos,
        uint16[] calldata tokenIDs,
        uint256[] calldata amounts,
        uint256[] calldata fees
    ) external view returns (bytes32 hash) {
        (bool ok, bytes memory ret) = _implementation().staticcall(
            abi.encodeWithSignature(
                "getTransferralHash(address,uint8,uint32,address[],uint16[],uint256[],uint256[])",
                from, config, nonce, tos, tokenIDs, amounts, fees
            )
        );
        require(ok);
        hash = abi.decode(ret, (bytes32));
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"_walletOwner","type":"address"},{"internalType":"address","name":"_dinngoToken","type":"address"},{"internalType":"address","name":"_impl","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"Activated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"admin","type":"address"}],"name":"Deactivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"implementation","type":"address"}],"name":"Upgraded","type":"event"},{"constant":true,"inputs":[],"name":"DGOToken","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"activateAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"token","type":"address"}],"name":"addToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"user","type":"address"}],"name":"addUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"changeProcessTime","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"changeWalletOwner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"deactivateAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"deposit","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"depositToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"eventConf","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"extractFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"extractTokenFee","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"admin","type":"address"}],"name":"forceDeactivateAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"uint8","name":"config","type":"uint8"},{"internalType":"uint32","name":"nonce","type":"uint32"},{"internalType":"address[]","name":"tos","type":"address[]"},{"internalType":"uint16[]","name":"tokenIDs","type":"uint16[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"},{"internalType":"uint256[]","name":"fees","type":"uint256[]"}],"name":"getTransferralHash","outputs":[{"internalType":"bytes32","name":"hash","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"getWalletBalance","outputs":[{"internalType":"uint256","name":"balance","type":"uint256"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"implementationVersion","outputs":[{"internalType":"uint256","name":"version","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isAdmin","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"lock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lockTimes","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"migration","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"migrateByAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"migrateTo","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"name":"orderFills","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"processTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ranks","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"}],"name":"removeToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"}],"name":"removeUser","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"renounceOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"n","type":"uint256"}],"name":"setAdminLimit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"uint8","name":"conf","type":"uint8"}],"name":"setEvent","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"orders","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"settle","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"tokenID_Address","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"transferral","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"transferByAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"unlock","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"rank","type":"uint256"}],"name":"updateTokenRank","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"user","type":"address"},{"internalType":"uint256","name":"rank","type":"uint256"}],"name":"updateUserRank","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"implementation","type":"address"}],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"userID_Address","outputs":[{"internalType":"address payable","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"version","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"walletOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"bytes","name":"withdrawal","type":"bytes"},{"internalType":"bytes","name":"signature","type":"bytes"}],"name":"withdrawByAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"}]

60806040523480156200001157600080fd5b506040516200335938038062003359833981810160405260608110156200003757600080fd5b5080516020820151604092830151600080546001600160a01b0319163317808255945193949293919283926001600160a01b039190911691907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3620000aa60026001600160e01b036200020416565b620000be336001600160e01b036200027b16565b604080517f64696e6e676f2e70726f78792e696d706c656d656e746174696f6e00000000008152905190819003601b01902060008051602062003306833981519152146200010857fe5b6200011c816001600160e01b036200046616565b50506276a700600455600c80546001600160a01b039384166001600160a01b0319918216179091557f5eff886ea0ce6ca488a3d6e336d6c0f75f46d19b42c06ce5ee98e42c96d256c780548216905560017f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e38190557fad67d757c34507f157cacfa2e3153e9f260a2244f30428821be7be64587ac55f80549390941692821683179093556000828152600a6020526040902092909255600d805460ff60a01b1993169091179190911674ff000000000000000000000000000000000000000017905562000571565b8060035414156200027657604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600a60248201527f73616d65206c696d697400000000000000000000000000000000000000000000604482015290519081900360640190fd5b600355565b6001600160a01b038116620002f157604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600f60248201527f696e76616c696420616464726573730000000000000000000000000000000000604482015290519081900360640190fd5b600354600254106200036457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601760248201527f746f6f206d616e792061646d696e732065786973746564000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526001602052604090205460ff1615620003ed57604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152600d60248201527f616c72656164792061646d696e00000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0381166000908152600160208181526040909220805460ff1916821790556002546200042c9290919062002c19620004ef821b17901c565b6002556040516001600160a01b038216907f0cc43938d137e7efade6a531f663e78c1fc75257b0d65ffda2fdaf70cb49cdf990600090a250565b62000485816001600160a01b03166200056b60201b62002c131760201c565b620004dc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526033815260200180620033266033913960400191505060405180910390fd5b6000805160206200330683398151915255565b6000828201838110156200056457604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b3b151590565b612d8580620005816000396000f3fe6080604052600436106102885760003560e01c806370ceeeb21161015a578063b6db75a0116100c1578063e8b93ad71161007a578063e8b93ad714610d65578063ed8ec19414610d8f578063f1c5f1e214610dc2578063f2fde38b14610dec578063f7213db614610e1f578063f83d08ba14610e4957610288565b8063b6db75a014610c9a578063c23f001f14610caf578063d0e30db014610cea578063dd41250f14610cf2578063df6fa20e14610d07578063e65ff75414610d3a57610288565b806391a8c4b81161011357806391a8c4b814610ba15780639857518814610bcb5780639e281a9814610bfe578063a69df4b514610c37578063a84aa0c014610c4c578063b46b791914610c6157610288565b806370ceeeb214610ab5578063715018a614610ae25780637adde41314610af75780637ecebe0014610b305780638da5cb5b14610b635780638f32d59b14610b7857610288565b806339bc1afe116101fe5780635e1f56d9116101b75780635e1f56d9146108fd5780635fa7b584146109305780635fdc7c121461096357806361959f8514610a2e5780636f9a5fb314610a5857806370a342c214610a8b57610288565b806339bc1afe146106ad57806349fa92cb1461077857806354fd4d501461084357806356c7c1b31461085857806357016b0a1461088b57806358d9fa04146108c457610288565b80631af1a768116102505780631af1a768146105755780632123cb78146105a857806324ffad88146105e157806325691de4146106175780632e1a7d4d1461064a578063338b5dea1461067457610288565b806306bfcec61461028d5780630900f010146102b4578063153c283f146102e957806316bf3d55146104795780631ae879e814610544575b600080fd5b34801561029957600080fd5b506102a2610e5e565b60408051918252519081900360200190f35b3480156102c057600080fd5b506102e7600480360360208110156102d757600080fd5b50356001600160a01b0316610f4c565b005b3480156102f557600080fd5b506102a2600480360360e081101561030c57600080fd5b6001600160a01b038235169160ff6020820135169163ffffffff6040830135169190810190608081016060820135600160201b81111561034b57600080fd5b82018360208201111561035d57600080fd5b803590602001918460208302840111600160201b8311171561037e57600080fd5b919390929091602081019035600160201b81111561039b57600080fd5b8201836020820111156103ad57600080fd5b803590602001918460208302840111600160201b831117156103ce57600080fd5b919390929091602081019035600160201b8111156103eb57600080fd5b8201836020820111156103fd57600080fd5b803590602001918460208302840111600160201b8311171561041e57600080fd5b919390929091602081019035600160201b81111561043b57600080fd5b82018360208201111561044d57600080fd5b803590602001918460208302840111600160201b8311171561046e57600080fd5b509092509050610fd3565b34801561048557600080fd5b506102e76004803603604081101561049c57600080fd5b810190602081018135600160201b8111156104b657600080fd5b8201836020820111156104c857600080fd5b803590602001918460018302840111600160201b831117156104e957600080fd5b919390929091602081019035600160201b81111561050657600080fd5b82018360208201111561051857600080fd5b803590602001918460018302840111600160201b8311171561053957600080fd5b5090925090506111fb565b34801561055057600080fd5b5061055961141c565b604080516001600160a01b039092168252519081900360200190f35b34801561058157600080fd5b506102e76004803603602081101561059857600080fd5b50356001600160a01b031661142b565b3480156105b457600080fd5b506102e7600480360360408110156105cb57600080fd5b506001600160a01b03813516906020013561147e565b6102e7600480360360608110156105f757600080fd5b506001600160a01b038135811691602081013590911690604001356115c1565b34801561062357600080fd5b506102a26004803603602081101561063a57600080fd5b50356001600160a01b03166116c6565b34801561065657600080fd5b506102e76004803603602081101561066d57600080fd5b50356116d8565b34801561068057600080fd5b506102e76004803603604081101561069757600080fd5b506001600160a01b0381351690602001356117cb565b3480156106b957600080fd5b506102e7600480360360408110156106d057600080fd5b810190602081018135600160201b8111156106ea57600080fd5b8201836020820111156106fc57600080fd5b803590602001918460018302840111600160201b8311171561071d57600080fd5b919390929091602081019035600160201b81111561073a57600080fd5b82018360208201111561074c57600080fd5b803590602001918460018302840111600160201b8311171561076d57600080fd5b50909250905061184e565b34801561078457600080fd5b506102e76004803603604081101561079b57600080fd5b810190602081018135600160201b8111156107b557600080fd5b8201836020820111156107c757600080fd5b803590602001918460018302840111600160201b831117156107e857600080fd5b919390929091602081019035600160201b81111561080557600080fd5b82018360208201111561081757600080fd5b803590602001918460018302840111600160201b8311171561083857600080fd5b509092509050611970565b34801561084f57600080fd5b506102a2611a92565b34801561086457600080fd5b506102a26004803603602081101561087b57600080fd5b50356001600160a01b0316611a97565b34801561089757600080fd5b506102e7600480360360408110156108ae57600080fd5b50803590602001356001600160a01b0316611aa9565b3480156108d057600080fd5b506102e7600480360360408110156108e757600080fd5b50803590602001356001600160a01b0316611b76565b34801561090957600080fd5b506102e76004803603602081101561092057600080fd5b50356001600160a01b0316611c48565b34801561093c57600080fd5b506102e76004803603602081101561095357600080fd5b50356001600160a01b0316611d0e565b34801561096f57600080fd5b506102e76004803603604081101561098657600080fd5b810190602081018135600160201b8111156109a057600080fd5b8201836020820111156109b257600080fd5b803590602001918460018302840111600160201b831117156109d357600080fd5b919390929091602081019035600160201b8111156109f057600080fd5b820183602082011115610a0257600080fd5b803590602001918460018302840111600160201b83111715610a2357600080fd5b509092509050611dd4565b348015610a3a57600080fd5b5061055960048036036020811015610a5157600080fd5b5035611ef6565b348015610a6457600080fd5b506102e760048036036020811015610a7b57600080fd5b50356001600160a01b0316611f11565b348015610a9757600080fd5b506102e760048036036020811015610aae57600080fd5b5035611f61565b348015610ac157600080fd5b506102e760048036036020811015610ad857600080fd5b503560ff16611fdc565b348015610aee57600080fd5b506102e76120a8565b348015610b0357600080fd5b506102e760048036036040811015610b1a57600080fd5b506001600160a01b038135169060200135612139565b348015610b3c57600080fd5b506102a260048036036020811015610b5357600080fd5b50356001600160a01b03166121bc565b348015610b6f57600080fd5b506105596121ce565b348015610b8457600080fd5b50610b8d6121dd565b604080519115158252519081900360200190f35b348015610bad57600080fd5b506102e760048036036020811015610bc457600080fd5b50356121ee565b348015610bd757600080fd5b506102e760048036036020811015610bee57600080fd5b50356001600160a01b031661223e565b348015610c0a57600080fd5b506102e760048036036040811015610c2157600080fd5b506001600160a01b03813516906020013561228a565b348015610c4357600080fd5b506102e761230d565b348015610c5857600080fd5b506105596123ed565b348015610c6d57600080fd5b506102e760048036036040811015610c8457600080fd5b506001600160a01b0381351690602001356123fc565b348015610ca657600080fd5b50610b8d612448565b348015610cbb57600080fd5b506102a260048036036040811015610cd257600080fd5b506001600160a01b038135811691602001351661245e565b6102e761247b565b348015610cfe57600080fd5b506102a26124e7565b348015610d1357600080fd5b506102e760048036036020811015610d2a57600080fd5b50356001600160a01b03166124ed565b348015610d4657600080fd5b50610d4f61253d565b6040805160ff9092168252519081900360200190f35b348015610d7157600080fd5b5061055960048036036020811015610d8857600080fd5b503561254d565b348015610d9b57600080fd5b506102a260048036036020811015610db257600080fd5b50356001600160a01b0316612568565b348015610dce57600080fd5b506102e760048036036020811015610de557600080fd5b503561267e565b348015610df857600080fd5b506102e760048036036020811015610e0f57600080fd5b50356001600160a01b0316612740565b348015610e2b57600080fd5b506102a260048036036020811015610e4257600080fd5b5035612790565b348015610e5557600080fd5b506102e76127a2565b6000806060610e6b61280e565b60408051600481526024810182526020810180516001600160e01b031663054fd4d560e41b178152915181516001600160a01b039490941693919290918291908083835b60208310610ece5780518252601f199092019160209182019101610eaf565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610f2e576040519150601f19603f3d011682016040523d82523d6000602084013e610f33565b606091505b509150915081610f4257600080fd5b6020015191505090565b610f546121dd565b610f93576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b610f9c81612833565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000806060610fe061280e565b6001600160a01b03168e8e8e8e8e8e8e8e8e8e8e604051602401808c6001600160a01b03166001600160a01b031681526020018b60ff1660ff1681526020018a63ffffffff1663ffffffff1681526020018060200180602001806020018060200185810385528d8d82818152602001925060200280828437600083820152601f01601f191690910186810385528b8152602090810191508c908c0280828437600083820152601f01601f19169091018681038452898152602090810191508a908a0280828437600083820152601f01601f19169091018681038352878152602090810191508890880280828437600081840152601f19601f8201169050808301925050509f5050505050505050505050505050505060405160208183030381529060405263153c283f60e01b6001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b6020831061115e5780518252601f19909201916020918201910161113f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146111be576040519150601f19603f3d011682016040523d82523d6000602084013e6111c3565b606091505b5091509150816111d257600080fd5b8080602001905160208110156111e757600080fd5b50519e9d5050505050505050505050505050565b611203612448565b611247576040805162461bcd60e51b815260206004820152601060248201526f39b2b73232b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b6000606061125361280e565b6001600160a01b0316868686866040516024018080602001806020018381038352878782818152602001925080828437600083820152601f01601f19169091018481038352858152602001905085858082843760008382015260408051601f909201601f1990811690940182810390940182529283526020810180516001600160e01b03166316bf3d5560e01b17815292518151919a5098508897509195509093508392508591508490505b6020831061131e5780518252601f1990920191602091820191016112ff565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461137e576040519150601f19603f3d011682016040523d82523d6000602084013e611383565b606091505b50915091508181906114135760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113d85781810151838201526020016113c0565b50505050905090810190601f1680156114055780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505050505050565b600c546001600160a01b031681565b6114336121dd565b611472576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b61147b816128a4565b50565b6114866121dd565b6114c5576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b60006114cf61280e565b604080516001600160a01b038681166024830152604480830187905283518084039091018152606490920183526020820180516001600160e01b0316631782bf3360e21b178152925182519490911693919290918291908083835b602083106115495780518252601f19909201916020918201910161152a565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146115a9576040519150601f19603f3d011682016040523d82523d6000602084013e6115ae565b606091505b50509050806115bc57600080fd5b505050565b60006115cb61280e565b604080516001600160a01b0387811660248301528681166044830152606480830187905283518084039091018152608490920183526020820180516001600160e01b031663049ff5b160e31b178152925182519490911693919290918291908083835b6020831061164d5780518252601f19909201916020918201910161162e565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146116ad576040519150601f19603f3d011682016040523d82523d6000602084013e6116b2565b606091505b50509050806116c057600080fd5b50505050565b600a6020526000908152604090205481565b60006116e261280e565b60408051602480820186905282518083039091018152604490910182526020810180516001600160e01b0316632e1a7d4d60e01b178152915181516001600160a01b039490941693919290918291908083835b602083106117545780518252601f199092019160209182019101611735565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146117b4576040519150601f19603f3d011682016040523d82523d6000602084013e6117b9565b606091505b50509050806117c757600080fd5b5050565b60006117d561280e565b604080516001600160a01b038681166024830152604480830187905283518084039091018152606490920183526020820180516001600160e01b03166319c5aef560e11b17815292518251949091169391929091829190808383602083106115495780518252601f19909201916020918201910161152a565b611856612448565b61189a576040805162461bcd60e51b815260206004820152601060248201526f39b2b73232b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b600060606118a661280e565b6001600160a01b0316868686866040516024018080602001806020018381038352878782818152602001925080828437600083820152601f01601f19169091018481038352858152602001905085858082843760008382015260408051601f909201601f1990811690940182810390940182529283526020810180516001600160e01b0316631cde0d7f60e11b17815292518151919a5098508897509195509093508392508591508490506020831061131e5780518252601f1990920191602091820191016112ff565b611978612448565b6119bc576040805162461bcd60e51b815260206004820152601060248201526f39b2b73232b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b600060606119c861280e565b6001600160a01b0316868686866040516024018080602001806020018381038352878782818152602001925080828437600083820152601f01601f19169091018481038352858152602001905085858082843760008382015260408051601f909201601f1990811690940182810390940182529283526020810180516001600160e01b03166349fa92cb60e01b17815292518151919a5098508897509195509093508392508591508490506020831061131e5780518252601f1990920191602091820191016112ff565b600281565b600b6020526000908152604090205481565b611ab16121dd565b611af0576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b6000611afa61280e565b60408051602481018690526001600160a01b0385811660448084019190915283518084039091018152606490920183526020820180516001600160e01b0316632b80b58560e11b17815292518251949091169391929091829190808383602083106115495780518252601f19909201916020918201910161152a565b611b7e612448565b611bc2576040805162461bcd60e51b815260206004820152601060248201526f39b2b73232b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b6000611bcc61280e565b60408051602481018690526001600160a01b0385811660448084019190915283518084039091018152606490920183526020820180516001600160e01b03166316367e8160e21b17815292518251949091169391929091829190808383602083106115495780518252601f19909201916020918201910161152a565b611c506121dd565b611c8f576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b6000611c9961280e565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b0316635e1f56d960e01b17815292518251949091169391929091829190808383602083106117545780518252601f199092019160209182019101611735565b611d166121dd565b611d55576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b6000611d5f61280e565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b0316631484968760e11b17815292518251949091169391929091829190808383602083106117545780518252601f199092019160209182019101611735565b611ddc612448565b611e20576040805162461bcd60e51b815260206004820152601060248201526f39b2b73232b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b60006060611e2c61280e565b6001600160a01b0316868686866040516024018080602001806020018381038352878782818152602001925080828437600083820152601f01601f19169091018481038352858152602001905085858082843760008382015260408051601f909201601f1990811690940182810390940182529283526020810180516001600160e01b0316632fee3e0960e11b17815292518151919a5098508897509195509093508392508591508490506020831061131e5780518252601f1990920191602091820191016112ff565b6007602052600090815260409020546001600160a01b031681565b611f196121dd565b611f58576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b61147b81612a18565b6000611f6b61280e565b60408051602480820186905282518083039091018152604490910182526020810180516001600160e01b0316633851a16160e11b178152915181516001600160a01b03949094169391929091829190808383602083106117545780518252601f199092019160209182019101611735565b611fe4612448565b612028576040805162461bcd60e51b815260206004820152601060248201526f39b2b73232b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b600061203261280e565b6040805160ff851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316633867775960e11b178152915181516001600160a01b03949094169391929091829190808383602083106117545780518252601f199092019160209182019101611735565b6120b06121dd565b6120ef576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061214361280e565b604080516001600160a01b038681166024830152604480830187905283518084039091018152606490920183526020820180516001600160e01b0316637adde41360e01b17815292518251949091169391929091829190808383602083106115495780518252601f19909201916020918201910161152a565b60096020526000908152604090205481565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b6121f66121dd565b612235576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b61147b81612ae0565b612246612448565b611d55576040805162461bcd60e51b815260206004820152601060248201526f39b2b73232b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b600061229461280e565b604080516001600160a01b038681166024830152604480830187905283518084039091018152606490920183526020820180516001600160e01b03166313c5035360e31b17815292518251949091169391929091829190808383602083106115495780518252601f19909201916020918201910161152a565b600061231761280e565b60408051600481526024810182526020810180516001600160e01b031663a69df4b560e01b178152915181516001600160a01b039490941693919290918291908083835b6020831061237a5780518252601f19909201916020918201910161235b565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146123da576040519150601f19603f3d011682016040523d82523d6000602084013e6123df565b606091505b505090508061147b57600080fd5b600d546001600160a01b031681565b612404612448565b6114c5576040805162461bcd60e51b815260206004820152601060248201526f39b2b73232b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b3360009081526001602052604090205460ff1690565b600560209081526000928352604080842090915290825290205481565b600061248561280e565b60408051600481526024810182526020810180516001600160e01b0316630d0e30db60e41b178152915181516001600160a01b039490941693919290918291908083836020831061237a5780518252601f19909201916020918201910161235b565b60045481565b6124f56121dd565b612534576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b61147b81612b29565b600d54600160a01b900460ff1681565b6008602052600090815260409020546001600160a01b031681565b600080606061257561280e565b604080516001600160a01b0387811660248084019190915283518084039091018152604490920183526020820180516001600160e01b0316633b63b06560e21b178152925182519490911693919290918291908083835b602083106125eb5780518252601f1990920191602091820191016125cc565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461264b576040519150601f19603f3d011682016040523d82523d6000602084013e612650565b606091505b50915091508161265f57600080fd5b80806020019051602081101561267457600080fd5b5051949350505050565b6126866121dd565b6126c5576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b60006126cf61280e565b60408051602480820186905282518083039091018152604490910182526020810180516001600160e01b03166378e2f8f160e11b178152915181516001600160a01b03949094169391929091829190808383602083106117545780518252601f199092019160209182019101611735565b6127486121dd565b612787576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b61147b81612b73565b60066020526000908152604090205481565b60006127ac61280e565b60408051600481526024810182526020810180516001600160e01b0316637c1e845d60e11b178152915181516001600160a01b039490941693919290918291908083836020831061237a5780518252601f19909201916020918201910161235b565b7f3b2ff02c0f36dba7cc1b20a669e540b974575f04ef71846d482983efb03bebb45490565b612845816001600160a01b0316612c13565b6128805760405162461bcd60e51b8152600401808060200182810382526033815260200180612cfe6033913960400191505060405180910390fd5b7f3b2ff02c0f36dba7cc1b20a669e540b974575f04ef71846d482983efb03bebb455565b6001600160a01b0381166128f1576040805162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206164647265737360881b604482015290519081900360640190fd5b60035460025410612949576040805162461bcd60e51b815260206004820152601760248201527f746f6f206d616e792061646d696e732065786973746564000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526001602052604090205460ff16156129a7576040805162461bcd60e51b815260206004820152600d60248201526c30b63932b0b23c9030b236b4b760991b604482015290519081900360640190fd5b6001600160a01b0381166000908152600160208190526040909120805460ff1916821790556002546129de9163ffffffff612c1916565b6002556040516001600160a01b038216907f0cc43938d137e7efade6a531f663e78c1fc75257b0d65ffda2fdaf70cb49cdf990600090a250565b6001600160a01b03811660009081526001602052604090205460ff16612a71576040805162461bcd60e51b81526020600482015260096024820152683737ba1030b236b4b760b91b604482015290519081900360640190fd5b6001600160a01b0381166000908152600160208190526040909120805460ff19169055600254612aa69163ffffffff612c7a16565b6002556040516001600160a01b038216907f749cb6b4c510bc468cf6b9c2086d6f0a54d6b18e25d37bf3200e68eab0880c0090600090a250565b806003541415612b24576040805162461bcd60e51b815260206004820152600a6024820152691cd85b59481b1a5b5a5d60b21b604482015290519081900360640190fd5b600355565b600160025411611f58576040805162461bcd60e51b815260206004820152601060248201526f61646d696e2073686f756c64203e203160801b604482015290519081900360640190fd5b6001600160a01b038116612bb85760405162461bcd60e51b8152600401808060200182810382526026815260200180612cd86026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3b151590565b600082820183811015612c73576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115612cd1576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496d706c656d656e746174696f6e20616464726573732073686f756c64206265206120636f6e747261637420616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a265627a7a72315820a7ca0022bedcefe0bf539c8ff973928d615ff9f2a0319e9100b7a71d6088180d64736f6c634300050c00323b2ff02c0f36dba7cc1b20a669e540b974575f04ef71846d482983efb03bebb4496d706c656d656e746174696f6e20616464726573732073686f756c64206265206120636f6e74726163742061646472657373000000000000000000000000a4589bb891d020aad7681ff49c0f3911c793255e0000000000000000000000006d38574be6c230272daad16fa5f291f825bd0da10000000000000000000000003cd11ab189af4f9b627547283f03e73ede433127

Deployed Bytecode

0x6080604052600436106102885760003560e01c806370ceeeb21161015a578063b6db75a0116100c1578063e8b93ad71161007a578063e8b93ad714610d65578063ed8ec19414610d8f578063f1c5f1e214610dc2578063f2fde38b14610dec578063f7213db614610e1f578063f83d08ba14610e4957610288565b8063b6db75a014610c9a578063c23f001f14610caf578063d0e30db014610cea578063dd41250f14610cf2578063df6fa20e14610d07578063e65ff75414610d3a57610288565b806391a8c4b81161011357806391a8c4b814610ba15780639857518814610bcb5780639e281a9814610bfe578063a69df4b514610c37578063a84aa0c014610c4c578063b46b791914610c6157610288565b806370ceeeb214610ab5578063715018a614610ae25780637adde41314610af75780637ecebe0014610b305780638da5cb5b14610b635780638f32d59b14610b7857610288565b806339bc1afe116101fe5780635e1f56d9116101b75780635e1f56d9146108fd5780635fa7b584146109305780635fdc7c121461096357806361959f8514610a2e5780636f9a5fb314610a5857806370a342c214610a8b57610288565b806339bc1afe146106ad57806349fa92cb1461077857806354fd4d501461084357806356c7c1b31461085857806357016b0a1461088b57806358d9fa04146108c457610288565b80631af1a768116102505780631af1a768146105755780632123cb78146105a857806324ffad88146105e157806325691de4146106175780632e1a7d4d1461064a578063338b5dea1461067457610288565b806306bfcec61461028d5780630900f010146102b4578063153c283f146102e957806316bf3d55146104795780631ae879e814610544575b600080fd5b34801561029957600080fd5b506102a2610e5e565b60408051918252519081900360200190f35b3480156102c057600080fd5b506102e7600480360360208110156102d757600080fd5b50356001600160a01b0316610f4c565b005b3480156102f557600080fd5b506102a2600480360360e081101561030c57600080fd5b6001600160a01b038235169160ff6020820135169163ffffffff6040830135169190810190608081016060820135600160201b81111561034b57600080fd5b82018360208201111561035d57600080fd5b803590602001918460208302840111600160201b8311171561037e57600080fd5b919390929091602081019035600160201b81111561039b57600080fd5b8201836020820111156103ad57600080fd5b803590602001918460208302840111600160201b831117156103ce57600080fd5b919390929091602081019035600160201b8111156103eb57600080fd5b8201836020820111156103fd57600080fd5b803590602001918460208302840111600160201b8311171561041e57600080fd5b919390929091602081019035600160201b81111561043b57600080fd5b82018360208201111561044d57600080fd5b803590602001918460208302840111600160201b8311171561046e57600080fd5b509092509050610fd3565b34801561048557600080fd5b506102e76004803603604081101561049c57600080fd5b810190602081018135600160201b8111156104b657600080fd5b8201836020820111156104c857600080fd5b803590602001918460018302840111600160201b831117156104e957600080fd5b919390929091602081019035600160201b81111561050657600080fd5b82018360208201111561051857600080fd5b803590602001918460018302840111600160201b8311171561053957600080fd5b5090925090506111fb565b34801561055057600080fd5b5061055961141c565b604080516001600160a01b039092168252519081900360200190f35b34801561058157600080fd5b506102e76004803603602081101561059857600080fd5b50356001600160a01b031661142b565b3480156105b457600080fd5b506102e7600480360360408110156105cb57600080fd5b506001600160a01b03813516906020013561147e565b6102e7600480360360608110156105f757600080fd5b506001600160a01b038135811691602081013590911690604001356115c1565b34801561062357600080fd5b506102a26004803603602081101561063a57600080fd5b50356001600160a01b03166116c6565b34801561065657600080fd5b506102e76004803603602081101561066d57600080fd5b50356116d8565b34801561068057600080fd5b506102e76004803603604081101561069757600080fd5b506001600160a01b0381351690602001356117cb565b3480156106b957600080fd5b506102e7600480360360408110156106d057600080fd5b810190602081018135600160201b8111156106ea57600080fd5b8201836020820111156106fc57600080fd5b803590602001918460018302840111600160201b8311171561071d57600080fd5b919390929091602081019035600160201b81111561073a57600080fd5b82018360208201111561074c57600080fd5b803590602001918460018302840111600160201b8311171561076d57600080fd5b50909250905061184e565b34801561078457600080fd5b506102e76004803603604081101561079b57600080fd5b810190602081018135600160201b8111156107b557600080fd5b8201836020820111156107c757600080fd5b803590602001918460018302840111600160201b831117156107e857600080fd5b919390929091602081019035600160201b81111561080557600080fd5b82018360208201111561081757600080fd5b803590602001918460018302840111600160201b8311171561083857600080fd5b509092509050611970565b34801561084f57600080fd5b506102a2611a92565b34801561086457600080fd5b506102a26004803603602081101561087b57600080fd5b50356001600160a01b0316611a97565b34801561089757600080fd5b506102e7600480360360408110156108ae57600080fd5b50803590602001356001600160a01b0316611aa9565b3480156108d057600080fd5b506102e7600480360360408110156108e757600080fd5b50803590602001356001600160a01b0316611b76565b34801561090957600080fd5b506102e76004803603602081101561092057600080fd5b50356001600160a01b0316611c48565b34801561093c57600080fd5b506102e76004803603602081101561095357600080fd5b50356001600160a01b0316611d0e565b34801561096f57600080fd5b506102e76004803603604081101561098657600080fd5b810190602081018135600160201b8111156109a057600080fd5b8201836020820111156109b257600080fd5b803590602001918460018302840111600160201b831117156109d357600080fd5b919390929091602081019035600160201b8111156109f057600080fd5b820183602082011115610a0257600080fd5b803590602001918460018302840111600160201b83111715610a2357600080fd5b509092509050611dd4565b348015610a3a57600080fd5b5061055960048036036020811015610a5157600080fd5b5035611ef6565b348015610a6457600080fd5b506102e760048036036020811015610a7b57600080fd5b50356001600160a01b0316611f11565b348015610a9757600080fd5b506102e760048036036020811015610aae57600080fd5b5035611f61565b348015610ac157600080fd5b506102e760048036036020811015610ad857600080fd5b503560ff16611fdc565b348015610aee57600080fd5b506102e76120a8565b348015610b0357600080fd5b506102e760048036036040811015610b1a57600080fd5b506001600160a01b038135169060200135612139565b348015610b3c57600080fd5b506102a260048036036020811015610b5357600080fd5b50356001600160a01b03166121bc565b348015610b6f57600080fd5b506105596121ce565b348015610b8457600080fd5b50610b8d6121dd565b604080519115158252519081900360200190f35b348015610bad57600080fd5b506102e760048036036020811015610bc457600080fd5b50356121ee565b348015610bd757600080fd5b506102e760048036036020811015610bee57600080fd5b50356001600160a01b031661223e565b348015610c0a57600080fd5b506102e760048036036040811015610c2157600080fd5b506001600160a01b03813516906020013561228a565b348015610c4357600080fd5b506102e761230d565b348015610c5857600080fd5b506105596123ed565b348015610c6d57600080fd5b506102e760048036036040811015610c8457600080fd5b506001600160a01b0381351690602001356123fc565b348015610ca657600080fd5b50610b8d612448565b348015610cbb57600080fd5b506102a260048036036040811015610cd257600080fd5b506001600160a01b038135811691602001351661245e565b6102e761247b565b348015610cfe57600080fd5b506102a26124e7565b348015610d1357600080fd5b506102e760048036036020811015610d2a57600080fd5b50356001600160a01b03166124ed565b348015610d4657600080fd5b50610d4f61253d565b6040805160ff9092168252519081900360200190f35b348015610d7157600080fd5b5061055960048036036020811015610d8857600080fd5b503561254d565b348015610d9b57600080fd5b506102a260048036036020811015610db257600080fd5b50356001600160a01b0316612568565b348015610dce57600080fd5b506102e760048036036020811015610de557600080fd5b503561267e565b348015610df857600080fd5b506102e760048036036020811015610e0f57600080fd5b50356001600160a01b0316612740565b348015610e2b57600080fd5b506102a260048036036020811015610e4257600080fd5b5035612790565b348015610e5557600080fd5b506102e76127a2565b6000806060610e6b61280e565b60408051600481526024810182526020810180516001600160e01b031663054fd4d560e41b178152915181516001600160a01b039490941693919290918291908083835b60208310610ece5780518252601f199092019160209182019101610eaf565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d8060008114610f2e576040519150601f19603f3d011682016040523d82523d6000602084013e610f33565b606091505b509150915081610f4257600080fd5b6020015191505090565b610f546121dd565b610f93576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b610f9c81612833565b6040516001600160a01b038216907fbc7cd75a20ee27fd9adebab32041f755214dbc6bffa90cc0225b39da2e5c2d3b90600090a250565b6000806060610fe061280e565b6001600160a01b03168e8e8e8e8e8e8e8e8e8e8e604051602401808c6001600160a01b03166001600160a01b031681526020018b60ff1660ff1681526020018a63ffffffff1663ffffffff1681526020018060200180602001806020018060200185810385528d8d82818152602001925060200280828437600083820152601f01601f191690910186810385528b8152602090810191508c908c0280828437600083820152601f01601f19169091018681038452898152602090810191508a908a0280828437600083820152601f01601f19169091018681038352878152602090810191508890880280828437600081840152601f19601f8201169050808301925050509f5050505050505050505050505050505060405160208183030381529060405263153c283f60e01b6001600160e01b0319166020820180516001600160e01b0383818316178352505050506040518082805190602001908083835b6020831061115e5780518252601f19909201916020918201910161113f565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855afa9150503d80600081146111be576040519150601f19603f3d011682016040523d82523d6000602084013e6111c3565b606091505b5091509150816111d257600080fd5b8080602001905160208110156111e757600080fd5b50519e9d5050505050505050505050505050565b611203612448565b611247576040805162461bcd60e51b815260206004820152601060248201526f39b2b73232b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b6000606061125361280e565b6001600160a01b0316868686866040516024018080602001806020018381038352878782818152602001925080828437600083820152601f01601f19169091018481038352858152602001905085858082843760008382015260408051601f909201601f1990811690940182810390940182529283526020810180516001600160e01b03166316bf3d5560e01b17815292518151919a5098508897509195509093508392508591508490505b6020831061131e5780518252601f1990920191602091820191016112ff565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461137e576040519150601f19603f3d011682016040523d82523d6000602084013e611383565b606091505b50915091508181906114135760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156113d85781810151838201526020016113c0565b50505050905090810190601f1680156114055780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b50505050505050565b600c546001600160a01b031681565b6114336121dd565b611472576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b61147b816128a4565b50565b6114866121dd565b6114c5576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b60006114cf61280e565b604080516001600160a01b038681166024830152604480830187905283518084039091018152606490920183526020820180516001600160e01b0316631782bf3360e21b178152925182519490911693919290918291908083835b602083106115495780518252601f19909201916020918201910161152a565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146115a9576040519150601f19603f3d011682016040523d82523d6000602084013e6115ae565b606091505b50509050806115bc57600080fd5b505050565b60006115cb61280e565b604080516001600160a01b0387811660248301528681166044830152606480830187905283518084039091018152608490920183526020820180516001600160e01b031663049ff5b160e31b178152925182519490911693919290918291908083835b6020831061164d5780518252601f19909201916020918201910161162e565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146116ad576040519150601f19603f3d011682016040523d82523d6000602084013e6116b2565b606091505b50509050806116c057600080fd5b50505050565b600a6020526000908152604090205481565b60006116e261280e565b60408051602480820186905282518083039091018152604490910182526020810180516001600160e01b0316632e1a7d4d60e01b178152915181516001600160a01b039490941693919290918291908083835b602083106117545780518252601f199092019160209182019101611735565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146117b4576040519150601f19603f3d011682016040523d82523d6000602084013e6117b9565b606091505b50509050806117c757600080fd5b5050565b60006117d561280e565b604080516001600160a01b038681166024830152604480830187905283518084039091018152606490920183526020820180516001600160e01b03166319c5aef560e11b17815292518251949091169391929091829190808383602083106115495780518252601f19909201916020918201910161152a565b611856612448565b61189a576040805162461bcd60e51b815260206004820152601060248201526f39b2b73232b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b600060606118a661280e565b6001600160a01b0316868686866040516024018080602001806020018381038352878782818152602001925080828437600083820152601f01601f19169091018481038352858152602001905085858082843760008382015260408051601f909201601f1990811690940182810390940182529283526020810180516001600160e01b0316631cde0d7f60e11b17815292518151919a5098508897509195509093508392508591508490506020831061131e5780518252601f1990920191602091820191016112ff565b611978612448565b6119bc576040805162461bcd60e51b815260206004820152601060248201526f39b2b73232b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b600060606119c861280e565b6001600160a01b0316868686866040516024018080602001806020018381038352878782818152602001925080828437600083820152601f01601f19169091018481038352858152602001905085858082843760008382015260408051601f909201601f1990811690940182810390940182529283526020810180516001600160e01b03166349fa92cb60e01b17815292518151919a5098508897509195509093508392508591508490506020831061131e5780518252601f1990920191602091820191016112ff565b600281565b600b6020526000908152604090205481565b611ab16121dd565b611af0576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b6000611afa61280e565b60408051602481018690526001600160a01b0385811660448084019190915283518084039091018152606490920183526020820180516001600160e01b0316632b80b58560e11b17815292518251949091169391929091829190808383602083106115495780518252601f19909201916020918201910161152a565b611b7e612448565b611bc2576040805162461bcd60e51b815260206004820152601060248201526f39b2b73232b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b6000611bcc61280e565b60408051602481018690526001600160a01b0385811660448084019190915283518084039091018152606490920183526020820180516001600160e01b03166316367e8160e21b17815292518251949091169391929091829190808383602083106115495780518252601f19909201916020918201910161152a565b611c506121dd565b611c8f576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b6000611c9961280e565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b0316635e1f56d960e01b17815292518251949091169391929091829190808383602083106117545780518252601f199092019160209182019101611735565b611d166121dd565b611d55576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b6000611d5f61280e565b604080516001600160a01b0385811660248084019190915283518084039091018152604490920183526020820180516001600160e01b0316631484968760e11b17815292518251949091169391929091829190808383602083106117545780518252601f199092019160209182019101611735565b611ddc612448565b611e20576040805162461bcd60e51b815260206004820152601060248201526f39b2b73232b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b60006060611e2c61280e565b6001600160a01b0316868686866040516024018080602001806020018381038352878782818152602001925080828437600083820152601f01601f19169091018481038352858152602001905085858082843760008382015260408051601f909201601f1990811690940182810390940182529283526020810180516001600160e01b0316632fee3e0960e11b17815292518151919a5098508897509195509093508392508591508490506020831061131e5780518252601f1990920191602091820191016112ff565b6007602052600090815260409020546001600160a01b031681565b611f196121dd565b611f58576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b61147b81612a18565b6000611f6b61280e565b60408051602480820186905282518083039091018152604490910182526020810180516001600160e01b0316633851a16160e11b178152915181516001600160a01b03949094169391929091829190808383602083106117545780518252601f199092019160209182019101611735565b611fe4612448565b612028576040805162461bcd60e51b815260206004820152601060248201526f39b2b73232b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b600061203261280e565b6040805160ff851660248083019190915282518083039091018152604490910182526020810180516001600160e01b0316633867775960e11b178152915181516001600160a01b03949094169391929091829190808383602083106117545780518252601f199092019160209182019101611735565b6120b06121dd565b6120ef576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600061214361280e565b604080516001600160a01b038681166024830152604480830187905283518084039091018152606490920183526020820180516001600160e01b0316637adde41360e01b17815292518251949091169391929091829190808383602083106115495780518252601f19909201916020918201910161152a565b60096020526000908152604090205481565b6000546001600160a01b031690565b6000546001600160a01b0316331490565b6121f66121dd565b612235576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b61147b81612ae0565b612246612448565b611d55576040805162461bcd60e51b815260206004820152601060248201526f39b2b73232b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b600061229461280e565b604080516001600160a01b038681166024830152604480830187905283518084039091018152606490920183526020820180516001600160e01b03166313c5035360e31b17815292518251949091169391929091829190808383602083106115495780518252601f19909201916020918201910161152a565b600061231761280e565b60408051600481526024810182526020810180516001600160e01b031663a69df4b560e01b178152915181516001600160a01b039490941693919290918291908083835b6020831061237a5780518252601f19909201916020918201910161235b565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d80600081146123da576040519150601f19603f3d011682016040523d82523d6000602084013e6123df565b606091505b505090508061147b57600080fd5b600d546001600160a01b031681565b612404612448565b6114c5576040805162461bcd60e51b815260206004820152601060248201526f39b2b73232b9103737ba1030b236b4b760811b604482015290519081900360640190fd5b3360009081526001602052604090205460ff1690565b600560209081526000928352604080842090915290825290205481565b600061248561280e565b60408051600481526024810182526020810180516001600160e01b0316630d0e30db60e41b178152915181516001600160a01b039490941693919290918291908083836020831061237a5780518252601f19909201916020918201910161235b565b60045481565b6124f56121dd565b612534576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b61147b81612b29565b600d54600160a01b900460ff1681565b6008602052600090815260409020546001600160a01b031681565b600080606061257561280e565b604080516001600160a01b0387811660248084019190915283518084039091018152604490920183526020820180516001600160e01b0316633b63b06560e21b178152925182519490911693919290918291908083835b602083106125eb5780518252601f1990920191602091820191016125cc565b6001836020036101000a038019825116818451168082178552505050505050905001915050600060405180830381855af49150503d806000811461264b576040519150601f19603f3d011682016040523d82523d6000602084013e612650565b606091505b50915091508161265f57600080fd5b80806020019051602081101561267457600080fd5b5051949350505050565b6126866121dd565b6126c5576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b60006126cf61280e565b60408051602480820186905282518083039091018152604490910182526020810180516001600160e01b03166378e2f8f160e11b178152915181516001600160a01b03949094169391929091829190808383602083106117545780518252601f199092019160209182019101611735565b6127486121dd565b612787576040805162461bcd60e51b81526020600482018190526024820152600080516020612d31833981519152604482015290519081900360640190fd5b61147b81612b73565b60066020526000908152604090205481565b60006127ac61280e565b60408051600481526024810182526020810180516001600160e01b0316637c1e845d60e11b178152915181516001600160a01b039490941693919290918291908083836020831061237a5780518252601f19909201916020918201910161235b565b7f3b2ff02c0f36dba7cc1b20a669e540b974575f04ef71846d482983efb03bebb45490565b612845816001600160a01b0316612c13565b6128805760405162461bcd60e51b8152600401808060200182810382526033815260200180612cfe6033913960400191505060405180910390fd5b7f3b2ff02c0f36dba7cc1b20a669e540b974575f04ef71846d482983efb03bebb455565b6001600160a01b0381166128f1576040805162461bcd60e51b815260206004820152600f60248201526e696e76616c6964206164647265737360881b604482015290519081900360640190fd5b60035460025410612949576040805162461bcd60e51b815260206004820152601760248201527f746f6f206d616e792061646d696e732065786973746564000000000000000000604482015290519081900360640190fd5b6001600160a01b03811660009081526001602052604090205460ff16156129a7576040805162461bcd60e51b815260206004820152600d60248201526c30b63932b0b23c9030b236b4b760991b604482015290519081900360640190fd5b6001600160a01b0381166000908152600160208190526040909120805460ff1916821790556002546129de9163ffffffff612c1916565b6002556040516001600160a01b038216907f0cc43938d137e7efade6a531f663e78c1fc75257b0d65ffda2fdaf70cb49cdf990600090a250565b6001600160a01b03811660009081526001602052604090205460ff16612a71576040805162461bcd60e51b81526020600482015260096024820152683737ba1030b236b4b760b91b604482015290519081900360640190fd5b6001600160a01b0381166000908152600160208190526040909120805460ff19169055600254612aa69163ffffffff612c7a16565b6002556040516001600160a01b038216907f749cb6b4c510bc468cf6b9c2086d6f0a54d6b18e25d37bf3200e68eab0880c0090600090a250565b806003541415612b24576040805162461bcd60e51b815260206004820152600a6024820152691cd85b59481b1a5b5a5d60b21b604482015290519081900360640190fd5b600355565b600160025411611f58576040805162461bcd60e51b815260206004820152601060248201526f61646d696e2073686f756c64203e203160801b604482015290519081900360640190fd5b6001600160a01b038116612bb85760405162461bcd60e51b8152600401808060200182810382526026815260200180612cd86026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b3b151590565b600082820183811015612c73576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b9392505050565b600082821115612cd1576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b5090039056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373496d706c656d656e746174696f6e20616464726573732073686f756c64206265206120636f6e747261637420616464726573734f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a265627a7a72315820a7ca0022bedcefe0bf539c8ff973928d615ff9f2a0319e9100b7a71d6088180d64736f6c634300050c0032

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

000000000000000000000000a4589bb891d020aad7681ff49c0f3911c793255e0000000000000000000000006d38574be6c230272daad16fa5f291f825bd0da10000000000000000000000003cd11ab189af4f9b627547283f03e73ede433127

-----Decoded View---------------
Arg [0] : _walletOwner (address): 0xa4589bB891d020AAd7681Ff49c0F3911c793255e
Arg [1] : _dinngoToken (address): 0x6d38574be6C230272DAAd16Fa5F291F825Bd0Da1
Arg [2] : _impl (address): 0x3cD11Ab189AF4f9B627547283F03e73Ede433127

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000a4589bb891d020aad7681ff49c0f3911c793255e
Arg [1] : 0000000000000000000000006d38574be6c230272daad16fa5f291f825bd0da1
Arg [2] : 0000000000000000000000003cd11ab189af4f9b627547283f03e73ede433127


Deployed Bytecode Sourcemap

12054:12885:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4789:343;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4789:343:0;;;:::i;:::-;;;;;;;;;;;;;;;;4509:153;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4509:153:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;4509:153:0;-1:-1:-1;;;;;4509:153:0;;:::i;:::-;;24279:657;;8:9:-1;5:2;;;30:1;27;20:12;5:2;24279:657:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;-1:-1;;;;;24279:657:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;24279:657:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;24279:657:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;24279:657:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;24279:657:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;24279:657:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;24279:657:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;24279:657:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;24279:657:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;24279:657:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;24279:657:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;24279:657:0;;;;;;101:9:-1;95:2;81:12;77:21;67:8;63:36;60:51;-1:-1;;;25:12;22:29;11:108;8:2;;;132:1;129;122:12;8:2;-1:-1;24279:657:0;;-1:-1:-1;24279:657:0;-1:-1:-1;24279:657:0;:::i;21143:315::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21143:315:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21143:315:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;21143:315:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21143:315:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;21143:315:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;21143:315:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21143:315:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;21143:315:0;;-1:-1:-1;21143:315:0;-1:-1:-1;21143:315:0;:::i;12549:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12549:26:0;;;:::i;:::-;;;;-1:-1:-1;;;;;12549:26:0;;;;;;;;;;;;;;16599:97;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16599:97:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16599:97:0;-1:-1:-1;;;;;16599:97:0;;:::i;16341:250::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16341:250:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;16341:250:0;;;;;;;;:::i;23174:273::-;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;23174:273:0;;;;;;;;;;;;;;;;;:::i;12447:41::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12447:41:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12447:41:0;-1:-1:-1;;;;;12447:41:0;;:::i;18390:205::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18390:205:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;18390:205:0;;:::i;17917:243::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17917:243:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;17917:243:0;;;;;;;;:::i;22626:311::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22626:311:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22626:311:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;22626:311:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;22626:311:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;22626:311:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;22626:311:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;22626:311:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;22626:311:0;;-1:-1:-1;22626:311:0;-1:-1:-1;22626:311:0;:::i;21674:317::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;21674:317:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;21674:317:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;21674:317:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21674:317:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;21674:317:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;21674:317:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;21674:317:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;21674:317:0;;-1:-1:-1;21674:317:0;-1:-1:-1;21674:317:0;:::i;12643:35::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12643:35:0;;;:::i;12495:45::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12495:45:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12495:45:0;-1:-1:-1;;;;;12495:45:0;;:::i;15495:237::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15495:237:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15495:237:0;;;;;;-1:-1:-1;;;;;15495:237:0;;:::i;14003:233::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14003:233:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14003:233:0;;;;;;-1:-1:-1;;;;;14003:233:0;;:::i;20692:237::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20692:237:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20692:237:0;-1:-1:-1;;;;;20692:237:0;;:::i;15936:214::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;15936:214:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;15936:214:0;-1:-1:-1;;;;;15936:214:0;;:::i;22182:289::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;22182:289:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;22182:289:0;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;22182:289:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;22182:289:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;22182:289:0;;;;;;;;;;;-1:-1:-1;;;5:28;;2:2;;;46:1;43;36:12;2:2;22182:289:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;22182:289:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;-1:-1;;;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;-1:-1;22182:289:0;;-1:-1:-1;22182:289:0;-1:-1:-1;22182:289:0;:::i;12275:58::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12275:58:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12275:58:0;;:::i;16994:106::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16994:106:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16994:106:0;-1:-1:-1;;;;;16994:106:0;;:::i;19359:209::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19359:209:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;19359:209:0;;:::i;13405:207::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;13405:207:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;13405:207:0;;;;:::i;2767:140::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2767:140:0;;;:::i;19832:249::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;19832:249:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;19832:249:0;;;;;;;;:::i;12398:42::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12398:42:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12398:42:0;-1:-1:-1;;;;;12398:42:0;;:::i;1956:79::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1956:79:0;;;:::i;2322:92::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2322:92:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;17108:89;;8:9:-1;5:2;;;30:1;27;20:12;5:2;17108:89:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;17108:89:0;;:::i;14427:211::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14427:211:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;14427:211:0;-1:-1:-1;;;;;14427:211:0;;:::i;18897:245::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;18897:245:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;18897:245:0;;;;;;;;:::i;23721:148::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23721:148:0;;;:::i;12582:23::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12582:23:0;;;:::i;14815:247::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;14815:247:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;14815:247:0;;;;;;;;:::i;10321:89::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;10321:89:0;;;:::i;12150:65::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12150:65:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;;;;;;12150:65:0;;;;;;;;;;:::i;17451:158::-;;;:::i;12115:26::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12115:26:0;;;:::i;16704:105::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;16704:105:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;16704:105:0;-1:-1:-1;;;;;16704:105:0;;:::i;12612:22::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12612:22:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;12340:51;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12340:51:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12340:51:0;;:::i;20233:309::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;20233:309:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20233:309:0;-1:-1:-1;;;;;20233:309:0;;:::i;23966:229::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23966:229:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;23966:229:0;;:::i;3062:109::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3062:109:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;3062:109:0;-1:-1:-1;;;;;3062:109:0;;:::i;12222:46::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;12222:46:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;12222:46:0;;:::i;23517:144::-;;8:9:-1;5:2;;;30:1;27;20:12;5:2;23517:144:0;;;:::i;4789:343::-;4845:15;4873:7;4882:16;4902:17;:15;:17::i;:::-;4945:36;;;22:32:-1;6:49;;4945:36:0;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;4902:90:0;;;;-1:-1:-1;;;;;4902:28:0;;;;;4945:36;;4902:90;;;;25:18:-1;4902:90:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;4902:90:0;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;4872:120:0;;;;5011:2;5003:11;;;;;;5079:4;5070:14;5060:29;;-1:-1:-1;;4789:343:0;:::o;4509:153::-;2168:9;:7;:9::i;:::-;2160:54;;;;;-1:-1:-1;;;2160:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2160:54:0;;;;;;;;;;;;;;;4580:34;4599:14;4580:18;:34::i;:::-;4630:24;;-1:-1:-1;;;;;4630:24:0;;;;;;;;4509:153;:::o;24279:657::-;24547:12;24573:7;24582:16;24602:17;:15;:17::i;:::-;-1:-1:-1;;;;;24602:28:0;24787:4;24793:6;24801:5;24808:3;;24813:8;;24823:7;;24832:4;;24645:206;;;;;;-1:-1:-1;;;;;24645:206:0;-1:-1:-1;;;;;24645:206:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;24645:206:0;;;;;;;;;;;;;-1:-1:-1;24645:206:0;;;;;;;1:33:-1;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;24645:206:0;;;;;;;;;;;;;-1:-1:-1;24645:206:0;;;;;;;1:33:-1;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;24645:206:0;;;;;;;;;;;;;-1:-1:-1;24645:206:0;;;;;;;1:33:-1;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;24645:206:0;;;;;;;;;;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;24645:206:0;;;-1:-1:-1;;;;;;;;24645:206:0;;38:4:-1;29:7;25:18;67:10;61:17;-1:-1;;;;;199:8;192:4;186;182:15;179:29;167:10;160:49;0:215;;;24645:206:0;24602:260;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;24602:260:0;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;24572:290:0;;;;24881:2;24873:11;;;;;;24913:3;24902:26;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;24902:26:0;;24279:657;-1:-1:-1;;;;;;;;;;;;;;24279:657:0:o;21143:315::-;10520:9;:7;:9::i;:::-;10512:38;;;;;-1:-1:-1;;;10512:38:0;;;;;;;;;;;;-1:-1:-1;;;10512:38:0;;;;;;;;;;;;;;;21252:7;21261:16;21281:17;:15;:17::i;:::-;-1:-1:-1;;;;;21281:30:0;21382:10;;21394:9;;21326:78;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;21326:78:0;;;;;;;;;;;-1:-1:-1;21326:78:0;;;;;1:33:-1;99:1;81:16;;;74:27;21326:78:0;;;137:4:-1;117:14;;;-1:-1;;113:30;;;157:16;;;26:21;;;22:32;;;6:49;;21326:78:0;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;21281:134:0;;;;21326:78;;-1:-1:-1;21281:134:0;-1:-1:-1;21281:134:0;;-1:-1:-1;25:18;;-1:-1;21281:134:0;;-1:-1:-1;21281:134:0;;-1:-1:-1;21281:134:0;;-1:-1:-1;25:18;;-1:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;21281:134:0;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;21251:164:0;;;;21434:2;21445:3;21426:24;;;;;-1:-1:-1;;;21426:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;90:11;;;84:18;71:11;;;64:39;52:2;45:10;8:100;;;12:14;21426:24:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10561:1;;21143:315;;;;:::o;12549:26::-;;;-1:-1:-1;;;;;12549:26:0;;:::o;16599:97::-;2168:9;:7;:9::i;:::-;2160:54;;;;;-1:-1:-1;;;2160:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2160:54:0;;;;;;;;;;;;;;;16667:21;16682:5;16667:14;:21::i;:::-;16599:97;:::o;16341:250::-;2168:9;:7;:9::i;:::-;2160:54;;;;;-1:-1:-1;;;2160:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2160:54:0;;;;;;;;;;;;;;;16426:7;16438:17;:15;:17::i;:::-;16483:67;;;-1:-1:-1;;;;;16483:67:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;16483:67:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;16438:123:0;;;;:30;;;;;16483:67;;16438:123;;;;25:18:-1;16438:123:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;16438:123:0;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;16425:136:0;;;16580:2;16572:11;;;;;;2225:1;16341:250;;:::o;23174:273::-;23267:7;23279:17;:15;:17::i;:::-;23324:82;;;-1:-1:-1;;;;;23324:82:0;;;;;;;;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;23324:82:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;23279:138:0;;;;:30;;;;;23324:82;;23279:138;;;;25:18:-1;23279:138:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;23279:138:0;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;23266:151:0;;;23436:2;23428:11;;;;;;23174:273;;;;:::o;12447:41::-;;;;;;;;;;;;;:::o;18390:205::-;18445:7;18457:17;:15;:17::i;:::-;18502:52;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18502:52:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;18457:108:0;;;;-1:-1:-1;;;;;18457:30:0;;;;;18502:52;;18457:108;;;;25:18:-1;18457:108:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;18457:108:0;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;18444:121:0;;;18584:2;18576:11;;;;;;18390:205;;:::o;17917:243::-;17991:7;18003:17;:15;:17::i;:::-;18048:71;;;-1:-1:-1;;;;;18048:71:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;18048:71:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;18003:127:0;;;;:30;;;;;18048:71;;18003:127;;;;25:18:-1;18003:127:0;;25:18:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;22626:311:0;10520:9;:7;:9::i;:::-;10512:38;;;;;-1:-1:-1;;;10512:38:0;;;;;;;;;;;;-1:-1:-1;;;10512:38:0;;;;;;;;;;;;;;;22733:7;22742:16;22762:17;:15;:17::i;:::-;-1:-1:-1;;;;;22762:30:0;22862:9;;22873;;22807:76;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;22807:76:0;;;;;;;;;;;-1:-1:-1;22807:76:0;;;;;1:33:-1;99:1;81:16;;;74:27;22807:76:0;;;137:4:-1;117:14;;;-1:-1;;113:30;;;157:16;;;26:21;;;22:32;;;6:49;;22807:76:0;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;22762:132:0;;;;22807:76;;-1:-1:-1;22762:132:0;-1:-1:-1;22762:132:0;;-1:-1:-1;25:18;;-1:-1;22762:132:0;;-1:-1:-1;22762:132:0;;-1:-1:-1;22762:132:0;;-1:-1:-1;25:18;;-1:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;21674:317:0;10520:9;:7;:9::i;:::-;10512:38;;;;;-1:-1:-1;;;10512:38:0;;;;;;;;;;;;-1:-1:-1;;;10512:38:0;;;;;;;;;;;;;;;21784:7;21793:16;21813:17;:15;:17::i;:::-;-1:-1:-1;;;;;21813:30:0;21914:11;;21927:9;;21858:79;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;21858:79:0;;;;;;;;;;;-1:-1:-1;21858:79:0;;;;;1:33:-1;99:1;81:16;;;74:27;21858:79:0;;;137:4:-1;117:14;;;-1:-1;;113:30;;;157:16;;;26:21;;;22:32;;;6:49;;21858:79:0;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;21813:135:0;;;;21858:79;;-1:-1:-1;21813:135:0;-1:-1:-1;21813:135:0;;-1:-1:-1;25:18;;-1:-1;21813:135:0;;-1:-1:-1;21813:135:0;;-1:-1:-1;21813:135:0;;-1:-1:-1;25:18;;-1:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;12643:35:0;12677:1;12643:35;:::o;12495:45::-;;;;;;;;;;;;;:::o;15495:237::-;2168:9;:7;:9::i;:::-;2160:54;;;;;-1:-1:-1;;;2160:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2160:54:0;;;;;;;;;;;;;;;15571:7;15583:17;:15;:17::i;:::-;15628:63;;;;;;;;;-1:-1:-1;;;;;15628:63:0;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;15628:63:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;15583:119:0;;;;:30;;;;;15628:63;;15583:119;;;;25:18:-1;15583:119:0;;25:18:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;14003:233:0;10520:9;:7;:9::i;:::-;10512:38;;;;;-1:-1:-1;;;10512:38:0;;;;;;;;;;;;-1:-1:-1;;;10512:38:0;;;;;;;;;;;;;;;14077:7;14089:17;:15;:17::i;:::-;14134:61;;;;;;;;;-1:-1:-1;;;;;14134:61:0;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;14134:61:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;14089:117:0;;;;:30;;;;;14134:61;;14089:117;;;;25:18:-1;14089:117:0;;25:18:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;20692:237:0;2168:9;:7;:9::i;:::-;2160:54;;;;;-1:-1:-1;;;2160:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2160:54:0;;;;;;;;;;;;;;;20768:7;20780:17;:15;:17::i;:::-;20825:63;;;-1:-1:-1;;;;;20825:63:0;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20825:63:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;20780:119:0;;;;:30;;;;;20825:63;;20780:119;;;;25:18:-1;20780:119:0;;25:18:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;15936:214:0;2168:9;:7;:9::i;:::-;2160:54;;;;;-1:-1:-1;;;2160:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2160:54:0;;;;;;;;;;;;;;;16003:7;16015:17;:15;:17::i;:::-;16060:49;;;-1:-1:-1;;;;;16060:49:0;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;16060::0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;16015:105:0;;;;:30;;;;;16060:49;;16015:105;;;;25:18:-1;16015:105:0;;25:18:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;22182:289:0;10520:9;:7;:9::i;:::-;10512:38;;;;;-1:-1:-1;;;10512:38:0;;;;;;;;;;;;-1:-1:-1;;;10512:38:0;;;;;;;;;;;;;;;22278:7;22287:16;22307:17;:15;:17::i;:::-;-1:-1:-1;;;;;22307:30:0;22399:6;;22407:9;;22352:65;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;81:16;;;74:27;137:4;117:14;-1:-1;;113:30;157:16;;;22352:65:0;;;;;;;;;;;-1:-1:-1;22352:65:0;;;;;1:33:-1;99:1;81:16;;;74:27;22352:65:0;;;137:4:-1;117:14;;;-1:-1;;113:30;;;157:16;;;26:21;;;22:32;;;6:49;;22352:65:0;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;22307:121:0;;;;22352:65;;-1:-1:-1;22307:121:0;-1:-1:-1;22307:121:0;;-1:-1:-1;25:18;;-1:-1;22307:121:0;;-1:-1:-1;22307:121:0;;-1:-1:-1;22307:121:0;;-1:-1:-1;25:18;;-1:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;12275:58:0;;;;;;;;;;;;-1:-1:-1;;;;;12275:58:0;;:::o;16994:106::-;2168:9;:7;:9::i;:::-;2160:54;;;;;-1:-1:-1;;;2160:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2160:54:0;;;;;;;;;;;;;;;17069:23;17086:5;17069:16;:23::i;19359:209::-;19416:7;19428:17;:15;:17::i;:::-;19473:54;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;19473:54:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;19428:110:0;;;;-1:-1:-1;;;;;19428:30:0;;;;;19473:54;;19428:110;;;;25:18:-1;19428:110:0;;25:18:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;13405:207:0;10520:9;:7;:9::i;:::-;10512:38;;;;;-1:-1:-1;;;10512:38:0;;;;;;;;;;;;-1:-1:-1;;;10512:38:0;;;;;;;;;;;;;;;13466:7;13478:17;:15;:17::i;:::-;13523:48;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;13523:48:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;13478:104:0;;;;-1:-1:-1;;;;;13478:30:0;;;;;13523:48;;13478:104;;;;25:18:-1;13478:104:0;;25:18:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;2767:140:0;2168:9;:7;:9::i;:::-;2160:54;;;;;-1:-1:-1;;;2160:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2160:54:0;;;;;;;;;;;;;;;2866:1;2850:6;;2829:40;;-1:-1:-1;;;;;2850:6:0;;;;2829:40;;2866:1;;2829:40;2897:1;2880:19;;-1:-1:-1;;;;;;2880:19:0;;;2767:140::o;19832:249::-;19909:7;19921:17;:15;:17::i;:::-;19966:74;;;-1:-1:-1;;;;;19966:74:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;19966:74:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;19921:130:0;;;;:30;;;;;19966:74;;19921:130;;;;25:18:-1;19921:130:0;;25:18:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;12398:42:0;;;;;;;;;;;;;:::o;1956:79::-;1994:7;2021:6;-1:-1:-1;;;;;2021:6:0;1956:79;:::o;2322:92::-;2362:4;2400:6;-1:-1:-1;;;;;2400:6:0;2386:10;:20;;2322:92::o;17108:89::-;2168:9;:7;:9::i;:::-;2160:54;;;;;-1:-1:-1;;;2160:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2160:54:0;;;;;;;;;;;;;;;17172:17;17187:1;17172:14;:17::i;14427:211::-;10520:9;:7;:9::i;:::-;10512:38;;;;;-1:-1:-1;;;10512:38:0;;;;;;;;;;;;-1:-1:-1;;;10512:38:0;;;;;;;;;;;;;;18897:245;18972:7;18984:17;:15;:17::i;:::-;19029:72;;;-1:-1:-1;;;;;19029:72:0;;;;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;19029:72:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;18984:128:0;;;;:30;;;;;19029:72;;18984:128;;;;25:18:-1;18984:128:0;;25:18:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;23721:148:0;23760:7;23772:17;:15;:17::i;:::-;23803:35;;;22:32:-1;6:49;;23803:35:0;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;23772:67:0;;;;-1:-1:-1;;;;;23772:30:0;;;;;23803:35;;23772:67;;;;25:18:-1;23772:67:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;23772:67:0;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;23759:80:0;;;23858:2;23850:11;;;;;12582:23;;;-1:-1:-1;;;;;12582:23:0;;:::o;14815:247::-;10520:9;:7;:9::i;:::-;10512:38;;;;;-1:-1:-1;;;10512:38:0;;;;;;;;;;;;-1:-1:-1;;;10512:38:0;;;;;;;;;;;;;;10321:89;10391:10;10360:4;10384:18;;;:6;:18;;;;;;;;10321:89;:::o;12150:65::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;17451:158::-;17499:7;17511:17;:15;:17::i;:::-;17542:36;;;22:32:-1;6:49;;17542:36:0;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;17511:68:0;;;;-1:-1:-1;;;;;17511:30:0;;;;;17542:36;;17511:68;;;;25:18:-1;17511:68:0;;25:18:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;12115:26:0;;;;:::o;16704:105::-;2168:9;:7;:9::i;:::-;2160:54;;;;;-1:-1:-1;;;2160:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2160:54:0;;;;;;;;;;;;;;;16774:27;16795:5;16774:20;:27::i;12612:22::-;;;-1:-1:-1;;;12612:22:0;;;;;:::o;12340:51::-;;;;;;;;;;;;-1:-1:-1;;;;;12340:51:0;;:::o;20233:309::-;20292:15;20321:7;20330:16;20350:17;:15;:17::i;:::-;20395:59;;;-1:-1:-1;;;;;20395:59:0;;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;20395:59:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;20350:115:0;;;;:30;;;;;20395:59;;20350:115;;;;25:18:-1;20350:115:0;;25:18:-1;36:153;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;20350:115:0;;;;;;;;;;;;;;;;;;;;;;;14:1:-1;21;16:31;;;;75:4;69:11;64:16;;144:4;140:9;133:4;115:16;111:27;107:43;104:1;100:51;94:4;87:65;169:16;166:1;159:27;225:16;222:1;215:4;212:1;208:12;193:49;7:242;;16:31;36:4;31:9;;7:242;;20320:145:0;;;;20484:2;20476:11;;;;;;20519:3;20508:26;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;-1:-1;20508:26:0;;20233:309;-1:-1:-1;;;;20233:309:0:o;23966:229::-;2168:9;:7;:9::i;:::-;2160:54;;;;;-1:-1:-1;;;2160:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2160:54:0;;;;;;;;;;;;;;;24038:7;24050:17;:15;:17::i;:::-;24095:59;;;;;;;;;;;;26:21:-1;;;22:32;;;6:49;;24095:59:0;;;;;;;25:18:-1;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;24050:115:0;;;;-1:-1:-1;;;;;24050:30:0;;;;;24095:59;;24050:115;;;;25:18:-1;24050:115:0;;25:18:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;3062:109:0;2168:9;:7;:9::i;:::-;2160:54;;;;;-1:-1:-1;;;2160:54:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2160:54:0;;;;;;;;;;;;;;;3135:28;3154:8;3135:18;:28::i;12222:46::-;;;;;;;;;;;;;:::o;23517:144::-;23554:7;23566:17;:15;:17::i;:::-;23597:33;;;22:32:-1;6:49;;23597:33:0;;;;;49:4:-1;25:18;;61:17;;-1:-1;;;;;182:15;-1:-1;;;179:29;160:49;;23566:65:0;;;;-1:-1:-1;;;;;23566:30:0;;;;;23597:33;;23566:65;;;;25:18:-1;23566:65:0;;25:18:-1;66:2;61:3;58:11;36:153;;176:10;;164:23;;-1:-1;;139:12;;;;98:2;89:12;;;;114;36:153;;5682:203:0;3988:66;5856:11;;5823:55::o;5285:314::-;5365:27;:14;-1:-1:-1;;;;;5365:25:0;;:27::i;:::-;5357:114;;;;-1:-1:-1;;;5357:114:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3988:66;5553:28;5538:54::o;11105:327::-;-1:-1:-1;;;;;11172:19:0;;11164:47;;;;;-1:-1:-1;;;11164:47:0;;;;;;;;;;;;-1:-1:-1;;;11164:47:0;;;;;;;;;;;;;;;11240:7;;11230;;:17;11222:53;;;;;-1:-1:-1;;;11222:53:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11295:13:0;;;;;;:6;:13;;;;;;;;11294:14;11286:40;;;;;-1:-1:-1;;;11286:40:0;;;;;;;;;;;;-1:-1:-1;;;11286:40:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11337:13:0;;;;;;11353:4;11337:13;;;;;;;;:20;;-1:-1:-1;;11337:20:0;;;;;11378:7;;:14;;;:11;:14;:::i;:::-;11368:7;:24;11408:16;;-1:-1:-1;;;;;11408:16:0;;;;;;;;11105:327;:::o;11663:205::-;-1:-1:-1;;;;;11732:13:0;;;;;;:6;:13;;;;;;;;11724:35;;;;;-1:-1:-1;;;11724:35:0;;;;;;;;;;;;-1:-1:-1;;;11724:35:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;11770:13:0;;11786:5;11770:13;;;:6;:13;;;;;;;;:21;;-1:-1:-1;;11770:21:0;;;11812:7;;:14;;;:11;:14;:::i;:::-;11802:7;:24;11842:18;;-1:-1:-1;;;;;11842:18:0;;;;;;;;11663:205;:::o;10893:120::-;10967:1;10956:7;;:12;;10948:35;;;;;-1:-1:-1;;;10948:35:0;;;;;;;;;;;;-1:-1:-1;;;10948:35:0;;;;;;;;;;;;;;;10994:7;:11;10893:120::o;11508:147::-;11591:1;11581:7;;:11;11573:40;;;;;-1:-1:-1;;;11573:40:0;;;;;;;;;;;;-1:-1:-1;;;11573:40:0;;;;;;;;;;;;;;3277:229;-1:-1:-1;;;;;3351:22:0;;3343:73;;;;-1:-1:-1;;;3343:73:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3453:6;;;3432:38;;-1:-1:-1;;;;;3432:38:0;;;;3453:6;;;3432:38;;;3481:6;:17;;-1:-1:-1;;;;;;3481:17:0;-1:-1:-1;;;;;3481:17:0;;;;;;;;;;3277:229::o;620:422::-;987:20;1026:8;;;620:422::o;6813:181::-;6871:7;6903:5;;;6927:6;;;;6919:46;;;;;-1:-1:-1;;;6919:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;6985:1;6813:181;-1:-1:-1;;;6813:181:0:o;7269:184::-;7327:7;7360:1;7355;:6;;7347:49;;;;;-1:-1:-1;;;7347:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;7419:5:0;;;7269:184::o

Swarm Source

bzzr://a7ca0022bedcefe0bf539c8ff973928d615ff9f2a0319e9100b7a71d6088180d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

OVERVIEW

DINNGO Exchange is an Ethereum based decentralized exchange. The smart contract provided here is to facilitate tradings on the platform.

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Chain Token Portfolio % Price Amount Value
ETH
Ether (ETH)
92.40%$3,160.666.5506$20,704.16
ETH3.22%$1721.5948$722.32
ETH0.90%$1202.6084$202.61
ETH0.89%$2,386.310.084$200.4
ETH0.77%$12.9913.2066$171.55
ETH0.57%$0.196059654.324$128.29
ETH0.32%$2,639.040.0276$72.71
ETH0.27%$0.0231762,617.295$60.66
ETH0.18%$0.323938124.9108$40.46
ETH0.13%$0.00169917,098.3675$29.05
ETH0.12%$0.0073043,796.1968$27.73
ETH0.11%$0.185269134.2901$24.88
ETH0.05%$0.28386338.2962$10.87
ETH0.04%$0.13984156.1525$7.85
ETH<0.01%$0.7252112.5723$1.87
ETH<0.01%$0.00761764.813$0.4936
ETH<0.01%$0.01709628.6487$0.4897
ETH<0.01%$0.00908652.5817$0.4777
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.