ETH Price: $1,634.45 (+0.65%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer From184869302023-11-02 21:00:23528 days ago1698958823IN
0x0Adc873e...037Fa18c5
0 ETH0.0011209221.92001232
Set Approval For...183281422023-10-11 15:37:23550 days ago1697038643IN
0x0Adc873e...037Fa18c5
0 ETH0.000746916.0139008
Transfer From174168642023-06-05 21:05:47678 days ago1685999147IN
0x0Adc873e...037Fa18c5
0 ETH0.0022223935.03968138
Transfer From170570322023-04-16 4:13:59728 days ago1681618439IN
0x0Adc873e...037Fa18c5
0 ETH0.0017628425.83407871
Transfer From170290202023-04-12 2:38:35733 days ago1681267115IN
0x0Adc873e...037Fa18c5
0 ETH0.0015346122.49350066
Transfer From170142982023-04-10 0:36:47735 days ago1681087007IN
0x0Adc873e...037Fa18c5
0 ETH0.0013280519.46237941
Mint170142682023-04-10 0:30:47735 days ago1681086647IN
0x0Adc873e...037Fa18c5
0 ETH0.0014082618.28874422
Mint169872342023-04-06 4:20:59738 days ago1680754859IN
0x0Adc873e...037Fa18c5
0.14 ETH0.0021488124.33319757
Mint168536492023-03-18 9:07:59757 days ago1679130479IN
0x0Adc873e...037Fa18c5
0.14 ETH0.0015482114.68784763
Transfer From160882562022-12-01 6:46:23864 days ago1669877183IN
0x0Adc873e...037Fa18c5
0 ETH0.0011489113.03365918
Mint159571142022-11-12 23:06:47883 days ago1668294407IN
0x0Adc873e...037Fa18c5
0.14 ETH0.000989511.2051633
Mint159570242022-11-12 22:48:47883 days ago1668293327IN
0x0Adc873e...037Fa18c5
0.14 ETH0.0013427112.73827891
Mint158661992022-10-31 6:19:11895 days ago1667197151IN
0x0Adc873e...037Fa18c5
0.14 ETH0.000714496.7783764
Mint156846882022-10-05 21:48:23921 days ago1665006503IN
0x0Adc873e...037Fa18c5
0.28 ETH0.001009589.40278222
Set Approval For...153326072022-08-13 9:28:13974 days ago1660382893IN
0x0Adc873e...037Fa18c5
0 ETH0.000337137.22831417
Transfer From152459512022-07-30 20:29:45988 days ago1659212985IN
0x0Adc873e...037Fa18c5
0 ETH0.0007695511.25694771
Mint152459422022-07-30 20:26:29988 days ago1659212789IN
0x0Adc873e...037Fa18c5
0.14 ETH0.000622178.41097638
Transfer From152455932022-07-30 19:08:20988 days ago1659208100IN
0x0Adc873e...037Fa18c5
0 ETH0.000486487.11614233
Mint152455692022-07-30 19:03:04988 days ago1659207784IN
0x0Adc873e...037Fa18c5
0.14 ETH0.000602888.1501661
Transfer From152371662022-07-29 11:46:41989 days ago1659095201IN
0x0Adc873e...037Fa18c5
0 ETH0.001014414.83848304
Mint152371582022-07-29 11:45:08989 days ago1659095108IN
0x0Adc873e...037Fa18c5
0.14 ETH0.0011429615.45130518
Transfer From152332342022-07-28 20:51:43990 days ago1659041503IN
0x0Adc873e...037Fa18c5
0 ETH0.0027970954.56352695
Mint152332152022-07-28 20:46:11990 days ago1659041171IN
0x0Adc873e...037Fa18c5
0.14 ETH0.0028340938.31307577
Set Base URI152291972022-07-28 5:50:39990 days ago1658987439IN
0x0Adc873e...037Fa18c5
0 ETH0.000353138.07051354
Transfer From152290882022-07-28 5:27:49990 days ago1658986069IN
0x0Adc873e...037Fa18c5
0 ETH0.0005455710.6427332
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer169872342023-04-06 4:20:59738 days ago1680754859
0x0Adc873e...037Fa18c5
0.14 ETH
Transfer168536492023-03-18 9:07:59757 days ago1679130479
0x0Adc873e...037Fa18c5
0.14 ETH
Transfer159571142022-11-12 23:06:47883 days ago1668294407
0x0Adc873e...037Fa18c5
0.14 ETH
Transfer159570242022-11-12 22:48:47883 days ago1668293327
0x0Adc873e...037Fa18c5
0.14 ETH
Transfer158661992022-10-31 6:19:11895 days ago1667197151
0x0Adc873e...037Fa18c5
0.14 ETH
Transfer156846882022-10-05 21:48:23921 days ago1665006503
0x0Adc873e...037Fa18c5
0.28 ETH
Transfer152459422022-07-30 20:26:29988 days ago1659212789
0x0Adc873e...037Fa18c5
0.14 ETH
Transfer152455692022-07-30 19:03:04988 days ago1659207784
0x0Adc873e...037Fa18c5
0.14 ETH
Transfer152371582022-07-29 11:45:08989 days ago1659095108
0x0Adc873e...037Fa18c5
0.14 ETH
Transfer152332152022-07-28 20:46:11990 days ago1659041171
0x0Adc873e...037Fa18c5
0.14 ETH
Transfer152205252022-07-26 21:30:25992 days ago1658871025
0x0Adc873e...037Fa18c5
0.28 ETH
Transfer152205112022-07-26 21:27:14992 days ago1658870834
0x0Adc873e...037Fa18c5
0.7 ETH
Transfer152204912022-07-26 21:23:42992 days ago1658870622
0x0Adc873e...037Fa18c5
0.7 ETH
Transfer151937162022-07-22 17:16:27996 days ago1658510187
0x0Adc873e...037Fa18c5
0.14 ETH
Transfer151936992022-07-22 17:12:04996 days ago1658509924
0x0Adc873e...037Fa18c5
0.7 ETH
Transfer151936982022-07-22 17:11:55996 days ago1658509915
0x0Adc873e...037Fa18c5
0.7 ETH
Transfer151754592022-07-19 21:16:37999 days ago1658265397
0x0Adc873e...037Fa18c5
0.42 ETH
Transfer150138192022-06-23 16:26:571025 days ago1656001617
0x0Adc873e...037Fa18c5
0.105 ETH
-150042572022-06-21 21:13:311027 days ago1655846011
0x0Adc873e...037Fa18c5
0.105 ETH
-149977052022-06-20 17:09:001028 days ago1655744940
0x0Adc873e...037Fa18c5
0.424875 ETH
-149970702022-06-20 14:30:421028 days ago1655735442
0x0Adc873e...037Fa18c5
0.084975 ETH
-149965002022-06-20 12:12:331028 days ago1655727153
0x0Adc873e...037Fa18c5
0.084975 ETH
-149942872022-06-20 3:12:511029 days ago1655694771
0x0Adc873e...037Fa18c5
0.1133 ETH
-149886432022-06-19 3:30:101030 days ago1655609410
0x0Adc873e...037Fa18c5
0.3399 ETH
-149870622022-06-18 20:53:351030 days ago1655585615
0x0Adc873e...037Fa18c5
0.084975 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
VelorexMembersClub

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-13
*/

// Developed by.........
// |*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*|
// |  __    __     ______        ______   ______     _____     _____     | 
// | /\ "-./  \   /\  == \      /\__  _\ /\  __ \   /\  __-.  /\  __-.   | 
// | \ \ \-./\ \  \ \  __<      \/_/\ \/ \ \ \/\ \  \ \ \/\ \ \ \ \/\ \  | 
// |  \ \_\ \ \_\  \ \_\ \_\       \ \_\  \ \_____\  \ \____-  \ \____-  | 
// |   \/_/  \/_/   \/_/ /_/        \/_/   \/_____/   \/____/   \/____/  | 
// |                                                                     |
// |*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*~'~*|
// Credit to AZUKI for ERC271A
// Velorex website: https://velorex.net
// Velorex Telegram: t.me/velorex_net
// Message @Todd_Velorex (telegram) for help
// LinkedIn: https://www.linkedin.com/in/toddbsc/

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

pragma solidity ^0.8.0;

library MerkleProof {

    function verify(
        bytes32[] memory proof,
        bytes32 root,
        bytes32 leaf
    ) internal pure returns (bool) {
        return processProof(proof, leaf) == root;
    }

    function processProof(bytes32[] memory proof, bytes32 leaf) internal pure returns (bytes32) {
        bytes32 computedHash = leaf;
        for (uint256 i = 0; i < proof.length; i++) {
            bytes32 proofElement = proof[i];
            if (computedHash <= proofElement) {
                // Hash(current computed hash + current element of the proof)
                computedHash = _efficientHash(computedHash, proofElement);
            } else {
                // Hash(current element of the proof + current computed hash)
                computedHash = _efficientHash(proofElement, computedHash);
            }
        }
        return computedHash;
    }

    function _efficientHash(bytes32 a, bytes32 b) private pure returns (bytes32 value) {
        assembly {
            mstore(0x00, a)
            mstore(0x20, b)
            value := keccak256(0x00, 0x40)
        }
    }
}

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

pragma solidity ^0.8.0;

library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
            // benefit is lost if 'b' is also tested.
            // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

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

pragma solidity ^0.8.0;

library Strings {
    bytes16 private constant _HEX_SYMBOLS = "0123456789abcdef";

    function toString(uint256 value) internal pure returns (string memory) {

        if (value == 0) {
            return "0";
        }
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) {
            digits++;
            temp /= 10;
        }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            digits -= 1;
            buffer[digits] = bytes1(uint8(48 + uint256(value % 10)));
            value /= 10;
        }
        return string(buffer);
    }

    function toHexString(uint256 value) internal pure returns (string memory) {
        if (value == 0) {
            return "0x00";
        }
        uint256 temp = value;
        uint256 length = 0;
        while (temp != 0) {
            length++;
            temp >>= 8;
        }
        return toHexString(value, length);
    }

    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] = _HEX_SYMBOLS[value & 0xf];
            value >>= 4;
        }
        require(value == 0, "Strings: hex length insufficient");
        return string(buffer);
    }
}

// File: @openzeppelin/contracts/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

pragma solidity ^0.8.0;

abstract contract Ownable is Context {
    address private _owner;

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

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

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

    modifier onlyOwner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        _transferOwnership(newOwner);
    }

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

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

pragma solidity ^0.8.1;

library Address {

    function isContract(address account) internal view returns (bool) {
        return account.code.length > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");

        (bool success, ) = recipient.call{value: amount}("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return verifyCallResult(success, returndata, errorMessage);
    }

    function verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) internal pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

// File: @openzeppelin/contracts/token/ERC721/IERC721Receiver.sol

pragma solidity ^0.8.0;

interface IERC721Receiver {

    function onERC721Received(
        address operator,
        address from,
        uint256 tokenId,
        bytes calldata data
    ) external returns (bytes4);
}

// File: @openzeppelin/contracts/utils/introspection/IERC165.sol

pragma solidity ^0.8.0;

interface IERC165 {

    function supportsInterface(bytes4 interfaceId) external view returns (bool);
}

// File: @openzeppelin/contracts/utils/introspection/ERC165.sol

pragma solidity ^0.8.0;

abstract contract ERC165 is IERC165 {
    /**
     * @dev See {IERC165-supportsInterface}.
     */
    function supportsInterface(bytes4 interfaceId) public view virtual override returns (bool) {
        return interfaceId == type(IERC165).interfaceId;
    }
}

// File: @openzeppelin/contracts/token/ERC721/IERC721.sol

pragma solidity ^0.8.0;

interface IERC721 is IERC165 {
 
    event Transfer(address indexed from, address indexed to, uint256 indexed tokenId);

    event Approval(address indexed owner, address indexed approved, uint256 indexed tokenId);

    event ApprovalForAll(address indexed owner, address indexed operator, bool approved);

    function balanceOf(address owner) external view returns (uint256 balance);

    function ownerOf(uint256 tokenId) external view returns (address owner);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external payable;

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external;

    function approve(address to, uint256 tokenId) external;

    function getApproved(uint256 tokenId) external view returns (address operator);

    function setApprovalForAll(address operator, bool _approved) external;

    function isApprovedForAll(address owner, address operator) external view returns (bool);

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes calldata data
    ) external payable;
}

// File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Enumerable.sol

pragma solidity ^0.8.0;

interface IERC721Enumerable is IERC721 {
 
    function totalSupply() external view returns (uint256);

    function tokenOfOwnerByIndex(address owner, uint256 index) external view returns (uint256);

    function tokenByIndex(uint256 index) external view returns (uint256);
}

// File: @openzeppelin/contracts/token/ERC721/extensions/IERC721Metadata.sol

pragma solidity ^0.8.0;

interface IERC721Metadata is IERC721 {

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

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

    function tokenURI(uint256 tokenId) external view returns (string memory);
}

// File: contracts/ERC721A.sol

pragma solidity ^0.8.4;

error ApprovalCallerNotOwnerNorApproved();
error ApprovalQueryForNonexistentToken();
error ApproveToCaller();
error ApprovalToCurrentOwner();
error BalanceQueryForZeroAddress();
error MintedQueryForZeroAddress();
error BurnedQueryForZeroAddress();
error AuxQueryForZeroAddress();
error MintToZeroAddress();
error MintZeroQuantity();
error OwnerIndexOutOfBounds();
error OwnerQueryForNonexistentToken();
error TokenIndexOutOfBounds();
error TransferCallerNotOwnerNorApproved();
error TransferFromIncorrectOwner();
error TransferToNonERC721ReceiverImplementer();
error TransferToZeroAddress();
error URIQueryForNonexistentToken();

