HYPE Price: $22.45 (+1.41%)
 

Overview

HYPE Balance

HyperEVM LogoHyperEVM LogoHyperEVM Logo0 HYPE

HYPE Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Block
From
To
Withdraw168994072025-10-19 12:03:2198 days ago1760875401IN
0xdD9776C4...68150dE49
0 HYPE0.000073551.93872201
Withdraw Fees168993742025-10-19 12:02:4998 days ago1760875369IN
0xdD9776C4...68150dE49
0 HYPE0.000048761.267
Cancel Request168993502025-10-19 12:02:2598 days ago1760875345IN
0xdD9776C4...68150dE49
0 HYPE0.000066041.267
Cancel Request168993222025-10-19 12:01:5898 days ago1760875318IN
0xdD9776C4...68150dE49
0 HYPE0.000083371.267
Cancel Request168993052025-10-19 12:01:4198 days ago1760875301IN
0xdD9776C4...68150dE49
0 HYPE0.000035460.6704
Cancel Request168992792025-10-19 12:01:1598 days ago1760875275IN
0xdD9776C4...68150dE49
0 HYPE0.000038530.7284
Cancel Request168991932025-10-19 11:59:5198 days ago1760875191IN
0xdD9776C4...68150dE49
0 HYPE0.000032560.6155
Spin166592992025-10-16 18:25:58101 days ago1760639158IN
0xdD9776C4...68150dE49
0.05 HYPE0.000029930.1
Spin166592532025-10-16 18:25:12101 days ago1760639112IN
0xdD9776C4...68150dE49
0.05 HYPE0.000035220.11769102
Spin166592372025-10-16 18:24:57101 days ago1760639097IN
0xdD9776C4...68150dE49
0.05 HYPE0.000029920.1
Spin With Credit166591982025-10-16 18:24:18101 days ago1760639058IN
0xdD9776C4...68150dE49
0 HYPE0.000050250.15607503
Buy Credits166591832025-10-16 18:24:03101 days ago1760639043IN
0xdD9776C4...68150dE49
0.05 HYPE0.000004640.1
Spin With Credit166591572025-10-16 18:23:38101 days ago1760639018IN
0xdD9776C4...68150dE49
0 HYPE0.000053450.16602015
Buy Credits166591422025-10-16 18:23:23101 days ago1760639003IN
0xdD9776C4...68150dE49
0.05 HYPE0.000019240.41442253
Spin With Credit166590612025-10-16 18:22:03101 days ago1760638923IN
0xdD9776C4...68150dE49
0 HYPE0.000034220.10627286
Buy Credits166590432025-10-16 18:21:46101 days ago1760638906IN
0xdD9776C4...68150dE49
0.05 HYPE0.000005840.12589685
Spin With Credit166590152025-10-16 18:21:18101 days ago1760638878IN
0xdD9776C4...68150dE49
0 HYPE0.00003220.1
Buy Credits166589992025-10-16 18:21:02101 days ago1760638862IN
0xdD9776C4...68150dE49
0.05 HYPE0.000004640.1
Spin With Credit166589712025-10-16 18:20:35101 days ago1760638835IN
0xdD9776C4...68150dE49
0 HYPE0.00003220.1
Buy Credits166589522025-10-16 18:20:16101 days ago1760638816IN
0xdD9776C4...68150dE49
0.05 HYPE0.000004950.10676036
Spin With Credit166588002025-10-16 18:17:47101 days ago1760638667IN
0xdD9776C4...68150dE49
0 HYPE0.000177870.55237867
Spin166586202025-10-16 18:14:50101 days ago1760638490IN
0xdD9776C4...68150dE49
0.05 HYPE0.000029920.1
Spin166585952025-10-16 18:14:25101 days ago1760638465IN
0xdD9776C4...68150dE49
0.05 HYPE0.000029930.1
Buy Credits166585642025-10-16 18:13:55101 days ago1760638435IN
0xdD9776C4...68150dE49
0.05 HYPE0.000005510.11876042
Spin With Credit166583752025-10-16 18:10:49101 days ago1760638249IN
0xdD9776C4...68150dE49
0 HYPE0.000542741.68539584
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
168994072025-10-19 12:03:2198 days ago1760875401
0xdD9776C4...68150dE49
72.929 HYPE
168993742025-10-19 12:02:4998 days ago1760875369
0xdD9776C4...68150dE49
15.61 HYPE
168993052025-10-19 12:01:4198 days ago1760875301
0xdD9776C4...68150dE49
0.0475 HYPE
168992792025-10-19 12:01:1598 days ago1760875275
0xdD9776C4...68150dE49
0.0475 HYPE
168991932025-10-19 11:59:5198 days ago1760875191
0xdD9776C4...68150dE49
0.0475 HYPE
166593032025-10-16 18:26:01101 days ago1760639161
0xdD9776C4...68150dE49
0.0475 HYPE
166592562025-10-16 18:25:15101 days ago1760639115
0xdD9776C4...68150dE49
0.0475 HYPE
166592402025-10-16 18:25:00101 days ago1760639100
0xdD9776C4...68150dE49
0.0475 HYPE
166591602025-10-16 18:23:41101 days ago1760639021
0xdD9776C4...68150dE49
0.0475 HYPE
166590642025-10-16 18:22:06101 days ago1760638926
0xdD9776C4...68150dE49
0.095 HYPE
166590192025-10-16 18:21:22101 days ago1760638882
0xdD9776C4...68150dE49
0.0475 HYPE
166589752025-10-16 18:20:39101 days ago1760638839
0xdD9776C4...68150dE49
0.0475 HYPE
166586232025-10-16 18:14:53101 days ago1760638493
0xdD9776C4...68150dE49
0.0475 HYPE
166585982025-10-16 18:14:28101 days ago1760638468
0xdD9776C4...68150dE49
0.1425 HYPE
166583782025-10-16 18:10:52101 days ago1760638252
0xdD9776C4...68150dE49
0.1425 HYPE
166579952025-10-16 18:04:35101 days ago1760637875
0xdD9776C4...68150dE49
0.0475 HYPE
166579512025-10-16 18:03:52101 days ago1760637832
0xdD9776C4...68150dE49
0.0475 HYPE
166579302025-10-16 18:03:31101 days ago1760637811
0xdD9776C4...68150dE49
0.0475 HYPE
166579202025-10-16 18:03:21101 days ago1760637801
0xdD9776C4...68150dE49
0.2375 HYPE
166578542025-10-16 18:02:16101 days ago1760637736
0xdD9776C4...68150dE49
0.1425 HYPE
166578432025-10-16 18:02:05101 days ago1760637725
0xdD9776C4...68150dE49
0.0475 HYPE
166577952025-10-16 18:01:18101 days ago1760637678
0xdD9776C4...68150dE49
0.0475 HYPE
166577372025-10-16 18:00:21101 days ago1760637621
0xdD9776C4...68150dE49
0.0475 HYPE
166577302025-10-16 18:00:14101 days ago1760637614
0xdD9776C4...68150dE49
0.0475 HYPE
166576922025-10-16 17:59:37101 days ago1760637577
0xdD9776C4...68150dE49
0.0475 HYPE
View All Internal Transactions
Cross-Chain Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SlotMachine5

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at hyperevmscan.io on 2025-10-08
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

interface IVRF {
    function requestRandomness() external returns (uint256 requestId);
}