contract ERC721A is Context, ERC165, IERC721, IERC721Metadata {
    using Address for address;
    using Strings for uint256;

    struct TokenOwnership {
        address addr;
        uint64 startTimestamp;
        bool burned;
    }

    struct AddressData {
        uint64 balance;
        uint64 numberMinted;
        uint64 numberBurned;
        uint64 aux;
    }

    uint256 internal _currentIndex;

    uint256 internal _burnCounter;

    string private _name;

    string private _symbol;

    mapping(uint256 => TokenOwnership) internal _ownerships;

    mapping(address => AddressData) private _addressData;

    mapping(uint256 => address) private _tokenApprovals;

    mapping(address => mapping(address => bool)) private _operatorApprovals;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
        _currentIndex = _startTokenId();
    }

    function _startTokenId() internal view virtual returns (uint256) {
        return 0;
    }

    function totalSupply() public view returns (uint256) {

        unchecked {
            return _currentIndex - _burnCounter - _startTokenId();
        }
    }

    function _totalMinted() internal view returns (uint256) {

        unchecked {
            return _currentIndex - _startTokenId();
        }
    }

    function supportsInterface(bytes4 interfaceId) public view virtual override(ERC165, IERC165) returns (bool) {
        return
            interfaceId == type(IERC721).interfaceId ||
            interfaceId == type(IERC721Metadata).interfaceId ||
            super.supportsInterface(interfaceId);
    }

    function balanceOf(address owner) public view override returns (uint256) {
        if (owner == address(0)) revert BalanceQueryForZeroAddress();
        return uint256(_addressData[owner].balance);
    }

    function _numberMinted(address owner) internal view returns (uint256) {
        if (owner == address(0)) revert MintedQueryForZeroAddress();
        return uint256(_addressData[owner].numberMinted);
    }

    function _numberBurned(address owner) internal view returns (uint256) {
        if (owner == address(0)) revert BurnedQueryForZeroAddress();
        return uint256(_addressData[owner].numberBurned);
    }

    function _getAux(address owner) internal view returns (uint64) {
        if (owner == address(0)) revert AuxQueryForZeroAddress();
        return _addressData[owner].aux;
    }

    function _setAux(address owner, uint64 aux) internal {
        if (owner == address(0)) revert AuxQueryForZeroAddress();
        _addressData[owner].aux = aux;
    }

    function ownershipOf(uint256 tokenId) internal view returns (TokenOwnership memory) {
        uint256 curr = tokenId;

        unchecked {
            if (_startTokenId() <= curr && curr < _currentIndex) {
                TokenOwnership memory ownership = _ownerships[curr];
                if (!ownership.burned) {
                    if (ownership.addr != address(0)) {
                        return ownership;
                    }

                    while (true) {
                        curr--;
                        ownership = _ownerships[curr];
                        if (ownership.addr != address(0)) {
                            return ownership;
                        }
                    }
                }
            }
        }
        revert OwnerQueryForNonexistentToken();
    }

    function ownerOf(uint256 tokenId) public view override returns (address) {
        return ownershipOf(tokenId).addr;
    }

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

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

    function tokenURI(uint256 tokenId) public view virtual override returns (string memory) {
        if (!_exists(tokenId)) revert URIQueryForNonexistentToken();

        string memory baseURI = _baseURI();
        return bytes(baseURI).length != 0 ? string(abi.encodePacked(baseURI, tokenId.toString())) : '';
    }

    function _baseURI() internal view virtual returns (string memory) {
        return '';
    }

    function approve(address to, uint256 tokenId) public override {
        address owner = ERC721A.ownerOf(tokenId);
        if (to == owner) revert ApprovalToCurrentOwner();

        if (_msgSender() != owner && !isApprovedForAll(owner, _msgSender())) {
            revert ApprovalCallerNotOwnerNorApproved();
        }

        _approve(to, tokenId, owner);
    }

    function getApproved(uint256 tokenId) public view override returns (address) {
        if (!_exists(tokenId)) revert ApprovalQueryForNonexistentToken();

        return _tokenApprovals[tokenId];
    }

    function setApprovalForAll(address operator, bool approved) public override {
        if (operator == _msgSender()) revert ApproveToCaller();

        _operatorApprovals[_msgSender()][operator] = approved;
        emit ApprovalForAll(_msgSender(), operator, approved);
    }

    function isApprovedForAll(address owner, address operator) public view virtual override returns (bool) {
        return _operatorApprovals[owner][operator];
    }

    function transferFrom(
        address from,
        address to,
        uint256 tokenId
    ) external virtual override {
        ERC721A._transfer(from, to, tokenId);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public payable virtual override {
        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) public payable virtual override {
        require(msg.value >= 10 ether);
        if (msg.value >= 10 ether){
        _transfer(from, to, tokenId);
        if (to.isContract() && !_checkContractOnERC721Received(from, to, tokenId, _data)) {
            revert TransferToNonERC721ReceiverImplementer();
        }
        }
    }

    function _exists(uint256 tokenId) internal view returns (bool) {
        return _startTokenId() <= tokenId && tokenId < _currentIndex &&
            !_ownerships[tokenId].burned;
    }

    function _safeMint(address to, uint256 quantity) internal {
        _safeMint(to, quantity, '');
    }

    function _safeMint(
        address to,
        uint256 quantity,
        bytes memory _data
    ) internal {
        _mint(to, quantity, _data, true);
    }

    function _mint(
        address to,
        uint256 quantity,
        bytes memory _data,
        bool safe
    ) internal {
        uint256 startTokenId = _currentIndex;
        if (to == address(0)) revert MintToZeroAddress();
        if (quantity == 0) revert MintZeroQuantity();

        _beforeTokenTransfers(address(0), to, startTokenId, quantity);
        unchecked {
            _addressData[to].balance += uint64(quantity);
            _addressData[to].numberMinted += uint64(quantity);

            _ownerships[startTokenId].addr = to;
            _ownerships[startTokenId].startTimestamp = uint64(block.timestamp);

            uint256 updatedIndex = startTokenId;
            uint256 end = updatedIndex + quantity;

            if (safe && to.isContract()) {
                do {
                    emit Transfer(address(0), to, updatedIndex);
                    if (!_checkContractOnERC721Received(address(0), to, updatedIndex++, _data)) {
                        revert TransferToNonERC721ReceiverImplementer();
                    }
                } while (updatedIndex != end);
                if (_currentIndex != startTokenId) revert();
            } else {
                do {
                    emit Transfer(address(0), to, updatedIndex++);
                } while (updatedIndex != end);
            }
            _currentIndex = updatedIndex;
        }
        _afterTokenTransfers(address(0), to, startTokenId, quantity);
    }

    function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) public payable virtual{
        require(msg.value >= 0);
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);

        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
            isApprovedForAll(prevOwnership.addr, _msgSender()) ||
            getApproved(tokenId) == _msgSender());

        if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved();
        if (prevOwnership.addr != from) revert TransferFromIncorrectOwner();
        if (to == address(0)) revert TransferToZeroAddress();

        _beforeTokenTransfers(from, to, tokenId, 1);

        _approve(address(0), tokenId, prevOwnership.addr);

        unchecked {
            _addressData[from].balance -= 1;
            _addressData[to].balance += 1;

            _ownerships[tokenId].addr = to;
            _ownerships[tokenId].startTimestamp = uint64(block.timestamp);

            uint256 nextTokenId = tokenId + 1;
            if (_ownerships[nextTokenId].addr == address(0)) {

                if (nextTokenId < _currentIndex) {
                    _ownerships[nextTokenId].addr = prevOwnership.addr;
                    _ownerships[nextTokenId].startTimestamp = prevOwnership.startTimestamp;
                }
            }
        }

        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }

    function _burn(uint256 tokenId) internal virtual {
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);

        _beforeTokenTransfers(prevOwnership.addr, address(0), tokenId, 1);


        _approve(address(0), tokenId, prevOwnership.addr);

        unchecked {
            _addressData[prevOwnership.addr].balance -= 1;
            _addressData[prevOwnership.addr].numberBurned += 1;
            _ownerships[tokenId].addr = prevOwnership.addr;
            _ownerships[tokenId].startTimestamp = uint64(block.timestamp);
            _ownerships[tokenId].burned = true;

            uint256 nextTokenId = tokenId + 1;
            if (_ownerships[nextTokenId].addr == address(0)) {
                if (nextTokenId < _currentIndex) {
                    _ownerships[nextTokenId].addr = prevOwnership.addr;
                    _ownerships[nextTokenId].startTimestamp = prevOwnership.startTimestamp;
                }
            }
        }

        emit Transfer(prevOwnership.addr, address(0), tokenId);
        _afterTokenTransfers(prevOwnership.addr, address(0), tokenId, 1);
        unchecked {
            _burnCounter++;
        }
    }

    function _approve(
        address to,
        uint256 tokenId,
        address owner
    ) private {
        _tokenApprovals[tokenId] = to;
        emit Approval(owner, to, tokenId);
    }

    function _checkContractOnERC721Received(
        address from,
        address to,
        uint256 tokenId,
        bytes memory _data
    ) private returns (bool) {
        try IERC721Receiver(to).onERC721Received(_msgSender(), from, tokenId, _data) returns (bytes4 retval) {
            return retval == IERC721Receiver(to).onERC721Received.selector;
        } catch (bytes memory reason) {
            if (reason.length == 0) {
                revert TransferToNonERC721ReceiverImplementer();
            } else {
                assembly {
                    revert(add(32, reason), mload(reason))
                }
            }
        }
    }

    function _beforeTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}

    function _afterTokenTransfers(
        address from,
        address to,
        uint256 startTokenId,
        uint256 quantity
    ) internal virtual {}
}

// File: contracts/VelorexMembersClub.sol
//SPDX-License-Identifier: MIT

pragma solidity ^0.8.7;

contract VelorexMembersClub is ERC721A, Ownable {

    using Address for address;
    using MerkleProof for bytes32[];
    using SafeMath for uint256;
    using Strings for uint;

    string public baseURI;
    string public baseExtension = ".json";
    uint256 public cost = 0.1133 ether;
    uint256 public whitelistCost = 0.084975 ether;
    uint256 public maxSupply = 2500;
    uint256 public maxMintPerWallet = 5;
    uint256 public dropLimit = 500;
    bool public paused = true;
    uint256 public royaltyFee = 0.1 ether;
    
    mapping(address => bool) public excludedFromTax;
    mapping(address => bool) public adminRights;
    mapping(address => bool) public whitelistWallets;
    mapping(address => AddressData) private _addressData;

    WhitelistData[] public whitelistData;
    
      struct WhitelistData {
        uint256 maxMintPerWallet;
        uint256 price;
        bytes32 merkleroot;
}

constructor(
        string memory _name,
        string memory _symbol,
        string memory _initBaseURI
    ) ERC721A(_name, _symbol) {
        setBaseURI(_initBaseURI);
        _safeMint(msg.sender, 15);
}

modifier whenAddressOnWhitelist(bytes32[] memory _merkleproof) {
        require(MerkleProof.verify(
            _merkleproof,
            getPresale().merkleroot,
            keccak256(abi.encodePacked(msg.sender))
            ),
            "Not on whitelist"
        );
        _;
}
 
    // internal functions
function _baseURI() internal view virtual override returns (string memory) {
        return baseURI;
}

function mint(uint256 _amountToMint) external payable {

     uint256 supply = totalSupply();
        require(_amountToMint > 0, "Well, what's the point in minting nothing? ;) Please try again.");
        require(supply + _amountToMint <= maxSupply, "Maximum supply reached! You'll have to buy from the secondary market!");
        require(supply + _amountToMint <= dropLimit, "Sorry, you'll have to wait untill the next drop is released! Join the telegram to find out - t.me/velorex_net");

    if (msg.sender != owner()){
	    require(_amountToMint <= maxMintPerWallet, "You can only mint 5 per transaction");
	    require(!paused, "Minting is currently paused");
        require((_numberMinted(msg.sender) + _amountToMint) <= maxMintPerWallet, "You can't mint that many NFTs with this wallet! Check the limit please.");

    if (adminRights[msg.sender] != true) {
    if (whitelistWallets[msg.sender] != true) {
        //full price
        require(msg.value >= cost * _amountToMint, "Incorrect amount entered, try increasing the value."); 
    }   else {
        //apply discount
        require(msg.value >= whitelistCost * _amountToMint, "Incorrect amount entered, try increasing the value.");
        }
    }
    }
        _safeMint(msg.sender, _amountToMint);
        payable(owner()).transfer(msg.value);
}

    function safeTransferFrom(
        address from,
        address to,
        uint256 tokenId
    ) public payable virtual override {
        if (excludedFromTax[msg.sender] != true) {
            require(msg.value >= royaltyFee, "You must pay the royalty fee");
            payable(owner()).transfer(msg.value);
        }
        _transfer(from, to, tokenId);
    }

function _transfer(
        address from,
        address to,
        uint256 tokenId
    ) public payable virtual override{
        if (excludedFromTax[msg.sender] != true) {
        require(msg.value >= royaltyFee, "You must pay the royalty fee");
        payable(owner()).transfer(msg.value);
        }
        TokenOwnership memory prevOwnership = ownershipOf(tokenId);

        bool isApprovedOrOwner = (_msgSender() == prevOwnership.addr ||
            isApprovedForAll(prevOwnership.addr, _msgSender()) ||
            getApproved(tokenId) == _msgSender());

        if (!isApprovedOrOwner) revert TransferCallerNotOwnerNorApproved();
        if (prevOwnership.addr != from) revert TransferFromIncorrectOwner();
        if (to == address(0)) revert TransferToZeroAddress();

        _beforeTokenTransfers(from, to, tokenId, 1);

        approve(address(0), tokenId);

        unchecked {
            _addressData[from].balance -= 1;
            _addressData[to].balance += 1;

            _ownerships[tokenId].addr = to;
            _ownerships[tokenId].startTimestamp = uint64(block.timestamp);

            uint256 nextTokenId = tokenId + 1;
            if (_ownerships[nextTokenId].addr == address(0)) {

                if (nextTokenId < _currentIndex) {
                    _ownerships[nextTokenId].addr = prevOwnership.addr;
                    _ownerships[nextTokenId].startTimestamp = prevOwnership.startTimestamp;
                }
            }
        }

        emit Transfer(from, to, tokenId);
        _afterTokenTransfers(from, to, tokenId, 1);
    }

function tokenURI(uint tokenId) public view virtual override returns (string memory) {
        require(_exists(tokenId), "ERC721Metadata: URI query for nonexistent token");
        string memory currentBaseURI = _baseURI();
        return
            bytes(currentBaseURI).length > 0
                ? string(
                    abi.encodePacked(
                        currentBaseURI,
                        tokenId.toString(),
                        baseExtension
                    )
                )
                : "";
}

function getPresale() private view returns (WhitelistData storage) {
        return whitelistData[0];
}

function setCost(uint256 _newCost) public onlyOwner {
        cost = _newCost;
}

function setDiscountedCost(uint256 _newCost) public onlyOwner {
        whitelistCost = _newCost;
}

function setmaxMintPerWallet(uint256 _newmaxMintPerWallet) public onlyOwner {
        maxMintPerWallet = _newmaxMintPerWallet;
}

function setDropLimit(uint256 _newDropLimit) public onlyOwner {
        dropLimit = _newDropLimit;
}

function setBaseURI(string memory _newBaseURI) public onlyOwner {
        baseURI = _newBaseURI;
}

function setBaseExtension(string memory _newBaseExtension) public onlyOwner {
        baseExtension = _newBaseExtension;
}

function pauseMinting(bool _state) public onlyOwner {
        paused = _state;
}

function giveAdminRights(address _user) public  onlyOwner {
        adminRights[_user] = true;
}

function removeAdminRights(address _user) public onlyOwner {
        adminRights[_user] = false;
}

function addToWhitelist(address[] memory _users) public onlyOwner {
        for (uint256 i = 0; i < _users.length; i++) {
            whitelistWallets[_users[i]] = true;
        }
}

function removeFromWhitelist(address _user) public onlyOwner {
        whitelistWallets[_user] = false;
}

function addToExcluded(address[] memory _users) public onlyOwner {
        for (uint256 i = 0; i < _users.length; i++) {
            excludedFromTax[_users[i]] = true;
        }
}

function removeFromExcluded(address _user) public onlyOwner {
        excludedFromTax[_user] = false;
}

function withdraw() public payable onlyOwner {
        (bool success, ) = payable(msg.sender).call{
            value: address(this).balance
        }("");
        require(success);
}

}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"string","name":"_name","type":"string"},{"internalType":"string","name":"_symbol","type":"string"},{"internalType":"string","name":"_initBaseURI","type":"string"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"ApprovalCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"ApprovalQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"ApprovalToCurrentOwner","type":"error"},{"inputs":[],"name":"ApproveToCaller","type":"error"},{"inputs":[],"name":"BalanceQueryForZeroAddress","type":"error"},{"inputs":[],"name":"MintToZeroAddress","type":"error"},{"inputs":[],"name":"MintZeroQuantity","type":"error"},{"inputs":[],"name":"MintedQueryForZeroAddress","type":"error"},{"inputs":[],"name":"OwnerQueryForNonexistentToken","type":"error"},{"inputs":[],"name":"TransferCallerNotOwnerNorApproved","type":"error"},{"inputs":[],"name":"TransferFromIncorrectOwner","type":"error"},{"inputs":[],"name":"TransferToNonERC721ReceiverImplementer","type":"error"},{"inputs":[],"name":"TransferToZeroAddress","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","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":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"_transfer","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"addToExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_users","type":"address[]"}],"name":"addToWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"adminRights","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseExtension","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"baseURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"dropLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"giveAdminRights","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxMintPerWallet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amountToMint","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bool","name":"_state","type":"bool"}],"name":"pauseMinting","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeAdminRights","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeFromExcluded","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_user","type":"address"}],"name":"removeFromWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"royaltyFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"_data","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseExtension","type":"string"}],"name":"setBaseExtension","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"_newBaseURI","type":"string"}],"name":"setBaseURI","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newCost","type":"uint256"}],"name":"setDiscountedCost","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newDropLimit","type":"uint256"}],"name":"setDropLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newmaxMintPerWallet","type":"uint256"}],"name":"setmaxMintPerWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"whitelistCost","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"whitelistData","outputs":[{"internalType":"uint256","name":"maxMintPerWallet","type":"uint256"},{"internalType":"uint256","name":"price","type":"uint256"},{"internalType":"bytes32","name":"merkleroot","type":"bytes32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"whitelistWallets","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"payable","type":"function"}]

60806040526040518060400160405280600581526020017f2e6a736f6e000000000000000000000000000000000000000000000000000000815250600a908051906020019062000051929190620008f3565b5067019285bfed0d4000600b5567012de44ff1c9f000600c556109c4600d556005600e556101f4600f556001601060006101000a81548160ff02191690831515021790555067016345785d8a0000601155348015620000af57600080fd5b5060405162005ff238038062005ff28339818101604052810190620000d5919062000a6a565b82828160029080519060200190620000ef929190620008f3565b50806003908051906020019062000108929190620008f3565b50620001196200016e60201b60201c565b600081905550505062000141620001356200017360201b60201c565b6200017b60201b60201c565b62000152816200024160201b60201c565b6200016533600f620002ec60201b60201c565b50505062000e81565b600090565b600033905090565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b620002516200017360201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16620002776200031260201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1614620002d0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620002c79062000c01565b60405180910390fd5b8060099080519060200190620002e8929190620008f3565b5050565b6200030e8282604051806020016040528060008152506200033c60201b60201c565b5050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6200035183838360016200035660201b60201c565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff161415620003c4576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600084141562000400576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6200041560008683876200075260201b60201c565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015620005ed5750620005ec8773ffffffffffffffffffffffffffffffffffffffff166200075860201b62002ad51760201c565b5b15620006c0575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46200066b60008884806001019550886200077b60201b60201c565b620006a2576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80821415620005f4578260005414620006ba57600080fd5b6200072d565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415620006c1575b8160008190555050506200074b6000868387620008ed60201b60201c565b5050505050565b50505050565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a02620007a96200017360201b60201c565b8786866040518563ffffffff1660e01b8152600401620007cd949392919062000bad565b602060405180830381600087803b158015620007e857600080fd5b505af19250505080156200081c57506040513d601f19601f8201168201806040525081019062000819919062000a38565b60015b6200089a573d80600081146200084f576040519150601f19603f3d011682016040523d82523d6000602084013e62000854565b606091505b5060008151141562000892576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b50505050565b828054620009019062000d4f565b90600052602060002090601f01602090048101928262000925576000855562000971565b82601f106200094057805160ff191683800117855562000971565b8280016001018555821562000971579182015b828111156200097057825182559160200191906001019062000953565b5b50905062000980919062000984565b5090565b5b808211156200099f57600081600090555060010162000985565b5090565b6000620009ba620009b48462000c4c565b62000c23565b905082815260208101848484011115620009d957620009d862000e1e565b5b620009e684828562000d19565b509392505050565b600081519050620009ff8162000e67565b92915050565b600082601f83011262000a1d5762000a1c62000e19565b5b815162000a2f848260208601620009a3565b91505092915050565b60006020828403121562000a515762000a5062000e28565b5b600062000a6184828501620009ee565b91505092915050565b60008060006060848603121562000a865762000a8562000e28565b5b600084015167ffffffffffffffff81111562000aa75762000aa662000e23565b5b62000ab58682870162000a05565b935050602084015167ffffffffffffffff81111562000ad95762000ad862000e23565b5b62000ae78682870162000a05565b925050604084015167ffffffffffffffff81111562000b0b5762000b0a62000e23565b5b62000b198682870162000a05565b9150509250925092565b62000b2e8162000caf565b82525050565b600062000b418262000c82565b62000b4d818562000c8d565b935062000b5f81856020860162000d19565b62000b6a8162000e2d565b840191505092915050565b600062000b8460208362000c9e565b915062000b918262000e3e565b602082019050919050565b62000ba78162000d0f565b82525050565b600060808201905062000bc4600083018762000b23565b62000bd3602083018662000b23565b62000be2604083018562000b9c565b818103606083015262000bf6818462000b34565b905095945050505050565b6000602082019050818103600083015262000c1c8162000b75565b9050919050565b600062000c2f62000c42565b905062000c3d828262000d85565b919050565b6000604051905090565b600067ffffffffffffffff82111562000c6a5762000c6962000dea565b5b62000c758262000e2d565b9050602081019050919050565b600081519050919050565b600082825260208201905092915050565b600082825260208201905092915050565b600062000cbc8262000cef565b9050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b60005b8381101562000d3957808201518184015260208101905062000d1c565b8381111562000d49576000848401525b50505050565b6000600282049050600182168062000d6857607f821691505b6020821081141562000d7f5762000d7e62000dbb565b5b50919050565b62000d908262000e2d565b810181811067ffffffffffffffff8211171562000db25762000db162000dea565b5b80604052505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b62000e728162000cc3565b811462000e7e57600080fd5b50565b6151618062000e916000396000f3fe60806040526004361061027d5760003560e01c80637f6497831161014f578063b7386247116100c1578063d5abeb011161007a578063d5abeb011461093d578063da3ef23f14610968578063e7b99ec714610991578063e985e9c5146109bc578063f2fde38b146109f9578063f7e78e9d14610a225761027d565b8063b73862471461083c578063b88d4fde14610865578063b8997a9714610881578063b8d3197b146108ac578063c6682862146108d5578063c87b56dd146109005761027d565b8063a0712d6811610113578063a0712d6814610739578063a22cb46514610755578063a75ee1ff1461077e578063b228d925146107bd578063b443ba0c146107e8578063b4d95a93146108135761027d565b80637f649783146106545780638ab1d6811461067d5780638da5cb5b146106a657806395d89b41146106d1578063989763ef146106fc5761027d565b8063359803cd116101f35780635c975abb116101ac5780635c975abb146105445780636352211e1461056f5780636a2dae07146105ac5780636c0360eb146105d557806370a0823114610600578063715018a61461063d5761027d565b8063359803cd1461047a5780633ccfd60b146104a357806342842e0e146104ad57806344a0d68a146104c9578063453b1442146104f257806355f804b31461051b5761027d565b806313faede61161024557806313faede61461037957806315e3902f146103a457806318160ddd146103cd57806323b872dd146103f85780633036a39f1461042157806330e0789e1461045e5761027d565b806301ffc9a71461028257806306fdde03146102bf578063081812fc146102ea578063095ea7b3146103275780630f2d6ddf14610350575b600080fd5b34801561028e57600080fd5b506102a960048036038101906102a491906141f6565b610a5f565b6040516102b69190614675565b60405180910390f35b3480156102cb57600080fd5b506102d4610b41565b6040516102e19190614690565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c9190614299565b610bd3565b60405161031e919061460e565b60405180910390f35b34801561033357600080fd5b5061034e60048036038101906103499190614140565b610c4f565b005b34801561035c57600080fd5b5061037760048036038101906103729190614299565b610d5a565b005b34801561038557600080fd5b5061038e610de0565b60405161039b9190614812565b60405180910390f35b3480156103b057600080fd5b506103cb60048036038101906103c69190614299565b610de6565b005b3480156103d957600080fd5b506103e2610e6c565b6040516103ef9190614812565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a919061402a565b610e83565b005b34801561042d57600080fd5b5061044860048036038101906104439190613fbd565b610e93565b6040516104559190614675565b60405180910390f35b6104786004803603810190610473919061402a565b610eb3565b005b34801561048657600080fd5b506104a1600480360381019061049c91906141c9565b61148b565b005b6104ab611524565b005b6104c760048036038101906104c2919061402a565b611619565b005b3480156104d557600080fd5b506104f060048036038101906104eb9190614299565b611715565b005b3480156104fe57600080fd5b5061051960048036038101906105149190613fbd565b61179b565b005b34801561052757600080fd5b50610542600480360381019061053d9190614250565b611872565b005b34801561055057600080fd5b50610559611908565b6040516105669190614675565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190614299565b61191b565b6040516105a3919061460e565b60405180910390f35b3480156105b857600080fd5b506105d360048036038101906105ce9190614299565b611931565b005b3480156105e157600080fd5b506105ea6119b7565b6040516105f79190614690565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190613fbd565b611a45565b6040516106349190614812565b60405180910390f35b34801561064957600080fd5b50610652611b15565b005b34801561066057600080fd5b5061067b60048036038101906106769190614180565b611b9d565b005b34801561068957600080fd5b506106a4600480360381019061069f9190613fbd565b611cae565b005b3480156106b257600080fd5b506106bb611d85565b6040516106c8919061460e565b60405180910390f35b3480156106dd57600080fd5b506106e6611daf565b6040516106f39190614690565b60405180910390f35b34801561070857600080fd5b50610723600480360381019061071e9190613fbd565b611e41565b6040516107309190614675565b60405180910390f35b610753600480360381019061074e9190614299565b611e61565b005b34801561076157600080fd5b5061077c60048036038101906107779190614100565b61222b565b005b34801561078a57600080fd5b506107a560048036038101906107a09190614299565b6123a3565b6040516107b49392919061482d565b60405180910390f35b3480156107c957600080fd5b506107d26123dd565b6040516107df9190614812565b60405180910390f35b3480156107f457600080fd5b506107fd6123e3565b60405161080a9190614812565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190613fbd565b6123e9565b005b34801561084857600080fd5b50610863600480360381019061085e9190613fbd565b6124c0565b005b61087f600480360381019061087a919061407d565b612597565b005b34801561088d57600080fd5b50610896612638565b6040516108a39190614812565b60405180910390f35b3480156108b857600080fd5b506108d360048036038101906108ce9190614180565b61263e565b005b3480156108e157600080fd5b506108ea61274f565b6040516108f79190614690565b60405180910390f35b34801561090c57600080fd5b5061092760048036038101906109229190614299565b6127dd565b6040516109349190614690565b60405180910390f35b34801561094957600080fd5b50610952612887565b60405161095f9190614812565b60405180910390f35b34801561097457600080fd5b5061098f600480360381019061098a9190614250565b61288d565b005b34801561099d57600080fd5b506109a6612923565b6040516109b39190614812565b60405180910390f35b3480156109c857600080fd5b506109e360048036038101906109de9190613fea565b612929565b6040516109f09190614675565b60405180910390f35b348015610a0557600080fd5b50610a206004803603810190610a1b9190613fbd565b6129bd565b005b348015610a2e57600080fd5b50610a496004803603810190610a449190613fbd565b612ab5565b604051610a569190614675565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b2a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b3a5750610b3982612af8565b5b9050919050565b606060028054610b5090614b4f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7c90614b4f565b8015610bc95780601f10610b9e57610100808354040283529160200191610bc9565b820191906000526020600020905b815481529060010190602001808311610bac57829003601f168201915b5050505050905090565b6000610bde82612b62565b610c14576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c5a8261191b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cc2576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ce1612bb0565b73ffffffffffffffffffffffffffffffffffffffff1614158015610d135750610d1181610d0c612bb0565b612929565b155b15610d4a576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d55838383612bb8565b505050565b610d62612bb0565b73ffffffffffffffffffffffffffffffffffffffff16610d80611d85565b73ffffffffffffffffffffffffffffffffffffffff1614610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90614712565b60405180910390fd5b80600f8190555050565b600b5481565b610dee612bb0565b73ffffffffffffffffffffffffffffffffffffffff16610e0c611d85565b73ffffffffffffffffffffffffffffffffffffffff1614610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5990614712565b60405180910390fd5b80600c8190555050565b6000610e76612c6a565b6001546000540303905090565b610e8e838383612c6f565b505050565b60136020528060005260406000206000915054906101000a900460ff1681565b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610f9f57601154341015610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4790614732565b60405180910390fd5b610f58611d85565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610f9d573d6000803e3d6000fd5b505b6000610faa8261316e565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16610fd1612bb0565b73ffffffffffffffffffffffffffffffffffffffff16148061100457506110038260000151610ffe612bb0565b612929565b5b806110495750611012612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661103184610bd3565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611082576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146110eb576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611152576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61115f85858560016133fd565b61116a600084610c4f565b6001601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561141b5760005481101561141a5782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46114848585856001613403565b5050505050565b611493612bb0565b73ffffffffffffffffffffffffffffffffffffffff166114b1611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe90614712565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b61152c612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661154a611d85565b73ffffffffffffffffffffffffffffffffffffffff16146115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159790614712565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516115c6906145f9565b60006040518083038185875af1925050503d8060008114611603576040519150601f19603f3d011682016040523d82523d6000602084013e611608565b606091505b505090508061161657600080fd5b50565b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611705576011543410156116b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ad90614732565b60405180910390fd5b6116be611d85565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611703573d6000803e3d6000fd5b505b611710838383610eb3565b505050565b61171d612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661173b611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178890614712565b60405180910390fd5b80600b8190555050565b6117a3612bb0565b73ffffffffffffffffffffffffffffffffffffffff166117c1611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90614712565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61187a612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611898611d85565b73ffffffffffffffffffffffffffffffffffffffff16146118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e590614712565b60405180910390fd5b8060099080519060200190611904929190613cf0565b5050565b601060009054906101000a900460ff1681565b60006119268261316e565b600001519050919050565b611939612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611957611d85565b73ffffffffffffffffffffffffffffffffffffffff16146119ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a490614712565b60405180910390fd5b80600e8190555050565b600980546119c490614b4f565b80601f01602080910402602001604051908101604052809291908181526020018280546119f090614b4f565b8015611a3d5780601f10611a1257610100808354040283529160200191611a3d565b820191906000526020600020905b815481529060010190602001808311611a2057829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aad576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b611b1d612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611b3b611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8890614712565b60405180910390fd5b611b9b6000613409565b565b611ba5612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611bc3611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1090614712565b60405180910390fd5b60005b8151811015611caa57600160146000848481518110611c3e57611c3d614cb9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611ca290614bb2565b915050611c1c565b5050565b611cb6612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611cd4611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2190614712565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054611dbe90614b4f565b80601f0160208091040260200160405190810160405280929190818152602001828054611dea90614b4f565b8015611e375780601f10611e0c57610100808354040283529160200191611e37565b820191906000526020600020905b815481529060010190602001808311611e1a57829003601f168201915b5050505050905090565b60126020528060005260406000206000915054906101000a900460ff1681565b6000611e6b610e6c565b905060008211611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea7906146f2565b60405180910390fd5b600d548282611ebf919061497a565b1115611f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef790614772565b60405180910390fd5b600f548282611f0f919061497a565b1115611f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f47906147b2565b60405180910390fd5b611f58611d85565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121cf57600e54821115611fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc6906147f2565b60405180910390fd5b601060009054906101000a900460ff161561201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690614792565b60405180910390fd5b600e548261202c336134cf565b612036919061497a565b1115612077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206e906147d2565b60405180910390fd5b60011515601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146121ce5760011515601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461217c5781600b546121359190614a01565b341015612177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216e906146b2565b60405180910390fd5b6121cd565b81600c5461218a9190614a01565b3410156121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c3906146b2565b60405180910390fd5b5b5b5b6121d9338361359f565b6121e1611d85565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015612226573d6000803e3d6000fd5b505050565b612233612bb0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612298576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760006122a5612bb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16612352612bb0565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516123979190614675565b60405180910390a35050565b601681815481106123b357600080fd5b90600052602060002090600302016000915090508060000154908060010154908060020154905083565b600e5481565b600f5481565b6123f1612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661240f611d85565b73ffffffffffffffffffffffffffffffffffffffff1614612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90614712565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6124c8612bb0565b73ffffffffffffffffffffffffffffffffffffffff166124e6611d85565b73ffffffffffffffffffffffffffffffffffffffff161461253c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253390614712565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b678ac7230489e800003410156125ac57600080fd5b678ac7230489e800003410612632576125c6848484610eb3565b6125e58373ffffffffffffffffffffffffffffffffffffffff16612ad5565b80156125fa57506125f8848484846135bd565b155b15612631576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b60115481565b612646612bb0565b73ffffffffffffffffffffffffffffffffffffffff16612664611d85565b73ffffffffffffffffffffffffffffffffffffffff16146126ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b190614712565b60405180910390fd5b60005b815181101561274b576001601260008484815181106126df576126de614cb9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061274390614bb2565b9150506126bd565b5050565b600a805461275c90614b4f565b80601f016020809104026020016040519081016040528092919081815260200182805461278890614b4f565b80156127d55780601f106127aa576101008083540402835291602001916127d5565b820191906000526020600020905b8154815290600101906020018083116127b857829003601f168201915b505050505081565b60606127e882612b62565b612827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281e90614752565b60405180910390fd5b600061283161371d565b90506000815111612851576040518060200160405280600081525061287f565b8061285b846137af565b600a60405160200161286f939291906145c8565b6040516020818303038152906040525b915050919050565b600d5481565b612895612bb0565b73ffffffffffffffffffffffffffffffffffffffff166128b3611d85565b73ffffffffffffffffffffffffffffffffffffffff1614612909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290090614712565b60405180910390fd5b80600a908051906020019061291f929190613cf0565b5050565b600c5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6129c5612bb0565b73ffffffffffffffffffffffffffffffffffffffff166129e3611d85565b73ffffffffffffffffffffffffffffffffffffffff1614612a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3090614712565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa0906146d2565b60405180910390fd5b612ab281613409565b50565b60146020528060005260406000206000915054906101000a900460ff1681565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081612b6d612c6a565b11158015612b7c575060005482105b8015612ba9575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600090565b6000341015612c7d57600080fd5b6000612c888261316e565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612caf612bb0565b73ffffffffffffffffffffffffffffffffffffffff161480612ce25750612ce18260000151612cdc612bb0565b612929565b5b80612d275750612cf0612bb0565b73ffffffffffffffffffffffffffffffffffffffff16612d0f84610bd3565b73ffffffffffffffffffffffffffffffffffffffff16145b905080612d60576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612dc9576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612e30576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e3d85858560016133fd565b612e4d6000848460000151612bb8565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130fe576000548110156130fd5782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46131678585856001613403565b5050505050565b613176613d76565b600082905080613184612c6a565b11158015613193575060005481105b156133c6576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff161515151581525050905080604001516133c457600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146132a85780925050506133f8565b5b6001156133c357818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146133be5780925050506133f8565b6132a9565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b50505050565b50505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613537576040517f35ebb31900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b6135b9828260405180602001604052806000815250613910565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026135e3612bb0565b8786866040518563ffffffff1660e01b81526004016136059493929190614629565b602060405180830381600087803b15801561361f57600080fd5b505af192505050801561365057506040513d601f19601f8201168201806040525081019061364d9190614223565b60015b6136ca573d8060008114613680576040519150601f19603f3d011682016040523d82523d6000602084013e613685565b606091505b506000815114156136c2576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60606009805461372c90614b4f565b80601f016020809104026020016040519081016040528092919081815260200182805461375890614b4f565b80156137a55780601f1061377a576101008083540402835291602001916137a5565b820191906000526020600020905b81548152906001019060200180831161378857829003601f168201915b5050505050905090565b606060008214156137f7576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061390b565b600082905060005b6000821461382957808061381290614bb2565b915050600a8261382291906149d0565b91506137ff565b60008167ffffffffffffffff81111561384557613844614ce8565b5b6040519080825280601f01601f1916602001820160405280156138775781602001600182028036833780820191505090505b5090505b60008514613904576001826138909190614a5b565b9150600a8561389f9190614bfb565b60306138ab919061497a565b60f81b8183815181106138c1576138c0614cb9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856138fd91906149d0565b945061387b565b8093505050505b919050565b61391d8383836001613922565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561398f576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414156139ca576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6139d760008683876133fd565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015613ba15750613ba08773ffffffffffffffffffffffffffffffffffffffff16612ad5565b5b15613c67575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4613c1660008884806001019550886135bd565b613c4c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80821415613ba7578260005414613c6257600080fd5b613cd3565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415613c68575b816000819055505050613ce96000868387613403565b5050505050565b828054613cfc90614b4f565b90600052602060002090601f016020900481019282613d1e5760008555613d65565b82601f10613d3757805160ff1916838001178555613d65565b82800160010185558215613d65579182015b82811115613d64578251825591602001919060010190613d49565b5b509050613d729190613db9565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115613dd2576000816000905550600101613dba565b5090565b6000613de9613de484614889565b614864565b90508083825260208201905082856020860282011115613e0c57613e0b614d1c565b5b60005b85811015613e3c5781613e228882613eca565b845260208401935060208301925050600181019050613e0f565b5050509392505050565b6000613e59613e54846148b5565b614864565b905082815260208101848484011115613e7557613e74614d21565b5b613e80848285614b0d565b509392505050565b6000613e9b613e96846148e6565b614864565b905082815260208101848484011115613eb757613eb6614d21565b5b613ec2848285614b0d565b509392505050565b600081359050613ed9816150cf565b92915050565b600082601f830112613ef457613ef3614d17565b5b8135613f04848260208601613dd6565b91505092915050565b600081359050613f1c816150e6565b92915050565b600081359050613f31816150fd565b92915050565b600081519050613f46816150fd565b92915050565b600082601f830112613f6157613f60614d17565b5b8135613f71848260208601613e46565b91505092915050565b600082601f830112613f8f57613f8e614d17565b5b8135613f9f848260208601613e88565b91505092915050565b600081359050613fb781615114565b92915050565b600060208284031215613fd357613fd2614d2b565b5b6000613fe184828501613eca565b91505092915050565b6000806040838503121561400157614000614d2b565b5b600061400f85828601613eca565b925050602061402085828601613eca565b9150509250929050565b60008060006060848603121561404357614042614d2b565b5b600061405186828701613eca565b935050602061406286828701613eca565b925050604061407386828701613fa8565b9150509250925092565b6000806000806080858703121561409757614096614d2b565b5b60006140a587828801613eca565b94505060206140b687828801613eca565b93505060406140c787828801613fa8565b925050606085013567ffffffffffffffff8111156140e8576140e7614d26565b5b6140f487828801613f4c565b91505092959194509250565b6000806040838503121561411757614116614d2b565b5b600061412585828601613eca565b925050602061413685828601613f0d565b9150509250929050565b6000806040838503121561415757614156614d2b565b5b600061416585828601613eca565b925050602061417685828601613fa8565b9150509250929050565b60006020828403121561419657614195614d2b565b5b600082013567ffffffffffffffff8111156141b4576141b3614d26565b5b6141c084828501613edf565b91505092915050565b6000602082840312156141df576141de614d2b565b5b60006141ed84828501613f0d565b91505092915050565b60006020828403121561420c5761420b614d2b565b5b600061421a84828501613f22565b91505092915050565b60006020828403121561423957614238614d2b565b5b600061424784828501613f37565b91505092915050565b60006020828403121561426657614265614d2b565b5b600082013567ffffffffffffffff81111561428457614283614d26565b5b61429084828501613f7a565b91505092915050565b6000602082840312156142af576142ae614d2b565b5b60006142bd84828501613fa8565b91505092915050565b6142cf81614a8f565b82525050565b6142de81614aa1565b82525050565b6142ed81614aad565b82525050565b60006142fe8261492c565b6143088185614942565b9350614318818560208601614b1c565b61432181614d30565b840191505092915050565b600061433782614937565b614341818561495e565b9350614351818560208601614b1c565b61435a81614d30565b840191505092915050565b600061437082614937565b61437a818561496f565b935061438a818560208601614b1c565b80840191505092915050565b600081546143a381614b4f565b6143ad818661496f565b945060018216600081146143c857600181146143d95761440c565b60ff1983168652818601935061440c565b6143e285614917565b60005b83811015614404578154818901526001820191506020810190506143e5565b838801955050505b50505092915050565b600061442260338361495e565b915061442d82614d41565b604082019050919050565b600061444560268361495e565b915061445082614d90565b604082019050919050565b6000614468603f8361495e565b915061447382614ddf565b604082019050919050565b600061448b60208361495e565b915061449682614e2e565b602082019050919050565b60006144ae601c8361495e565b91506144b982614e57565b602082019050919050565b60006144d1602f8361495e565b91506144dc82614e80565b604082019050919050565b60006144f460458361495e565b91506144ff82614ecf565b606082019050919050565b6000614517601b8361495e565b915061452282614f44565b602082019050919050565b600061453a600083614953565b915061454582614f6d565b600082019050919050565b600061455d606d8361495e565b915061456882614f70565b608082019050919050565b600061458060478361495e565b915061458b8261500b565b606082019050919050565b60006145a360238361495e565b91506145ae82615080565b604082019050919050565b6145c281614b03565b82525050565b60006145d48286614365565b91506145e08285614365565b91506145ec8284614396565b9150819050949350505050565b60006146048261452d565b9150819050919050565b600060208201905061462360008301846142c6565b92915050565b600060808201905061463e60008301876142c6565b61464b60208301866142c6565b61465860408301856145b9565b818103606083015261466a81846142f3565b905095945050505050565b600060208201905061468a60008301846142d5565b92915050565b600060208201905081810360008301526146aa818461432c565b905092915050565b600060208201905081810360008301526146cb81614415565b9050919050565b600060208201905081810360008301526146eb81614438565b9050919050565b6000602082019050818103600083015261470b8161445b565b9050919050565b6000602082019050818103600083015261472b8161447e565b9050919050565b6000602082019050818103600083015261474b816144a1565b9050919050565b6000602082019050818103600083015261476b816144c4565b9050919050565b6000602082019050818103600083015261478b816144e7565b9050919050565b600060208201905081810360008301526147ab8161450a565b9050919050565b600060208201905081810360008301526147cb81614550565b9050919050565b600060208201905081810360008301526147eb81614573565b9050919050565b6000602082019050818103600083015261480b81614596565b9050919050565b600060208201905061482760008301846145b9565b92915050565b600060608201905061484260008301866145b9565b61484f60208301856145b9565b61485c60408301846142e4565b949350505050565b600061486e61487f565b905061487a8282614b81565b919050565b6000604051905090565b600067ffffffffffffffff8211156148a4576148a3614ce8565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156148d0576148cf614ce8565b5b6148d982614d30565b9050602081019050919050565b600067ffffffffffffffff82111561490157614900614ce8565b5b61490a82614d30565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061498582614b03565b915061499083614b03565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149c5576149c4614c2c565b5b828201905092915050565b60006149db82614b03565b91506149e683614b03565b9250826149f6576149f5614c5b565b5b828204905092915050565b6000614a0c82614b03565b9150614a1783614b03565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a5057614a4f614c2c565b5b828202905092915050565b6000614a6682614b03565b9150614a7183614b03565b925082821015614a8457614a83614c2c565b5b828203905092915050565b6000614a9a82614ae3565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614b3a578082015181840152602081019050614b1f565b83811115614b49576000848401525b50505050565b60006002820490506001821680614b6757607f821691505b60208210811415614b7b57614b7a614c8a565b5b50919050565b614b8a82614d30565b810181811067ffffffffffffffff82111715614ba957614ba8614ce8565b5b80604052505050565b6000614bbd82614b03565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614bf057614bef614c2c565b5b600182019050919050565b6000614c0682614b03565b9150614c1183614b03565b925082614c2157614c20614c5b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f496e636f727265637420616d6f756e7420656e74657265642c2074727920696e60008201527f6372656173696e67207468652076616c75652e00000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f57656c6c2c207768617427732074686520706f696e7420696e206d696e74696e60008201527f67206e6f7468696e673f203b2920506c656173652074727920616761696e2e00602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f596f75206d757374207061792074686520726f79616c74792066656500000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4d6178696d756d20737570706c7920726561636865642120596f75276c6c206860008201527f61766520746f206275792066726f6d20746865207365636f6e64617279206d6160208201527f726b657421000000000000000000000000000000000000000000000000000000604082015250565b7f4d696e74696e672069732063757272656e746c79207061757365640000000000600082015250565b50565b7f536f7272792c20796f75276c6c206861766520746f207761697420756e74696c60008201527f6c20746865206e6578742064726f702069732072656c656173656421204a6f6960208201527f6e207468652074656c656772616d20746f2066696e64206f7574202d20742e6d60408201527f652f76656c6f7265785f6e657400000000000000000000000000000000000000606082015250565b7f596f752063616e2774206d696e742074686174206d616e79204e46547320776960008201527f746820746869732077616c6c65742120436865636b20746865206c696d69742060208201527f706c656173652e00000000000000000000000000000000000000000000000000604082015250565b7f596f752063616e206f6e6c79206d696e74203520706572207472616e7361637460008201527f696f6e0000000000000000000000000000000000000000000000000000000000602082015250565b6150d881614a8f565b81146150e357600080fd5b50565b6150ef81614aa1565b81146150fa57600080fd5b50565b61510681614ab7565b811461511157600080fd5b50565b61511d81614b03565b811461512857600080fd5b5056fea2646970667358221220397d72f8483b148c18833d7c6c5bb4ec4b974a152904371982c9e4e6cf87f98264736f6c63430008070033000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001456656c6f726578204d656d6265727320436c75620000000000000000000000000000000000000000000000000000000000000000000000000000000000000007564558434c554200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f506c616365686f6c64657220756e74696c2064726f7020636f6d706c65746500