contract SlotMachine5 {
    IVRF public vrf;
    address public owner;
    address public owner2 = 0x80874B9Dbe983adF0dB56Cc71F0167D8385c7A61;

    uint256 public FIXED_BET = 0.05 ether;
    uint256 public feeBps = 100; // 1%

    // Sum of maximum possible payouts (50x bet) for all pending spins
    uint256 public pendingExposure;

    mapping(uint256 => address) public requestToPlayer;
    mapping(uint256 => uint256) public requestToBet; // net bet
    mapping(uint256 => uint256) public requestTimestamp;
    // Prepaid credits per player (1 credit = FIXED_BET gross)
    mapping(address => uint256) public creditsBalance;
    // Track whether a request consumed a prepaid credit (impacts cancel flow)
    mapping(uint256 => bool) public requestUsedCredit;

    // Track all active request IDs
    uint256[] public activeRequestIds;
    mapping(uint256 => bool) public isRequestActive;

    uint256 public accumulatedFees;
    uint256 public constant CANCEL_DELAY = 1 minutes;
    uint256 public constant PLAYER_CANCEL_DELAY = 5 minutes;

    // Wager statistics
    uint256 public totalSpins;
    uint256 public totalWagered;
    uint256 public totalPaidOut;

    event SpinRequested(
        address indexed player,
        uint256 grossBet,
        uint256 netBet,
        uint256 requestId
    );
    event SpinResult(
        address indexed player,
        uint256 bet,
        uint256[5] reels,
        uint256 payout,
        uint256 randomnessRound
    );
    event SpinCancelled(
        address indexed player,
        uint256 netBet,
        uint256 requestId
    );

    modifier onlyOwners() {
        require(msg.sender == owner || msg.sender == owner2, "Not owner");
        _;
    }

    constructor(address _vrf) {
        vrf = IVRF(_vrf);
        owner = msg.sender;
    }

    function updateFixedBet(uint256 newFixedBet) external onlyOwners {
        FIXED_BET = newFixedBet;
    }

    function updateFeeBps(uint256 newFeeBps) external onlyOwners {
        feeBps = newFeeBps;
    }

    function updateOwner(address newOwner) external onlyOwners {
        owner = newOwner;
    }

    function updateOwner2(address newOwner2) external onlyOwners {
        owner2 = newOwner2;
    }

    function updateVrf(address newVrf) external onlyOwners {
        vrf = IVRF(newVrf);
    }

    // deposit bankroll
    function fund() external payable {}

    // withdraw bankroll (cannot withdraw funds reserved for pending exposure)
    function withdraw(uint256 amount) external onlyOwners {
        //Disable for now
        require(
            amount <= address(this).balance - pendingExposure,
            "Insufficient free balance"
        );
        payable(owner).transfer(amount);
    }

    function spin() external payable {
        require(
            msg.value == FIXED_BET,
            "Bet must be exactly equal to FIXED_BET"
        );

        uint256 fee = (FIXED_BET * feeBps) / 10_000;
        uint256 netBet = FIXED_BET - fee;

        // Reserve exposure for this pending spin using net bet (50x max payout)
        uint256 newExposure = pendingExposure + (netBet * 50);
        require(address(this).balance >= newExposure, "Bankroll too low");

        uint256 requestId = vrf.requestRandomness();
        require(requestToPlayer[requestId] == address(0), "Duplicate request");
        requestToPlayer[requestId] = msg.sender;
        requestToBet[requestId] = netBet;
        requestTimestamp[requestId] = block.timestamp;
        pendingExposure = newExposure;

        // Track this as an active request
        activeRequestIds.push(requestId);
        isRequestActive[requestId] = true;

        // Update wager statistics
        totalSpins++;
        totalWagered += FIXED_BET;

        // Accumulate fee to be withdrawn later
        accumulatedFees += fee;

        emit SpinRequested(msg.sender, msg.value, netBet, requestId);
    }

    // Spin using one prepaid credit instead of paying ETH now
    function spinWithCredit() external {
        require(creditsBalance[msg.sender] >= 1, "No credits");

        uint256 fee = (FIXED_BET * feeBps) / 10_000;
        uint256 netBet = FIXED_BET - fee;

        // Reserve exposure for this pending spin using net bet (50x max payout)
        uint256 newExposure = pendingExposure + (netBet * 50);
        require(address(this).balance >= newExposure, "Bankroll too low");

        // Consume one credit
        unchecked {
            creditsBalance[msg.sender] -= 1;
        }

        uint256 requestId = vrf.requestRandomness();
        require(requestToPlayer[requestId] == address(0), "Duplicate request");
        requestToPlayer[requestId] = msg.sender;
        requestToBet[requestId] = netBet;
        requestTimestamp[requestId] = block.timestamp;
        requestUsedCredit[requestId] = true;
        pendingExposure = newExposure;

        // Track this as an active request
        activeRequestIds.push(requestId);
        isRequestActive[requestId] = true;

        // Update wager statistics (same as cash spin)
        totalSpins++;
        totalWagered += FIXED_BET;

        // Accumulate fee to be withdrawn later
        accumulatedFees += fee;

        // Emit with grossBet = FIXED_BET (msg.value is 0 here)
        emit SpinRequested(msg.sender, FIXED_BET, netBet, requestId);
    }

    // VRF callback
    function fulfillRandomness(
        uint256 requestId,
        uint256 rand,
        uint256 randomnessRound
    ) external {
        require(msg.sender == address(vrf), "Only VRF");

        address player = requestToPlayer[requestId];
        uint256 bet = requestToBet[requestId];
        require(player != address(0), "No such request");

        delete requestToPlayer[requestId];
        delete requestToBet[requestId];
        delete requestUsedCredit[requestId];

        // Mark request as inactive
        isRequestActive[requestId] = false;

        // Release the reserved exposure for this request
        pendingExposure -= (bet * 50);

        // derive 5 reels using hashed expansions to avoid digit bias
        uint256[5] memory reels;
        reels[0] = uint256(keccak256(abi.encodePacked(rand, uint256(0)))) % 10;
        reels[1] = uint256(keccak256(abi.encodePacked(rand, uint256(1)))) % 10;
        reels[2] = uint256(keccak256(abi.encodePacked(rand, uint256(2)))) % 10;
        reels[3] = uint256(keccak256(abi.encodePacked(rand, uint256(3)))) % 10;
        reels[4] = uint256(keccak256(abi.encodePacked(rand, uint256(4)))) % 10;

        uint256 payout = _calculatePayout(reels, bet);

        if (payout > 0) {
            totalPaidOut += payout;
            payable(player).transfer(payout);
        }

        emit SpinResult(player, bet, reels, payout, randomnessRound);
    }

    function setFeeBps(uint256 newFeeBps) external onlyOwners {
        require(newFeeBps <= 500, "Fee too high");
        feeBps = newFeeBps;
    }

    function cancelRequest(uint256 requestId) external {
        address player = requestToPlayer[requestId];
        uint256 bet = requestToBet[requestId];
        require(player != address(0), "No such request");

        uint256 createdAt = requestTimestamp[requestId];
        if (msg.sender == owner || msg.sender == owner2) {
            require(block.timestamp >= createdAt + CANCEL_DELAY, "Too early");
        } else if (msg.sender == player) {
            require(
                block.timestamp >= createdAt + PLAYER_CANCEL_DELAY,
                "Too early"
            );
        } else {
            revert("Not authorized");
        }

        delete requestToPlayer[requestId];
        delete requestToBet[requestId];
        delete requestTimestamp[requestId];

        // Mark request as inactive
        isRequestActive[requestId] = false;

        // Release exposure and handle refund/credit restore
        pendingExposure -= (bet * 50);
        if (requestUsedCredit[requestId]) {
            // Restore one credit; fee is retained (mirrors cash cancel behavior)
            creditsBalance[player] += 1;
            delete requestUsedCredit[requestId];
        } else {
            // Cash path: refund net bet
            payable(player).transfer(bet);
        }

        emit SpinCancelled(player, bet, requestId);
    }

    function withdrawFees(uint256 amount) external onlyOwners {
        require(amount <= accumulatedFees, "Amount exceeds fees");
        require(
            amount <= address(this).balance - pendingExposure,
            "Insufficient free balance"
        ); // deploy for now
        accumulatedFees -= amount;
        payable(owner).transfer(amount);
    }

    // Buy multiple credits at once. Requires msg.value == credits * FIXED_BET
    function buyCredits(uint256 credits) external payable {
        require(credits > 0, "credits=0");
        require(msg.value == FIXED_BET * credits, "Incorrect ETH");

        // Fees are collected per spin to keep accounting identical; we only store credits here
        creditsBalance[msg.sender] += credits;
    }

    function getRTPBps()
        external
        view
        returns (uint256 preFeeRtpBps, uint256 effectiveRtpBps)
    {
        // Based on 5-reel structure with 50x max payout
        // 50x: 1 combo = 0.05% RTP
        // 25x: 9 combos = 0.225% RTP
        // 10x: 450 combos (45 four-7s + 405 four-of-kind) = 4.5% RTP
        // 5x: 900 combos (full house) = 4.5% RTP
        // 3x: 13,500 combos (1,350 three-7s + 12,150 three-of-kind) = 40.5% RTP
        // 2x: 8,100 combos (two pairs) = 16.2% RTP
        // 1x: 31,000 combos (27,000 one pair + 4,000 sequential) = 31% RTP
        // Total theoretical RTP: 96.975%
        preFeeRtpBps = 9_697;
        effectiveRtpBps = (preFeeRtpBps * (10_000 - feeBps)) / 10_000;
    }

    // Get all pending requests that can be cancelled
    function getPendingRequests()
        external
        view
        returns (
            uint256[] memory requestIds,
            address[] memory players,
            uint256[] memory bets,
            uint256[] memory timestamps
        )
    {
        uint256 count = 0;

        // Count active requests
        for (uint256 i = 0; i < activeRequestIds.length; i++) {
            if (isRequestActive[activeRequestIds[i]]) {
                count++;
            }
        }

        // Populate arrays
        requestIds = new uint256[](count);
        players = new address[](count);
        bets = new uint256[](count);
        timestamps = new uint256[](count);

        uint256 index = 0;
        for (uint256 i = 0; i < activeRequestIds.length; i++) {
            uint256 requestId = activeRequestIds[i];
            if (isRequestActive[requestId]) {
                requestIds[index] = requestId;
                players[index] = requestToPlayer[requestId];
                bets[index] = requestToBet[requestId];
                timestamps[index] = requestTimestamp[requestId];
                index++;
            }
        }

        return (requestIds, players, bets, timestamps);
    }

    // Clean up inactive requests from the array (gas optimization)
    function cleanupInactiveRequests() external {
        uint256[] memory newActiveRequests = new uint256[](
            activeRequestIds.length
        );
        uint256 count = 0;

        for (uint256 i = 0; i < activeRequestIds.length; i++) {
            if (isRequestActive[activeRequestIds[i]]) {
                newActiveRequests[count] = activeRequestIds[i];
                count++;
            }
        }

        // Resize and update
        activeRequestIds = new uint256[](count);
        for (uint256 i = 0; i < count; i++) {
            activeRequestIds[i] = newActiveRequests[i];
        }
    }

    // Get cancellable requests (past timeout)
    function getCancellableRequests() external view returns (uint256[] memory) {
        uint256 count = 0;

        // Count cancellable
        for (uint256 i = 0; i < activeRequestIds.length; i++) {
            uint256 requestId = activeRequestIds[i];
            if (isRequestActive[requestId]) {
                uint256 timestamp = requestTimestamp[requestId];
                if (block.timestamp >= timestamp + CANCEL_DELAY) {
                    count++;
                }
            }
        }

        // Populate array
        uint256[] memory cancellable = new uint256[](count);
        uint256 index = 0;

        for (uint256 i = 0; i < activeRequestIds.length; i++) {
            uint256 requestId = activeRequestIds[i];
            if (isRequestActive[requestId]) {
                uint256 timestamp = requestTimestamp[requestId];
                if (block.timestamp >= timestamp + CANCEL_DELAY) {
                    cancellable[index] = requestId;
                    index++;
                }
            }
        }

        return cancellable;
    }

    function _calculatePayout(
        uint256[5] memory reels,
        uint256 bet
    ) internal pure returns (uint256) {
        // 50x: Five 7s
        if (
            reels[0] == 7 &&
            reels[1] == 7 &&
            reels[2] == 7 &&
            reels[3] == 7 &&
            reels[4] == 7
        ) {
            return bet * 50;
        }

        // 25x: Five of a kind (not 7s)
        if (_isFiveOfAKind(reels) && reels[0] != 7) {
            return bet * 25;
        }

        // 10x: Four 7s or Four of a kind
        if (_hasFourSevens(reels) || _isFourOfAKind(reels)) {
            return bet * 10;
        }

        // 5x: Full house (3 of a kind + pair)
        if (_isFullHouse(reels)) {
            return bet * 5;
        }

        // 3x: Three 7s or Three of a kind
        if (_hasThreeSevens(reels) || _isThreeOfAKind(reels)) {
            return bet * 3;
        }

        // 2x: Two pairs
        if (_isTwoPairs(reels)) {
            return bet * 2;
        }

        // 1x: One pair or Sequential run
        if (_hasOnePair(reels) || _isSequential(reels)) {
            return bet * 1;
        }

        return 0;
    }

    function _isFiveOfAKind(
        uint256[5] memory reels
    ) internal pure returns (bool) {
        return
            reels[0] == reels[1] &&
            reels[1] == reels[2] &&
            reels[2] == reels[3] &&
            reels[3] == reels[4];
    }

    function _isFourOfAKind(
        uint256[5] memory reels
    ) internal pure returns (bool) {
        uint256[10] memory counts;
        for (uint i = 0; i < 5; i++) {
            counts[reels[i]]++;
        }
        for (uint i = 0; i < 10; i++) {
            if (counts[i] == 4) return true;
        }
        return false;
    }

    function _isFullHouse(
        uint256[5] memory reels
    ) internal pure returns (bool) {
        uint256[10] memory counts;
        for (uint i = 0; i < 5; i++) {
            counts[reels[i]]++;
        }
        bool hasThree = false;
        bool hasTwo = false;
        for (uint i = 0; i < 10; i++) {
            if (counts[i] == 3) hasThree = true;
            if (counts[i] == 2) hasTwo = true;
        }
        return hasThree && hasTwo;
    }

    function _isThreeOfAKind(
        uint256[5] memory reels
    ) internal pure returns (bool) {
        uint256[10] memory counts;
        for (uint i = 0; i < 5; i++) {
            counts[reels[i]]++;
        }
        for (uint i = 0; i < 10; i++) {
            if (counts[i] == 3) return true;
        }
        return false;
    }

    function _isTwoPairs(uint256[5] memory reels) internal pure returns (bool) {
        uint256[10] memory counts;
        for (uint i = 0; i < 5; i++) {
            counts[reels[i]]++;
        }
        uint256 pairs = 0;
        for (uint i = 0; i < 10; i++) {
            if (counts[i] == 2) pairs++;
        }
        return pairs == 2;
    }

    function _isSequential(
        uint256[5] memory reels
    ) internal pure returns (bool) {
        // Sort the reels first
        uint256[5] memory sorted = reels;
        for (uint i = 0; i < 4; i++) {
            for (uint j = i + 1; j < 5; j++) {
                if (sorted[i] > sorted[j]) {
                    uint256 temp = sorted[i];
                    sorted[i] = sorted[j];
                    sorted[j] = temp;
                }
            }
        }

        // Check if consecutive
        for (uint i = 0; i < 4; i++) {
            if (sorted[i + 1] != sorted[i] + 1) return false;
        }
        return true;
    }

    function _hasFourSevens(
        uint256[5] memory reels
    ) internal pure returns (bool) {
        uint256 count = 0;
        for (uint i = 0; i < 5; i++) {
            if (reels[i] == 7) count++;
        }
        return count == 4;
    }

    function _hasThreeSevens(
        uint256[5] memory reels
    ) internal pure returns (bool) {
        uint256 count = 0;
        for (uint i = 0; i < 5; i++) {
            if (reels[i] == 7) count++;
        }
        return count == 3;
    }

    function _hasOnePair(uint256[5] memory reels) internal pure returns (bool) {
        uint256[10] memory counts;
        for (uint i = 0; i < 5; i++) {
            counts[reels[i]]++;
        }
        uint256 pairs = 0;
        for (uint i = 0; i < 10; i++) {
            if (counts[i] == 2) pairs++;
        }
        return pairs == 1;
    }
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_vrf","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"netBet","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"requestId","type":"uint256"}],"name":"SpinCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"grossBet","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"netBet","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"requestId","type":"uint256"}],"name":"SpinRequested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"player","type":"address"},{"indexed":false,"internalType":"uint256","name":"bet","type":"uint256"},{"indexed":false,"internalType":"uint256[5]","name":"reels","type":"uint256[5]"},{"indexed":false,"internalType":"uint256","name":"payout","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"randomnessRound","type":"uint256"}],"name":"SpinResult","type":"event"},{"inputs":[],"name":"CANCEL_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"FIXED_BET","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PLAYER_CANCEL_DELAY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"accumulatedFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"activeRequestIds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"credits","type":"uint256"}],"name":"buyCredits","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"requestId","type":"uint256"}],"name":"cancelRequest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cleanupInactiveRequests","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"creditsBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeBps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"requestId","type":"uint256"},{"internalType":"uint256","name":"rand","type":"uint256"},{"internalType":"uint256","name":"randomnessRound","type":"uint256"}],"name":"fulfillRandomness","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"fund","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"getCancellableRequests","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getPendingRequests","outputs":[{"internalType":"uint256[]","name":"requestIds","type":"uint256[]"},{"internalType":"address[]","name":"players","type":"address[]"},{"internalType":"uint256[]","name":"bets","type":"uint256[]"},{"internalType":"uint256[]","name":"timestamps","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRTPBps","outputs":[{"internalType":"uint256","name":"preFeeRtpBps","type":"uint256"},{"internalType":"uint256","name":"effectiveRtpBps","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"isRequestActive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner2","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingExposure","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"requestTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"requestToBet","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"requestToPlayer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"requestUsedCredit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFeeBps","type":"uint256"}],"name":"setFeeBps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"spin","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"spinWithCredit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalPaidOut","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSpins","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalWagered","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFeeBps","type":"uint256"}],"name":"updateFeeBps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newFixedBet","type":"uint256"}],"name":"updateFixedBet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"updateOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner2","type":"address"}],"name":"updateOwner2","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newVrf","type":"address"}],"name":"updateVrf","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vrf","outputs":[{"internalType":"contract IVRF","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdrawFees","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040527380874b9dbe983adf0db56cc71f0167d8385c7a6160025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555066b1a2bc2ec500006003556064600455348015610073575f5ffd5b506040516144f73803806144f783398181016040528101906100959190610178565b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055503360015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550506101a3565b5f5ffd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6101478261011e565b9050919050565b6101578161013d565b8114610161575f5ffd5b50565b5f815190506101728161014e565b92915050565b5f6020828403121561018d5761018c61011a565b5b5f61019a84828501610164565b91505092915050565b614347806101b05f395ff3fe608060405260043610610219575f3560e01c80637496c5a6116101225780639dbc517b116100aa578063b60d42881161006e578063b60d428814610785578063c13021851461078f578063c3344ce6146107a5578063e1c99d1b146107e1578063f0acd7d51461081d57610219565b80639dbc517b146106a2578063aa5414d2146106cc578063afd49b8d146106f4578063b020d2ef1461071f578063b22d87b71461075b57610219565b80638da5cb5b116100f15780638da5cb5b146105c2578063901b2036146105ec5780639213f67c1461061657806396a1cd271461063e5780639cd6cc271461066657610219565b80637496c5a61461051957806380a1f71214610543578063880cdc31146105705780638a14f12c1461059857610219565b80632e1a7d4d116101a55780635270972511610174578063527097251461044d578063587f5ed7146104775780635e318e07146104a157806368074564146104c957806372c27b62146104f157610219565b80632e1a7d4d146103ab5780633015394c146103d35780633d4dd9db146103fb5780634fbc525a1461043757610219565b80631357e1dc116101ec5780631357e1dc146102c75780631574ac44146102f1578063188736ae1461031b57806324a9d853146103575780632dd853451461038157610219565b80630359a8a31461021d5780630c4dfe3f146102595780630c949043146102755780630d68dd151461029f575b5f5ffd5b348015610228575f5ffd5b50610243600480360381019061023e919061359c565b610827565b60405161025091906135e1565b60405180910390f35b610273600480360381019061026e919061359c565b610844565b005b348015610280575f5ffd5b5061028961092b565b6040516102969190613674565b60405180910390f35b3480156102aa575f5ffd5b506102c560048036038101906102c0919061359c565b61094f565b005b3480156102d2575f5ffd5b506102db610a3f565b6040516102e8919061369c565b60405180910390f35b3480156102fc575f5ffd5b50610305610a45565b604051610312919061369c565b60405180910390f35b348015610326575f5ffd5b50610341600480360381019061033c919061359c565b610a4b565b60405161034e91906136d5565b60405180910390f35b348015610362575f5ffd5b5061036b610a7b565b604051610378919061369c565b60405180910390f35b34801561038c575f5ffd5b50610395610a81565b6040516103a2919061369c565b60405180910390f35b3480156103b6575f5ffd5b506103d160048036038101906103cc919061359c565b610a87565b005b3480156103de575f5ffd5b506103f960048036038101906103f4919061359c565b610c25565b005b348015610406575f5ffd5b50610421600480360381019061041c919061359c565b611093565b60405161042e919061369c565b60405180910390f35b348015610442575f5ffd5b5061044b6110a8565b005b348015610458575f5ffd5b50610461611260565b60405161046e91906136d5565b60405180910390f35b348015610482575f5ffd5b5061048b611285565b604051610498919061369c565b60405180910390f35b3480156104ac575f5ffd5b506104c760048036038101906104c2919061359c565b61128b565b005b3480156104d4575f5ffd5b506104ef60048036038101906104ea9190613718565b611486565b005b3480156104fc575f5ffd5b506105176004803603810190610512919061359c565b6115af565b005b348015610524575f5ffd5b5061052d6116e4565b60405161053a919061369c565b60405180910390f35b34801561054e575f5ffd5b506105576116e9565b60405161056794939291906138b1565b60405180910390f35b34801561057b575f5ffd5b5061059660048036038101906105919190613718565b611a0c565b005b3480156105a3575f5ffd5b506105ac611b35565b6040516105b9919061369c565b60405180910390f35b3480156105cd575f5ffd5b506105d6611b3b565b6040516105e391906136d5565b60405180910390f35b3480156105f7575f5ffd5b50610600611b60565b60405161060d919061369c565b60405180910390f35b348015610621575f5ffd5b5061063c60048036038101906106379190613910565b611b66565b005b348015610649575f5ffd5b50610664600480360381019061065f919061359c565b611fdc565b005b348015610671575f5ffd5b5061068c60048036038101906106879190613718565b6120cc565b604051610699919061369c565b60405180910390f35b3480156106ad575f5ffd5b506106b66120e1565b6040516106c3919061369c565b60405180910390f35b3480156106d7575f5ffd5b506106f260048036038101906106ed9190613718565b6120e7565b005b3480156106ff575f5ffd5b5061070861220f565b604051610716929190613960565b60405180910390f35b34801561072a575f5ffd5b506107456004803603810190610740919061359c565b612244565b604051610752919061369c565b60405180910390f35b348015610766575f5ffd5b5061076f612259565b60405161077c9190613987565b60405180910390f35b61078d612412565b005b34801561079a575f5ffd5b506107a3612414565b005b3480156107b0575f5ffd5b506107cb60048036038101906107c6919061359c565b61283d565b6040516107d891906135e1565b60405180910390f35b3480156107ec575f5ffd5b506108076004803603810190610802919061359c565b61285a565b604051610814919061369c565b60405180910390f35b61082561287a565b005b600c602052805f5260405f205f915054906101000a900460ff1681565b5f8111610886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087d90613a01565b60405180910390fd5b806003546108949190613a4c565b34146108d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cc90613ad7565b60405180910390fd5b8060095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109219190613af5565b9250508190555050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109f6575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2c90613b72565b60405180910390fd5b8060038190555050565b60105481565b60035481565b6006602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b61012c81565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610b2e575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6490613b72565b60405180910390fd5b60055447610b7b9190613b90565b811115610bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb490613c0d565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610c21573d5f5f3e3d5ffd5b5050565b5f60065f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60075f8481526020019081526020015f205490505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613c75565b60405180910390fd5b5f60085f8581526020019081526020015f2054905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d98575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15610df157603c81610daa9190613af5565b421015610dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de390613cdd565b60405180910390fd5b610eb5565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610e795761012c81610e329190613af5565b421015610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b90613cdd565b60405180910390fd5b610eb4565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eab90613d45565b60405180910390fd5b5b60065f8581526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560075f8581526020019081526020015f205f905560085f8581526020019081526020015f205f90555f600c5f8681526020019081526020015f205f6101000a81548160ff021916908315150217905550603282610f459190613a4c565b60055f828254610f559190613b90565b92505081905550600a5f8581526020019081526020015f205f9054906101000a900460ff1615610ff857600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610fcc9190613af5565b92505081905550600a5f8581526020019081526020015f205f6101000a81549060ff021916905561103d565b8273ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f1935050505015801561103b573d5f5f3e3d5ffd5b505b8273ffffffffffffffffffffffffffffffffffffffff167fa544da4d3ac6802ca7f1593339bf95eea14d28be8682fc911784cb81037ea03d8386604051611085929190613960565b60405180910390a250505050565b6007602052805f5260405f205f915090505481565b5f600b8054905067ffffffffffffffff8111156110c8576110c7613d63565b5b6040519080825280602002602001820160405280156110f65781602001602082028036833780820191505090505b5090505f5f90505f5f90505b600b805490508110156111a657600c5f600b838154811061112657611125613d90565b5b905f5260205f20015481526020019081526020015f205f9054906101000a900460ff161561119957600b818154811061116257611161613d90565b5b905f5260205f20015483838151811061117e5761117d613d90565b5b602002602001018181525050818061119590613dbd565b9250505b8080600101915050611102565b508067ffffffffffffffff8111156111c1576111c0613d63565b5b6040519080825280602002602001820160405280156111ef5781602001602082028036833780820191505090505b50600b90805190602001906112059291906134ba565b505f5f90505b8181101561125b5782818151811061122657611225613d90565b5b6020026020010151600b828154811061124257611241613d90565b5b905f5260205f200181905550808060010191505061120b565b505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611332575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136890613b72565b60405180910390fd5b600d548111156113b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ad90613e4e565b60405180910390fd5b600554476113c49190613b90565b811115611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd90613c0d565b60405180910390fd5b80600d5f8282546114179190613b90565b9250508190555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611482573d5f5f3e3d5ffd5b5050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061152d575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61156c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156390613b72565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611656575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c90613b72565b60405180910390fd5b6101f48111156116da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d190613eb6565b60405180910390fd5b8060048190555050565b603c81565b6060806060805f5f90505f5f90505b600b8054905081101561176057600c5f600b838154811061171c5761171b613d90565b5b905f5260205f20015481526020019081526020015f205f9054906101000a900460ff161561175357818061174f90613dbd565b9250505b80806001019150506116f8565b508067ffffffffffffffff81111561177b5761177a613d63565b5b6040519080825280602002602001820160405280156117a95781602001602082028036833780820191505090505b5094508067ffffffffffffffff8111156117c6576117c5613d63565b5b6040519080825280602002602001820160405280156117f45781602001602082028036833780820191505090505b5093508067ffffffffffffffff81111561181157611810613d63565b5b60405190808252806020026020018201604052801561183f5781602001602082028036833780820191505090505b5092508067ffffffffffffffff81111561185c5761185b613d63565b5b60405190808252806020026020018201604052801561188a5781602001602082028036833780820191505090505b5091505f5f90505f5f90505b600b80549050811015611a03575f600b82815481106118b8576118b7613d90565b5b905f5260205f2001549050600c5f8281526020019081526020015f205f9054906101000a900460ff16156119f557808884815181106118fa576118f9613d90565b5b60200260200101818152505060065f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687848151811061194a57611949613d90565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060075f8281526020019081526020015f20548684815181106119a9576119a8613d90565b5b60200260200101818152505060085f8281526020019081526020015f20548584815181106119da576119d9613d90565b5b60200260200101818152505082806119f190613dbd565b9350505b508080600101915050611896565b50505090919293565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611ab3575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae990613b72565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611beb90613f1e565b60405180910390fd5b5f60065f8581526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60075f8681526020019081526020015f205490505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca290613c75565b60405180910390fd5b60065f8681526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560075f8681526020019081526020015f205f9055600a5f8681526020019081526020015f205f6101000a81549060ff02191690555f600c5f8781526020019081526020015f205f6101000a81548160ff021916908315150217905550603281611d479190613a4c565b60055f828254611d579190613b90565b92505081905550611d66613505565b600a855f604051602001611d7b929190613f5c565b604051602081830303815290604052805190602001205f1c611d9d9190613fb4565b815f60058110611db057611daf613d90565b5b602002018181525050600a856001604051602001611dcf929190613f5c565b604051602081830303815290604052805190602001205f1c611df19190613fb4565b81600160058110611e0557611e04613d90565b5b602002018181525050600a856002604051602001611e24929190613f5c565b604051602081830303815290604052805190602001205f1c611e469190613fb4565b81600260058110611e5a57611e59613d90565b5b602002018181525050600a856003604051602001611e79929190613f5c565b604051602081830303815290604052805190602001205f1c611e9b9190613fb4565b81600360058110611eaf57611eae613d90565b5b602002018181525050600a856004604051602001611ece929190613f5c565b604051602081830303815290604052805190602001205f1c611ef09190613fb4565b81600460058110611f0457611f03613d90565b5b6020020181815250505f611f188284612bf0565b90505f811115611f7f578060105f828254611f339190613af5565b925050819055508373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f7d573d5f5f3e3d5ffd5b505b8373ffffffffffffffffffffffffffffffffffffffff167f139d06b76d70186e722e6fb47385e58acb1de894fcb4dbccc9675420d1ae0cd384848489604051611fcb9493929190614063565b60405180910390a250505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612083575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b990613b72565b60405180910390fd5b8060048190555050565b6009602052805f5260405f205f915090505481565b60055481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061218e575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6121cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c490613b72565b60405180910390fd5b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f5f6125e191506127106004546127106122299190613b90565b836122349190613a4c565b61223e91906140a7565b90509091565b6008602052805f5260405f205f915090505481565b60605f5f90505f5f90505b600b805490508110156122fb575f600b828154811061228657612285613d90565b5b905f5260205f2001549050600c5f8281526020019081526020015f205f9054906101000a900460ff16156122ed575f60085f8381526020019081526020015f20549050603c816122d69190613af5565b42106122eb5783806122e790613dbd565b9450505b505b508080600101915050612264565b505f8167ffffffffffffffff81111561231757612316613d63565b5b6040519080825280602002602001820160405280156123455781602001602082028036833780820191505090505b5090505f5f90505f5f90505b600b80549050811015612408575f600b828154811061237357612372613d90565b5b905f5260205f2001549050600c5f8281526020019081526020015f205f9054906101000a900460ff16156123fa575f60085f8381526020019081526020015f20549050603c816123c39190613af5565b42106123f857818585815181106123dd576123dc613d90565b5b60200260200101818152505083806123f490613dbd565b9450505b505b508080600101915050612351565b5081935050505090565b565b600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248c90614121565b60405180910390fd5b5f6127106004546003546124a99190613a4c565b6124b391906140a7565b90505f816003546124c49190613b90565b90505f6032826124d49190613a4c565b6005546124e19190613af5565b905080471015612526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251d90614189565b60405180910390fd5b600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8413b076040518163ffffffff1660e01b81526004016020604051808303815f875af11580156125dc573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061260091906141bb565b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269790614230565b60405180910390fd5b3360065f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260075f8381526020019081526020015f20819055504260085f8381526020019081526020015f20819055506001600a5f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555081600581905550600b81908060018154018082558091505060019003905f5260205f20015f90919091909150556001600c5f8381526020019081526020015f205f6101000a81548160ff021916908315150217905550600e5f8154809291906127ac90613dbd565b9190505550600354600f5f8282546127c49190613af5565b9250508190555083600d5f8282546127dc9190613af5565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f028ea032d3f63def233c8de5202292c832dd47496403016be7bf9a4d11349048600354858460405161282f9392919061424e565b60405180910390a250505050565b600a602052805f5260405f205f915054906101000a900460ff1681565b600b8181548110612869575f80fd5b905f5260205f20015f915090505481565b60035434146128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b5906142f3565b60405180910390fd5b5f6127106004546003546128d29190613a4c565b6128dc91906140a7565b90505f816003546128ed9190613b90565b90505f6032826128fd9190613a4c565b60055461290a9190613af5565b90508047101561294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294690614189565b60405180910390fd5b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8413b076040518163ffffffff1660e01b81526004016020604051808303815f875af11580156129ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129de91906141bb565b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7590614230565b60405180910390fd5b3360065f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260075f8381526020019081526020015f20819055504260085f8381526020019081526020015f208190555081600581905550600b81908060018154018082558091505060019003905f5260205f20015f90919091909150556001600c5f8381526020019081526020015f205f6101000a81548160ff021916908315150217905550600e5f815480929190612b6190613dbd565b9190505550600354600f5f828254612b799190613af5565b9250508190555083600d5f828254612b919190613af5565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f028ea032d3f63def233c8de5202292c832dd47496403016be7bf9a4d11349048348584604051612be29392919061424e565b60405180910390a250505050565b5f6007835f60058110612c0657612c05613d90565b5b6020020151148015612c305750600783600160058110612c2957612c28613d90565b5b6020020151145b8015612c545750600783600260058110612c4d57612c4c613d90565b5b6020020151145b8015612c785750600783600360058110612c7157612c70613d90565b5b6020020151145b8015612c9c5750600783600460058110612c9557612c94613d90565b5b6020020151145b15612cb557603282612cae9190613a4c565b9050612dd9565b612cbe83612ddf565b8015612ce257506007835f60058110612cda57612cd9613d90565b5b602002015114155b15612cfb57601982612cf49190613a4c565b9050612dd9565b612d0483612eca565b80612d145750612d1383612f25565b5b15612d2d57600a82612d269190613a4c565b9050612dd9565b612d3683612fda565b15612d4f57600582612d489190613a4c565b9050612dd9565b612d58836130bf565b80612d685750612d678361311a565b5b15612d8157600382612d7a9190613a4c565b9050612dd9565b612d8a836131cf565b15612da357600282612d9c9190613a4c565b9050612dd9565b612dac8361328f565b80612dbc5750612dbb8361334f565b5b15612dd557600182612dce9190613a4c565b9050612dd9565b5f90505b92915050565b5f81600160058110612df457612df3613d90565b5b6020020151825f60058110612e0c57612e0b613d90565b5b6020020151148015612e4d575081600260058110612e2d57612e2c613d90565b5b602002015182600160058110612e4657612e45613d90565b5b6020020151145b8015612e88575081600360058110612e6857612e67613d90565b5b602002015182600260058110612e8157612e80613d90565b5b6020020151145b8015612ec3575081600460058110612ea357612ea2613d90565b5b602002015182600360058110612ebc57612ebb613d90565b5b6020020151145b9050919050565b5f5f5f90505f5f90505b6005811015612f18576007848260058110612ef257612ef1613d90565b5b602002015103612f0b578180612f0790613dbd565b9250505b8080600101915050612ed4565b5060048114915050919050565b5f612f2e613527565b5f5f90505b6005811015612f895781848260058110612f5057612f4f613d90565b5b6020020151600a8110612f6657612f65613d90565b5b602002018051809190612f7890613dbd565b815250508080600101915050612f33565b505f5f90505b600a811015612fcf5760048282600a8110612fad57612fac613d90565b5b602002015103612fc257600192505050612fd5565b8080600101915050612f8f565b505f9150505b919050565b5f612fe3613527565b5f5f90505b600581101561303e578184826005811061300557613004613d90565b5b6020020151600a811061301b5761301a613d90565b5b60200201805180919061302d90613dbd565b815250508080600101915050612fe8565b505f5f90505f5f90505f5f90505b600a8110156130aa5760038482600a811061306a57613069613d90565b5b60200201510361307957600192505b60028482600a811061308e5761308d613d90565b5b60200201510361309d57600191505b808060010191505061304c565b508180156130b55750805b9350505050919050565b5f5f5f90505f5f90505b600581101561310d5760078482600581106130e7576130e6613d90565b5b6020020151036131005781806130fc90613dbd565b9250505b80806001019150506130c9565b5060038114915050919050565b5f613123613527565b5f5f90505b600581101561317e578184826005811061314557613144613d90565b5b6020020151600a811061315b5761315a613d90565b5b60200201805180919061316d90613dbd565b815250508080600101915050613128565b505f5f90505b600a8110156131c45760038282600a81106131a2576131a1613d90565b5b6020020151036131b7576001925050506131ca565b8080600101915050613184565b505f9150505b919050565b5f6131d8613527565b5f5f90505b600581101561323357818482600581106131fa576131f9613d90565b5b6020020151600a81106132105761320f613d90565b5b60200201805180919061322290613dbd565b8152505080806001019150506131dd565b505f5f90505f5f90505b600a8110156132815760028382600a811061325b5761325a613d90565b5b60200201510361327457818061327090613dbd565b9250505b808060010191505061323d565b506002811492505050919050565b5f613298613527565b5f5f90505b60058110156132f357818482600581106132ba576132b9613d90565b5b6020020151600a81106132d0576132cf613d90565b5b6020020180518091906132e290613dbd565b81525050808060010191505061329d565b505f5f90505f5f90505b600a8110156133415760028382600a811061331b5761331a613d90565b5b60200201510361333457818061333090613dbd565b9250505b80806001019150506132fd565b506001811492505050919050565b5f5f8290505f5f90505b600481101561343b575f6001826133709190613af5565b90505b600581101561342d5782816005811061338f5761338e613d90565b5b60200201518383600581106133a7576133a6613d90565b5b60200201511115613420575f8383600581106133c6576133c5613d90565b5b602002015190508382600581106133e0576133df613d90565b5b60200201518484600581106133f8576133f7613d90565b5b6020020181815250508084836005811061341557613414613d90565b5b602002018181525050505b8080600101915050613373565b508080600101915050613359565b505f5f90505b60048110156134ae57600182826005811061345f5761345e613d90565b5b602002015161346e9190613af5565b8260018361347c9190613af5565b6005811061348d5761348c613d90565b5b6020020151146134a1575f925050506134b5565b8080600101915050613441565b5060019150505b919050565b828054828255905f5260205f209081019282156134f4579160200282015b828111156134f35782518255916020019190600101906134d8565b5b509050613501919061354a565b5090565b6040518060a00160405280600590602082028036833780820191505090505090565b604051806101400160405280600a90602082028036833780820191505090505090565b5b80821115613561575f815f90555060010161354b565b5090565b5f5ffd5b5f819050919050565b61357b81613569565b8114613585575f5ffd5b50565b5f8135905061359681613572565b92915050565b5f602082840312156135b1576135b0613565565b5b5f6135be84828501613588565b91505092915050565b5f8115159050919050565b6135db816135c7565b82525050565b5f6020820190506135f45f8301846135d2565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61363c613637613632846135fa565b613619565b6135fa565b9050919050565b5f61364d82613622565b9050919050565b5f61365e82613643565b9050919050565b61366e81613654565b82525050565b5f6020820190506136875f830184613665565b92915050565b61369681613569565b82525050565b5f6020820190506136af5f83018461368d565b92915050565b5f6136bf826135fa565b9050919050565b6136cf816136b5565b82525050565b5f6020820190506136e85f8301846136c6565b92915050565b6136f7816136b5565b8114613701575f5ffd5b50565b5f81359050613712816136ee565b92915050565b5f6020828403121561372d5761372c613565565b5b5f61373a84828501613704565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61377581613569565b82525050565b5f613786838361376c565b60208301905092915050565b5f602082019050919050565b5f6137a882613743565b6137b2818561374d565b93506137bd8361375d565b805f5b838110156137ed5781516137d4888261377b565b97506137df83613792565b9250506001810190506137c0565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61382c816136b5565b82525050565b5f61383d8383613823565b60208301905092915050565b5f602082019050919050565b5f61385f826137fa565b6138698185613804565b935061387483613814565b805f5b838110156138a457815161388b8882613832565b975061389683613849565b925050600181019050613877565b5085935050505092915050565b5f6080820190508181035f8301526138c9818761379e565b905081810360208301526138dd8186613855565b905081810360408301526138f1818561379e565b90508181036060830152613905818461379e565b905095945050505050565b5f5f5f6060848603121561392757613926613565565b5b5f61393486828701613588565b935050602061394586828701613588565b925050604061395686828701613588565b9150509250925092565b5f6040820190506139735f83018561368d565b613980602083018461368d565b9392505050565b5f6020820190508181035f83015261399f818461379e565b905092915050565b5f82825260208201905092915050565b7f637265646974733d3000000000000000000000000000000000000000000000005f82015250565b5f6139eb6009836139a7565b91506139f6826139b7565b602082019050919050565b5f6020820190508181035f830152613a18816139df565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a5682613569565b9150613a6183613569565b9250828202613a6f81613569565b91508282048414831517613a8657613a85613a1f565b5b5092915050565b7f496e636f727265637420455448000000000000000000000000000000000000005f82015250565b5f613ac1600d836139a7565b9150613acc82613a8d565b602082019050919050565b5f6020820190508181035f830152613aee81613ab5565b9050919050565b5f613aff82613569565b9150613b0a83613569565b9250828201905080821115613b2257613b21613a1f565b5b92915050565b7f4e6f74206f776e657200000000000000000000000000000000000000000000005f82015250565b5f613b5c6009836139a7565b9150613b6782613b28565b602082019050919050565b5f6020820190508181035f830152613b8981613b50565b9050919050565b5f613b9a82613569565b9150613ba583613569565b9250828203905081811115613bbd57613bbc613a1f565b5b92915050565b7f496e73756666696369656e7420667265652062616c616e6365000000000000005f82015250565b5f613bf76019836139a7565b9150613c0282613bc3565b602082019050919050565b5f6020820190508181035f830152613c2481613beb565b9050919050565b7f4e6f2073756368207265717565737400000000000000000000000000000000005f82015250565b5f613c5f600f836139a7565b9150613c6a82613c2b565b602082019050919050565b5f6020820190508181035f830152613c8c81613c53565b9050919050565b7f546f6f206561726c7900000000000000000000000000000000000000000000005f82015250565b5f613cc76009836139a7565b9150613cd282613c93565b602082019050919050565b5f6020820190508181035f830152613cf481613cbb565b9050919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f613d2f600e836139a7565b9150613d3a82613cfb565b602082019050919050565b5f6020820190508181035f830152613d5c81613d23565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613dc782613569565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613df957613df8613a1f565b5b600182019050919050565b7f416d6f756e7420657863656564732066656573000000000000000000000000005f82015250565b5f613e386013836139a7565b9150613e4382613e04565b602082019050919050565b5f6020820190508181035f830152613e6581613e2c565b9050919050565b7f46656520746f6f206869676800000000000000000000000000000000000000005f82015250565b5f613ea0600c836139a7565b9150613eab82613e6c565b602082019050919050565b5f6020820190508181035f830152613ecd81613e94565b9050919050565b7f4f6e6c79205652460000000000000000000000000000000000000000000000005f82015250565b5f613f086008836139a7565b9150613f1382613ed4565b602082019050919050565b5f6020820190508181035f830152613f3581613efc565b9050919050565b5f819050919050565b613f56613f5182613569565b613f3c565b82525050565b5f613f678285613f45565b602082019150613f778284613f45565b6020820191508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613fbe82613569565b9150613fc983613569565b925082613fd957613fd8613f87565b5b828206905092915050565b5f60059050919050565b5f81905092915050565b5f819050919050565b5f602082019050919050565b61401681613fe4565b6140208184613fee565b925061402b82613ff8565b805f5b8381101561405b578151614042878261377b565b965061404d83614001565b92505060018101905061402e565b505050505050565b5f610100820190506140775f83018761368d565b614084602083018661400d565b61409160c083018561368d565b61409e60e083018461368d565b95945050505050565b5f6140b182613569565b91506140bc83613569565b9250826140cc576140cb613f87565b5b828204905092915050565b7f4e6f2063726564697473000000000000000000000000000000000000000000005f82015250565b5f61410b600a836139a7565b9150614116826140d7565b602082019050919050565b5f6020820190508181035f830152614138816140ff565b9050919050565b7f42616e6b726f6c6c20746f6f206c6f77000000000000000000000000000000005f82015250565b5f6141736010836139a7565b915061417e8261413f565b602082019050919050565b5f6020820190508181035f8301526141a081614167565b9050919050565b5f815190506141b581613572565b92915050565b5f602082840312156141d0576141cf613565565b5b5f6141dd848285016141a7565b91505092915050565b7f4475706c696361746520726571756573740000000000000000000000000000005f82015250565b5f61421a6011836139a7565b9150614225826141e6565b602082019050919050565b5f6020820190508181035f8301526142478161420e565b9050919050565b5f6060820190506142615f83018661368d565b61426e602083018561368d565b61427b604083018461368d565b949350505050565b7f426574206d7573742062652065786163746c7920657175616c20746f204649585f8201527f45445f4245540000000000000000000000000000000000000000000000000000602082015250565b5f6142dd6026836139a7565b91506142e882614283565b604082019050919050565b5f6020820190508181035f83015261430a816142d1565b905091905056fea2646970667358221220a075caa6b1b6390719f4da0004545b8fefc53d8dec7c82ead41201d8e1692d5364736f6c634300081c00330000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x608060405260043610610219575f3560e01c80637496c5a6116101225780639dbc517b116100aa578063b60d42881161006e578063b60d428814610785578063c13021851461078f578063c3344ce6146107a5578063e1c99d1b146107e1578063f0acd7d51461081d57610219565b80639dbc517b146106a2578063aa5414d2146106cc578063afd49b8d146106f4578063b020d2ef1461071f578063b22d87b71461075b57610219565b80638da5cb5b116100f15780638da5cb5b146105c2578063901b2036146105ec5780639213f67c1461061657806396a1cd271461063e5780639cd6cc271461066657610219565b80637496c5a61461051957806380a1f71214610543578063880cdc31146105705780638a14f12c1461059857610219565b80632e1a7d4d116101a55780635270972511610174578063527097251461044d578063587f5ed7146104775780635e318e07146104a157806368074564146104c957806372c27b62146104f157610219565b80632e1a7d4d146103ab5780633015394c146103d35780633d4dd9db146103fb5780634fbc525a1461043757610219565b80631357e1dc116101ec5780631357e1dc146102c75780631574ac44146102f1578063188736ae1461031b57806324a9d853146103575780632dd853451461038157610219565b80630359a8a31461021d5780630c4dfe3f146102595780630c949043146102755780630d68dd151461029f575b5f5ffd5b348015610228575f5ffd5b50610243600480360381019061023e919061359c565b610827565b60405161025091906135e1565b60405180910390f35b610273600480360381019061026e919061359c565b610844565b005b348015610280575f5ffd5b5061028961092b565b6040516102969190613674565b60405180910390f35b3480156102aa575f5ffd5b506102c560048036038101906102c0919061359c565b61094f565b005b3480156102d2575f5ffd5b506102db610a3f565b6040516102e8919061369c565b60405180910390f35b3480156102fc575f5ffd5b50610305610a45565b604051610312919061369c565b60405180910390f35b348015610326575f5ffd5b50610341600480360381019061033c919061359c565b610a4b565b60405161034e91906136d5565b60405180910390f35b348015610362575f5ffd5b5061036b610a7b565b604051610378919061369c565b60405180910390f35b34801561038c575f5ffd5b50610395610a81565b6040516103a2919061369c565b60405180910390f35b3480156103b6575f5ffd5b506103d160048036038101906103cc919061359c565b610a87565b005b3480156103de575f5ffd5b506103f960048036038101906103f4919061359c565b610c25565b005b348015610406575f5ffd5b50610421600480360381019061041c919061359c565b611093565b60405161042e919061369c565b60405180910390f35b348015610442575f5ffd5b5061044b6110a8565b005b348015610458575f5ffd5b50610461611260565b60405161046e91906136d5565b60405180910390f35b348015610482575f5ffd5b5061048b611285565b604051610498919061369c565b60405180910390f35b3480156104ac575f5ffd5b506104c760048036038101906104c2919061359c565b61128b565b005b3480156104d4575f5ffd5b506104ef60048036038101906104ea9190613718565b611486565b005b3480156104fc575f5ffd5b506105176004803603810190610512919061359c565b6115af565b005b348015610524575f5ffd5b5061052d6116e4565b60405161053a919061369c565b60405180910390f35b34801561054e575f5ffd5b506105576116e9565b60405161056794939291906138b1565b60405180910390f35b34801561057b575f5ffd5b5061059660048036038101906105919190613718565b611a0c565b005b3480156105a3575f5ffd5b506105ac611b35565b6040516105b9919061369c565b60405180910390f35b3480156105cd575f5ffd5b506105d6611b3b565b6040516105e391906136d5565b60405180910390f35b3480156105f7575f5ffd5b50610600611b60565b60405161060d919061369c565b60405180910390f35b348015610621575f5ffd5b5061063c60048036038101906106379190613910565b611b66565b005b348015610649575f5ffd5b50610664600480360381019061065f919061359c565b611fdc565b005b348015610671575f5ffd5b5061068c60048036038101906106879190613718565b6120cc565b604051610699919061369c565b60405180910390f35b3480156106ad575f5ffd5b506106b66120e1565b6040516106c3919061369c565b60405180910390f35b3480156106d7575f5ffd5b506106f260048036038101906106ed9190613718565b6120e7565b005b3480156106ff575f5ffd5b5061070861220f565b604051610716929190613960565b60405180910390f35b34801561072a575f5ffd5b506107456004803603810190610740919061359c565b612244565b604051610752919061369c565b60405180910390f35b348015610766575f5ffd5b5061076f612259565b60405161077c9190613987565b60405180910390f35b61078d612412565b005b34801561079a575f5ffd5b506107a3612414565b005b3480156107b0575f5ffd5b506107cb60048036038101906107c6919061359c565b61283d565b6040516107d891906135e1565b60405180910390f35b3480156107ec575f5ffd5b506108076004803603810190610802919061359c565b61285a565b604051610814919061369c565b60405180910390f35b61082561287a565b005b600c602052805f5260405f205f915054906101000a900460ff1681565b5f8111610886576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161087d90613a01565b60405180910390fd5b806003546108949190613a4c565b34146108d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108cc90613ad7565b60405180910390fd5b8060095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546109219190613af5565b9250508190555050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109f6575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a35576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a2c90613b72565b60405180910390fd5b8060038190555050565b60105481565b60035481565b6006602052805f5260405f205f915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b61012c81565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610b2e575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610b6d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b6490613b72565b60405180910390fd5b60055447610b7b9190613b90565b811115610bbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bb490613c0d565b60405180910390fd5b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015610c21573d5f5f3e3d5ffd5b5050565b5f60065f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60075f8481526020019081526020015f205490505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610cdc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd390613c75565b60405180910390fd5b5f60085f8581526020019081526020015f2054905060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610d98575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b15610df157603c81610daa9190613af5565b421015610dec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610de390613cdd565b60405180910390fd5b610eb5565b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1603610e795761012c81610e329190613af5565b421015610e74576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e6b90613cdd565b60405180910390fd5b610eb4565b6040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610eab90613d45565b60405180910390fd5b5b60065f8581526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560075f8581526020019081526020015f205f905560085f8581526020019081526020015f205f90555f600c5f8681526020019081526020015f205f6101000a81548160ff021916908315150217905550603282610f459190613a4c565b60055f828254610f559190613b90565b92505081905550600a5f8581526020019081526020015f205f9054906101000a900460ff1615610ff857600160095f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610fcc9190613af5565b92505081905550600a5f8581526020019081526020015f205f6101000a81549060ff021916905561103d565b8273ffffffffffffffffffffffffffffffffffffffff166108fc8390811502906040515f60405180830381858888f1935050505015801561103b573d5f5f3e3d5ffd5b505b8273ffffffffffffffffffffffffffffffffffffffff167fa544da4d3ac6802ca7f1593339bf95eea14d28be8682fc911784cb81037ea03d8386604051611085929190613960565b60405180910390a250505050565b6007602052805f5260405f205f915090505481565b5f600b8054905067ffffffffffffffff8111156110c8576110c7613d63565b5b6040519080825280602002602001820160405280156110f65781602001602082028036833780820191505090505b5090505f5f90505f5f90505b600b805490508110156111a657600c5f600b838154811061112657611125613d90565b5b905f5260205f20015481526020019081526020015f205f9054906101000a900460ff161561119957600b818154811061116257611161613d90565b5b905f5260205f20015483838151811061117e5761117d613d90565b5b602002602001018181525050818061119590613dbd565b9250505b8080600101915050611102565b508067ffffffffffffffff8111156111c1576111c0613d63565b5b6040519080825280602002602001820160405280156111ef5781602001602082028036833780820191505090505b50600b90805190602001906112059291906134ba565b505f5f90505b8181101561125b5782818151811061122657611225613d90565b5b6020026020010151600b828154811061124257611241613d90565b5b905f5260205f200181905550808060010191505061120b565b505050565b60025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600d5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611332575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611371576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161136890613b72565b60405180910390fd5b600d548111156113b6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ad90613e4e565b60405180910390fd5b600554476113c49190613b90565b811115611406576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fd90613c0d565b60405180910390fd5b80600d5f8282546114179190613b90565b9250508190555060015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611482573d5f5f3e3d5ffd5b5050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061152d575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61156c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161156390613b72565b60405180910390fd5b8060025f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611656575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611695576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168c90613b72565b60405180910390fd5b6101f48111156116da576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d190613eb6565b60405180910390fd5b8060048190555050565b603c81565b6060806060805f5f90505f5f90505b600b8054905081101561176057600c5f600b838154811061171c5761171b613d90565b5b905f5260205f20015481526020019081526020015f205f9054906101000a900460ff161561175357818061174f90613dbd565b9250505b80806001019150506116f8565b508067ffffffffffffffff81111561177b5761177a613d63565b5b6040519080825280602002602001820160405280156117a95781602001602082028036833780820191505090505b5094508067ffffffffffffffff8111156117c6576117c5613d63565b5b6040519080825280602002602001820160405280156117f45781602001602082028036833780820191505090505b5093508067ffffffffffffffff81111561181157611810613d63565b5b60405190808252806020026020018201604052801561183f5781602001602082028036833780820191505090505b5092508067ffffffffffffffff81111561185c5761185b613d63565b5b60405190808252806020026020018201604052801561188a5781602001602082028036833780820191505090505b5091505f5f90505f5f90505b600b80549050811015611a03575f600b82815481106118b8576118b7613d90565b5b905f5260205f2001549050600c5f8281526020019081526020015f205f9054906101000a900460ff16156119f557808884815181106118fa576118f9613d90565b5b60200260200101818152505060065f8281526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1687848151811061194a57611949613d90565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505060075f8281526020019081526020015f20548684815181106119a9576119a8613d90565b5b60200260200101818152505060085f8281526020019081526020015f20548584815181106119da576119d9613d90565b5b60200260200101818152505082806119f190613dbd565b9350505b508080600101915050611896565b50505090919293565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480611ab3575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b611af2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ae990613b72565b60405180910390fd5b8060015f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600f5481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600e5481565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611bf4576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611beb90613f1e565b60405180910390fd5b5f60065f8581526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f60075f8681526020019081526020015f205490505f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611cab576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ca290613c75565b60405180910390fd5b60065f8681526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560075f8681526020019081526020015f205f9055600a5f8681526020019081526020015f205f6101000a81549060ff02191690555f600c5f8781526020019081526020015f205f6101000a81548160ff021916908315150217905550603281611d479190613a4c565b60055f828254611d579190613b90565b92505081905550611d66613505565b600a855f604051602001611d7b929190613f5c565b604051602081830303815290604052805190602001205f1c611d9d9190613fb4565b815f60058110611db057611daf613d90565b5b602002018181525050600a856001604051602001611dcf929190613f5c565b604051602081830303815290604052805190602001205f1c611df19190613fb4565b81600160058110611e0557611e04613d90565b5b602002018181525050600a856002604051602001611e24929190613f5c565b604051602081830303815290604052805190602001205f1c611e469190613fb4565b81600260058110611e5a57611e59613d90565b5b602002018181525050600a856003604051602001611e79929190613f5c565b604051602081830303815290604052805190602001205f1c611e9b9190613fb4565b81600360058110611eaf57611eae613d90565b5b602002018181525050600a856004604051602001611ece929190613f5c565b604051602081830303815290604052805190602001205f1c611ef09190613fb4565b81600460058110611f0457611f03613d90565b5b6020020181815250505f611f188284612bf0565b90505f811115611f7f578060105f828254611f339190613af5565b925050819055508373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611f7d573d5f5f3e3d5ffd5b505b8373ffffffffffffffffffffffffffffffffffffffff167f139d06b76d70186e722e6fb47385e58acb1de894fcb4dbccc9675420d1ae0cd384848489604051611fcb9493929190614063565b60405180910390a250505050505050565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480612083575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6120c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120b990613b72565b60405180910390fd5b8060048190555050565b6009602052805f5260405f205f915090505481565b60055481565b60015f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16148061218e575060025f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6121cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121c490613b72565b60405180910390fd5b805f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f5f6125e191506127106004546127106122299190613b90565b836122349190613a4c565b61223e91906140a7565b90509091565b6008602052805f5260405f205f915090505481565b60605f5f90505f5f90505b600b805490508110156122fb575f600b828154811061228657612285613d90565b5b905f5260205f2001549050600c5f8281526020019081526020015f205f9054906101000a900460ff16156122ed575f60085f8381526020019081526020015f20549050603c816122d69190613af5565b42106122eb5783806122e790613dbd565b9450505b505b508080600101915050612264565b505f8167ffffffffffffffff81111561231757612316613d63565b5b6040519080825280602002602001820160405280156123455781602001602082028036833780820191505090505b5090505f5f90505f5f90505b600b80549050811015612408575f600b828154811061237357612372613d90565b5b905f5260205f2001549050600c5f8281526020019081526020015f205f9054906101000a900460ff16156123fa575f60085f8381526020019081526020015f20549050603c816123c39190613af5565b42106123f857818585815181106123dd576123dc613d90565b5b60200260200101818152505083806123f490613dbd565b9450505b505b508080600101915050612351565b5081935050505090565b565b600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015612495576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161248c90614121565b60405180910390fd5b5f6127106004546003546124a99190613a4c565b6124b391906140a7565b90505f816003546124c49190613b90565b90505f6032826124d49190613a4c565b6005546124e19190613af5565b905080471015612526576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161251d90614189565b60405180910390fd5b600160095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8413b076040518163ffffffff1660e01b81526004016020604051808303815f875af11580156125dc573d5f5f3e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061260091906141bb565b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146126a0576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161269790614230565b60405180910390fd5b3360065f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260075f8381526020019081526020015f20819055504260085f8381526020019081526020015f20819055506001600a5f8381526020019081526020015f205f6101000a81548160ff02191690831515021790555081600581905550600b81908060018154018082558091505060019003905f5260205f20015f90919091909150556001600c5f8381526020019081526020015f205f6101000a81548160ff021916908315150217905550600e5f8154809291906127ac90613dbd565b9190505550600354600f5f8282546127c49190613af5565b9250508190555083600d5f8282546127dc9190613af5565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f028ea032d3f63def233c8de5202292c832dd47496403016be7bf9a4d11349048600354858460405161282f9392919061424e565b60405180910390a250505050565b600a602052805f5260405f205f915054906101000a900460ff1681565b600b8181548110612869575f80fd5b905f5260205f20015f915090505481565b60035434146128be576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016128b5906142f3565b60405180910390fd5b5f6127106004546003546128d29190613a4c565b6128dc91906140a7565b90505f816003546128ed9190613b90565b90505f6032826128fd9190613a4c565b60055461290a9190613af5565b90508047101561294f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161294690614189565b60405180910390fd5b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f8413b076040518163ffffffff1660e01b81526004016020604051808303815f875af11580156129ba573d5f5f3e3d5ffd5b505050506040513d601f19601f820116820180604052508101906129de91906141bb565b90505f73ffffffffffffffffffffffffffffffffffffffff1660065f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614612a7e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a7590614230565b60405180910390fd5b3360065f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508260075f8381526020019081526020015f20819055504260085f8381526020019081526020015f208190555081600581905550600b81908060018154018082558091505060019003905f5260205f20015f90919091909150556001600c5f8381526020019081526020015f205f6101000a81548160ff021916908315150217905550600e5f815480929190612b6190613dbd565b9190505550600354600f5f828254612b799190613af5565b9250508190555083600d5f828254612b919190613af5565b925050819055503373ffffffffffffffffffffffffffffffffffffffff167f028ea032d3f63def233c8de5202292c832dd47496403016be7bf9a4d11349048348584604051612be29392919061424e565b60405180910390a250505050565b5f6007835f60058110612c0657612c05613d90565b5b6020020151148015612c305750600783600160058110612c2957612c28613d90565b5b6020020151145b8015612c545750600783600260058110612c4d57612c4c613d90565b5b6020020151145b8015612c785750600783600360058110612c7157612c70613d90565b5b6020020151145b8015612c9c5750600783600460058110612c9557612c94613d90565b5b6020020151145b15612cb557603282612cae9190613a4c565b9050612dd9565b612cbe83612ddf565b8015612ce257506007835f60058110612cda57612cd9613d90565b5b602002015114155b15612cfb57601982612cf49190613a4c565b9050612dd9565b612d0483612eca565b80612d145750612d1383612f25565b5b15612d2d57600a82612d269190613a4c565b9050612dd9565b612d3683612fda565b15612d4f57600582612d489190613a4c565b9050612dd9565b612d58836130bf565b80612d685750612d678361311a565b5b15612d8157600382612d7a9190613a4c565b9050612dd9565b612d8a836131cf565b15612da357600282612d9c9190613a4c565b9050612dd9565b612dac8361328f565b80612dbc5750612dbb8361334f565b5b15612dd557600182612dce9190613a4c565b9050612dd9565b5f90505b92915050565b5f81600160058110612df457612df3613d90565b5b6020020151825f60058110612e0c57612e0b613d90565b5b6020020151148015612e4d575081600260058110612e2d57612e2c613d90565b5b602002015182600160058110612e4657612e45613d90565b5b6020020151145b8015612e88575081600360058110612e6857612e67613d90565b5b602002015182600260058110612e8157612e80613d90565b5b6020020151145b8015612ec3575081600460058110612ea357612ea2613d90565b5b602002015182600360058110612ebc57612ebb613d90565b5b6020020151145b9050919050565b5f5f5f90505f5f90505b6005811015612f18576007848260058110612ef257612ef1613d90565b5b602002015103612f0b578180612f0790613dbd565b9250505b8080600101915050612ed4565b5060048114915050919050565b5f612f2e613527565b5f5f90505b6005811015612f895781848260058110612f5057612f4f613d90565b5b6020020151600a8110612f6657612f65613d90565b5b602002018051809190612f7890613dbd565b815250508080600101915050612f33565b505f5f90505b600a811015612fcf5760048282600a8110612fad57612fac613d90565b5b602002015103612fc257600192505050612fd5565b8080600101915050612f8f565b505f9150505b919050565b5f612fe3613527565b5f5f90505b600581101561303e578184826005811061300557613004613d90565b5b6020020151600a811061301b5761301a613d90565b5b60200201805180919061302d90613dbd565b815250508080600101915050612fe8565b505f5f90505f5f90505f5f90505b600a8110156130aa5760038482600a811061306a57613069613d90565b5b60200201510361307957600192505b60028482600a811061308e5761308d613d90565b5b60200201510361309d57600191505b808060010191505061304c565b508180156130b55750805b9350505050919050565b5f5f5f90505f5f90505b600581101561310d5760078482600581106130e7576130e6613d90565b5b6020020151036131005781806130fc90613dbd565b9250505b80806001019150506130c9565b5060038114915050919050565b5f613123613527565b5f5f90505b600581101561317e578184826005811061314557613144613d90565b5b6020020151600a811061315b5761315a613d90565b5b60200201805180919061316d90613dbd565b815250508080600101915050613128565b505f5f90505b600a8110156131c45760038282600a81106131a2576131a1613d90565b5b6020020151036131b7576001925050506131ca565b8080600101915050613184565b505f9150505b919050565b5f6131d8613527565b5f5f90505b600581101561323357818482600581106131fa576131f9613d90565b5b6020020151600a81106132105761320f613d90565b5b60200201805180919061322290613dbd565b8152505080806001019150506131dd565b505f5f90505f5f90505b600a8110156132815760028382600a811061325b5761325a613d90565b5b60200201510361327457818061327090613dbd565b9250505b808060010191505061323d565b506002811492505050919050565b5f613298613527565b5f5f90505b60058110156132f357818482600581106132ba576132b9613d90565b5b6020020151600a81106132d0576132cf613d90565b5b6020020180518091906132e290613dbd565b81525050808060010191505061329d565b505f5f90505f5f90505b600a8110156133415760028382600a811061331b5761331a613d90565b5b60200201510361333457818061333090613dbd565b9250505b80806001019150506132fd565b506001811492505050919050565b5f5f8290505f5f90505b600481101561343b575f6001826133709190613af5565b90505b600581101561342d5782816005811061338f5761338e613d90565b5b60200201518383600581106133a7576133a6613d90565b5b60200201511115613420575f8383600581106133c6576133c5613d90565b5b602002015190508382600581106133e0576133df613d90565b5b60200201518484600581106133f8576133f7613d90565b5b6020020181815250508084836005811061341557613414613d90565b5b602002018181525050505b8080600101915050613373565b508080600101915050613359565b505f5f90505b60048110156134ae57600182826005811061345f5761345e613d90565b5b602002015161346e9190613af5565b8260018361347c9190613af5565b6005811061348d5761348c613d90565b5b6020020151146134a1575f925050506134b5565b8080600101915050613441565b5060019150505b919050565b828054828255905f5260205f209081019282156134f4579160200282015b828111156134f35782518255916020019190600101906134d8565b5b509050613501919061354a565b5090565b6040518060a00160405280600590602082028036833780820191505090505090565b604051806101400160405280600a90602082028036833780820191505090505090565b5b80821115613561575f815f90555060010161354b565b5090565b5f5ffd5b5f819050919050565b61357b81613569565b8114613585575f5ffd5b50565b5f8135905061359681613572565b92915050565b5f602082840312156135b1576135b0613565565b5b5f6135be84828501613588565b91505092915050565b5f8115159050919050565b6135db816135c7565b82525050565b5f6020820190506135f45f8301846135d2565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f61363c613637613632846135fa565b613619565b6135fa565b9050919050565b5f61364d82613622565b9050919050565b5f61365e82613643565b9050919050565b61366e81613654565b82525050565b5f6020820190506136875f830184613665565b92915050565b61369681613569565b82525050565b5f6020820190506136af5f83018461368d565b92915050565b5f6136bf826135fa565b9050919050565b6136cf816136b5565b82525050565b5f6020820190506136e85f8301846136c6565b92915050565b6136f7816136b5565b8114613701575f5ffd5b50565b5f81359050613712816136ee565b92915050565b5f6020828403121561372d5761372c613565565b5b5f61373a84828501613704565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61377581613569565b82525050565b5f613786838361376c565b60208301905092915050565b5f602082019050919050565b5f6137a882613743565b6137b2818561374d565b93506137bd8361375d565b805f5b838110156137ed5781516137d4888261377b565b97506137df83613792565b9250506001810190506137c0565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b61382c816136b5565b82525050565b5f61383d8383613823565b60208301905092915050565b5f602082019050919050565b5f61385f826137fa565b6138698185613804565b935061387483613814565b805f5b838110156138a457815161388b8882613832565b975061389683613849565b925050600181019050613877565b5085935050505092915050565b5f6080820190508181035f8301526138c9818761379e565b905081810360208301526138dd8186613855565b905081810360408301526138f1818561379e565b90508181036060830152613905818461379e565b905095945050505050565b5f5f5f6060848603121561392757613926613565565b5b5f61393486828701613588565b935050602061394586828701613588565b925050604061395686828701613588565b9150509250925092565b5f6040820190506139735f83018561368d565b613980602083018461368d565b9392505050565b5f6020820190508181035f83015261399f818461379e565b905092915050565b5f82825260208201905092915050565b7f637265646974733d3000000000000000000000000000000000000000000000005f82015250565b5f6139eb6009836139a7565b91506139f6826139b7565b602082019050919050565b5f6020820190508181035f830152613a18816139df565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f613a5682613569565b9150613a6183613569565b9250828202613a6f81613569565b91508282048414831517613a8657613a85613a1f565b5b5092915050565b7f496e636f727265637420455448000000000000000000000000000000000000005f82015250565b5f613ac1600d836139a7565b9150613acc82613a8d565b602082019050919050565b5f6020820190508181035f830152613aee81613ab5565b9050919050565b5f613aff82613569565b9150613b0a83613569565b9250828201905080821115613b2257613b21613a1f565b5b92915050565b7f4e6f74206f776e657200000000000000000000000000000000000000000000005f82015250565b5f613b5c6009836139a7565b9150613b6782613b28565b602082019050919050565b5f6020820190508181035f830152613b8981613b50565b9050919050565b5f613b9a82613569565b9150613ba583613569565b9250828203905081811115613bbd57613bbc613a1f565b5b92915050565b7f496e73756666696369656e7420667265652062616c616e6365000000000000005f82015250565b5f613bf76019836139a7565b9150613c0282613bc3565b602082019050919050565b5f6020820190508181035f830152613c2481613beb565b9050919050565b7f4e6f2073756368207265717565737400000000000000000000000000000000005f82015250565b5f613c5f600f836139a7565b9150613c6a82613c2b565b602082019050919050565b5f6020820190508181035f830152613c8c81613c53565b9050919050565b7f546f6f206561726c7900000000000000000000000000000000000000000000005f82015250565b5f613cc76009836139a7565b9150613cd282613c93565b602082019050919050565b5f6020820190508181035f830152613cf481613cbb565b9050919050565b7f4e6f7420617574686f72697a65640000000000000000000000000000000000005f82015250565b5f613d2f600e836139a7565b9150613d3a82613cfb565b602082019050919050565b5f6020820190508181035f830152613d5c81613d23565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f613dc782613569565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613df957613df8613a1f565b5b600182019050919050565b7f416d6f756e7420657863656564732066656573000000000000000000000000005f82015250565b5f613e386013836139a7565b9150613e4382613e04565b602082019050919050565b5f6020820190508181035f830152613e6581613e2c565b9050919050565b7f46656520746f6f206869676800000000000000000000000000000000000000005f82015250565b5f613ea0600c836139a7565b9150613eab82613e6c565b602082019050919050565b5f6020820190508181035f830152613ecd81613e94565b9050919050565b7f4f6e6c79205652460000000000000000000000000000000000000000000000005f82015250565b5f613f086008836139a7565b9150613f1382613ed4565b602082019050919050565b5f6020820190508181035f830152613f3581613efc565b9050919050565b5f819050919050565b613f56613f5182613569565b613f3c565b82525050565b5f613f678285613f45565b602082019150613f778284613f45565b6020820191508190509392505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f613fbe82613569565b9150613fc983613569565b925082613fd957613fd8613f87565b5b828206905092915050565b5f60059050919050565b5f81905092915050565b5f819050919050565b5f602082019050919050565b61401681613fe4565b6140208184613fee565b925061402b82613ff8565b805f5b8381101561405b578151614042878261377b565b965061404d83614001565b92505060018101905061402e565b505050505050565b5f610100820190506140775f83018761368d565b614084602083018661400d565b61409160c083018561368d565b61409e60e083018461368d565b95945050505050565b5f6140b182613569565b91506140bc83613569565b9250826140cc576140cb613f87565b5b828204905092915050565b7f4e6f2063726564697473000000000000000000000000000000000000000000005f82015250565b5f61410b600a836139a7565b9150614116826140d7565b602082019050919050565b5f6020820190508181035f830152614138816140ff565b9050919050565b7f42616e6b726f6c6c20746f6f206c6f77000000000000000000000000000000005f82015250565b5f6141736010836139a7565b915061417e8261413f565b602082019050919050565b5f6020820190508181035f8301526141a081614167565b9050919050565b5f815190506141b581613572565b92915050565b5f602082840312156141d0576141cf613565565b5b5f6141dd848285016141a7565b91505092915050565b7f4475706c696361746520726571756573740000000000000000000000000000005f82015250565b5f61421a6011836139a7565b9150614225826141e6565b602082019050919050565b5f6020820190508181035f8301526142478161420e565b9050919050565b5f6060820190506142615f83018661368d565b61426e602083018561368d565b61427b604083018461368d565b949350505050565b7f426574206d7573742062652065786163746c7920657175616c20746f204649585f8201527f45445f4245540000000000000000000000000000000000000000000000000000602082015250565b5f6142dd6026836139a7565b91506142e882614283565b604082019050919050565b5f6020820190508181035f83015261430a816142d1565b905091905056fea2646970667358221220a075caa6b1b6390719f4da0004545b8fefc53d8dec7c82ead41201d8e1692d5364736f6c634300081c0033

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