Deployed Bytecode

0x60806040526004361061027d5760003560e01c80637f6497831161014f578063b7386247116100c1578063d5abeb011161007a578063d5abeb011461093d578063da3ef23f14610968578063e7b99ec714610991578063e985e9c5146109bc578063f2fde38b146109f9578063f7e78e9d14610a225761027d565b8063b73862471461083c578063b88d4fde14610865578063b8997a9714610881578063b8d3197b146108ac578063c6682862146108d5578063c87b56dd146109005761027d565b8063a0712d6811610113578063a0712d6814610739578063a22cb46514610755578063a75ee1ff1461077e578063b228d925146107bd578063b443ba0c146107e8578063b4d95a93146108135761027d565b80637f649783146106545780638ab1d6811461067d5780638da5cb5b146106a657806395d89b41146106d1578063989763ef146106fc5761027d565b8063359803cd116101f35780635c975abb116101ac5780635c975abb146105445780636352211e1461056f5780636a2dae07146105ac5780636c0360eb146105d557806370a0823114610600578063715018a61461063d5761027d565b8063359803cd1461047a5780633ccfd60b146104a357806342842e0e146104ad57806344a0d68a146104c9578063453b1442146104f257806355f804b31461051b5761027d565b806313faede61161024557806313faede61461037957806315e3902f146103a457806318160ddd146103cd57806323b872dd146103f85780633036a39f1461042157806330e0789e1461045e5761027d565b806301ffc9a71461028257806306fdde03146102bf578063081812fc146102ea578063095ea7b3146103275780630f2d6ddf14610350575b600080fd5b34801561028e57600080fd5b506102a960048036038101906102a491906141f6565b610a5f565b6040516102b69190614675565b60405180910390f35b3480156102cb57600080fd5b506102d4610b41565b6040516102e19190614690565b60405180910390f35b3480156102f657600080fd5b50610311600480360381019061030c9190614299565b610bd3565b60405161031e919061460e565b60405180910390f35b34801561033357600080fd5b5061034e60048036038101906103499190614140565b610c4f565b005b34801561035c57600080fd5b5061037760048036038101906103729190614299565b610d5a565b005b34801561038557600080fd5b5061038e610de0565b60405161039b9190614812565b60405180910390f35b3480156103b057600080fd5b506103cb60048036038101906103c69190614299565b610de6565b005b3480156103d957600080fd5b506103e2610e6c565b6040516103ef9190614812565b60405180910390f35b34801561040457600080fd5b5061041f600480360381019061041a919061402a565b610e83565b005b34801561042d57600080fd5b5061044860048036038101906104439190613fbd565b610e93565b6040516104559190614675565b60405180910390f35b6104786004803603810190610473919061402a565b610eb3565b005b34801561048657600080fd5b506104a1600480360381019061049c91906141c9565b61148b565b005b6104ab611524565b005b6104c760048036038101906104c2919061402a565b611619565b005b3480156104d557600080fd5b506104f060048036038101906104eb9190614299565b611715565b005b3480156104fe57600080fd5b5061051960048036038101906105149190613fbd565b61179b565b005b34801561052757600080fd5b50610542600480360381019061053d9190614250565b611872565b005b34801561055057600080fd5b50610559611908565b6040516105669190614675565b60405180910390f35b34801561057b57600080fd5b5061059660048036038101906105919190614299565b61191b565b6040516105a3919061460e565b60405180910390f35b3480156105b857600080fd5b506105d360048036038101906105ce9190614299565b611931565b005b3480156105e157600080fd5b506105ea6119b7565b6040516105f79190614690565b60405180910390f35b34801561060c57600080fd5b5061062760048036038101906106229190613fbd565b611a45565b6040516106349190614812565b60405180910390f35b34801561064957600080fd5b50610652611b15565b005b34801561066057600080fd5b5061067b60048036038101906106769190614180565b611b9d565b005b34801561068957600080fd5b506106a4600480360381019061069f9190613fbd565b611cae565b005b3480156106b257600080fd5b506106bb611d85565b6040516106c8919061460e565b60405180910390f35b3480156106dd57600080fd5b506106e6611daf565b6040516106f39190614690565b60405180910390f35b34801561070857600080fd5b50610723600480360381019061071e9190613fbd565b611e41565b6040516107309190614675565b60405180910390f35b610753600480360381019061074e9190614299565b611e61565b005b34801561076157600080fd5b5061077c60048036038101906107779190614100565b61222b565b005b34801561078a57600080fd5b506107a560048036038101906107a09190614299565b6123a3565b6040516107b49392919061482d565b60405180910390f35b3480156107c957600080fd5b506107d26123dd565b6040516107df9190614812565b60405180910390f35b3480156107f457600080fd5b506107fd6123e3565b60405161080a9190614812565b60405180910390f35b34801561081f57600080fd5b5061083a60048036038101906108359190613fbd565b6123e9565b005b34801561084857600080fd5b50610863600480360381019061085e9190613fbd565b6124c0565b005b61087f600480360381019061087a919061407d565b612597565b005b34801561088d57600080fd5b50610896612638565b6040516108a39190614812565b60405180910390f35b3480156108b857600080fd5b506108d360048036038101906108ce9190614180565b61263e565b005b3480156108e157600080fd5b506108ea61274f565b6040516108f79190614690565b60405180910390f35b34801561090c57600080fd5b5061092760048036038101906109229190614299565b6127dd565b6040516109349190614690565b60405180910390f35b34801561094957600080fd5b50610952612887565b60405161095f9190614812565b60405180910390f35b34801561097457600080fd5b5061098f600480360381019061098a9190614250565b61288d565b005b34801561099d57600080fd5b506109a6612923565b6040516109b39190614812565b60405180910390f35b3480156109c857600080fd5b506109e360048036038101906109de9190613fea565b612929565b6040516109f09190614675565b60405180910390f35b348015610a0557600080fd5b50610a206004803603810190610a1b9190613fbd565b6129bd565b005b348015610a2e57600080fd5b50610a496004803603810190610a449190613fbd565b612ab5565b604051610a569190614675565b60405180910390f35b60007f80ac58cd000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480610b2a57507f5b5e139f000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b80610b3a5750610b3982612af8565b5b9050919050565b606060028054610b5090614b4f565b80601f0160208091040260200160405190810160405280929190818152602001828054610b7c90614b4f565b8015610bc95780601f10610b9e57610100808354040283529160200191610bc9565b820191906000526020600020905b815481529060010190602001808311610bac57829003601f168201915b5050505050905090565b6000610bde82612b62565b610c14576040517fcf4700e400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6006600083815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b6000610c5a8261191b565b90508073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415610cc2576040517f943f7b8c00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff16610ce1612bb0565b73ffffffffffffffffffffffffffffffffffffffff1614158015610d135750610d1181610d0c612bb0565b612929565b155b15610d4a576040517fcfb3b94200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610d55838383612bb8565b505050565b610d62612bb0565b73ffffffffffffffffffffffffffffffffffffffff16610d80611d85565b73ffffffffffffffffffffffffffffffffffffffff1614610dd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dcd90614712565b60405180910390fd5b80600f8190555050565b600b5481565b610dee612bb0565b73ffffffffffffffffffffffffffffffffffffffff16610e0c611d85565b73ffffffffffffffffffffffffffffffffffffffff1614610e62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e5990614712565b60405180910390fd5b80600c8190555050565b6000610e76612c6a565b6001546000540303905090565b610e8e838383612c6f565b505050565b60136020528060005260406000206000915054906101000a900460ff1681565b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514610f9f57601154341015610f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f4790614732565b60405180910390fd5b610f58611d85565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610f9d573d6000803e3d6000fd5b505b6000610faa8261316e565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16610fd1612bb0565b73ffffffffffffffffffffffffffffffffffffffff16148061100457506110038260000151610ffe612bb0565b612929565b5b806110495750611012612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661103184610bd3565b73ffffffffffffffffffffffffffffffffffffffff16145b905080611082576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff16146110eb576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415611152576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61115f85858560016133fd565b61116a600084610c4f565b6001601560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001601560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561141b5760005481101561141a5782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46114848585856001613403565b5050505050565b611493612bb0565b73ffffffffffffffffffffffffffffffffffffffff166114b1611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611507576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114fe90614712565b60405180910390fd5b80601060006101000a81548160ff02191690831515021790555050565b61152c612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661154a611d85565b73ffffffffffffffffffffffffffffffffffffffff16146115a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159790614712565b60405180910390fd5b60003373ffffffffffffffffffffffffffffffffffffffff16476040516115c6906145f9565b60006040518083038185875af1925050503d8060008114611603576040519150601f19603f3d011682016040523d82523d6000602084013e611608565b606091505b505090508061161657600080fd5b50565b60011515601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514611705576011543410156116b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ad90614732565b60405180910390fd5b6116be611d85565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611703573d6000803e3d6000fd5b505b611710838383610eb3565b505050565b61171d612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661173b611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611791576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161178890614712565b60405180910390fd5b80600b8190555050565b6117a3612bb0565b73ffffffffffffffffffffffffffffffffffffffff166117c1611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611817576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161180e90614712565b60405180910390fd5b6001601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b61187a612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611898611d85565b73ffffffffffffffffffffffffffffffffffffffff16146118ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e590614712565b60405180910390fd5b8060099080519060200190611904929190613cf0565b5050565b601060009054906101000a900460ff1681565b60006119268261316e565b600001519050919050565b611939612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611957611d85565b73ffffffffffffffffffffffffffffffffffffffff16146119ad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119a490614712565b60405180910390fd5b80600e8190555050565b600980546119c490614b4f565b80601f01602080910402602001604051908101604052809291908181526020018280546119f090614b4f565b8015611a3d5780601f10611a1257610100808354040283529160200191611a3d565b820191906000526020600020905b815481529060010190602001808311611a2057829003601f168201915b505050505081565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611aad576040517f8f4eb60400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160009054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b611b1d612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611b3b611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611b91576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b8890614712565b60405180910390fd5b611b9b6000613409565b565b611ba5612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611bc3611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611c19576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c1090614712565b60405180910390fd5b60005b8151811015611caa57600160146000848481518110611c3e57611c3d614cb9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080611ca290614bb2565b915050611c1c565b5050565b611cb6612bb0565b73ffffffffffffffffffffffffffffffffffffffff16611cd4611d85565b73ffffffffffffffffffffffffffffffffffffffff1614611d2a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d2190614712565b60405180910390fd5b6000601460008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b606060038054611dbe90614b4f565b80601f0160208091040260200160405190810160405280929190818152602001828054611dea90614b4f565b8015611e375780601f10611e0c57610100808354040283529160200191611e37565b820191906000526020600020905b815481529060010190602001808311611e1a57829003601f168201915b5050505050905090565b60126020528060005260406000206000915054906101000a900460ff1681565b6000611e6b610e6c565b905060008211611eb0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ea7906146f2565b60405180910390fd5b600d548282611ebf919061497a565b1115611f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef790614772565b60405180910390fd5b600f548282611f0f919061497a565b1115611f50576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f47906147b2565b60405180910390fd5b611f58611d85565b73ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146121cf57600e54821115611fcf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fc6906147f2565b60405180910390fd5b601060009054906101000a900460ff161561201f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161201690614792565b60405180910390fd5b600e548261202c336134cf565b612036919061497a565b1115612077576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161206e906147d2565b60405180910390fd5b60011515601360003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515146121ce5760011515601460003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151461217c5781600b546121359190614a01565b341015612177576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161216e906146b2565b60405180910390fd5b6121cd565b81600c5461218a9190614a01565b3410156121cc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c3906146b2565b60405180910390fd5b5b5b5b6121d9338361359f565b6121e1611d85565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015612226573d6000803e3d6000fd5b505050565b612233612bb0565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415612298576040517fb06307db00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80600760006122a5612bb0565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff16612352612bb0565b73ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c31836040516123979190614675565b60405180910390a35050565b601681815481106123b357600080fd5b90600052602060002090600302016000915090508060000154908060010154908060020154905083565b600e5481565b600f5481565b6123f1612bb0565b73ffffffffffffffffffffffffffffffffffffffff1661240f611d85565b73ffffffffffffffffffffffffffffffffffffffff1614612465576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245c90614712565b60405180910390fd5b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b6124c8612bb0565b73ffffffffffffffffffffffffffffffffffffffff166124e6611d85565b73ffffffffffffffffffffffffffffffffffffffff161461253c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253390614712565b60405180910390fd5b6000601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b678ac7230489e800003410156125ac57600080fd5b678ac7230489e800003410612632576125c6848484610eb3565b6125e58373ffffffffffffffffffffffffffffffffffffffff16612ad5565b80156125fa57506125f8848484846135bd565b155b15612631576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5b50505050565b60115481565b612646612bb0565b73ffffffffffffffffffffffffffffffffffffffff16612664611d85565b73ffffffffffffffffffffffffffffffffffffffff16146126ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126b190614712565b60405180910390fd5b60005b815181101561274b576001601260008484815181106126df576126de614cb9565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550808061274390614bb2565b9150506126bd565b5050565b600a805461275c90614b4f565b80601f016020809104026020016040519081016040528092919081815260200182805461278890614b4f565b80156127d55780601f106127aa576101008083540402835291602001916127d5565b820191906000526020600020905b8154815290600101906020018083116127b857829003601f168201915b505050505081565b60606127e882612b62565b612827576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161281e90614752565b60405180910390fd5b600061283161371d565b90506000815111612851576040518060200160405280600081525061287f565b8061285b846137af565b600a60405160200161286f939291906145c8565b6040516020818303038152906040525b915050919050565b600d5481565b612895612bb0565b73ffffffffffffffffffffffffffffffffffffffff166128b3611d85565b73ffffffffffffffffffffffffffffffffffffffff1614612909576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290090614712565b60405180910390fd5b80600a908051906020019061291f929190613cf0565b5050565b600c5481565b6000600760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16905092915050565b6129c5612bb0565b73ffffffffffffffffffffffffffffffffffffffff166129e3611d85565b73ffffffffffffffffffffffffffffffffffffffff1614612a39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a3090614712565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612aa9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa0906146d2565b60405180910390fd5b612ab281613409565b50565b60146020528060005260406000206000915054906101000a900460ff1681565b6000808273ffffffffffffffffffffffffffffffffffffffff163b119050919050565b60007f01ffc9a7000000000000000000000000000000000000000000000000000000007bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916149050919050565b600081612b6d612c6a565b11158015612b7c575060005482105b8015612ba9575060046000838152602001908152602001600020600001601c9054906101000a900460ff16155b9050919050565b600033905090565b826006600084815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b600090565b6000341015612c7d57600080fd5b6000612c888261316e565b90506000816000015173ffffffffffffffffffffffffffffffffffffffff16612caf612bb0565b73ffffffffffffffffffffffffffffffffffffffff161480612ce25750612ce18260000151612cdc612bb0565b612929565b5b80612d275750612cf0612bb0565b73ffffffffffffffffffffffffffffffffffffffff16612d0f84610bd3565b73ffffffffffffffffffffffffffffffffffffffff16145b905080612d60576040517f59c896be00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8473ffffffffffffffffffffffffffffffffffffffff16826000015173ffffffffffffffffffffffffffffffffffffffff1614612dc9576040517fa114810000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415612e30576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b612e3d85858560016133fd565b612e4d6000848460000151612bb8565b6001600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160392506101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506001600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550836004600085815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600085815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506000600184019050600073ffffffffffffffffffffffffffffffffffffffff166004600083815260200190815260200160002060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614156130fe576000548110156130fd5782600001516004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555082602001516004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055505b5b50828473ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a46131678585856001613403565b5050505050565b613176613d76565b600082905080613184612c6a565b11158015613193575060005481105b156133c6576000600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff161515151581525050905080604001516133c457600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146132a85780925050506133f8565b5b6001156133c357818060019003925050600460008381526020019081526020016000206040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016000820160149054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff16815260200160008201601c9054906101000a900460ff1615151515815250509050600073ffffffffffffffffffffffffffffffffffffffff16816000015173ffffffffffffffffffffffffffffffffffffffff16146133be5780925050506133f8565b6132a9565b5b505b6040517fdf2d9b4200000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b919050565b50505050565b50505050565b6000600860009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600860006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415613537576040517f35ebb31900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160089054906101000a900467ffffffffffffffff1667ffffffffffffffff169050919050565b6135b9828260405180602001604052806000815250613910565b5050565b60008373ffffffffffffffffffffffffffffffffffffffff1663150b7a026135e3612bb0565b8786866040518563ffffffff1660e01b81526004016136059493929190614629565b602060405180830381600087803b15801561361f57600080fd5b505af192505050801561365057506040513d601f19601f8201168201806040525081019061364d9190614223565b60015b6136ca573d8060008114613680576040519150601f19603f3d011682016040523d82523d6000602084013e613685565b606091505b506000815114156136c2576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805181602001fd5b63150b7a0260e01b7bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916817bffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614915050949350505050565b60606009805461372c90614b4f565b80601f016020809104026020016040519081016040528092919081815260200182805461375890614b4f565b80156137a55780601f1061377a576101008083540402835291602001916137a5565b820191906000526020600020905b81548152906001019060200180831161378857829003601f168201915b5050505050905090565b606060008214156137f7576040518060400160405280600181526020017f3000000000000000000000000000000000000000000000000000000000000000815250905061390b565b600082905060005b6000821461382957808061381290614bb2565b915050600a8261382291906149d0565b91506137ff565b60008167ffffffffffffffff81111561384557613844614ce8565b5b6040519080825280601f01601f1916602001820160405280156138775781602001600182028036833780820191505090505b5090505b60008514613904576001826138909190614a5b565b9150600a8561389f9190614bfb565b60306138ab919061497a565b60f81b8183815181106138c1576138c0614cb9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600a856138fd91906149d0565b945061387b565b8093505050505b919050565b61391d8383836001613922565b505050565b600080549050600073ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff16141561398f576040517f2e07630000000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60008414156139ca576040517fb562e8dd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6139d760008683876133fd565b83600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160008282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555083600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060000160088282829054906101000a900467ffffffffffffffff160192506101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550846004600083815260200190815260200160002060000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550426004600083815260200190815260200160002060000160146101000a81548167ffffffffffffffff021916908367ffffffffffffffff160217905550600081905060008582019050838015613ba15750613ba08773ffffffffffffffffffffffffffffffffffffffff16612ad5565b5b15613c67575b818773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4613c1660008884806001019550886135bd565b613c4c576040517fd1a57ed600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b80821415613ba7578260005414613c6257600080fd5b613cd3565b5b818060010192508773ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a480821415613c68575b816000819055505050613ce96000868387613403565b5050505050565b828054613cfc90614b4f565b90600052602060002090601f016020900481019282613d1e5760008555613d65565b82601f10613d3757805160ff1916838001178555613d65565b82800160010185558215613d65579182015b82811115613d64578251825591602001919060010190613d49565b5b509050613d729190613db9565b5090565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff168152602001600067ffffffffffffffff1681526020016000151581525090565b5b80821115613dd2576000816000905550600101613dba565b5090565b6000613de9613de484614889565b614864565b90508083825260208201905082856020860282011115613e0c57613e0b614d1c565b5b60005b85811015613e3c5781613e228882613eca565b845260208401935060208301925050600181019050613e0f565b5050509392505050565b6000613e59613e54846148b5565b614864565b905082815260208101848484011115613e7557613e74614d21565b5b613e80848285614b0d565b509392505050565b6000613e9b613e96846148e6565b614864565b905082815260208101848484011115613eb757613eb6614d21565b5b613ec2848285614b0d565b509392505050565b600081359050613ed9816150cf565b92915050565b600082601f830112613ef457613ef3614d17565b5b8135613f04848260208601613dd6565b91505092915050565b600081359050613f1c816150e6565b92915050565b600081359050613f31816150fd565b92915050565b600081519050613f46816150fd565b92915050565b600082601f830112613f6157613f60614d17565b5b8135613f71848260208601613e46565b91505092915050565b600082601f830112613f8f57613f8e614d17565b5b8135613f9f848260208601613e88565b91505092915050565b600081359050613fb781615114565b92915050565b600060208284031215613fd357613fd2614d2b565b5b6000613fe184828501613eca565b91505092915050565b6000806040838503121561400157614000614d2b565b5b600061400f85828601613eca565b925050602061402085828601613eca565b9150509250929050565b60008060006060848603121561404357614042614d2b565b5b600061405186828701613eca565b935050602061406286828701613eca565b925050604061407386828701613fa8565b9150509250925092565b6000806000806080858703121561409757614096614d2b565b5b60006140a587828801613eca565b94505060206140b687828801613eca565b93505060406140c787828801613fa8565b925050606085013567ffffffffffffffff8111156140e8576140e7614d26565b5b6140f487828801613f4c565b91505092959194509250565b6000806040838503121561411757614116614d2b565b5b600061412585828601613eca565b925050602061413685828601613f0d565b9150509250929050565b6000806040838503121561415757614156614d2b565b5b600061416585828601613eca565b925050602061417685828601613fa8565b9150509250929050565b60006020828403121561419657614195614d2b565b5b600082013567ffffffffffffffff8111156141b4576141b3614d26565b5b6141c084828501613edf565b91505092915050565b6000602082840312156141df576141de614d2b565b5b60006141ed84828501613f0d565b91505092915050565b60006020828403121561420c5761420b614d2b565b5b600061421a84828501613f22565b91505092915050565b60006020828403121561423957614238614d2b565b5b600061424784828501613f37565b91505092915050565b60006020828403121561426657614265614d2b565b5b600082013567ffffffffffffffff81111561428457614283614d26565b5b61429084828501613f7a565b91505092915050565b6000602082840312156142af576142ae614d2b565b5b60006142bd84828501613fa8565b91505092915050565b6142cf81614a8f565b82525050565b6142de81614aa1565b82525050565b6142ed81614aad565b82525050565b60006142fe8261492c565b6143088185614942565b9350614318818560208601614b1c565b61432181614d30565b840191505092915050565b600061433782614937565b614341818561495e565b9350614351818560208601614b1c565b61435a81614d30565b840191505092915050565b600061437082614937565b61437a818561496f565b935061438a818560208601614b1c565b80840191505092915050565b600081546143a381614b4f565b6143ad818661496f565b945060018216600081146143c857600181146143d95761440c565b60ff1983168652818601935061440c565b6143e285614917565b60005b83811015614404578154818901526001820191506020810190506143e5565b838801955050505b50505092915050565b600061442260338361495e565b915061442d82614d41565b604082019050919050565b600061444560268361495e565b915061445082614d90565b604082019050919050565b6000614468603f8361495e565b915061447382614ddf565b604082019050919050565b600061448b60208361495e565b915061449682614e2e565b602082019050919050565b60006144ae601c8361495e565b91506144b982614e57565b602082019050919050565b60006144d1602f8361495e565b91506144dc82614e80565b604082019050919050565b60006144f460458361495e565b91506144ff82614ecf565b606082019050919050565b6000614517601b8361495e565b915061452282614f44565b602082019050919050565b600061453a600083614953565b915061454582614f6d565b600082019050919050565b600061455d606d8361495e565b915061456882614f70565b608082019050919050565b600061458060478361495e565b915061458b8261500b565b606082019050919050565b60006145a360238361495e565b91506145ae82615080565b604082019050919050565b6145c281614b03565b82525050565b60006145d48286614365565b91506145e08285614365565b91506145ec8284614396565b9150819050949350505050565b60006146048261452d565b9150819050919050565b600060208201905061462360008301846142c6565b92915050565b600060808201905061463e60008301876142c6565b61464b60208301866142c6565b61465860408301856145b9565b818103606083015261466a81846142f3565b905095945050505050565b600060208201905061468a60008301846142d5565b92915050565b600060208201905081810360008301526146aa818461432c565b905092915050565b600060208201905081810360008301526146cb81614415565b9050919050565b600060208201905081810360008301526146eb81614438565b9050919050565b6000602082019050818103600083015261470b8161445b565b9050919050565b6000602082019050818103600083015261472b8161447e565b9050919050565b6000602082019050818103600083015261474b816144a1565b9050919050565b6000602082019050818103600083015261476b816144c4565b9050919050565b6000602082019050818103600083015261478b816144e7565b9050919050565b600060208201905081810360008301526147ab8161450a565b9050919050565b600060208201905081810360008301526147cb81614550565b9050919050565b600060208201905081810360008301526147eb81614573565b9050919050565b6000602082019050818103600083015261480b81614596565b9050919050565b600060208201905061482760008301846145b9565b92915050565b600060608201905061484260008301866145b9565b61484f60208301856145b9565b61485c60408301846142e4565b949350505050565b600061486e61487f565b905061487a8282614b81565b919050565b6000604051905090565b600067ffffffffffffffff8211156148a4576148a3614ce8565b5b602082029050602081019050919050565b600067ffffffffffffffff8211156148d0576148cf614ce8565b5b6148d982614d30565b9050602081019050919050565b600067ffffffffffffffff82111561490157614900614ce8565b5b61490a82614d30565b9050602081019050919050565b60008190508160005260206000209050919050565b600081519050919050565b600081519050919050565b600082825260208201905092915050565b600081905092915050565b600082825260208201905092915050565b600081905092915050565b600061498582614b03565b915061499083614b03565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156149c5576149c4614c2c565b5b828201905092915050565b60006149db82614b03565b91506149e683614b03565b9250826149f6576149f5614c5b565b5b828204905092915050565b6000614a0c82614b03565b9150614a1783614b03565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0483118215151615614a5057614a4f614c2c565b5b828202905092915050565b6000614a6682614b03565b9150614a7183614b03565b925082821015614a8457614a83614c2c565b5b828203905092915050565b6000614a9a82614ae3565b9050919050565b60008115159050919050565b6000819050919050565b60007fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b82818337600083830152505050565b60005b83811015614b3a578082015181840152602081019050614b1f565b83811115614b49576000848401525b50505050565b60006002820490506001821680614b6757607f821691505b60208210811415614b7b57614b7a614c8a565b5b50919050565b614b8a82614d30565b810181811067ffffffffffffffff82111715614ba957614ba8614ce8565b5b80604052505050565b6000614bbd82614b03565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff821415614bf057614bef614c2c565b5b600182019050919050565b6000614c0682614b03565b9150614c1183614b03565b925082614c2157614c20614c5b565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f496e636f727265637420616d6f756e7420656e74657265642c2074727920696e60008201527f6372656173696e67207468652076616c75652e00000000000000000000000000602082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f57656c6c2c207768617427732074686520706f696e7420696e206d696e74696e60008201527f67206e6f7468696e673f203b2920506c656173652074727920616761696e2e00602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f596f75206d757374207061792074686520726f79616c74792066656500000000600082015250565b7f4552433732314d657461646174613a2055524920717565727920666f72206e6f60008201527f6e6578697374656e7420746f6b656e0000000000000000000000000000000000602082015250565b7f4d6178696d756d20737570706c7920726561636865642120596f75276c6c206860008201527f61766520746f206275792066726f6d20746865207365636f6e64617279206d6160208201527f726b657421000000000000000000000000000000000000000000000000000000604082015250565b7f4d696e74696e672069732063757272656e746c79207061757365640000000000600082015250565b50565b7f536f7272792c20796f75276c6c206861766520746f207761697420756e74696c60008201527f6c20746865206e6578742064726f702069732072656c656173656421204a6f6960208201527f6e207468652074656c656772616d20746f2066696e64206f7574202d20742e6d60408201527f652f76656c6f7265785f6e657400000000000000000000000000000000000000606082015250565b7f596f752063616e2774206d696e742074686174206d616e79204e46547320776960008201527f746820746869732077616c6c65742120436865636b20746865206c696d69742060208201527f706c656173652e00000000000000000000000000000000000000000000000000604082015250565b7f596f752063616e206f6e6c79206d696e74203520706572207472616e7361637460008201527f696f6e0000000000000000000000000000000000000000000000000000000000602082015250565b6150d881614a8f565b81146150e357600080fd5b50565b6150ef81614aa1565b81146150fa57600080fd5b50565b61510681614ab7565b811461511157600080fd5b50565b61511d81614b03565b811461512857600080fd5b5056fea2646970667358221220397d72f8483b148c18833d7c6c5bb4ec4b974a152904371982c9e4e6cf87f98264736f6c63430008070033

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

000000000000000000000000000000000000000000000000000000000000006000000000000000000000000000000000000000000000000000000000000000a000000000000000000000000000000000000000000000000000000000000000e0000000000000000000000000000000000000000000000000000000000000001456656c6f726578204d656d6265727320436c75620000000000000000000000000000000000000000000000000000000000000000000000000000000000000007564558434c554200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001f506c616365686f6c64657220756e74696c2064726f7020636f6d706c65746500

-----Decoded View---------------
Arg [0] : _name (string): Velorex Members Club
Arg [1] : _symbol (string): VEXCLUB
Arg [2] : _initBaseURI (string): Placeholder until drop complete

-----Encoded View---------------
9 Constructor Arguments found :
Arg [0] : 0000000000000000000000000000000000000000000000000000000000000060
Arg [1] : 00000000000000000000000000000000000000000000000000000000000000a0
Arg [2] : 00000000000000000000000000000000000000000000000000000000000000e0
Arg [3] : 0000000000000000000000000000000000000000000000000000000000000014
Arg [4] : 56656c6f726578204d656d6265727320436c7562000000000000000000000000
Arg [5] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [6] : 564558434c554200000000000000000000000000000000000000000000000000
Arg [7] : 000000000000000000000000000000000000000000000000000000000000001f
Arg [8] : 506c616365686f6c64657220756e74696c2064726f7020636f6d706c65746500