0000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _vrf (address): 0x0000000000000000000000000000000000000000

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


Deployed Bytecode Sourcemap

156:17748:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1021:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9102:322;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;185:15;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2022:107;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1324:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;309:37;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;506:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;353:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1169:55;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2699:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7263:1378;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;563:47;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11554:628;;;;;;;;;;;;;:::i;:::-;;234:66;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1077:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8649:365;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2345:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7108:147;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1114:48;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10240:1237;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;:::i;:::-;;;;;;;;2243:94;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1290:27;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;207:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1258:25;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5658:1442;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;2137:98;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;750:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;467:30;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2451:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9432:745;;;;;;;;;;;;;:::i;:::-;;;;;;;;:::i;:::-;;;;;;;;628:51;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12238:1098;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2576:35;;;:::i;:::-;;4243:1386;;;;;;;;;;;;;:::i;:::-;;886:49;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;981:33;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2973:1198;;;:::i;:::-;;1021:47;;;;;;;;;;;;;;;;;;;;;;:::o;9102:322::-;9185:1;9175:7;:11;9167:33;;;;;;;;;;;;:::i;:::-;;;;;;;;;9244:7;9232:9;;:19;;;;:::i;:::-;9219:9;:32;9211:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;9409:7;9379:14;:26;9394:10;9379:26;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;9102:322;:::o;185:15::-;;;;;;;;;;;;;:::o;2022:107::-;1853:5;;;;;;;;;;;1839:19;;:10;:19;;;:43;;;;1876:6;;;;;;;;;;;1862:20;;:10;:20;;;1839:43;1831:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;2110:11:::1;2098:9;:23;;;;2022:107:::0;:::o;1324:27::-;;;;:::o;309:37::-;;;;:::o;506:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;353:27::-;;;;:::o;1169:55::-;1215:9;1169:55;:::o;2699:266::-;1853:5;;;;;;;;;;;1839:19;;:10;:19;;;:43;;;;1876:6;;;;;;;;;;;1862:20;;:10;:20;;;1839:43;1831:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;2847:15:::1;;2823:21;:39;;;;:::i;:::-;2813:6;:49;;2791:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;2934:5;;;;;;;;;;;2926:23;;:31;2950:6;2926:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2699:266:::0;:::o;7263:1378::-;7325:14;7342:15;:26;7358:9;7342:26;;;;;;;;;;;;;;;;;;;;;7325:43;;7379:11;7393:12;:23;7406:9;7393:23;;;;;;;;;;;;7379:37;;7453:1;7435:20;;:6;:20;;;7427:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;7488:17;7508:16;:27;7525:9;7508:27;;;;;;;;;;;;7488:47;;7564:5;;;;;;;;;;;7550:19;;:10;:19;;;:43;;;;7587:6;;;;;;;;;;;7573:20;;:10;:20;;;7550:43;7546:378;;;1153:9;7637;:24;;;;:::i;:::-;7618:15;:43;;7610:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7546:378;;;7711:6;7697:20;;:10;:20;;;7693:231;;1215:9;7779;:31;;;;:::i;:::-;7760:15;:50;;7734:121;;;;;;;;;;;;:::i;:::-;;;;;;;;;7693:231;;;7888:24;;;;;;;;;;:::i;:::-;;;;;;;;7693:231;7546:378;7943:15;:26;7959:9;7943:26;;;;;;;;;;;;7936:33;;;;;;;;;;;7987:12;:23;8000:9;7987:23;;;;;;;;;;;7980:30;;;8028:16;:27;8045:9;8028:27;;;;;;;;;;;8021:34;;;8134:5;8105:15;:26;8121:9;8105:26;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;8240:2;8234:3;:8;;;;:::i;:::-;8214:15;;:29;;;;;;;:::i;:::-;;;;;;;;8258:17;:28;8276:9;8258:28;;;;;;;;;;;;;;;;;;;;;8254:325;;;8412:1;8386:14;:22;8401:6;8386:22;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;8435:17;:28;8453:9;8435:28;;;;;;;;;;;;8428:35;;;;;;;;;;;8254:325;;;8546:6;8538:24;;:29;8563:3;8538:29;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8254:325;8610:6;8596:37;;;8618:3;8623:9;8596:37;;;;;;;:::i;:::-;;;;;;;;7314:1327;;;7263:1378;:::o;563:47::-;;;;;;;;;;;;;;;;;:::o;11554:628::-;11609:34;11674:16;:23;;;;11646:62;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11609:99;;11719:13;11735:1;11719:17;;11754:9;11766:1;11754:13;;11749:229;11773:16;:23;;;;11769:1;:27;11749:229;;;11822:15;:36;11838:16;11855:1;11838:19;;;;;;;;:::i;:::-;;;;;;;;;;11822:36;;;;;;;;;;;;;;;;;;;;;11818:149;;;11906:16;11923:1;11906:19;;;;;;;;:::i;:::-;;;;;;;;;;11879:17;11897:5;11879:24;;;;;;;;:::i;:::-;;;;;;;:46;;;;;11944:7;;;;;:::i;:::-;;;;11818:149;11798:3;;;;;;;11749:229;;;;12053:5;12039:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12020:16;:39;;;;;;;;;;;;:::i;:::-;;12075:9;12087:1;12075:13;;12070:105;12094:5;12090:1;:9;12070:105;;;12143:17;12161:1;12143:20;;;;;;;;:::i;:::-;;;;;;;;12121:16;12138:1;12121:19;;;;;;;;:::i;:::-;;;;;;;;;:42;;;;12101:3;;;;;;;12070:105;;;;11598:584;;11554:628::o;234:66::-;;;;;;;;;;;;;:::o;1077:30::-;;;;:::o;8649:365::-;1853:5;;;;;;;;;;;1839:19;;:10;:19;;;:43;;;;1876:6;;;;;;;;;;;1862:20;;:10;:20;;;1839:43;1831:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;8736:15:::1;;8726:6;:25;;8718:57;;;;;;;;;;;;:::i;:::-;;;;;;;;;8842:15;;8818:21;:39;;;;:::i;:::-;8808:6;:49;;8786:124;;;;;;;;;;;;:::i;:::-;;;;;;;;;8958:6;8939:15;;:25;;;;;;;:::i;:::-;;;;;;;;8983:5;;;;;;;;;;;8975:23;;:31;8999:6;8975:31;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8649:365:::0;:::o;2345:98::-;1853:5;;;;;;;;;;;1839:19;;:10;:19;;;:43;;;;1876:6;;;;;;;;;;;1862:20;;:10;:20;;;1839:43;1831:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;2426:9:::1;2417:6;;:18;;;;;;;;;;;;;;;;;;2345:98:::0;:::o;7108:147::-;1853:5;;;;;;;;;;;1839:19;;:10;:19;;;:43;;;;1876:6;;;;;;;;;;;1862:20;;:10;:20;;;1839:43;1831:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;7198:3:::1;7185:9;:16;;7177:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;7238:9;7229:6;:18;;;;7108:147:::0;:::o;1114:48::-;1153:9;1114:48;:::o;10240:1237::-;10334:27;10376:24;10415:21;10451:27;10506:13;10522:1;10506:17;;10575:9;10587:1;10575:13;;10570:164;10594:16;:23;;;;10590:1;:27;10570:164;;;10643:15;:36;10659:16;10676:1;10659:19;;;;;;;;:::i;:::-;;;;;;;;;;10643:36;;;;;;;;;;;;;;;;;;;;;10639:84;;;10700:7;;;;;:::i;:::-;;;;10639:84;10619:3;;;;;;;10570:164;;;;10801:5;10787:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10774:33;;10842:5;10828:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10818:30;;10880:5;10866:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10859:27;;10924:5;10910:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10897:33;;10943:13;10959:1;10943:17;;10976:9;10988:1;10976:13;;10971:440;10995:16;:23;;;;10991:1;:27;10971:440;;;11040:17;11060:16;11077:1;11060:19;;;;;;;;:::i;:::-;;;;;;;;;;11040:39;;11098:15;:26;11114:9;11098:26;;;;;;;;;;;;;;;;;;;;;11094:306;;;11165:9;11145:10;11156:5;11145:17;;;;;;;;:::i;:::-;;;;;;;:29;;;;;11210:15;:26;11226:9;11210:26;;;;;;;;;;;;;;;;;;;;;11193:7;11201:5;11193:14;;;;;;;;:::i;:::-;;;;;;;:43;;;;;;;;;;;11269:12;:23;11282:9;11269:23;;;;;;;;;;;;11255:4;11260:5;11255:11;;;;;;;;:::i;:::-;;;;;;;:37;;;;;11331:16;:27;11348:9;11331:27;;;;;;;;;;;;11311:10;11322:5;11311:17;;;;;;;;:::i;:::-;;;;;;;:47;;;;;11377:7;;;;;:::i;:::-;;;;11094:306;11025:386;11020:3;;;;;;;10971:440;;;;11423:46;;10240:1237;;;;:::o;2243:94::-;1853:5;;;;;;;;;;;1839:19;;:10;:19;;;:43;;;;1876:6;;;;;;;;;;;1862:20;;:10;:20;;;1839:43;1831:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;2321:8:::1;2313:5;;:16;;;;;;;;;;;;;;;;;;2243:94:::0;:::o;1290:27::-;;;;:::o;207:20::-;;;;;;;;;;;;;:::o;1258:25::-;;;;:::o;5658:1442::-;5827:3;;;;;;;;;;;5805:26;;:10;:26;;;5797:47;;;;;;;;;;;;:::i;:::-;;;;;;;;;5857:14;5874:15;:26;5890:9;5874:26;;;;;;;;;;;;;;;;;;;;;5857:43;;5911:11;5925:12;:23;5938:9;5925:23;;;;;;;;;;;;5911:37;;5985:1;5967:20;;:6;:20;;;5959:48;;;;;;;;;;;;:::i;:::-;;;;;;;;;6027:15;:26;6043:9;6027:26;;;;;;;;;;;;6020:33;;;;;;;;;;;6071:12;:23;6084:9;6071:23;;;;;;;;;;;6064:30;;;6112:17;:28;6130:9;6112:28;;;;;;;;;;;;6105:35;;;;;;;;;;;6219:5;6190:15;:26;6206:9;6190:26;;;;;;;;;;;;:34;;;;;;;;;;;;;;;;;;6322:2;6316:3;:8;;;;:::i;:::-;6296:15;;:29;;;;;;;:::i;:::-;;;;;;;;6409:23;;:::i;:::-;6511:2;6489:4;6503:1;6472:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6462:45;;;;;;6454:54;;:59;;;;:::i;:::-;6443:5;6449:1;6443:8;;;;;;;:::i;:::-;;;;;:70;;;;;6592:2;6570:4;6584:1;6553:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6543:45;;;;;;6535:54;;:59;;;;:::i;:::-;6524:5;6530:1;6524:8;;;;;;;:::i;:::-;;;;;:70;;;;;6673:2;6651:4;6665:1;6634:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6624:45;;;;;;6616:54;;:59;;;;:::i;:::-;6605:5;6611:1;6605:8;;;;;;;:::i;:::-;;;;;:70;;;;;6754:2;6732:4;6746:1;6715:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6705:45;;;;;;6697:54;;:59;;;;:::i;:::-;6686:5;6692:1;6686:8;;;;;;;:::i;:::-;;;;;:70;;;;;6835:2;6813:4;6827:1;6796:34;;;;;;;;;:::i;:::-;;;;;;;;;;;;;6786:45;;;;;;6778:54;;:59;;;;:::i;:::-;6767:5;6773:1;6767:8;;;;;;;:::i;:::-;;;;;:70;;;;;6850:14;6867:28;6884:5;6891:3;6867:16;:28::i;:::-;6850:45;;6921:1;6912:6;:10;6908:112;;;6955:6;6939:12;;:22;;;;;;;:::i;:::-;;;;;;;;6984:6;6976:24;;:32;7001:6;6976:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6908:112;7048:6;7037:55;;;7056:3;7061:5;7068:6;7076:15;7037:55;;;;;;;;;:::i;:::-;;;;;;;;5786:1314;;;;5658:1442;;;:::o;2137:98::-;1853:5;;;;;;;;;;;1839:19;;:10;:19;;;:43;;;;1876:6;;;;;;;;;;;1862:20;;:10;:20;;;1839:43;1831:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;2218:9:::1;2209:6;:18;;;;2137:98:::0;:::o;750:49::-;;;;;;;;;;;;;;;;;:::o;467:30::-;;;;:::o;2451:92::-;1853:5;;;;;;;;;;;1839:19;;:10;:19;;;:43;;;;1876:6;;;;;;;;;;;1862:20;;:10;:20;;;1839:43;1831:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;2528:6:::1;2517:3;;:18;;;;;;;;;;;;;;;;;;2451:92:::0;:::o;9432:745::-;9503:20;9525:23;10092:5;10077:20;;10163:6;10152;;10143;:15;;;;:::i;:::-;10127:12;:32;;;;:::i;:::-;10126:43;;;;:::i;:::-;10108:61;;9432:745;;:::o;628:51::-;;;;;;;;;;;;;;;;;:::o;12238:1098::-;12295:16;12324:13;12340:1;12324:17;;12389:9;12401:1;12389:13;;12384:365;12408:16;:23;;;;12404:1;:27;12384:365;;;12453:17;12473:16;12490:1;12473:19;;;;;;;;:::i;:::-;;;;;;;;;;12453:39;;12511:15;:26;12527:9;12511:26;;;;;;;;;;;;;;;;;;;;;12507:231;;;12558:17;12578:16;:27;12595:9;12578:27;;;;;;;;;;;;12558:47;;1153:9;12647;:24;;;;:::i;:::-;12628:15;:43;12624:99;;12696:7;;;;;:::i;:::-;;;;12624:99;12539:199;12507:231;12438:311;12433:3;;;;;;;12384:365;;;;12788:28;12833:5;12819:20;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12788:51;;12850:13;12866:1;12850:17;;12885:9;12897:1;12885:13;;12880:418;12904:16;:23;;;;12900:1;:27;12880:418;;;12949:17;12969:16;12986:1;12969:19;;;;;;;;:::i;:::-;;;;;;;;;;12949:39;;13007:15;:26;13023:9;13007:26;;;;;;;;;;;;;;;;;;;;;13003:284;;;13054:17;13074:16;:27;13091:9;13074:27;;;;;;;;;;;;13054:47;;1153:9;13143;:24;;;;:::i;:::-;13124:15;:43;13120:152;;13213:9;13192:11;13204:5;13192:18;;;;;;;;:::i;:::-;;;;;;;:30;;;;;13245:7;;;;;:::i;:::-;;;;13120:152;13035:252;13003:284;12934:364;12929:3;;;;;;;12880:418;;;;13317:11;13310:18;;;;;12238:1098;:::o;2576:35::-;:::o;4243:1386::-;4327:1;4297:14;:26;4312:10;4297:26;;;;;;;;;;;;;;;;:31;;4289:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;4356:11;4393:6;4383;;4371:9;;:18;;;;:::i;:::-;4370:29;;;;:::i;:::-;4356:43;;4410:14;4439:3;4427:9;;:15;;;;:::i;:::-;4410:32;;4537:19;4587:2;4578:6;:11;;;;:::i;:::-;4559:15;;:31;;;;:::i;:::-;4537:53;;4634:11;4609:21;:36;;4601:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;4765:1;4735:14;:26;4750:10;4735:26;;;;;;;;;;;;;;;;:31;;;;;;;;;;;4790:17;4810:3;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;4790:43;;4890:1;4852:40;;:15;:26;4868:9;4852:26;;;;;;;;;;;;;;;;;;;;;:40;;;4844:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;4954:10;4925:15;:26;4941:9;4925:26;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;5001:6;4975:12;:23;4988:9;4975:23;;;;;;;;;;;:32;;;;5048:15;5018:16;:27;5035:9;5018:27;;;;;;;;;;;:45;;;;5105:4;5074:17;:28;5092:9;5074:28;;;;;;;;;;;;:35;;;;;;;;;;;;;;;;;;5138:11;5120:15;:29;;;;5206:16;5228:9;5206:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5278:4;5249:15;:26;5265:9;5249:26;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;5351:10;;:12;;;;;;;;;:::i;:::-;;;;;;5390:9;;5374:12;;:25;;;;;;;:::i;:::-;;;;;;;;5480:3;5461:15;;:22;;;;;;;:::i;:::-;;;;;;;;5580:10;5566:55;;;5592:9;;5603:6;5611:9;5566:55;;;;;;;;:::i;:::-;;;;;;;;4278:1351;;;;4243:1386::o;886:49::-;;;;;;;;;;;;;;;;;;;;;;:::o;981:33::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2973:1198::-;3052:9;;3039;:22;3017:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;3140:11;3177:6;3167;;3155:9;;:18;;;;:::i;:::-;3154:29;;;;:::i;:::-;3140:43;;3194:14;3223:3;3211:9;;:15;;;;:::i;:::-;3194:32;;3321:19;3371:2;3362:6;:11;;;;:::i;:::-;3343:15;;:31;;;;:::i;:::-;3321:53;;3418:11;3393:21;:36;;3385:65;;;;;;;;;;;;:::i;:::-;;;;;;;;;3463:17;3483:3;;;;;;;;;;;:21;;;:23;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;3463:43;;3563:1;3525:40;;:15;:26;3541:9;3525:26;;;;;;;;;;;;;;;;;;;;;:40;;;3517:70;;;;;;;;;;;;:::i;:::-;;;;;;;;;3627:10;3598:15;:26;3614:9;3598:26;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;3674:6;3648:12;:23;3661:9;3648:23;;;;;;;;;;;:32;;;;3721:15;3691:16;:27;3708:9;3691:27;;;;;;;;;;;:45;;;;3765:11;3747:15;:29;;;;3833:16;3855:9;3833:32;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3905:4;3876:15;:26;3892:9;3876:26;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;3958:10;;:12;;;;;;;;;:::i;:::-;;;;;;3997:9;;3981:12;;:25;;;;;;;:::i;:::-;;;;;;;;4087:3;4068:15;;:22;;;;;;;:::i;:::-;;;;;;;;4122:10;4108:55;;;4134:9;4145:6;4153:9;4108:55;;;;;;;;:::i;:::-;;;;;;;;3006:1165;;;;2973:1198::o;13344:1202::-;13456:7;13531:1;13519:5;13525:1;13519:8;;;;;;;:::i;:::-;;;;;;:13;:43;;;;;13561:1;13549:5;13555:1;13549:8;;;;;;;:::i;:::-;;;;;;:13;13519:43;:73;;;;;13591:1;13579:5;13585:1;13579:8;;;;;;;:::i;:::-;;;;;;:13;13519:73;:103;;;;;13621:1;13609:5;13615:1;13609:8;;;;;;;:::i;:::-;;;;;;:13;13519:103;:133;;;;;13651:1;13639:5;13645:1;13639:8;;;;;;;:::i;:::-;;;;;;:13;13519:133;13501:205;;;13692:2;13686:3;:8;;;;:::i;:::-;13679:15;;;;13501:205;13763:21;13778:5;13763:14;:21::i;:::-;:38;;;;;13800:1;13788:5;13794:1;13788:8;;;;;;;:::i;:::-;;;;;;:13;;13763:38;13759:86;;;13831:2;13825:3;:8;;;;:::i;:::-;13818:15;;;;13759:86;13904:21;13919:5;13904:14;:21::i;:::-;:46;;;;13929:21;13944:5;13929:14;:21::i;:::-;13904:46;13900:94;;;13980:2;13974:3;:8;;;;:::i;:::-;13967:15;;;;13900:94;14058:19;14071:5;14058:12;:19::i;:::-;14054:66;;;14107:1;14101:3;:7;;;;:::i;:::-;14094:14;;;;14054:66;14180:22;14196:5;14180:15;:22::i;:::-;:48;;;;14206:22;14222:5;14206:15;:22::i;:::-;14180:48;14176:95;;;14258:1;14252:3;:7;;;;:::i;:::-;14245:14;;;;14176:95;14313:18;14325:5;14313:11;:18::i;:::-;14309:65;;;14361:1;14355:3;:7;;;;:::i;:::-;14348:14;;;;14309:65;14433:18;14445:5;14433:11;:18::i;:::-;:42;;;;14455:20;14469:5;14455:13;:20::i;:::-;14433:42;14429:89;;;14505:1;14499:3;:7;;;;:::i;:::-;14492:14;;;;14429:89;14537:1;14530:8;;13344:1202;;;;;:::o;14554:264::-;14642:4;14691:5;14697:1;14691:8;;;;;;;:::i;:::-;;;;;;14679:5;14685:1;14679:8;;;;;;;:::i;:::-;;;;;;:20;:57;;;;;14728:5;14734:1;14728:8;;;;;;;:::i;:::-;;;;;;14716:5;14722:1;14716:8;;;;;;;:::i;:::-;;;;;;:20;14679:57;:94;;;;;14765:5;14771:1;14765:8;;;;;;;:::i;:::-;;;;;;14753:5;14759:1;14753:8;;;;;;;:::i;:::-;;;;;;:20;14679:94;:131;;;;;14802:5;14808:1;14802:8;;;;;;;:::i;:::-;;;;;;14790:5;14796:1;14790:8;;;;;;;:::i;:::-;;;;;;:20;14679:131;14659:151;;14554:264;;;:::o;17031:250::-;17119:4;17136:13;17152:1;17136:17;;17169:6;17178:1;17169:10;;17164:82;17185:1;17181;:5;17164:82;;;17224:1;17212:5;17218:1;17212:8;;;;;;;:::i;:::-;;;;;;:13;17208:26;;17227:7;;;;;:::i;:::-;;;;17208:26;17188:3;;;;;;;17164:82;;;;17272:1;17263:5;:10;17256:17;;;17031:250;;;:::o;14826:343::-;14914:4;14931:25;;:::i;:::-;14972:6;14981:1;14972:10;;14967:74;14988:1;14984;:5;14967:74;;;15011:6;15018:5;15024:1;15018:8;;;;;;;:::i;:::-;;;;;;15011:16;;;;;;;:::i;:::-;;;;;:18;;;;;;;;:::i;:::-;;;;;14991:3;;;;;;;14967:74;;;;15056:6;15065:1;15056:10;;15051:88;15072:2;15068:1;:6;15051:88;;;15113:1;15100:6;15107:1;15100:9;;;;;;;:::i;:::-;;;;;;:14;15096:31;;15123:4;15116:11;;;;;;15096:31;15076:3;;;;;;;15051:88;;;;15156:5;15149:12;;;14826:343;;;;:::o;15177:468::-;15263:4;15280:25;;:::i;:::-;15321:6;15330:1;15321:10;;15316:74;15337:1;15333;:5;15316:74;;;15360:6;15367:5;15373:1;15367:8;;;;;;;:::i;:::-;;;;;;15360:16;;;;;;;:::i;:::-;;;;;:18;;;;;;;;:::i;:::-;;;;;15340:3;;;;;;;15316:74;;;;15400:13;15416:5;15400:21;;15432:11;15446:5;15432:19;;15467:6;15476:1;15467:10;;15462:140;15483:2;15479:1;:6;15462:140;;;15524:1;15511:6;15518:1;15511:9;;;;;;;:::i;:::-;;;;;;:14;15507:35;;15538:4;15527:15;;15507:35;15574:1;15561:6;15568:1;15561:9;;;;;;;:::i;:::-;;;;;;:14;15557:33;;15586:4;15577:13;;15557:33;15487:3;;;;;;;15462:140;;;;15619:8;:18;;;;;15631:6;15619:18;15612:25;;;;;15177:468;;;:::o;17289:251::-;17378:4;17395:13;17411:1;17395:17;;17428:6;17437:1;17428:10;;17423:82;17444:1;17440;:5;17423:82;;;17483:1;17471:5;17477:1;17471:8;;;;;;;:::i;:::-;;;;;;:13;17467:26;;17486:7;;;;;:::i;:::-;;;;17467:26;17447:3;;;;;;;17423:82;;;;17531:1;17522:5;:10;17515:17;;;17289:251;;;:::o;15653:344::-;15742:4;15759:25;;:::i;:::-;15800:6;15809:1;15800:10;;15795:74;15816:1;15812;:5;15795:74;;;15839:6;15846:5;15852:1;15846:8;;;;;;;:::i;:::-;;;;;;15839:16;;;;;;;:::i;:::-;;;;;:18;;;;;;;;:::i;:::-;;;;;15819:3;;;;;;;15795:74;;;;15884:6;15893:1;15884:10;;15879:88;15900:2;15896:1;:6;15879:88;;;15941:1;15928:6;15935:1;15928:9;;;;;;;:::i;:::-;;;;;;:14;15924:31;;15951:4;15944:11;;;;;;15924:31;15904:3;;;;;;;15879:88;;;;15984:5;15977:12;;;15653:344;;;;:::o;16005:353::-;16074:4;16091:25;;:::i;:::-;16132:6;16141:1;16132:10;;16127:74;16148:1;16144;:5;16127:74;;;16171:6;16178:5;16184:1;16178:8;;;;;;;:::i;:::-;;;;;;16171:16;;;;;;;:::i;:::-;;;;;:18;;;;;;;;:::i;:::-;;;;;16151:3;;;;;;;16127:74;;;;16211:13;16227:1;16211:17;;16244:6;16253:1;16244:10;;16239:84;16260:2;16256:1;:6;16239:84;;;16301:1;16288:6;16295:1;16288:9;;;;;;;:::i;:::-;;;;;;:14;16284:27;;16304:7;;;;;:::i;:::-;;;;16284:27;16264:3;;;;;;;16239:84;;;;16349:1;16340:5;:10;16333:17;;;;16005:353;;;:::o;17548:::-;17617:4;17634:25;;:::i;:::-;17675:6;17684:1;17675:10;;17670:74;17691:1;17687;:5;17670:74;;;17714:6;17721:5;17727:1;17721:8;;;;;;;:::i;:::-;;;;;;17714:16;;;;;;;:::i;:::-;;;;;:18;;;;;;;;:::i;:::-;;;;;17694:3;;;;;;;17670:74;;;;17754:13;17770:1;17754:17;;17787:6;17796:1;17787:10;;17782:84;17803:2;17799:1;:6;17782:84;;;17844:1;17831:6;17838:1;17831:9;;;;;;;:::i;:::-;;;;;;:14;17827:27;;17847:7;;;;;:::i;:::-;;;;17827:27;17807:3;;;;;;;17782:84;;;;17892:1;17883:5;:10;17876:17;;;;17548:353;;;:::o;16366:657::-;16453:4;16503:24;16530:5;16503:32;;16551:6;16560:1;16551:10;;16546:299;16567:1;16563;:5;16546:299;;;16595:6;16608:1;16604;:5;;;;:::i;:::-;16595:14;;16590:244;16615:1;16611;:5;16590:244;;;16658:6;16665:1;16658:9;;;;;;;:::i;:::-;;;;;;16646:6;16653:1;16646:9;;;;;;;:::i;:::-;;;;;;:21;16642:177;;;16692:12;16707:6;16714:1;16707:9;;;;;;;:::i;:::-;;;;;;16692:24;;16751:6;16758:1;16751:9;;;;;;;:::i;:::-;;;;;;16739:6;16746:1;16739:9;;;;;;;:::i;:::-;;;;;:21;;;;;16795:4;16783:6;16790:1;16783:9;;;;;;;:::i;:::-;;;;;:16;;;;;16669:150;16642:177;16618:3;;;;;;;16590:244;;;;16570:3;;;;;;;16546:299;;;;16895:6;16904:1;16895:10;;16890:104;16911:1;16907;:5;16890:104;;;16967:1;16955:6;16962:1;16955:9;;;;;;;:::i;:::-;;;;;;:13;;;;:::i;:::-;16938:6;16949:1;16945;:5;;;;:::i;:::-;16938:13;;;;;;;:::i;:::-;;;;;;:30;16934:48;;16977:5;16970:12;;;;;;16934:48;16914:3;;;;;;;16890:104;;;;17011:4;17004:11;;;16366:657;;;;:::o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::o;88:117:1:-;197:1;194;187:12;334:77;371:7;400:5;389:16;;334:77;;;:::o;417:122::-;490:24;508:5;490:24;:::i;:::-;483:5;480:35;470:63;;529:1;526;519:12;470:63;417:122;:::o;545:139::-;591:5;629:6;616:20;607:29;;645:33;672:5;645:33;:::i;:::-;545:139;;;;:::o;690:329::-;749:6;798:2;786:9;777:7;773:23;769:32;766:119;;;804:79;;:::i;:::-;766:119;924:1;949:53;994:7;985:6;974:9;970:22;949:53;:::i;:::-;939:63;;895:117;690:329;;;;:::o;1025:90::-;1059:7;1102:5;1095:13;1088:21;1077:32;;1025:90;;;:::o;1121:109::-;1202:21;1217:5;1202:21;:::i;:::-;1197:3;1190:34;1121:109;;:::o;1236:210::-;1323:4;1361:2;1350:9;1346:18;1338:26;;1374:65;1436:1;1425:9;1421:17;1412:6;1374:65;:::i;:::-;1236:210;;;;:::o;1452:126::-;1489:7;1529:42;1522:5;1518:54;1507:65;;1452:126;;;:::o;1584:60::-;1612:3;1633:5;1626:12;;1584:60;;;:::o;1650:142::-;1700:9;1733:53;1751:34;1760:24;1778:5;1760:24;:::i;:::-;1751:34;:::i;:::-;1733:53;:::i;:::-;1720:66;;1650:142;;;:::o;1798:126::-;1848:9;1881:37;1912:5;1881:37;:::i;:::-;1868:50;;1798:126;;;:::o;1930:136::-;1990:9;2023:37;2054:5;2023:37;:::i;:::-;2010:50;;1930:136;;;:::o;2072:151::-;2169:47;2210:5;2169:47;:::i;:::-;2164:3;2157:60;2072:151;;:::o;2229:242::-;2332:4;2370:2;2359:9;2355:18;2347:26;;2383:81;2461:1;2450:9;2446:17;2437:6;2383:81;:::i;:::-;2229:242;;;;:::o;2477:118::-;2564:24;2582:5;2564:24;:::i;:::-;2559:3;2552:37;2477:118;;:::o;2601:222::-;2694:4;2732:2;2721:9;2717:18;2709:26;;2745:71;2813:1;2802:9;2798:17;2789:6;2745:71;:::i;:::-;2601:222;;;;:::o;2829:96::-;2866:7;2895:24;2913:5;2895:24;:::i;:::-;2884:35;;2829:96;;;:::o;2931:118::-;3018:24;3036:5;3018:24;:::i;:::-;3013:3;3006:37;2931:118;;:::o;3055:222::-;3148:4;3186:2;3175:9;3171:18;3163:26;;3199:71;3267:1;3256:9;3252:17;3243:6;3199:71;:::i;:::-;3055:222;;;;:::o;3283:122::-;3356:24;3374:5;3356:24;:::i;:::-;3349:5;3346:35;3336:63;;3395:1;3392;3385:12;3336:63;3283:122;:::o;3411:139::-;3457:5;3495:6;3482:20;3473:29;;3511:33;3538:5;3511:33;:::i;:::-;3411:139;;;;:::o;3556:329::-;3615:6;3664:2;3652:9;3643:7;3639:23;3635:32;3632:119;;;3670:79;;:::i;:::-;3632:119;3790:1;3815:53;3860:7;3851:6;3840:9;3836:22;3815:53;:::i;:::-;3805:63;;3761:117;3556:329;;;;:::o;3891:114::-;3958:6;3992:5;3986:12;3976:22;;3891:114;;;:::o;4011:184::-;4110:11;4144:6;4139:3;4132:19;4184:4;4179:3;4175:14;4160:29;;4011:184;;;;:::o;4201:132::-;4268:4;4291:3;4283:11;;4321:4;4316:3;4312:14;4304:22;;4201:132;;;:::o;4339:108::-;4416:24;4434:5;4416:24;:::i;:::-;4411:3;4404:37;4339:108;;:::o;4453:179::-;4522:10;4543:46;4585:3;4577:6;4543:46;:::i;:::-;4621:4;4616:3;4612:14;4598:28;;4453:179;;;;:::o;4638:113::-;4708:4;4740;4735:3;4731:14;4723:22;;4638:113;;;:::o;4787:732::-;4906:3;4935:54;4983:5;4935:54;:::i;:::-;5005:86;5084:6;5079:3;5005:86;:::i;:::-;4998:93;;5115:56;5165:5;5115:56;:::i;:::-;5194:7;5225:1;5210:284;5235:6;5232:1;5229:13;5210:284;;;5311:6;5305:13;5338:63;5397:3;5382:13;5338:63;:::i;:::-;5331:70;;5424:60;5477:6;5424:60;:::i;:::-;5414:70;;5270:224;5257:1;5254;5250:9;5245:14;;5210:284;;;5214:14;5510:3;5503:10;;4911:608;;;4787:732;;;;:::o;5525:114::-;5592:6;5626:5;5620:12;5610:22;;5525:114;;;:::o;5645:184::-;5744:11;5778:6;5773:3;5766:19;5818:4;5813:3;5809:14;5794:29;;5645:184;;;;:::o;5835:132::-;5902:4;5925:3;5917:11;;5955:4;5950:3;5946:14;5938:22;;5835:132;;;:::o;5973:108::-;6050:24;6068:5;6050:24;:::i;:::-;6045:3;6038:37;5973:108;;:::o;6087:179::-;6156:10;6177:46;6219:3;6211:6;6177:46;:::i;:::-;6255:4;6250:3;6246:14;6232:28;;6087:179;;;;:::o;6272:113::-;6342:4;6374;6369:3;6365:14;6357:22;;6272:113;;;:::o;6421:732::-;6540:3;6569:54;6617:5;6569:54;:::i;:::-;6639:86;6718:6;6713:3;6639:86;:::i;:::-;6632:93;;6749:56;6799:5;6749:56;:::i;:::-;6828:7;6859:1;6844:284;6869:6;6866:1;6863:13;6844:284;;;6945:6;6939:13;6972:63;7031:3;7016:13;6972:63;:::i;:::-;6965:70;;7058:60;7111:6;7058:60;:::i;:::-;7048:70;;6904:224;6891:1;6888;6884:9;6879:14;;6844:284;;;6848:14;7144:3;7137:10;;6545:608;;;6421:732;;;;:::o;7159:1157::-;7536:4;7574:3;7563:9;7559:19;7551:27;;7624:9;7618:4;7614:20;7610:1;7599:9;7595:17;7588:47;7652:108;7755:4;7746:6;7652:108;:::i;:::-;7644:116;;7807:9;7801:4;7797:20;7792:2;7781:9;7777:18;7770:48;7835:108;7938:4;7929:6;7835:108;:::i;:::-;7827:116;;7990:9;7984:4;7980:20;7975:2;7964:9;7960:18;7953:48;8018:108;8121:4;8112:6;8018:108;:::i;:::-;8010:116;;8173:9;8167:4;8163:20;8158:2;8147:9;8143:18;8136:48;8201:108;8304:4;8295:6;8201:108;:::i;:::-;8193:116;;7159:1157;;;;;;;:::o;8322:619::-;8399:6;8407;8415;8464:2;8452:9;8443:7;8439:23;8435:32;8432:119;;;8470:79;;:::i;:::-;8432:119;8590:1;8615:53;8660:7;8651:6;8640:9;8636:22;8615:53;:::i;:::-;8605:63;;8561:117;8717:2;8743:53;8788:7;8779:6;8768:9;8764:22;8743:53;:::i;:::-;8733:63;;8688:118;8845:2;8871:53;8916:7;8907:6;8896:9;8892:22;8871:53;:::i;:::-;8861:63;;8816:118;8322:619;;;;;:::o;8947:332::-;9068:4;9106:2;9095:9;9091:18;9083:26;;9119:71;9187:1;9176:9;9172:17;9163:6;9119:71;:::i;:::-;9200:72;9268:2;9257:9;9253:18;9244:6;9200:72;:::i;:::-;8947:332;;;;;:::o;9285:373::-;9428:4;9466:2;9455:9;9451:18;9443:26;;9515:9;9509:4;9505:20;9501:1;9490:9;9486:17;9479:47;9543:108;9646:4;9637:6;9543:108;:::i;:::-;9535:116;;9285:373;;;;:::o;9664:169::-;9748:11;9782:6;9777:3;9770:19;9822:4;9817:3;9813:14;9798:29;;9664:169;;;;:::o;9839:159::-;9979:11;9975:1;9967:6;9963:14;9956:35;9839:159;:::o;10004:365::-;10146:3;10167:66;10231:1;10226:3;10167:66;:::i;:::-;10160:73;;10242:93;10331:3;10242:93;:::i;:::-;10360:2;10355:3;10351:12;10344:19;;10004:365;;;:::o;10375:419::-;10541:4;10579:2;10568:9;10564:18;10556:26;;10628:9;10622:4;10618:20;10614:1;10603:9;10599:17;10592:47;10656:131;10782:4;10656:131;:::i;:::-;10648:139;;10375:419;;;:::o;10800:180::-;10848:77;10845:1;10838:88;10945:4;10942:1;10935:15;10969:4;10966:1;10959:15;10986:410;11026:7;11049:20;11067:1;11049:20;:::i;:::-;11044:25;;11083:20;11101:1;11083:20;:::i;:::-;11078:25;;11138:1;11135;11131:9;11160:30;11178:11;11160:30;:::i;:::-;11149:41;;11339:1;11330:7;11326:15;11323:1;11320:22;11300:1;11293:9;11273:83;11250:139;;11369:18;;:::i;:::-;11250:139;11034:362;10986:410;;;;:::o;11402:163::-;11542:15;11538:1;11530:6;11526:14;11519:39;11402:163;:::o;11571:366::-;11713:3;11734:67;11798:2;11793:3;11734:67;:::i;:::-;11727:74;;11810:93;11899:3;11810:93;:::i;:::-;11928:2;11923:3;11919:12;11912:19;;11571:366;;;:::o;11943:419::-;12109:4;12147:2;12136:9;12132:18;12124:26;;12196:9;12190:4;12186:20;12182:1;12171:9;12167:17;12160:47;12224:131;12350:4;12224:131;:::i;:::-;12216:139;;11943:419;;;:::o;12368:191::-;12408:3;12427:20;12445:1;12427:20;:::i;:::-;12422:25;;12461:20;12479:1;12461:20;:::i;:::-;12456:25;;12504:1;12501;12497:9;12490:16;;12525:3;12522:1;12519:10;12516:36;;;12532:18;;:::i;:::-;12516:36;12368:191;;;;:::o;12565:159::-;12705:11;12701:1;12693:6;12689:14;12682:35;12565:159;:::o;12730:365::-;12872:3;12893:66;12957:1;12952:3;12893:66;:::i;:::-;12886:73;;12968:93;13057:3;12968:93;:::i;:::-;13086:2;13081:3;13077:12;13070:19;;12730:365;;;:::o;13101:419::-;13267:4;13305:2;13294:9;13290:18;13282:26;;13354:9;13348:4;13344:20;13340:1;13329:9;13325:17;13318:47;13382:131;13508:4;13382:131;:::i;:::-;13374:139;;13101:419;;;:::o;13526:194::-;13566:4;13586:20;13604:1;13586:20;:::i;:::-;13581:25;;13620:20;13638:1;13620:20;:::i;:::-;13615:25;;13664:1;13661;13657:9;13649:17;;13688:1;13682:4;13679:11;13676:37;;;13693:18;;:::i;:::-;13676:37;13526:194;;;;:::o;13726:175::-;13866:27;13862:1;13854:6;13850:14;13843:51;13726:175;:::o;13907:366::-;14049:3;14070:67;14134:2;14129:3;14070:67;:::i;:::-;14063:74;;14146:93;14235:3;14146:93;:::i;:::-;14264:2;14259:3;14255:12;14248:19;;13907:366;;;:::o;14279:419::-;14445:4;14483:2;14472:9;14468:18;14460:26;;14532:9;14526:4;14522:20;14518:1;14507:9;14503:17;14496:47;14560:131;14686:4;14560:131;:::i;:::-;14552:139;;14279:419;;;:::o;14704:165::-;14844:17;14840:1;14832:6;14828:14;14821:41;14704:165;:::o;14875:366::-;15017:3;15038:67;15102:2;15097:3;15038:67;:::i;:::-;15031:74;;15114:93;15203:3;15114:93;:::i;:::-;15232:2;15227:3;15223:12;15216:19;;14875:366;;;:::o;15247:419::-;15413:4;15451:2;15440:9;15436:18;15428:26;;15500:9;15494:4;15490:20;15486:1;15475:9;15471:17;15464:47;15528:131;15654:4;15528:131;:::i;:::-;15520:139;;15247:419;;;:::o;15672:159::-;15812:11;15808:1;15800:6;15796:14;15789:35;15672:159;:::o;15837:365::-;15979:3;16000:66;16064:1;16059:3;16000:66;:::i;:::-;15993:73;;16075:93;16164:3;16075:93;:::i;:::-;16193:2;16188:3;16184:12;16177:19;;15837:365;;;:::o;16208:419::-;16374:4;16412:2;16401:9;16397:18;16389:26;;16461:9;16455:4;16451:20;16447:1;16436:9;16432:17;16425:47;16489:131;16615:4;16489:131;:::i;:::-;16481:139;;16208:419;;;:::o;16633:164::-;16773:16;16769:1;16761:6;16757:14;16750:40;16633:164;:::o;16803:366::-;16945:3;16966:67;17030:2;17025:3;16966:67;:::i;:::-;16959:74;;17042:93;17131:3;17042:93;:::i;:::-;17160:2;17155:3;17151:12;17144:19;;16803:366;;;:::o;17175:419::-;17341:4;17379:2;17368:9;17364:18;17356:26;;17428:9;17422:4;17418:20;17414:1;17403:9;17399:17;17392:47;17456:131;17582:4;17456:131;:::i;:::-;17448:139;;17175:419;;;:::o;17600:180::-;17648:77;17645:1;17638:88;17745:4;17742:1;17735:15;17769:4;17766:1;17759:15;17786:180;17834:77;17831:1;17824:88;17931:4;17928:1;17921:15;17955:4;17952:1;17945:15;17972:233;18011:3;18034:24;18052:5;18034:24;:::i;:::-;18025:33;;18080:66;18073:5;18070:77;18067:103;;18150:18;;:::i;:::-;18067:103;18197:1;18190:5;18186:13;18179:20;;17972:233;;;:::o;18211:169::-;18351:21;18347:1;18339:6;18335:14;18328:45;18211:169;:::o;18386:366::-;18528:3;18549:67;18613:2;18608:3;18549:67;:::i;:::-;18542:74;;18625:93;18714:3;18625:93;:::i;:::-;18743:2;18738:3;18734:12;18727:19;;18386:366;;;:::o;18758:419::-;18924:4;18962:2;18951:9;18947:18;18939:26;;19011:9;19005:4;19001:20;18997:1;18986:9;18982:17;18975:47;19039:131;19165:4;19039:131;:::i;:::-;19031:139;;18758:419;;;:::o;19183:162::-;19323:14;19319:1;19311:6;19307:14;19300:38;19183:162;:::o;19351:366::-;19493:3;19514:67;19578:2;19573:3;19514:67;:::i;:::-;19507:74;;19590:93;19679:3;19590:93;:::i;:::-;19708:2;19703:3;19699:12;19692:19;;19351:366;;;:::o;19723:419::-;19889:4;19927:2;19916:9;19912:18;19904:26;;19976:9;19970:4;19966:20;19962:1;19951:9;19947:17;19940:47;20004:131;20130:4;20004:131;:::i;:::-;19996:139;;19723:419;;;:::o;20148:158::-;20288:10;20284:1;20276:6;20272:14;20265:34;20148:158;:::o;20312:365::-;20454:3;20475:66;20539:1;20534:3;20475:66;:::i;:::-;20468:73;;20550:93;20639:3;20550:93;:::i;:::-;20668:2;20663:3;20659:12;20652:19;;20312:365;;;:::o;20683:419::-;20849:4;20887:2;20876:9;20872:18;20864:26;;20936:9;20930:4;20926:20;20922:1;20911:9;20907:17;20900:47;20964:131;21090:4;20964:131;:::i;:::-;20956:139;;20683:419;;;:::o;21108:79::-;21147:7;21176:5;21165:16;;21108:79;;;:::o;21193:157::-;21298:45;21318:24;21336:5;21318:24;:::i;:::-;21298:45;:::i;:::-;21293:3;21286:58;21193:157;;:::o;21356:397::-;21496:3;21511:75;21582:3;21573:6;21511:75;:::i;:::-;21611:2;21606:3;21602:12;21595:19;;21624:75;21695:3;21686:6;21624:75;:::i;:::-;21724:2;21719:3;21715:12;21708:19;;21744:3;21737:10;;21356:397;;;;;:::o;21759:180::-;21807:77;21804:1;21797:88;21904:4;21901:1;21894:15;21928:4;21925:1;21918:15;21945:176;21977:1;21994:20;22012:1;21994:20;:::i;:::-;21989:25;;22028:20;22046:1;22028:20;:::i;:::-;22023:25;;22067:1;22057:35;;22072:18;;:::i;:::-;22057:35;22113:1;22110;22106:9;22101:14;;21945:176;;;;:::o;22127:104::-;22192:6;22220:4;22210:14;;22127:104;;;:::o;22237:143::-;22334:11;22371:3;22356:18;;22237:143;;;;:::o;22386:98::-;22451:4;22474:3;22466:11;;22386:98;;;:::o;22490:111::-;22558:4;22590;22585:3;22581:14;22573:22;;22490:111;;;:::o;22639:694::-;22775:52;22821:5;22775:52;:::i;:::-;22843:84;22920:6;22915:3;22843:84;:::i;:::-;22836:91;;22951:54;22999:5;22951:54;:::i;:::-;23028:7;23059:1;23044:282;23069:6;23066:1;23063:13;23044:282;;;23145:6;23139:13;23172:63;23231:3;23216:13;23172:63;:::i;:::-;23165:70;;23258:58;23309:6;23258:58;:::i;:::-;23248:68;;23104:222;23091:1;23088;23084:9;23079:14;;23044:282;;;23048:14;22751:582;;;22639:694;;:::o;23339:647::-;23562:4;23600:3;23589:9;23585:19;23577:27;;23614:71;23682:1;23671:9;23667:17;23658:6;23614:71;:::i;:::-;23695:118;23809:2;23798:9;23794:18;23785:6;23695:118;:::i;:::-;23823:73;23891:3;23880:9;23876:19;23867:6;23823:73;:::i;:::-;23906;23974:3;23963:9;23959:19;23950:6;23906:73;:::i;:::-;23339:647;;;;;;;:::o;23992:185::-;24032:1;24049:20;24067:1;24049:20;:::i;:::-;24044:25;;24083:20;24101:1;24083:20;:::i;:::-;24078:25;;24122:1;24112:35;;24127:18;;:::i;:::-;24112:35;24169:1;24166;24162:9;24157:14;;23992:185;;;;:::o;24183:160::-;24323:12;24319:1;24311:6;24307:14;24300:36;24183:160;:::o;24349:366::-;24491:3;24512:67;24576:2;24571:3;24512:67;:::i;:::-;24505:74;;24588:93;24677:3;24588:93;:::i;:::-;24706:2;24701:3;24697:12;24690:19;;24349:366;;;:::o;24721:419::-;24887:4;24925:2;24914:9;24910:18;24902:26;;24974:9;24968:4;24964:20;24960:1;24949:9;24945:17;24938:47;25002:131;25128:4;25002:131;:::i;:::-;24994:139;;24721:419;;;:::o;25146:166::-;25286:18;25282:1;25274:6;25270:14;25263:42;25146:166;:::o;25318:366::-;25460:3;25481:67;25545:2;25540:3;25481:67;:::i;:::-;25474:74;;25557:93;25646:3;25557:93;:::i;:::-;25675:2;25670:3;25666:12;25659:19;;25318:366;;;:::o;25690:419::-;25856:4;25894:2;25883:9;25879:18;25871:26;;25943:9;25937:4;25933:20;25929:1;25918:9;25914:17;25907:47;25971:131;26097:4;25971:131;:::i;:::-;25963:139;;25690:419;;;:::o;26115:143::-;26172:5;26203:6;26197:13;26188:22;;26219:33;26246:5;26219:33;:::i;:::-;26115:143;;;;:::o;26264:351::-;26334:6;26383:2;26371:9;26362:7;26358:23;26354:32;26351:119;;;26389:79;;:::i;:::-;26351:119;26509:1;26534:64;26590:7;26581:6;26570:9;26566:22;26534:64;:::i;:::-;26524:74;;26480:128;26264:351;;;;:::o;26621:167::-;26761:19;26757:1;26749:6;26745:14;26738:43;26621:167;:::o;26794:366::-;26936:3;26957:67;27021:2;27016:3;26957:67;:::i;:::-;26950:74;;27033:93;27122:3;27033:93;:::i;:::-;27151:2;27146:3;27142:12;27135:19;;26794:366;;;:::o;27166:419::-;27332:4;27370:2;27359:9;27355:18;27347:26;;27419:9;27413:4;27409:20;27405:1;27394:9;27390:17;27383:47;27447:131;27573:4;27447:131;:::i;:::-;27439:139;;27166:419;;;:::o;27591:442::-;27740:4;27778:2;27767:9;27763:18;27755:26;;27791:71;27859:1;27848:9;27844:17;27835:6;27791:71;:::i;:::-;27872:72;27940:2;27929:9;27925:18;27916:6;27872:72;:::i;:::-;27954;28022:2;28011:9;28007:18;27998:6;27954:72;:::i;:::-;27591:442;;;;;;:::o;28039:225::-;28179:34;28175:1;28167:6;28163:14;28156:58;28248:8;28243:2;28235:6;28231:15;28224:33;28039:225;:::o;28270:366::-;28412:3;28433:67;28497:2;28492:3;28433:67;:::i;:::-;28426:74;;28509:93;28598:3;28509:93;:::i;:::-;28627:2;28622:3;28618:12;28611:19;;28270:366;;;:::o;28642:419::-;28808:4;28846:2;28835:9;28831:18;28823:26;;28895:9;28889:4;28885:20;28881:1;28870:9;28866:17;28859:47;28923:131;29049:4;28923:131;:::i;:::-;28915:139;;28642:419;;;:::o

Swarm Source

ipfs://a075caa6b1b6390719f4da0004545b8fefc53d8dec7c82ead41201d8e1692d53

Block Transaction Gas Used Reward
view all blocks ##produced##

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

Validator Index Block Amount
View All Withdrawals

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

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