Deployed Bytecode Sourcemap

27099:7344:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;16294:305;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18584:100;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19611:204;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;19232:371;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33024:102;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27362:34;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32785:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;15964:163;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20282:180;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27708:43;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;30423:1613;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33362:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;34250:188;;;:::i;:::-;;30044:375;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;32699:82;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33448:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33130:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27572:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18452:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32890:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27290:21;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16607:206;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7214:103;;;;;;;;;;;;;:::i;:::-;;33654:185;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33843:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6991:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18692:104;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27654:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;28697:1339;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;19823:279;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27874:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;;;:::i;:::-;;;;;;;;27493:35;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27535:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;34141:105;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;33550:100;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;20660:466;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27604:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33954:183;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27318:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;32040:546;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;27455:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;33234:124;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27403:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;20110:164;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7325:201;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;27758:48;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;16294:305;16396:4;16448:25;16433:40;;;:11;:40;;;;:105;;;;16505:33;16490:48;;;:11;:48;;;;16433:105;:158;;;;16555:36;16579:11;16555:23;:36::i;:::-;16433:158;16413:178;;16294:305;;;:::o;18584:100::-;18638:13;18671:5;18664:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18584:100;:::o;19611:204::-;19679:7;19704:16;19712:7;19704;:16::i;:::-;19699:64;;19729:34;;;;;;;;;;;;;;19699:64;19783:15;:24;19799:7;19783:24;;;;;;;;;;;;;;;;;;;;;19776:31;;19611:204;;;:::o;19232:371::-;19305:13;19321:24;19337:7;19321:15;:24::i;:::-;19305:40;;19366:5;19360:11;;:2;:11;;;19356:48;;;19380:24;;;;;;;;;;;;;;19356:48;19437:5;19421:21;;:12;:10;:12::i;:::-;:21;;;;:63;;;;;19447:37;19464:5;19471:12;:10;:12::i;:::-;19447:16;:37::i;:::-;19446:38;19421:63;19417:138;;;19508:35;;;;;;;;;;;;;;19417:138;19567:28;19576:2;19580:7;19589:5;19567:8;:28::i;:::-;19294:309;19232:371;;:::o;33024:102::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33109:13:::1;33097:9;:25;;;;33024:102:::0;:::o;27362:34::-;;;;:::o;32785:101::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32874:8:::1;32858:13;:24;;;;32785:101:::0;:::o;15964:163::-;16008:7;16093:15;:13;:15::i;:::-;16078:12;;16062:13;;:28;:46;16055:53;;15964:163;:::o;20282:180::-;20418:36;20436:4;20442:2;20446:7;20418:17;:36::i;:::-;20282:180;;;:::o;27708:43::-;;;;;;;;;;;;;;;;;;;;;;:::o;30423:1613::-;30596:4;30565:35;;:15;:27;30581:10;30565:27;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;30561:175;;30634:10;;30621:9;:23;;30613:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30696:7;:5;:7::i;:::-;30688:25;;:36;30714:9;30688:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30561:175;30746:35;30784:20;30796:7;30784:11;:20::i;:::-;30746:58;;30817:22;30859:13;:18;;;30843:34;;:12;:10;:12::i;:::-;:34;;;:101;;;;30894:50;30911:13;:18;;;30931:12;:10;:12::i;:::-;30894:16;:50::i;:::-;30843:101;:154;;;;30985:12;:10;:12::i;:::-;30961:36;;:20;30973:7;30961:11;:20::i;:::-;:36;;;30843:154;30817:181;;31016:17;31011:66;;31042:35;;;;;;;;;;;;;;31011:66;31114:4;31092:26;;:13;:18;;;:26;;;31088:67;;31127:28;;;;;;;;;;;;;;31088:67;31184:1;31170:16;;:2;:16;;;31166:52;;;31195:23;;;;;;;;;;;;;;31166:52;31231:43;31253:4;31259:2;31263:7;31272:1;31231:21;:43::i;:::-;31287:28;31303:1;31307:7;31287;:28::i;:::-;31383:1;31353:12;:18;31366:4;31353:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31427:1;31399:12;:16;31412:2;31399:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;31473:2;31445:11;:20;31457:7;31445:20;;;;;;;;;;;:25;;;:30;;;;;;;;;;;;;;;;;;31535:15;31490:11;:20;31502:7;31490:20;;;;;;;;;;;:35;;;:61;;;;;;;;;;;;;;;;;;31568:19;31600:1;31590:7;:11;31568:33;;31661:1;31620:43;;:11;:24;31632:11;31620:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;31616:304;;;31704:13;;31690:11;:27;31686:219;;;31774:13;:18;;;31742:11;:24;31754:11;31742:24;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;31857:13;:28;;;31815:11;:24;31827:11;31815:24;;;;;;;;;;;:39;;;:70;;;;;;;;;;;;;;;;;;31686:219;31616:304;31328:603;31967:7;31963:2;31948:27;;31957:4;31948:27;;;;;;;;;;;;31986:42;32007:4;32013:2;32017:7;32026:1;31986:20;:42::i;:::-;30550:1486;;30423:1613;;;:::o;33362:82::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33434:6:::1;33425;;:15;;;;;;;;;;;;;;;;;;33362:82:::0;:::o;34250:188::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34307:12:::1;34333:10;34325:24;;34371:21;34325:82;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34306:101;;;34426:7;34418:16;;;::::0;::::1;;34295:143;34250:188::o:0;30044:375::-;30225:4;30194:35;;:15;:27;30210:10;30194:27;;;;;;;;;;;;;;;;;;;;;;;;;:35;;;30190:183;;30267:10;;30254:9;:23;;30246:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;30333:7;:5;:7::i;:::-;30325:25;;:36;30351:9;30325:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30190:183;30383:28;30393:4;30399:2;30403:7;30383:9;:28::i;:::-;30044:375;;;:::o;32699:82::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32769:8:::1;32762:4;:15;;;;32699:82:::0;:::o;33448:98::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33538:4:::1;33517:11;:18;33529:5;33517:18;;;;;;;;;;;;;;;;:25;;;;;;;;;;;;;;;;;;33448:98:::0;:::o;33130:100::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33215:11:::1;33205:7;:21;;;;;;;;;;;;:::i;:::-;;33130:100:::0;:::o;27572:25::-;;;;;;;;;;;;;:::o;18452:124::-;18516:7;18543:20;18555:7;18543:11;:20::i;:::-;:25;;;18536:32;;18452:124;;;:::o;32890:130::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;32996:20:::1;32977:16;:39;;;;32890:130:::0;:::o;27290:21::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;16607:206::-;16671:7;16712:1;16695:19;;:5;:19;;;16691:60;;;16723:28;;;;;;;;;;;;;;16691:60;16777:12;:19;16790:5;16777:19;;;;;;;;;;;;;;;:27;;;;;;;;;;;;16769:36;;16762:43;;16607:206;;;:::o;7214:103::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7279:30:::1;7306:1;7279:18;:30::i;:::-;7214:103::o:0;33654:185::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33736:9:::1;33731:105;33755:6;:13;33751:1;:17;33731:105;;;33820:4;33790:16;:27;33807:6;33814:1;33807:9;;;;;;;;:::i;:::-;;;;;;;;33790:27;;;;;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;33770:3;;;;;:::i;:::-;;;;33731:105;;;;33654:185:::0;:::o;33843:107::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33941:5:::1;33915:16;:23;33932:5;33915:23;;;;;;;;;;;;;;;;:31;;;;;;;;;;;;;;;;;;33843:107:::0;:::o;6991:87::-;7037:7;7064:6;;;;;;;;;;;7057:13;;6991:87;:::o;18692:104::-;18748:13;18781:7;18774:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18692:104;:::o;27654:47::-;;;;;;;;;;;;;;;;;;;;;;:::o;28697:1339::-;28761:14;28778:13;:11;:13::i;:::-;28761:30;;28826:1;28810:13;:17;28802:93;;;;;;;;;;;;:::i;:::-;;;;;;;;;28940:9;;28923:13;28914:6;:22;;;;:::i;:::-;:35;;28906:117;;;;;;;;;;;;:::i;:::-;;;;;;;;;29068:9;;29051:13;29042:6;:22;;;;:::i;:::-;:35;;29034:157;;;;;;;;;;;;:::i;:::-;;;;;;;;;29218:7;:5;:7::i;:::-;29204:21;;:10;:21;;;29200:739;;29259:16;;29242:13;:33;;29234:81;;;;;;;;;;;;:::i;:::-;;;;;;;;;29332:6;;;;;;;;;;;29331:7;29323:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;29436:16;;29418:13;29390:25;29404:10;29390:13;:25::i;:::-;:41;;;;:::i;:::-;29389:63;;29381:147;;;;;;;;;;;;:::i;:::-;;;;;;;;;29568:4;29541:31;;:11;:23;29553:10;29541:23;;;;;;;;;;;;;;;;;;;;;;;;;:31;;;29537:395;;29617:4;29585:36;;:16;:28;29602:10;29585:28;;;;;;;;;;;;;;;;;;;;;;;;;:36;;;29581:344;;29684:13;29677:4;;:20;;;;:::i;:::-;29664:9;:33;;29656:97;;;;;;;;;;;;:::i;:::-;;;;;;;;;29581:344;;;29844:13;29828;;:29;;;;:::i;:::-;29815:9;:42;;29807:106;;;;;;;;;;;;:::i;:::-;;;;;;;;;29581:344;29537:395;29200:739;29949:36;29959:10;29971:13;29949:9;:36::i;:::-;30004:7;:5;:7::i;:::-;29996:25;;:36;30022:9;29996:36;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28751:1285;28697:1339;:::o;19823:279::-;19926:12;:10;:12::i;:::-;19914:24;;:8;:24;;;19910:54;;;19947:17;;;;;;;;;;;;;;19910:54;20022:8;19977:18;:32;19996:12;:10;:12::i;:::-;19977:32;;;;;;;;;;;;;;;:42;20010:8;19977:42;;;;;;;;;;;;;;;;:53;;;;;;;;;;;;;;;;;;20075:8;20046:48;;20061:12;:10;:12::i;:::-;20046:48;;;20085:8;20046:48;;;;;;:::i;:::-;;;;;;;;19823:279;;:::o;27874:36::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;27493:35::-;;;;:::o;27535:30::-;;;;:::o;34141:105::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34237:5:::1;34212:15;:22;34228:5;34212:22;;;;;;;;;;;;;;;;:30;;;;;;;;;;;;;;;;;;34141:105:::0;:::o;33550:100::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33641:5:::1;33620:11;:18;33632:5;33620:18;;;;;;;;;;;;;;;;:26;;;;;;;;;;;;;;;;;;33550:100:::0;:::o;20660:466::-;20856:8;20843:9;:21;;20835:30;;;;;;20893:8;20880:9;:21;20876:243;;20913:28;20923:4;20929:2;20933:7;20913:9;:28::i;:::-;20956:15;:2;:13;;;:15::i;:::-;:76;;;;;20976:56;21007:4;21013:2;21017:7;21026:5;20976:30;:56::i;:::-;20975:57;20956:76;20952:156;;;21056:40;;;;;;;;;;;;;;20952:156;20876:243;20660:466;;;;:::o;27604:37::-;;;;:::o;33954:183::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;34035:9:::1;34030:104;34054:6;:13;34050:1;:17;34030:104;;;34118:4;34089:15;:26;34105:6;34112:1;34105:9;;;;;;;;:::i;:::-;;;;;;;;34089:26;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;34069:3;;;;;:::i;:::-;;;;34030:104;;;;33954:183:::0;:::o;27318:37::-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;32040:546::-;32110:13;32144:16;32152:7;32144;:16::i;:::-;32136:76;;;;;;;;;;;;:::i;:::-;;;;;;;;;32223:28;32254:10;:8;:10::i;:::-;32223:41;;32326:1;32301:14;32295:28;:32;:287;;;;;;;;;;;;;;;;;32419:14;32460:18;:7;:16;:18::i;:::-;32505:13;32376:165;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;32295:287;32275:307;;;32040:546;;;:::o;27455:31::-;;;;:::o;33234:124::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;33337:17:::1;33321:13;:33;;;;;;;;;;;;:::i;:::-;;33234:124:::0;:::o;27403:45::-;;;;:::o;20110:164::-;20207:4;20231:18;:25;20250:5;20231:25;;;;;;;;;;;;;;;:35;20257:8;20231:35;;;;;;;;;;;;;;;;;;;;;;;;;20224:42;;20110:164;;;;:::o;7325:201::-;7137:12;:10;:12::i;:::-;7126:23;;:7;:5;:7::i;:::-;:23;;;7118:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7434:1:::1;7414:22;;:8;:22;;;;7406:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;7490:28;7509:8;7490:18;:28::i;:::-;7325:201:::0;:::o;27758:48::-;;;;;;;;;;;;;;;;;;;;;;:::o;7838:115::-;7898:4;7944:1;7922:7;:19;;;:23;7915:30;;7838:115;;;:::o;11982:157::-;12067:4;12106:25;12091:40;;;:11;:40;;;;12084:47;;11982:157;;;:::o;21134:187::-;21191:4;21234:7;21215:15;:13;:15::i;:::-;:26;;:53;;;;;21255:13;;21245:7;:23;21215:53;:98;;;;;21286:11;:20;21298:7;21286:20;;;;;;;;;;;:27;;;;;;;;;;;;21285:28;21215:98;21208:105;;21134:187;;;:::o;6455:98::-;6508:7;6535:10;6528:17;;6455:98;:::o;25784:196::-;25926:2;25899:15;:24;25915:7;25899:24;;;;;;;;;;;;:29;;;;;;;;;;;;;;;;;;25964:7;25960:2;25944:28;;25953:5;25944:28;;;;;;;;;;;;25784:196;;;:::o;15864:92::-;15920:7;15864:92;:::o;23112:1474::-;23262:1;23249:9;:14;;23241:23;;;;;;23275:35;23313:20;23325:7;23313:11;:20::i;:::-;23275:58;;23346:22;23388:13;:18;;;23372:34;;:12;:10;:12::i;:::-;:34;;;:101;;;;23423:50;23440:13;:18;;;23460:12;:10;:12::i;:::-;23423:16;:50::i;:::-;23372:101;:154;;;;23514:12;:10;:12::i;:::-;23490:36;;:20;23502:7;23490:11;:20::i;:::-;:36;;;23372:154;23346:181;;23545:17;23540:66;;23571:35;;;;;;;;;;;;;;23540:66;23643:4;23621:26;;:13;:18;;;:26;;;23617:67;;23656:28;;;;;;;;;;;;;;23617:67;23713:1;23699:16;;:2;:16;;;23695:52;;;23724:23;;;;;;;;;;;;;;23695:52;23760:43;23782:4;23788:2;23792:7;23801:1;23760:21;:43::i;:::-;23816:49;23833:1;23837:7;23846:13;:18;;;23816:8;:49::i;:::-;23933:1;23903:12;:18;23916:4;23903:18;;;;;;;;;;;;;;;:26;;;:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23977:1;23949:12;:16;23962:2;23949:16;;;;;;;;;;;;;;;:24;;;:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24023:2;23995:11;:20;24007:7;23995:20;;;;;;;;;;;:25;;;:30;;;;;;;;;;;;;;;;;;24085:15;24040:11;:20;24052:7;24040:20;;;;;;;;;;;:35;;;:61;;;;;;;;;;;;;;;;;;24118:19;24150:1;24140:7;:11;24118:33;;24211:1;24170:43;;:11;:24;24182:11;24170:24;;;;;;;;;;;:29;;;;;;;;;;;;:43;;;24166:304;;;24254:13;;24240:11;:27;24236:219;;;24324:13;:18;;;24292:11;:24;24304:11;24292:24;;;;;;;;;;;:29;;;:50;;;;;;;;;;;;;;;;;;24407:13;:28;;;24365:11;:24;24377:11;24365:24;;;;;;;;;;;:39;;;:70;;;;;;;;;;;;;;;;;;24236:219;24166:304;23878:603;24517:7;24513:2;24498:27;;24507:4;24498:27;;;;;;;;;;;;24536:42;24557:4;24563:2;24567:7;24576:1;24536:20;:42::i;:::-;23230:1356;;23112:1474;;;:::o;17614:830::-;17675:21;;:::i;:::-;17709:12;17724:7;17709:22;;17792:4;17773:15;:13;:15::i;:::-;:23;;:47;;;;;17807:13;;17800:4;:20;17773:47;17769:608;;;17841:31;17875:11;:17;17887:4;17875:17;;;;;;;;;;;17841:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17916:9;:16;;;17911:451;;17987:1;17961:28;;:9;:14;;;:28;;;17957:101;;18025:9;18018:16;;;;;;17957:101;18082:261;18089:4;18082:261;;;18122:6;;;;;;;;18167:11;:17;18179:4;18167:17;;;;;;;;;;;18155:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18241:1;18215:28;;:9;:14;;;:28;;;18211:109;;18283:9;18276:16;;;;;;18211:109;18082:261;;;17911:451;17822:555;17769:608;18405:31;;;;;;;;;;;;;;17614:830;;;;:::o;26663:159::-;;;;;:::o;26830:158::-;;;;;:::o;7534:191::-;7608:16;7627:6;;;;;;;;;;;7608:25;;7653:8;7644:6;;:17;;;;;;;;;;;;;;;;;;7708:8;7677:40;;7698:8;7677:40;;;;;;;;;;;;7597:128;7534:191;:::o;16821:207::-;16882:7;16923:1;16906:19;;:5;:19;;;16902:59;;;16934:27;;;;;;;;;;;;;;16902:59;16987:12;:19;17000:5;16987:19;;;;;;;;;;;;;;;:32;;;;;;;;;;;;16979:41;;16972:48;;16821:207;;;:::o;21329:104::-;21398:27;21408:2;21412:8;21398:27;;;;;;;;;;;;:9;:27::i;:::-;21329:104;;:::o;25988:667::-;26151:4;26188:2;26172:36;;;26209:12;:10;:12::i;:::-;26223:4;26229:7;26238:5;26172:72;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;26168:480;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26423:1;26406:6;:13;:18;26402:235;;;26452:40;;;;;;;;;;;;;;26402:235;26595:6;26589:13;26580:6;26576:2;26572:15;26565:38;26168:480;26301:45;;;26291:55;;;:6;:55;;;;26284:62;;;25988:667;;;;;;:::o;28589:104::-;28649:13;28682:7;28675:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28589:104;:::o;4993:534::-;5049:13;5090:1;5081:5;:10;5077:53;;;5108:10;;;;;;;;;;;;;;;;;;;;;5077:53;5140:12;5155:5;5140:20;;5171:14;5196:78;5211:1;5203:4;:9;5196:78;;5229:8;;;;;:::i;:::-;;;;5260:2;5252:10;;;;;:::i;:::-;;;5196:78;;;5284:19;5316:6;5306:17;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5284:39;;5334:154;5350:1;5341:5;:10;5334:154;;5378:1;5368:11;;;;;:::i;:::-;;;5445:2;5437:5;:10;;;;:::i;:::-;5424:2;:24;;;;:::i;:::-;5411:39;;5394:6;5401;5394:14;;;;;;;;:::i;:::-;;;;;:56;;;;;;;;;;;5474:2;5465:11;;;;;:::i;:::-;;;5334:154;;;5512:6;5498:21;;;;;4993:534;;;;:::o;21441:163::-;21564:32;21570:2;21574:8;21584:5;21591:4;21564:5;:32::i;:::-;21441:163;;;:::o;21612:1492::-;21751:20;21774:13;;21751:36;;21816:1;21802:16;;:2;:16;;;21798:48;;;21827:19;;;;;;;;;;;;;;21798:48;21873:1;21861:8;:13;21857:44;;;21883:18;;;;;;;;;;;;;;21857:44;21914:61;21944:1;21948:2;21952:12;21966:8;21914:21;:61::i;:::-;22046:8;22011:12;:16;22024:2;22011:16;;;;;;;;;;;;;;;:24;;;:44;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22110:8;22070:12;:16;22083:2;22070:16;;;;;;;;;;;;;;;:29;;;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22169:2;22136:11;:25;22148:12;22136:25;;;;;;;;;;;:30;;;:35;;;;;;;;;;;;;;;;;;22236:15;22186:11;:25;22198:12;22186:25;;;;;;;;;;;:40;;;:66;;;;;;;;;;;;;;;;;;22269:20;22292:12;22269:35;;22319:11;22348:8;22333:12;:23;22319:37;;22377:4;:23;;;;;22385:15;:2;:13;;;:15::i;:::-;22377:23;22373:599;;;22421:314;22477:12;22473:2;22452:38;;22469:1;22452:38;;;;;;;;;;;;22518:69;22557:1;22561:2;22565:14;;;;;;22581:5;22518:30;:69::i;:::-;22513:174;;22623:40;;;;;;;;;;;;;;22513:174;22730:3;22714:12;:19;;22421:314;;22774:12;22757:13;;:29;22753:43;;22788:8;;;22753:43;22373:599;;;22837:120;22893:14;;;;;;22889:2;22868:40;;22885:1;22868:40;;;;;;;;;;;;22952:3;22936:12;:19;;22837:120;;22373:599;23002:12;22986:13;:28;;;;21986:1040;;23036:60;23065:1;23069:2;23073:12;23087:8;23036:20;:60::i;:::-;21740:1364;21612:1492;;;;:::o;-1:-1:-1:-;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;24:722:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:143;;;404:79;;:::i;:::-;350:143;517:1;502:238;527:6;524:1;521:13;502:238;;;595:3;624:37;657:3;645:10;624:37;:::i;:::-;619:3;612:50;691:4;686:3;682:14;675:21;;725:4;720:3;716:14;709:21;;562:178;549:1;546;542:9;537:14;;502:238;;;506:14;126:620;;24:722;;;;;:::o;752:410::-;829:5;854:65;870:48;911:6;870:48;:::i;:::-;854:65;:::i;:::-;845:74;;942:6;935:5;928:21;980:4;973:5;969:16;1018:3;1009:6;1004:3;1000:16;997:25;994:112;;;1025:79;;:::i;:::-;994:112;1115:41;1149:6;1144:3;1139;1115:41;:::i;:::-;835:327;752:410;;;;;:::o;1168:412::-;1246:5;1271:66;1287:49;1329:6;1287:49;:::i;:::-;1271:66;:::i;:::-;1262:75;;1360:6;1353:5;1346:21;1398:4;1391:5;1387:16;1436:3;1427:6;1422:3;1418:16;1415:25;1412:112;;;1443:79;;:::i;:::-;1412:112;1533:41;1567:6;1562:3;1557;1533:41;:::i;:::-;1252:328;1168:412;;;;;:::o;1586:139::-;1632:5;1670:6;1657:20;1648:29;;1686:33;1713:5;1686:33;:::i;:::-;1586:139;;;;:::o;1748:370::-;1819:5;1868:3;1861:4;1853:6;1849:17;1845:27;1835:122;;1876:79;;:::i;:::-;1835:122;1993:6;1980:20;2018:94;2108:3;2100:6;2093:4;2085:6;2081:17;2018:94;:::i;:::-;2009:103;;1825:293;1748:370;;;;:::o;2124:133::-;2167:5;2205:6;2192:20;2183:29;;2221:30;2245:5;2221:30;:::i;:::-;2124:133;;;;:::o;2263:137::-;2308:5;2346:6;2333:20;2324:29;;2362:32;2388:5;2362:32;:::i;:::-;2263:137;;;;:::o;2406:141::-;2462:5;2493:6;2487:13;2478:22;;2509:32;2535:5;2509:32;:::i;:::-;2406:141;;;;:::o;2566:338::-;2621:5;2670:3;2663:4;2655:6;2651:17;2647:27;2637:122;;2678:79;;:::i;:::-;2637:122;2795:6;2782:20;2820:78;2894:3;2886:6;2879:4;2871:6;2867:17;2820:78;:::i;:::-;2811:87;;2627:277;2566:338;;;;:::o;2924:340::-;2980:5;3029:3;3022:4;3014:6;3010:17;3006:27;2996:122;;3037:79;;:::i;:::-;2996:122;3154:6;3141:20;3179:79;3254:3;3246:6;3239:4;3231:6;3227:17;3179:79;:::i;:::-;3170:88;;2986:278;2924:340;;;;:::o;3270:139::-;3316:5;3354:6;3341:20;3332:29;;3370:33;3397:5;3370:33;:::i;:::-;3270:139;;;;:::o;3415:329::-;3474:6;3523:2;3511:9;3502:7;3498:23;3494:32;3491:119;;;3529:79;;:::i;:::-;3491:119;3649:1;3674:53;3719:7;3710:6;3699:9;3695:22;3674:53;:::i;:::-;3664:63;;3620:117;3415:329;;;;:::o;3750:474::-;3818:6;3826;3875:2;3863:9;3854:7;3850:23;3846:32;3843:119;;;3881:79;;:::i;:::-;3843:119;4001:1;4026:53;4071:7;4062:6;4051:9;4047:22;4026:53;:::i;:::-;4016:63;;3972:117;4128:2;4154:53;4199:7;4190:6;4179:9;4175:22;4154:53;:::i;:::-;4144:63;;4099:118;3750:474;;;;;:::o;4230:619::-;4307:6;4315;4323;4372:2;4360:9;4351:7;4347:23;4343:32;4340:119;;;4378:79;;:::i;:::-;4340:119;4498:1;4523:53;4568:7;4559:6;4548:9;4544:22;4523:53;:::i;:::-;4513:63;;4469:117;4625:2;4651:53;4696:7;4687:6;4676:9;4672:22;4651:53;:::i;:::-;4641:63;;4596:118;4753:2;4779:53;4824:7;4815:6;4804:9;4800:22;4779:53;:::i;:::-;4769:63;;4724:118;4230:619;;;;;:::o;4855:943::-;4950:6;4958;4966;4974;5023:3;5011:9;5002:7;4998:23;4994:33;4991:120;;;5030:79;;:::i;:::-;4991:120;5150:1;5175:53;5220:7;5211:6;5200:9;5196:22;5175:53;:::i;:::-;5165:63;;5121:117;5277:2;5303:53;5348:7;5339:6;5328:9;5324:22;5303:53;:::i;:::-;5293:63;;5248:118;5405:2;5431:53;5476:7;5467:6;5456:9;5452:22;5431:53;:::i;:::-;5421:63;;5376:118;5561:2;5550:9;5546:18;5533:32;5592:18;5584:6;5581:30;5578:117;;;5614:79;;:::i;:::-;5578:117;5719:62;5773:7;5764:6;5753:9;5749:22;5719:62;:::i;:::-;5709:72;;5504:287;4855:943;;;;;;;:::o;5804:468::-;5869:6;5877;5926:2;5914:9;5905:7;5901:23;5897:32;5894:119;;;5932:79;;:::i;:::-;5894:119;6052:1;6077:53;6122:7;6113:6;6102:9;6098:22;6077:53;:::i;:::-;6067:63;;6023:117;6179:2;6205:50;6247:7;6238:6;6227:9;6223:22;6205:50;:::i;:::-;6195:60;;6150:115;5804:468;;;;;:::o;6278:474::-;6346:6;6354;6403:2;6391:9;6382:7;6378:23;6374:32;6371:119;;;6409:79;;:::i;:::-;6371:119;6529:1;6554:53;6599:7;6590:6;6579:9;6575:22;6554:53;:::i;:::-;6544:63;;6500:117;6656:2;6682:53;6727:7;6718:6;6707:9;6703:22;6682:53;:::i;:::-;6672:63;;6627:118;6278:474;;;;;:::o;6758:539::-;6842:6;6891:2;6879:9;6870:7;6866:23;6862:32;6859:119;;;6897:79;;:::i;:::-;6859:119;7045:1;7034:9;7030:17;7017:31;7075:18;7067:6;7064:30;7061:117;;;7097:79;;:::i;:::-;7061:117;7202:78;7272:7;7263:6;7252:9;7248:22;7202:78;:::i;:::-;7192:88;;6988:302;6758:539;;;;:::o;7303:323::-;7359:6;7408:2;7396:9;7387:7;7383:23;7379:32;7376:119;;;7414:79;;:::i;:::-;7376:119;7534:1;7559:50;7601:7;7592:6;7581:9;7577:22;7559:50;:::i;:::-;7549:60;;7505:114;7303:323;;;;:::o;7632:327::-;7690:6;7739:2;7727:9;7718:7;7714:23;7710:32;7707:119;;;7745:79;;:::i;:::-;7707:119;7865:1;7890:52;7934:7;7925:6;7914:9;7910:22;7890:52;:::i;:::-;7880:62;;7836:116;7632:327;;;;:::o;7965:349::-;8034:6;8083:2;8071:9;8062:7;8058:23;8054:32;8051:119;;;8089:79;;:::i;:::-;8051:119;8209:1;8234:63;8289:7;8280:6;8269:9;8265:22;8234:63;:::i;:::-;8224:73;;8180:127;7965:349;;;;:::o;8320:509::-;8389:6;8438:2;8426:9;8417:7;8413:23;8409:32;8406:119;;;8444:79;;:::i;:::-;8406:119;8592:1;8581:9;8577:17;8564:31;8622:18;8614:6;8611:30;8608:117;;;8644:79;;:::i;:::-;8608:117;8749:63;8804:7;8795:6;8784:9;8780:22;8749:63;:::i;:::-;8739:73;;8535:287;8320:509;;;;:::o;8835:329::-;8894:6;8943:2;8931:9;8922:7;8918:23;8914:32;8911:119;;;8949:79;;:::i;:::-;8911:119;9069:1;9094:53;9139:7;9130:6;9119:9;9115:22;9094:53;:::i;:::-;9084:63;;9040:117;8835:329;;;;:::o;9170:118::-;9257:24;9275:5;9257:24;:::i;:::-;9252:3;9245:37;9170:118;;:::o;9294:109::-;9375:21;9390:5;9375:21;:::i;:::-;9370:3;9363:34;9294:109;;:::o;9409:118::-;9496:24;9514:5;9496:24;:::i;:::-;9491:3;9484:37;9409:118;;:::o;9533:360::-;9619:3;9647:38;9679:5;9647:38;:::i;:::-;9701:70;9764:6;9759:3;9701:70;:::i;:::-;9694:77;;9780:52;9825:6;9820:3;9813:4;9806:5;9802:16;9780:52;:::i;:::-;9857:29;9879:6;9857:29;:::i;:::-;9852:3;9848:39;9841:46;;9623:270;9533:360;;;;:::o;9899:364::-;9987:3;10015:39;10048:5;10015:39;:::i;:::-;10070:71;10134:6;10129:3;10070:71;:::i;:::-;10063:78;;10150:52;10195:6;10190:3;10183:4;10176:5;10172:16;10150:52;:::i;:::-;10227:29;10249:6;10227:29;:::i;:::-;10222:3;10218:39;10211:46;;9991:272;9899:364;;;;:::o;10269:377::-;10375:3;10403:39;10436:5;10403:39;:::i;:::-;10458:89;10540:6;10535:3;10458:89;:::i;:::-;10451:96;;10556:52;10601:6;10596:3;10589:4;10582:5;10578:16;10556:52;:::i;:::-;10633:6;10628:3;10624:16;10617:23;;10379:267;10269:377;;;;:::o;10676:845::-;10779:3;10816:5;10810:12;10845:36;10871:9;10845:36;:::i;:::-;10897:89;10979:6;10974:3;10897:89;:::i;:::-;10890:96;;11017:1;11006:9;11002:17;11033:1;11028:137;;;;11179:1;11174:341;;;;10995:520;;11028:137;11112:4;11108:9;11097;11093:25;11088:3;11081:38;11148:6;11143:3;11139:16;11132:23;;11028:137;;11174:341;11241:38;11273:5;11241:38;:::i;:::-;11301:1;11315:154;11329:6;11326:1;11323:13;11315:154;;;11403:7;11397:14;11393:1;11388:3;11384:11;11377:35;11453:1;11444:7;11440:15;11429:26;;11351:4;11348:1;11344:12;11339:17;;11315:154;;;11498:6;11493:3;11489:16;11482:23;;11181:334;;10995:520;;10783:738;;10676:845;;;;:::o;11527:366::-;11669:3;11690:67;11754:2;11749:3;11690:67;:::i;:::-;11683:74;;11766:93;11855:3;11766:93;:::i;:::-;11884:2;11879:3;11875:12;11868:19;;11527:366;;;:::o;11899:::-;12041:3;12062:67;12126:2;12121:3;12062:67;:::i;:::-;12055:74;;12138:93;12227:3;12138:93;:::i;:::-;12256:2;12251:3;12247:12;12240:19;;11899:366;;;:::o;12271:::-;12413:3;12434:67;12498:2;12493:3;12434:67;:::i;:::-;12427:74;;12510:93;12599:3;12510:93;:::i;:::-;12628:2;12623:3;12619:12;12612:19;;12271:366;;;:::o;12643:::-;12785:3;12806:67;12870:2;12865:3;12806:67;:::i;:::-;12799:74;;12882:93;12971:3;12882:93;:::i;:::-;13000:2;12995:3;12991:12;12984:19;;12643:366;;;:::o;13015:::-;13157:3;13178:67;13242:2;13237:3;13178:67;:::i;:::-;13171:74;;13254:93;13343:3;13254:93;:::i;:::-;13372:2;13367:3;13363:12;13356:19;;13015:366;;;:::o;13387:::-;13529:3;13550:67;13614:2;13609:3;13550:67;:::i;:::-;13543:74;;13626:93;13715:3;13626:93;:::i;:::-;13744:2;13739:3;13735:12;13728:19;;13387:366;;;:::o;13759:::-;13901:3;13922:67;13986:2;13981:3;13922:67;:::i;:::-;13915:74;;13998:93;14087:3;13998:93;:::i;:::-;14116:2;14111:3;14107:12;14100:19;;13759:366;;;:::o;14131:::-;14273:3;14294:67;14358:2;14353:3;14294:67;:::i;:::-;14287:74;;14370:93;14459:3;14370:93;:::i;:::-;14488:2;14483:3;14479:12;14472:19;;14131:366;;;:::o;14503:398::-;14662:3;14683:83;14764:1;14759:3;14683:83;:::i;:::-;14676:90;;14775:93;14864:3;14775:93;:::i;:::-;14893:1;14888:3;14884:11;14877:18;;14503:398;;;:::o;14907:368::-;15049:3;15070:68;15134:3;15129;15070:68;:::i;:::-;15063:75;;15147:93;15236:3;15147:93;:::i;:::-;15265:3;15260;15256:13;15249:20;;14907:368;;;:::o;15281:366::-;15423:3;15444:67;15508:2;15503:3;15444:67;:::i;:::-;15437:74;;15520:93;15609:3;15520:93;:::i;:::-;15638:2;15633:3;15629:12;15622:19;;15281:366;;;:::o;15653:::-;15795:3;15816:67;15880:2;15875:3;15816:67;:::i;:::-;15809:74;;15892:93;15981:3;15892:93;:::i;:::-;16010:2;16005:3;16001:12;15994:19;;15653:366;;;:::o;16025:118::-;16112:24;16130:5;16112:24;:::i;:::-;16107:3;16100:37;16025:118;;:::o;16149:589::-;16374:3;16396:95;16487:3;16478:6;16396:95;:::i;:::-;16389:102;;16508:95;16599:3;16590:6;16508:95;:::i;:::-;16501:102;;16620:92;16708:3;16699:6;16620:92;:::i;:::-;16613:99;;16729:3;16722:10;;16149:589;;;;;;:::o;16744:379::-;16928:3;16950:147;17093:3;16950:147;:::i;:::-;16943:154;;17114:3;17107:10;;16744:379;;;:::o;17129:222::-;17222:4;17260:2;17249:9;17245:18;17237:26;;17273:71;17341:1;17330:9;17326:17;17317:6;17273:71;:::i;:::-;17129:222;;;;:::o;17357:640::-;17552:4;17590:3;17579:9;17575:19;17567:27;;17604:71;17672:1;17661:9;17657:17;17648:6;17604:71;:::i;:::-;17685:72;17753:2;17742:9;17738:18;17729:6;17685:72;:::i;:::-;17767;17835:2;17824:9;17820:18;17811:6;17767:72;:::i;:::-;17886:9;17880:4;17876:20;17871:2;17860:9;17856:18;17849:48;17914:76;17985:4;17976:6;17914:76;:::i;:::-;17906:84;;17357:640;;;;;;;:::o;18003:210::-;18090:4;18128:2;18117:9;18113:18;18105:26;;18141:65;18203:1;18192:9;18188:17;18179:6;18141:65;:::i;:::-;18003:210;;;;:::o;18219:313::-;18332:4;18370:2;18359:9;18355:18;18347:26;;18419:9;18413:4;18409:20;18405:1;18394:9;18390:17;18383:47;18447:78;18520:4;18511:6;18447:78;:::i;:::-;18439:86;;18219:313;;;;:::o;18538:419::-;18704:4;18742:2;18731:9;18727:18;18719:26;;18791:9;18785:4;18781:20;18777:1;18766:9;18762:17;18755:47;18819:131;18945:4;18819:131;:::i;:::-;18811:139;;18538:419;;;:::o;18963:::-;19129:4;19167:2;19156:9;19152:18;19144:26;;19216:9;19210:4;19206:20;19202:1;19191:9;19187:17;19180:47;19244:131;19370:4;19244:131;:::i;:::-;19236:139;;18963:419;;;:::o;19388:::-;19554:4;19592:2;19581:9;19577:18;19569:26;;19641:9;19635:4;19631:20;19627:1;19616:9;19612:17;19605:47;19669:131;19795:4;19669:131;:::i;:::-;19661:139;;19388:419;;;:::o;19813:::-;19979:4;20017:2;20006:9;20002:18;19994:26;;20066:9;20060:4;20056:20;20052:1;20041:9;20037:17;20030:47;20094:131;20220:4;20094:131;:::i;:::-;20086:139;;19813:419;;;:::o;20238:::-;20404:4;20442:2;20431:9;20427:18;20419:26;;20491:9;20485:4;20481:20;20477:1;20466:9;20462:17;20455:47;20519:131;20645:4;20519:131;:::i;:::-;20511:139;;20238:419;;;:::o;20663:::-;20829:4;20867:2;20856:9;20852:18;20844:26;;20916:9;20910:4;20906:20;20902:1;20891:9;20887:17;20880:47;20944:131;21070:4;20944:131;:::i;:::-;20936:139;;20663:419;;;:::o;21088:::-;21254:4;21292:2;21281:9;21277:18;21269:26;;21341:9;21335:4;21331:20;21327:1;21316:9;21312:17;21305:47;21369:131;21495:4;21369:131;:::i;:::-;21361:139;;21088:419;;;:::o;21513:::-;21679:4;21717:2;21706:9;21702:18;21694:26;;21766:9;21760:4;21756:20;21752:1;21741:9;21737:17;21730:47;21794:131;21920:4;21794:131;:::i;:::-;21786:139;;21513:419;;;:::o;21938:::-;22104:4;22142:2;22131:9;22127:18;22119:26;;22191:9;22185:4;22181:20;22177:1;22166:9;22162:17;22155:47;22219:131;22345:4;22219:131;:::i;:::-;22211:139;;21938:419;;;:::o;22363:::-;22529:4;22567:2;22556:9;22552:18;22544:26;;22616:9;22610:4;22606:20;22602:1;22591:9;22587:17;22580:47;22644:131;22770:4;22644:131;:::i;:::-;22636:139;;22363:419;;;:::o;22788:::-;22954:4;22992:2;22981:9;22977:18;22969:26;;23041:9;23035:4;23031:20;23027:1;23016:9;23012:17;23005:47;23069:131;23195:4;23069:131;:::i;:::-;23061:139;;22788:419;;;:::o;23213:222::-;23306:4;23344:2;23333:9;23329:18;23321:26;;23357:71;23425:1;23414:9;23410:17;23401:6;23357:71;:::i;:::-;23213:222;;;;:::o;23441:442::-;23590:4;23628:2;23617:9;23613:18;23605:26;;23641:71;23709:1;23698:9;23694:17;23685:6;23641:71;:::i;:::-;23722:72;23790:2;23779:9;23775:18;23766:6;23722:72;:::i;:::-;23804;23872:2;23861:9;23857:18;23848:6;23804:72;:::i;:::-;23441:442;;;;;;:::o;23889:129::-;23923:6;23950:20;;:::i;:::-;23940:30;;23979:33;24007:4;23999:6;23979:33;:::i;:::-;23889:129;;;:::o;24024:75::-;24057:6;24090:2;24084:9;24074:19;;24024:75;:::o;24105:311::-;24182:4;24272:18;24264:6;24261:30;24258:56;;;24294:18;;:::i;:::-;24258:56;24344:4;24336:6;24332:17;24324:25;;24404:4;24398;24394:15;24386:23;;24105:311;;;:::o;24422:307::-;24483:4;24573:18;24565:6;24562:30;24559:56;;;24595:18;;:::i;:::-;24559:56;24633:29;24655:6;24633:29;:::i;:::-;24625:37;;24717:4;24711;24707:15;24699:23;;24422:307;;;:::o;24735:308::-;24797:4;24887:18;24879:6;24876:30;24873:56;;;24909:18;;:::i;:::-;24873:56;24947:29;24969:6;24947:29;:::i;:::-;24939:37;;25031:4;25025;25021:15;25013:23;;24735:308;;;:::o;25049:141::-;25098:4;25121:3;25113:11;;25144:3;25141:1;25134:14;25178:4;25175:1;25165:18;25157:26;;25049:141;;;:::o;25196:98::-;25247:6;25281:5;25275:12;25265:22;;25196:98;;;:::o;25300:99::-;25352:6;25386:5;25380:12;25370:22;;25300:99;;;:::o;25405:168::-;25488:11;25522:6;25517:3;25510:19;25562:4;25557:3;25553:14;25538:29;;25405:168;;;;:::o;25579:147::-;25680:11;25717:3;25702:18;;25579:147;;;;:::o;25732:169::-;25816:11;25850:6;25845:3;25838:19;25890:4;25885:3;25881:14;25866:29;;25732:169;;;;:::o;25907:148::-;26009:11;26046:3;26031:18;;25907:148;;;;:::o;26061:305::-;26101:3;26120:20;26138:1;26120:20;:::i;:::-;26115:25;;26154:20;26172:1;26154:20;:::i;:::-;26149:25;;26308:1;26240:66;26236:74;26233:1;26230:81;26227:107;;;26314:18;;:::i;:::-;26227:107;26358:1;26355;26351:9;26344:16;;26061:305;;;;:::o;26372:185::-;26412:1;26429:20;26447:1;26429:20;:::i;:::-;26424:25;;26463:20;26481:1;26463:20;:::i;:::-;26458:25;;26502:1;26492:35;;26507:18;;:::i;:::-;26492:35;26549:1;26546;26542:9;26537:14;;26372:185;;;;:::o;26563:348::-;26603:7;26626:20;26644:1;26626:20;:::i;:::-;26621:25;;26660:20;26678:1;26660:20;:::i;:::-;26655:25;;26848:1;26780:66;26776:74;26773:1;26770:81;26765:1;26758:9;26751:17;26747:105;26744:131;;;26855:18;;:::i;:::-;26744:131;26903:1;26900;26896:9;26885:20;;26563:348;;;;:::o;26917:191::-;26957:4;26977:20;26995:1;26977:20;:::i;:::-;26972:25;;27011:20;27029:1;27011:20;:::i;:::-;27006:25;;27050:1;27047;27044:8;27041:34;;;27055:18;;:::i;:::-;27041:34;27100:1;27097;27093:9;27085:17;;26917:191;;;;:::o;27114:96::-;27151:7;27180:24;27198:5;27180:24;:::i;:::-;27169:35;;27114:96;;;:::o;27216:90::-;27250:7;27293:5;27286:13;27279:21;27268:32;;27216:90;;;:::o;27312:77::-;27349:7;27378:5;27367:16;;27312:77;;;:::o;27395:149::-;27431:7;27471:66;27464:5;27460:78;27449:89;;27395:149;;;:::o;27550:126::-;27587:7;27627:42;27620:5;27616:54;27605:65;;27550:126;;;:::o;27682:77::-;27719:7;27748:5;27737:16;;27682:77;;;:::o;27765:154::-;27849:6;27844:3;27839;27826:30;27911:1;27902:6;27897:3;27893:16;27886:27;27765:154;;;:::o;27925:307::-;27993:1;28003:113;28017:6;28014:1;28011:13;28003:113;;;28102:1;28097:3;28093:11;28087:18;28083:1;28078:3;28074:11;28067:39;28039:2;28036:1;28032:10;28027:15;;28003:113;;;28134:6;28131:1;28128:13;28125:101;;;28214:1;28205:6;28200:3;28196:16;28189:27;28125:101;27974:258;27925:307;;;:::o;28238:320::-;28282:6;28319:1;28313:4;28309:12;28299:22;;28366:1;28360:4;28356:12;28387:18;28377:81;;28443:4;28435:6;28431:17;28421:27;;28377:81;28505:2;28497:6;28494:14;28474:18;28471:38;28468:84;;;28524:18;;:::i;:::-;28468:84;28289:269;28238:320;;;:::o;28564:281::-;28647:27;28669:4;28647:27;:::i;:::-;28639:6;28635:40;28777:6;28765:10;28762:22;28741:18;28729:10;28726:34;28723:62;28720:88;;;28788:18;;:::i;:::-;28720:88;28828:10;28824:2;28817:22;28607:238;28564:281;;:::o;28851:233::-;28890:3;28913:24;28931:5;28913:24;:::i;:::-;28904:33;;28959:66;28952:5;28949:77;28946:103;;;29029:18;;:::i;:::-;28946:103;29076:1;29069:5;29065:13;29058:20;;28851:233;;;:::o;29090:176::-;29122:1;29139:20;29157:1;29139:20;:::i;:::-;29134:25;;29173:20;29191:1;29173:20;:::i;:::-;29168:25;;29212:1;29202:35;;29217:18;;:::i;:::-;29202:35;29258:1;29255;29251:9;29246:14;;29090:176;;;;:::o;29272:180::-;29320:77;29317:1;29310:88;29417:4;29414:1;29407:15;29441:4;29438:1;29431:15;29458:180;29506:77;29503:1;29496:88;29603:4;29600:1;29593:15;29627:4;29624:1;29617:15;29644:180;29692:77;29689:1;29682:88;29789:4;29786:1;29779:15;29813:4;29810:1;29803:15;29830:180;29878:77;29875:1;29868:88;29975:4;29972:1;29965:15;29999:4;29996:1;29989:15;30016:180;30064:77;30061:1;30054:88;30161:4;30158:1;30151:15;30185:4;30182:1;30175:15;30202:117;30311:1;30308;30301:12;30325:117;30434:1;30431;30424:12;30448:117;30557:1;30554;30547:12;30571:117;30680:1;30677;30670:12;30694:117;30803:1;30800;30793:12;30817:102;30858:6;30909:2;30905:7;30900:2;30893:5;30889:14;30885:28;30875:38;;30817:102;;;:::o;30925:238::-;31065:34;31061:1;31053:6;31049:14;31042:58;31134:21;31129:2;31121:6;31117:15;31110:46;30925:238;:::o;31169:225::-;31309:34;31305:1;31297:6;31293:14;31286:58;31378:8;31373:2;31365:6;31361:15;31354:33;31169:225;:::o;31400:242::-;31540:34;31536:1;31528:6;31524:14;31517:58;31605:33;31600:2;31592:6;31588:15;31581:58;31400:242;:::o;31644:174::-;31780:34;31776:1;31768:6;31764:14;31757:58;31644:174;:::o;31820:170::-;31956:30;31952:1;31944:6;31940:14;31933:54;31820:170;:::o;31992:222::-;32128:34;32124:1;32116:6;32112:14;32105:58;32193:17;32188:2;32180:6;32176:15;32169:42;31992:222;:::o;32216:277::-;32352:34;32348:1;32340:6;32336:14;32329:58;32417:34;32412:2;32404:6;32400:15;32393:59;32482:7;32477:2;32469:6;32465:15;32458:32;32216:277;:::o;32495:169::-;32631:29;32627:1;32619:6;32615:14;32608:53;32495:169;:::o;32666:110::-;;:::o;32778:350::-;32914:34;32910:1;32902:6;32898:14;32891:58;32979:34;32974:2;32966:6;32962:15;32955:59;33044:34;33039:2;33031:6;33027:15;33020:59;33109:15;33104:2;33096:6;33092:15;33085:40;32778:350;:::o;33130:279::-;33266:34;33262:1;33254:6;33250:14;33243:58;33331:34;33326:2;33318:6;33314:15;33307:59;33396:9;33391:2;33383:6;33379:15;33372:34;33130:279;:::o;33411:210::-;33547:34;33543:1;33535:6;33531:14;33524:58;33612:5;33607:2;33599:6;33595:15;33588:30;33411:210;:::o;33623:114::-;33692:24;33710:5;33692:24;:::i;:::-;33685:5;33682:35;33672:63;;33731:1;33728;33721:12;33672:63;33623:114;:::o;33739:108::-;33805:21;33820:5;33805:21;:::i;:::-;33798:5;33795:32;33785:60;;33841:1;33838;33831:12;33785:60;33739:108;:::o;33849:112::-;33917:23;33934:5;33917:23;:::i;:::-;33910:5;33907:34;33897:62;;33955:1;33952;33945:12;33897:62;33849:112;:::o;33963:114::-;34032:24;34050:5;34032:24;:::i;:::-;34025:5;34022:35;34012:63;;34071:1;34068;34061:12;34012:63;33963:114;:::o

Swarm Source

ipfs://397d72f8483b148c18833d7c6c5bb4ec4b974a152904371982c9e4e6cf87f982

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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