Contract 0xf025C4FE9499B5eAF91ea2c1909b7737b7F6De6F

 

Contract Overview

Balance:
0 MATIC

MATIC Value:
$0.00

Token:
Txn Hash
Block
From
To
Value [Txn Fee]
0xedb7f4629aaf96fefb4a63243ce386e253f8f4ac83da138e85473d27dff0f216173823032021-07-29 6:18:004 mins ago0x75f6db327324bfe9e670f710c84e3174e428d9cb IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.000554811
0xf646e7451d7d709dc04c49f233b7e3a5dc4faa9604f2b24632ec14e85d5bd01f173823002021-07-29 6:17:544 mins ago0x1cb85a86edf96c2a81c2fbf64534db15bde9e509 IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.001500723
0xf5ad5ba2a1fca3fd12aaab93f86048b60ee109dded5d0875f9c206c9450875ff173822922021-07-29 6:17:384 mins ago0x00ba5fdf5f8a719921e41b542b60621e0fc11f7a IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.003727822
0xd66006923c13f5f65a0c12a534b70241ae00b91dbc2f2c44efe4fc0070653d4d173822892021-07-29 6:17:324 mins ago0xcd7d64c0b82807947c01e49f9fa8dba63eb35fce IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.002069285035
0x6b8fb9ec9aa60d9027b52854b1b256be001c49239ace31445c2c81badcda1fba173822762021-07-29 6:17:065 mins ago0x75f6db327324bfe9e670f710c84e3174e428d9cb IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.000531168
0x46df9420d1984db7708e2d7235ec617aa1e887fac61af27aac12300013c5016c173822612021-07-29 6:16:325 mins ago0x1cb85a86edf96c2a81c2fbf64534db15bde9e509 IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.001265991614
0xc40b563bc712318b80ed393ff3bb7206f5c99b2f4357f3812e4401b2f05b43a1173822532021-07-29 6:16:165 mins ago0x00ba5fdf5f8a719921e41b542b60621e0fc11f7a IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.000467028
0x9e38ac5ea5c0c453f12472de464adb15557925aaeb1cb38a8e1c4cf91a07cf33173822502021-07-29 6:16:106 mins ago0xcd7d64c0b82807947c01e49f9fa8dba63eb35fce IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.000925078
0xe686b7a4954124a7e9183a676e177a46fae69ff4fecd412c1e6b64d947c475c2173805202021-07-29 4:58:041 hr 24 mins ago0x75f6db327324bfe9e670f710c84e3174e428d9cb IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.003035136
0x0916eae7bb398785ee03557ca7e0bccb700faf3d26d7965a7eefaf9d1590bdbb173805192021-07-29 4:57:581 hr 24 mins ago0x1cb85a86edf96c2a81c2fbf64534db15bde9e509 IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.003035136
0x18f38bd02d404638d07ce25524e7eda4908c174a074eba947c621438f2134d3e173805072021-07-29 4:56:461 hr 25 mins ago0x00ba5fdf5f8a719921e41b542b60621e0fc11f7a IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.00096341
0xec6d8470c38c2b1b7cba6435c66a3666834d7f9590529ef0d234444f8a67dc33173805062021-07-29 4:56:401 hr 25 mins ago0xcd7d64c0b82807947c01e49f9fa8dba63eb35fce IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.002601705
0x47be6a7533800ad75172da38ff0bfe6ec4dc6094cdd943c49881a7ebbe0d149d173804962021-07-29 4:55:401 hr 26 mins ago0x75f6db327324bfe9e670f710c84e3174e428d9cb IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.00885779
0x05a9851a8ea496bcfe1975f3d39c7eb9e3b08ee67eff43176dad0bcc9f5dc301173804952021-07-29 4:55:341 hr 26 mins ago0x1cb85a86edf96c2a81c2fbf64534db15bde9e509 IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.00885779
0xd20aaff4d85c06bac37052cff934cd13b0161e80fe309d9551ce571d5fcdede3173804902021-07-29 4:55:041 hr 27 mins ago0x00ba5fdf5f8a719921e41b542b60621e0fc11f7a IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.0017169425
0x38247d04efb931d3ac990abf6ad6a61ab7fe1a0195709fe4cb3c55f6394ccea0173804892021-07-29 4:54:581 hr 27 mins ago0xcd7d64c0b82807947c01e49f9fa8dba63eb35fce IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.002529387666
0x989e982addb27b6109e71a036826e50cac488516f30faffea9c916c8e36a244f173804842021-07-29 4:54:281 hr 27 mins ago0x75f6db327324bfe9e670f710c84e3174e428d9cb IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.00111676
0xbed1817348abd1117b5c4b6e383d02487919a9daaf55877755147eabe46a695e173804812021-07-29 4:54:101 hr 28 mins ago0x1cb85a86edf96c2a81c2fbf64534db15bde9e509 IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.001942983
0x81a65e174e63d6001c3d19a68b4603586fae9b778753da26ab5d99b82ff46b3c173804792021-07-29 4:53:541 hr 28 mins ago0x00ba5fdf5f8a719921e41b542b60621e0fc11f7a IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.0018118835
0xe2a8da8e3b76ba794769c17ba156ad14e3d0dd8396e0a282f350a9d58c162d0f173804762021-07-29 4:53:481 hr 28 mins ago0xcd7d64c0b82807947c01e49f9fa8dba63eb35fce IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.002669254082
0x6b4257716fae5c7a60fd883b8b852f8955111ef77493ecfa178c0ea2647eb396173804672021-07-29 4:53:301 hr 28 mins ago0x75f6db327324bfe9e670f710c84e3174e428d9cb IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.00279588
0x83717f5da97a6445579d1a86eb96a2e04580e03d2c3a084af2457bd0aaecf9bc173804642021-07-29 4:53:241 hr 28 mins ago0x1cb85a86edf96c2a81c2fbf64534db15bde9e509 IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.00580718
0xde445f7e3d6aee8379b61caf8bb9ed49c1402e5727d9b1ffaa60f89628ee7b78173804512021-07-29 4:52:581 hr 29 mins ago0x00ba5fdf5f8a719921e41b542b60621e0fc11f7a IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.0002132904
0x22168fb3b3ed39b10dc929b888bc070aba3ba803ded878d0f58092b68bfc9867173804482021-07-29 4:52:521 hr 29 mins ago0xcd7d64c0b82807947c01e49f9fa8dba63eb35fce IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.0005551524
0x3193cfdf1f7b4771279c8b1b412eedfb8a2fe9618f4d549f0760b3c1e8e23f0f173804262021-07-29 4:52:081 hr 30 mins ago0x75f6db327324bfe9e670f710c84e3174e428d9cb IN  0xf025c4fe9499b5eaf91ea2c1909b7737b7f6de6f0 MATIC0.001814898749
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
dgRoulette

Compiler Version
v0.7.5+commit.eb77ed08

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at polygonscan.com on 2021-06-10
*/

// SPDX-License-Identifier: -- 🎲 --

pragma solidity ^0.7.5;

// Roulette Logic Contract ///////////////////////////////////////////////////////////
// Author: Decentral Games ([email protected]) ///////////////////////////////////////
// Roulette - MultiPlayer - TokenIndex 3.0

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, 'SafeMath: addition overflow');
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, 'SafeMath: subtraction overflow');
        uint256 c = a - b;
        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

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

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b > 0, 'SafeMath: division by zero');
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b != 0, 'SafeMath: modulo by zero');
        return a % b;
    }
}

contract AccessController {

    address public ceoAddress;

    bool public paused = false;

    mapping (address => bool) public isWorker;

    event CEOSet(
        address newCEO
    );

    event WorkerAdded(
        address newWorker
    );

    event WorkerRemoved(
        address existingWorker
    );

    event Paused();
    event Unpaused();

    constructor() {

        address creator = msg.sender;

        ceoAddress = creator;

        isWorker[creator] = true;

        emit CEOSet(
            creator
        );

        emit WorkerAdded(
            creator
        );
    }

    modifier onlyCEO() {
        require(
            msg.sender == ceoAddress,
            'AccessControl: CEO access denied'
        );
        _;
    }

    modifier onlyWorker() {
        require(
            isWorker[msg.sender] == true,
            'AccessControl: worker access denied'
        );
        _;
    }

    modifier nonZeroAddress(address checkingAddress) {
        require(
            checkingAddress != address(0x0),
            'AccessControl: invalid address'
        );
        _;
    }

    modifier whenNotPaused() {
        require(
            !paused,
            'AccessControl: currently paused'
        );
        _;
    }

    modifier whenPaused {
        require(
            paused,
            'AccessControl: currenlty not paused'
        );
        _;
    }

    function setCEO(
        address _newCEO
    )
        external
        nonZeroAddress(_newCEO)
        onlyCEO
    {
        ceoAddress = _newCEO;

        emit CEOSet(
            ceoAddress
        );
    }

    function addWorker(
        address _newWorker
    )
        external
        onlyCEO
    {
        _addWorker(
            _newWorker
        );
    }

    function addWorkerBulk(
        address[] calldata _newWorkers
    )
        external
        onlyCEO
    {
        for (uint8 index = 0; index < _newWorkers.length; index++) {
            _addWorker(_newWorkers[index]);
        }
    }

    function _addWorker(
        address _newWorker
    )
        internal
        nonZeroAddress(_newWorker)
    {
        require(
            isWorker[_newWorker] == false,
            'AccessControl: worker already exist'
        );

        isWorker[_newWorker] = true;

        emit WorkerAdded(
            _newWorker
        );
    }

    function removeWorker(
        address _existingWorker
    )
        external
        onlyCEO
    {
        _removeWorker(
            _existingWorker
        );
    }

    function removeWorkerBulk(
        address[] calldata _workerArray
    )
        external
        onlyCEO
    {
        for (uint8 index = 0; index < _workerArray.length; index++) {
            _removeWorker(_workerArray[index]);
        }
    }

    function _removeWorker(
        address _existingWorker
    )
        internal
        nonZeroAddress(_existingWorker)
    {
        require(
            isWorker[_existingWorker] == true,
            "AccessControl: worker not detected"
        );

        isWorker[_existingWorker] = false;

        emit WorkerRemoved(
            _existingWorker
        );
    }

    function pause()
        external
        onlyWorker
        whenNotPaused
    {
        paused = true;
        emit Paused();
    }

    function unpause()
        external
        onlyCEO
        whenPaused
    {
        paused = false;
        emit Unpaused();
    }
}

interface TreasuryInstance {

    function getTokenAddress(
        uint8 _tokenIndex
    ) external view returns (address);

    function tokenInboundTransfer(
        uint8 _tokenIndex,
        address _from,
        uint256 _amount
    )  external returns (bool);

    function tokenOutboundTransfer(
        uint8 _tokenIndex,
        address _to,
        uint256 _amount
    ) external returns (bool);

    function checkAllocatedTokens(
        uint8 _tokenIndex
    ) external view returns (uint256);

    function checkApproval(
        address _userAddress,
        uint8 _tokenIndex
    ) external view returns (uint256 approved);

    function getMaximumBet(
        uint8 _tokenIndex
    ) external view returns (uint128);

    function consumeHash(
        bytes32 _localhash
    ) external returns (bool);
}

interface PointerInstance {

    function addPoints(
        address _player,
        uint256 _points,
        address _token,
        uint256 _numPlayers,
        uint256 _wearableBonus
    ) external returns (
        uint256 newPoints,
        uint256 multiplierA,
        uint256 multiplierB
    );

    function addPoints(
        address _player,
        uint256 _points,
        address _token,
        uint256 _numPlayers
    ) external returns (
        uint256 newPoints,
        uint256 multiplierA,
        uint256 multiplierB
    );

    function addPoints(
        address _player,
        uint256 _points,
        address _token
    ) external returns (
        uint256 newPoints,
        uint256 multiplierA,
        uint256 multiplierB
    );
}

contract dgRoulette is AccessController {

    using SafeMath for uint128;
    using SafeMath for uint256;

    uint256 private store;
    uint256 public pointsCap;

    enum GameState { NewGame, OnGoingGame, EndedGame }
    enum BetType { Single, EvenOdd, RedBlack, HighLow, Column, Dozen }

    mapping (address => uint) public totalBets;
    mapping (address => uint) public totalPayout;

    mapping (uint => uint) public maxSquareBets;
    mapping (uint => mapping (uint => mapping (uint => uint))) public currentBets;

    struct Game {
        address[] players;
        uint256 landID;
        uint256 machineID;
        uint8[] betIDs;
        uint8[] betValues;
        uint128[] betAmount;
        uint8[] tokenIndex;
        uint8 playersCount;
        uint8[] wearableBonus;
        GameState state;
    }

    mapping(bytes16 => Game) public Games;

    Bet[] public bets;
    uint256[] winAmounts;

    struct Bet {
        address player;
        uint8 betType;
        uint8 number;
        uint8 tokenIndex;
        uint128 value;
    }

    event GameResult(
        address[] _players,
        uint8[] _tokenIndex,
        uint256 indexed _landID,
        uint256 indexed _number,
        uint256 indexed _machineID,
        uint256[] _winAmounts
    );

    TreasuryInstance public treasury;
    PointerInstance public pointerContract;

    constructor(
        address _treasuryAddress,
        uint128 _maxSquareBetDefault,
        uint8 _maxNumberBets,
        address _pointerAddress
    ) {
        treasury = TreasuryInstance(_treasuryAddress);
        store |= _maxNumberBets<<0;
        store |= _maxSquareBetDefault<<8;
        store |= block.timestamp<<136;
        pointerContract = PointerInstance(_pointerAddress);
        pointsCap = 2;
    }

    function addPoints(
        address _player,
        uint256 _points,
        address _token,
        uint256 _numPlayers,
        uint256 _wearableBonus
    )
        private
    {
        pointerContract.addPoints(
            _player,
            _points,
            _token,
            _numPlayers,
            _wearableBonus
        );
    }

    function bet(
        address _player,
        uint8 _betType,
        uint8 _number,
        uint8 _tokenIndex,
        uint128 _value
    )
        internal
    {
        currentBets[_tokenIndex][_betType][_number] += _value;

        uint256 _maxSquareBet = maxSquareBets[_tokenIndex] == 0
            ? uint128(store>>8)
            : maxSquareBets[_tokenIndex];

        require(
            currentBets[_tokenIndex][_betType][_number] <= _maxSquareBet,
            'Roulette: exceeding maximum bet limit'
        );

        bets.push(Bet({
            player: _player,
            betType: _betType,
            number: _number,
            tokenIndex: _tokenIndex,
            value: _value
        }));
    }

    function _launch(
        bytes32 _localhash,
        address[] memory _players,
        uint8[] memory _tokenIndex,
        uint256 _landID,
        uint256 _machineID
    )
        private
        returns(
            uint256[] memory,
            uint256 number
        )
    {
        require(
            bets.length > 0,
            'Roulette: must have bets'
        );

        delete winAmounts;

        store ^= (store>>136)<<136;
        store |= block.timestamp<<136;

        number = uint(
            keccak256(
                abi.encodePacked(
                    _localhash
                )
            )
        ) % 37;

        for (uint i = 0; i < bets.length; i++) {
            bool won = false;
            Bet memory b = bets[i];
            if (b.betType == uint(BetType.Single) && b.number == number) {
                won = true;
            } else if (b.betType == uint(BetType.EvenOdd) && number <= 36) {
                if (number > 0 && number % 2 == b.number) {
                    won = true;
                }
            } else if (b.betType == uint(BetType.RedBlack) && b.number == 0) {
                if ((number > 0 && number <= 10) || (number >= 19 && number <= 28)) {
                    won = (number % 2 == 1);
                } else {
                    if (number > 0 && number <= 36) {
                        won = (number % 2 == 0);
                    }
                }
            } else if (b.betType == uint(BetType.RedBlack) && b.number == 1) {
                if ((number > 0 && number <= 10) || (number >= 19 && number <= 28)) {
                    won = (number % 2 == 0);
                } else {
                    if (number > 0 && number <= 36) {
                        won = (number % 2 == 1);
                    }
                }
            } else if (b.betType == uint(BetType.HighLow) && number <= 36) {
                if (number >= 19 && b.number == 0) {
                    won = true;
                }
                if (number > 0 && number <= 18 && b.number == 1) {
                    won = true;
                }
            } else if (b.betType == uint(BetType.Column) && number <= 36) {
                if (b.number == 0 && number > 0) won = (number % 3 == 1);
                if (b.number == 1 && number > 0) won = (number % 3 == 2);
                if (b.number == 2 && number > 0) won = (number % 3 == 0);
            } else if (b.betType == uint(BetType.Dozen) && number <= 36) {
                if (b.number == 0) won = (number > 0 && number <= 12);
                if (b.number == 1) won = (number > 12 && number <= 24);
                if (b.number == 2) won = (number > 24 && number <= 36);
            }

            if (won) {
                uint256 betWin = b.value.mul(
                    getPayoutForType(b.betType, b.number)
                );
                winAmounts.push(betWin);
            } else {
                winAmounts.push(0);
            }
            currentBets[b.tokenIndex][b.betType][b.number] = 0;
        }

        delete bets;

        emit GameResult(
            _players,
            _tokenIndex,
            _landID,
            number,
            _machineID,
            winAmounts
        );

        return(
            winAmounts,
            number
        );
    }

    function placeBets(
        bytes16 _gameId,
        address[] memory _players,
        uint256 _landID,
        uint256 _machineID,
        uint8[] memory _betIDs,
        uint8[] memory _betValues,
        uint128[] memory _betAmount,
        uint8[] memory _tokenIndex,
        uint8 _playerCount,
        uint8[] memory _wearableBonus
    )
        public
        whenNotPaused
        onlyWorker
    {
        require(
            _betIDs.length == _betValues.length,
            'Roulette: inconsistent amount of betsValues'
        );

        require(
            _tokenIndex.length == _betAmount.length,
            'Roulette: inconsistent amount of betAmount'
        );

        require(
            _betValues.length == _tokenIndex.length,
            'Roulette: inconsistent amount of tokenIndex'
        );

        require(
            _betIDs.length <= uint8(store>>0),
            'Roulette: maximum amount of bets reached'
        );

        require(
            Games[_gameId].state == GameState.NewGame ||
            Games[_gameId].state == GameState.EndedGame,
            'Roulette: ongoing game detected'
        );

        Game memory _game = Game(
            _players,
            _landID,
            _machineID,
            _betIDs,
            _betValues,
            _betAmount,
            _tokenIndex,
            _playerCount,
            _wearableBonus,
            GameState.OnGoingGame
        );

        Games[_gameId] = _game;

        bool[5] memory checkedTokens;
        uint8 i;

        for (i = 0; i < _betIDs.length; i++) {

            require(
                treasury.getMaximumBet(_tokenIndex[i]) >= _betAmount[i],
                'Roulette: bet amount is more than maximum'
            );

            treasury.tokenInboundTransfer(
                _tokenIndex[i],
                _players[i],
                _betAmount[i]
            );

            if (!checkedTokens[_tokenIndex[i]]) {
                uint256 tokenFunds = treasury.checkAllocatedTokens(_tokenIndex[i]);
                require(
                    getNecessaryBalance(_tokenIndex[i]) <= tokenFunds,
                    'Roulette: not enough tokens for payout'
                );
                checkedTokens[_tokenIndex[i]] = true;
            }
        }
    }

    function resolveGame(
        bytes16 _gameId,
        bytes32 _localhash
    )
        public
        whenNotPaused
        onlyWorker
    {
        require(
            Games[_gameId].state == GameState.OnGoingGame,
            'dgRoulette: not ongoing game detected'
        );

        Games[_gameId].state = GameState.EndedGame;

        for (uint8 i = 0; i < Games[_gameId].betIDs.length; i++) {
            bet(
                Games[_gameId].players[i],
                Games[_gameId].betIDs[i],
                Games[_gameId].betValues[i],
                Games[_gameId].tokenIndex[i],
                Games[_gameId].betAmount[i]
            );
        }

        uint256 _spinResult;
        (winAmounts, _spinResult) = _launch(
            _localhash,
            Games[_gameId].players,
            Games[_gameId].tokenIndex,
            Games[_gameId].landID,
            Games[_gameId].machineID
        );

        // payout && points preparation
        for (uint8 i = 0; i < winAmounts.length; i++) {
            address player = Games[_gameId].players[i];
            if (winAmounts[i] > 0) {
                treasury.tokenOutboundTransfer(
                    Games[_gameId].tokenIndex[i],
                    Games[_gameId].players[i],
                    winAmounts[i]
                );
                // collecting totalPayout
                totalPayout[player] =
                totalPayout[player] + winAmounts[i];
            }
            totalBets[player] =
            totalBets[player] + Games[_gameId].betAmount[i];
        }

        // point calculation && bonus
        for (uint8 i = 0; i < Games[_gameId].players.length; i++) {
            _issuePointsAmount(
                Games[_gameId].players[i],
                Games[_gameId].tokenIndex[i],
                Games[_gameId].playersCount,
                Games[_gameId].wearableBonus[i]
            );
        }
    }

    function changeCap(
        uint256 _newPointsCap
    )
        external
        onlyCEO
    {
        pointsCap = _newPointsCap;
    }

    function _issuePointsAmount(
        address _player,
        uint8 _tokenIndex,
        uint256 _playerCount,
        uint256 _wearableBonus
    ) private {
        if (totalPayout[_player] > totalBets[_player]) {

            uint256 points = totalPayout[_player].sub(totalBets[_player]);
            uint256 limits = totalBets[_player].mul(pointsCap);

            points = points > limits
                ? limits
                : points;

            addPoints(
                _player,
                points,
                treasury.getTokenAddress(_tokenIndex),
                _playerCount,
                _wearableBonus
            );
        }
        else if (totalPayout[_player] < totalBets[_player]) {
            addPoints(
                _player,
                totalBets[_player].sub(totalPayout[_player]),
                treasury.getTokenAddress(_tokenIndex),
                _playerCount,
                _wearableBonus
            );
        }
        totalBets[_player] = 0;
        totalPayout[_player] = 0;
    }

    function getPayoutForType(
        uint256 _betType,
        uint256 _betNumber
    )
        public
        pure
        returns(uint256)
    {
        if (_betType == uint8(BetType.Single))
            return _betNumber > 36 ? 0 : 36;
        if (_betType == uint8(BetType.EvenOdd))
            return _betNumber > 1 ? 0 : 2;
        if (_betType == uint8(BetType.RedBlack))
            return _betNumber > 1 ? 0 : 2;
        if (_betType == uint8(BetType.HighLow))
            return _betNumber > 1 ? 0 : 2;
        if (_betType == uint8(BetType.Column))
            return _betNumber > 2 ? 0 : 3;
        if (_betType == uint8(BetType.Dozen))
            return _betNumber > 2 ? 0 : 3;

        return 0;
    }

    function getNecessaryBalance(
        uint256 _tokenIndex
    )
        public
        view
        returns (uint256 _necessaryBalance)
    {
        uint256 _necessaryForBetType;
        uint256[6] memory betTypesMax;

        for (uint8 _i = 0; _i < bets.length; _i++) {
            Bet memory b = bets[_i];
            if (b.tokenIndex == _tokenIndex) {

                uint256 _payout = getPayoutForType(b.betType, b.number);
                uint256 _square = currentBets[b.tokenIndex][b.betType][b.number];

                require(
                    _payout > 0,
                    'Roulette: incorrect bet type/value'
                );

                _necessaryForBetType = _square.mul(_payout);

                if (_necessaryForBetType > betTypesMax[b.betType]) {
                    betTypesMax[b.betType] = _necessaryForBetType;
                }
            }
        }

        for (uint8 _i = 0; _i < betTypesMax.length; _i++) {
            _necessaryBalance = _necessaryBalance.add(
                betTypesMax[_i]
            );
        }
    }

    function getBetsCountAndValue()
        external
        view
        returns(uint value, uint)
    {
        for (uint i = 0; i < bets.length; i++) {
            value += bets[i].value;
        }

        return (bets.length, value);
    }

    function getBetsCount()
        external
        view
        returns (uint256)
    {
        return bets.length;
    }

    function changeMaxSquareBet(
        uint256 _tokenIndex,
        uint256 _newMaxSquareBet
    )
        external
        onlyCEO
    {
        maxSquareBets[_tokenIndex] = _newMaxSquareBet;
    }

    function changeMaxSquareBetDefault(
        uint128 _newMaxSquareBetDefault
    )
        external
        onlyCEO
    {
        store ^= uint128((store>>8))<<8;
        store |= _newMaxSquareBetDefault<<8;
    }

    function changeMaximumBetAmount(
        uint8 _newMaximumBetAmount
    )
        external
        onlyCEO
    {
        store ^= uint8(store)<<0;
        store |= _newMaximumBetAmount<<0;
    }

    function changeTreasury(
        address _newTreasuryAddress
    )
        external
        onlyCEO
    {
        treasury = TreasuryInstance(
            _newTreasuryAddress
        );
    }

    function getNextRoundTimestamp()
        external
        view
        returns(uint)
    {
        return store>>136;
    }

    function checkMaximumBetAmount()
        external
        view
        returns (uint8)
    {
        return uint8(store>>0);
    }

    function checkMaxSquareBetDefault()
        external
        view
        returns (uint128)
    {
        return uint128(store>>8);
    }

    function updatePointer(
        address _newPointerAddress
    )
        external
        onlyCEO
    {
        pointerContract = PointerInstance(
            _newPointerAddress
        );
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_treasuryAddress","type":"address"},{"internalType":"uint128","name":"_maxSquareBetDefault","type":"uint128"},{"internalType":"uint8","name":"_maxNumberBets","type":"uint8"},{"internalType":"address","name":"_pointerAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newCEO","type":"address"}],"name":"CEOSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address[]","name":"_players","type":"address[]"},{"indexed":false,"internalType":"uint8[]","name":"_tokenIndex","type":"uint8[]"},{"indexed":true,"internalType":"uint256","name":"_landID","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_number","type":"uint256"},{"indexed":true,"internalType":"uint256","name":"_machineID","type":"uint256"},{"indexed":false,"internalType":"uint256[]","name":"_winAmounts","type":"uint256[]"}],"name":"GameResult","type":"event"},{"anonymous":false,"inputs":[],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"newWorker","type":"address"}],"name":"WorkerAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"existingWorker","type":"address"}],"name":"WorkerRemoved","type":"event"},{"inputs":[{"internalType":"bytes16","name":"","type":"bytes16"}],"name":"Games","outputs":[{"internalType":"uint256","name":"landID","type":"uint256"},{"internalType":"uint256","name":"machineID","type":"uint256"},{"internalType":"uint8","name":"playersCount","type":"uint8"},{"internalType":"enum dgRoulette.GameState","name":"state","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_newWorker","type":"address"}],"name":"addWorker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_newWorkers","type":"address[]"}],"name":"addWorkerBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"bets","outputs":[{"internalType":"address","name":"player","type":"address"},{"internalType":"uint8","name":"betType","type":"uint8"},{"internalType":"uint8","name":"number","type":"uint8"},{"internalType":"uint8","name":"tokenIndex","type":"uint8"},{"internalType":"uint128","name":"value","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"ceoAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newPointsCap","type":"uint256"}],"name":"changeCap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenIndex","type":"uint256"},{"internalType":"uint256","name":"_newMaxSquareBet","type":"uint256"}],"name":"changeMaxSquareBet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint128","name":"_newMaxSquareBetDefault","type":"uint128"}],"name":"changeMaxSquareBetDefault","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"_newMaximumBetAmount","type":"uint8"}],"name":"changeMaximumBetAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newTreasuryAddress","type":"address"}],"name":"changeTreasury","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"checkMaxSquareBetDefault","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"checkMaximumBetAmount","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"currentBets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBetsCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBetsCountAndValue","outputs":[{"internalType":"uint256","name":"value","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenIndex","type":"uint256"}],"name":"getNecessaryBalance","outputs":[{"internalType":"uint256","name":"_necessaryBalance","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getNextRoundTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_betType","type":"uint256"},{"internalType":"uint256","name":"_betNumber","type":"uint256"}],"name":"getPayoutForType","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isWorker","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"maxSquareBets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"bytes16","name":"_gameId","type":"bytes16"},{"internalType":"address[]","name":"_players","type":"address[]"},{"internalType":"uint256","name":"_landID","type":"uint256"},{"internalType":"uint256","name":"_machineID","type":"uint256"},{"internalType":"uint8[]","name":"_betIDs","type":"uint8[]"},{"internalType":"uint8[]","name":"_betValues","type":"uint8[]"},{"internalType":"uint128[]","name":"_betAmount","type":"uint128[]"},{"internalType":"uint8[]","name":"_tokenIndex","type":"uint8[]"},{"internalType":"uint8","name":"_playerCount","type":"uint8"},{"internalType":"uint8[]","name":"_wearableBonus","type":"uint8[]"}],"name":"placeBets","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pointerContract","outputs":[{"internalType":"contract PointerInstance","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pointsCap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_existingWorker","type":"address"}],"name":"removeWorker","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"_workerArray","type":"address[]"}],"name":"removeWorkerBulk","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes16","name":"_gameId","type":"bytes16"},{"internalType":"bytes32","name":"_localhash","type":"bytes32"}],"name":"resolveGame","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newCEO","type":"address"}],"name":"setCEO","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalBets","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"totalPayout","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"treasury","outputs":[{"internalType":"contract TreasuryInstance","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"unpause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newPointerAddress","type":"address"}],"name":"updatePointer","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526000805460ff60a01b1916905534801561001d57600080fd5b506040516139df3803806139df8339818101604052608081101561004057600080fd5b508051602080830151604080850151606090950151600080546001600160a01b031916339081178255808252600180875291849020805460ff191690921790915582518181529251959693959394919390927ff97cbb4246b709036319093e5ff31674b9f6759076d153e1bea1f60392170fc092908290030190a1604080516001600160a01b038316815290517fb10d2a24a8c3686841e966f0c2c64c385cfaecb50a09b16aa3579bfcf3989dcd9181900360200190a150600b80546001600160a01b03199081166001600160a01b03968716179091556002805460ff9490941690931760089490941b610100600160801b0316939093174260881b178255600c8054909316931692909217905560035561387f806101606000396000f3fe608060405234801561001057600080fd5b50600436106102065760003560e01c80636a5f3d5e1161011a578063b633b2ab116100ad578063ca4313411161007c578063ca43134114610964578063dca4d1a51461098a578063dcdfe3e8146109a7578063e6adfe37146109c5578063ef37cfe914610a3357610206565b8063b633b2ab1461089f578063bde04890146108a7578063c3170007146108d0578063c4f987a51461093e57610206565b80638c7e347a116100e95780638c7e347a146108435780639eb9a1061461084b578063aa15664514610853578063b14f2a391461087957610206565b80636a5f3d5e146107db578063800edb9d146107f8578063806ad57e146108155780638456cb591461083b57610206565b80633a7c48d61161019d57806358609e091161016c57806358609e091461041d5780635c975abb146107715780635ccc53021461078d57806361d027b3146107b3578063625c3a5f146107bb57610206565b80633a7c48d6146103c65780633f4ba83a146103ea57806350bfba99146103f2578063524b1bbf146103fa57610206565b806327d7874c116101d957806327d7874c1461032857806329dd3c9c146103505780633025d9e2146103735780633066e3421461039957610206565b80630a0f81681461020b5780630ab5cb641461022f57806322af00fa1461026757806325294949146102c8575b600080fd5b610213610a54565b604080516001600160a01b039092168252519081900360200190f35b6102556004803603602081101561024557600080fd5b50356001600160a01b0316610a63565b60408051918252519081900360200190f35b6102846004803603602081101561027d57600080fd5b5035610a75565b604080516001600160a01b03909616865260ff948516602087015292841685840152921660608401526001600160801b039091166080830152519081900360a00190f35b6102ef600480360360208110156102de57600080fd5b50356001600160801b031916610ad7565b604051808581526020018481526020018360ff16815260200182600281111561031457fe5b815260200194505050505060405180910390f35b61034e6004803603602081101561033e57600080fd5b50356001600160a01b0316610b08565b005b6102556004803603604081101561036657600080fd5b5080359060200135610c0c565b61034e6004803603602081101561038957600080fd5b50356001600160a01b0316610cb1565b61034e600480360360408110156103af57600080fd5b506001600160801b03198135169060200135610d20565b6103ce6114c9565b604080516001600160801b039092168252519081900360200190f35b61034e6114d2565b61021361159d565b61034e6004803603604081101561041057600080fd5b50803590602001356115ac565b61034e600480360361014081101561043457600080fd5b6001600160801b03198235169190810190604081016020820135600160201b81111561045f57600080fd5b82018360208201111561047157600080fd5b803590602001918460208302840111600160201b8311171561049257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295843595602086013595919450925060608101915060400135600160201b8111156104ed57600080fd5b8201836020820111156104ff57600080fd5b803590602001918460208302840111600160201b8311171561052057600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561056f57600080fd5b82018360208201111561058157600080fd5b803590602001918460208302840111600160201b831117156105a257600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b8111156105f157600080fd5b82018360208201111561060357600080fd5b803590602001918460208302840111600160201b8311171561062457600080fd5b9190808060200260200160405190810160405280939291908181526020018383602002808284376000920191909152509295949360208101935035915050600160201b81111561067357600080fd5b82018360208201111561068557600080fd5b803590602001918460208302840111600160201b831117156106a657600080fd5b919080806020026020016040519081016040528093929190818152602001838360200280828437600092019190915250929560ff853516959094909350604081019250602001359050600160201b81111561070057600080fd5b82018360208201111561071257600080fd5b803590602001918460208302840111600160201b8311171561073357600080fd5b91908080602002602001604051908101604052809392919081815260200183836020028082843760009201919091525092955061160b945050505050565b610779611d5a565b604080519115158252519081900360200190f35b61034e600480360360208110156107a357600080fd5b50356001600160801b0316611d6a565b610213611de1565b61034e600480360360208110156107d157600080fd5b503560ff16611df0565b610255600480360360208110156107f157600080fd5b5035611e52565b61034e6004803603602081101561080e57600080fd5b5035612021565b61034e6004803603602081101561082b57600080fd5b50356001600160a01b0316612073565b61034e6120cc565b6102556121bb565b6102556121c1565b6107796004803603602081101561086957600080fd5b50356001600160a01b03166121c7565b61034e6004803603602081101561088f57600080fd5b50356001600160a01b03166121dc565b61025561224b565b610255600480360360608110156108bd57600080fd5b5080359060208101359060400135612254565b61034e600480360360208110156108e657600080fd5b810190602081018135600160201b81111561090057600080fd5b82018360208201111561091257600080fd5b803590602001918460208302840111600160201b8311171561093357600080fd5b509092509050612277565b61034e6004803603602081101561095457600080fd5b50356001600160a01b0316612306565b6102556004803603602081101561097a57600080fd5b50356001600160a01b031661235c565b610255600480360360208110156109a057600080fd5b503561236e565b6109af612380565b6040805160ff9092168252519081900360200190f35b61034e600480360360208110156109db57600080fd5b810190602081018135600160201b8111156109f557600080fd5b820183602082011115610a0757600080fd5b803590602001918460208302840111600160201b83111715610a2857600080fd5b509092509050612386565b610a3b612410565b6040805192835260208301919091528051918290030190f35b6000546001600160a01b031681565b60046020526000908152604090205481565b60098181548110610a8557600080fd5b6000918252602090912060029091020180546001909101546001600160a01b038216925060ff600160a01b8304811692600160a81b8104821692600160b01b909104909116906001600160801b031685565b60086020526000908152604090206001810154600282015460078301546009909301549192909160ff918216911684565b806001600160a01b038116610b64576040805162461bcd60e51b815260206004820152601e60248201527f416363657373436f6e74726f6c3a20696e76616c696420616464726573730000604482015290519081900360640190fd5b6000546001600160a01b03163314610bb1576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b600080546001600160a01b0319166001600160a01b03848116919091179182905560408051929091168252517ff97cbb4246b709036319093e5ff31674b9f6759076d153e1bea1f60392170fc0916020908290030190a15050565b600082610c2f5760248211610c22576024610c25565b60005b60ff169050610cab565b6001831415610c475760018211610c22576002610c25565b6002831415610c5f5760018211610c22576002610c25565b6003831415610c775760018211610c22576002610c25565b6004831415610c8f5760028211610c22576003610c25565b6005831415610ca75760028211610c22576003610c25565b5060005b92915050565b6000546001600160a01b03163314610cfe576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b600c80546001600160a01b0319166001600160a01b0392909216919091179055565b600054600160a01b900460ff1615610d7f576040805162461bcd60e51b815260206004820152601f60248201527f416363657373436f6e74726f6c3a2063757272656e746c792070617573656400604482015290519081900360640190fd5b3360009081526001602081905260409091205460ff16151514610dd35760405162461bcd60e51b81526004018080602001828103825260238152602001806137486023913960400191505060405180910390fd5b60016001600160801b0319831660009081526008602052604090206009015460ff166002811115610e0057fe5b14610e3c5760405162461bcd60e51b81526004018080602001828103825260258152602001806137d86025913960400191505060405180910390fd5b6001600160801b031982166000908152600860205260408120600901805460ff191660021790555b6001600160801b0319831660009081526008602052604090206003015460ff8216101561100c576001600160801b0319831660009081526008602052604090208054611004919060ff8416908110610eb857fe5b60009182526020808320909101546001600160801b0319871683526008909152604090912060030180546001600160a01b039092169160ff8516908110610efb57fe5b6000918252602080832081830401546001600160801b03198916845260089091526040909220600401805460ff601f9093166101000a90930482169290918616908110610f4457fe5b6000918252602080832081830401546001600160801b03198a16845260089091526040909220600601805460ff601f9093166101000a90930482169290918716908110610f8d57fe5b6000918252602080832081830401546001600160801b03198b16845260089091526040909220600501805460ff601f9093166101000a90930482169290918816908110610fd657fe5b90600052602060002090600291828204019190066010029054906101000a90046001600160801b031661245e565b600101610e64565b506001600160801b031982166000908152600860209081526040808320805482518185028101850190935280835261113293869392919083018282801561107c57602002820191906000526020600020905b81546001600160a01b0316815260019091019060200180831161105e575b5050506001600160801b031988166000908152600860209081526040918290206006018054835181840281018401909452808452929450925083018282801561110257602002820191906000526020600020906000905b825461010083900a900460ff168152602060019283018181049485019490930390920291018084116110d35790505b505050506001600160801b031988166000908152600860205260409020600181015460029091015490915061265d565b8151909250829061114a90600a9060208501906132e4565b50505060005b600a5460ff821610156113ac576001600160801b031984166000908152600860205260408120805460ff841690811061118557fe5b6000918252602082200154600a80546001600160a01b0390921693509060ff85169081106111af57fe5b9060005260206000200154111561133457600b546001600160801b03198616600090815260086020526040902060060180546001600160a01b03909216916331297992919060ff861690811061120157fe5b6000918252602080832081830401546001600160801b03198b16845260089091526040909220805460ff601f9093166101000a9093048216929091871690811061124757fe5b600091825260209091200154600a80546001600160a01b039092169160ff881690811061127057fe5b90600052602060002001546040518463ffffffff1660e01b8152600401808460ff168152602001836001600160a01b031681526020018281526020019350505050602060405180830381600087803b1580156112cb57600080fd5b505af11580156112df573d6000803e3d6000fd5b505050506040513d60208110156112f557600080fd5b5050600a805460ff841690811061130857fe5b60009182526020808320909101546001600160a01b038416835260059091526040909120805490910190555b6001600160801b031985166000908152600860205260409020600501805460ff841690811061135f57fe5b600091825260208083206002830401546001600160a01b03949094168352600490526040909120805460019283166010026101000a9093046001600160801b031690920190915501611150565b5060005b6001600160801b0319841660009081526008602052604090205460ff821610156114c3576001600160801b03198416600090815260086020526040902080546114bb919060ff841690811061140157fe5b60009182526020808320909101546001600160801b0319881683526008909152604090912060060180546001600160a01b039092169160ff851690811061144457fe5b6000918252602080832081830401546001600160801b03198a1684526008918290526040909320600781015491018054601f9093166101000a90930460ff908116939181169290871690811061149657fe5b60009182526020918290209181049091015460ff601f9092166101000a900416612cdc565b6001016113b0565b50505050565b60025460081c90565b6000546001600160a01b0316331461151f576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b600054600160a01b900460ff166115675760405162461bcd60e51b81526004018080602001828103825260238152602001806137b56023913960400191505060405180910390fd5b6000805460ff60a01b191681556040517fa45f47fdea8a1efdd9029a5691c7f759c32b7c698632b563573e155625d169339190a1565b600c546001600160a01b031681565b6000546001600160a01b031633146115f9576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b60009182526006602052604090912055565b600054600160a01b900460ff161561166a576040805162461bcd60e51b815260206004820152601f60248201527f416363657373436f6e74726f6c3a2063757272656e746c792070617573656400604482015290519081900360640190fd5b3360009081526001602081905260409091205460ff161515146116be5760405162461bcd60e51b81526004018080602001828103825260238152602001806137486023913960400191505060405180910390fd5b84518651146116fe5760405162461bcd60e51b815260040180806020018281038252602b8152602001806136fd602b913960400191505060405180910390fd5b835183511461173e5760405162461bcd60e51b815260040180806020018281038252602a8152602001806136d3602a913960400191505060405180910390fd5b825185511461177e5760405162461bcd60e51b815260040180806020018281038252602b8152602001806136a8602b913960400191505060405180910390fd5b6000600254901c60ff16865111156117c75760405162461bcd60e51b81526004018080602001828103825260288152602001806138226028913960400191505060405180910390fd5b6001600160801b03198a1660009081526008602052604081206009015460ff1660028111156117f257fe5b1480611828575060026001600160801b03198b1660009081526008602052604090206009015460ff16600281111561182657fe5b145b611879576040805162461bcd60e51b815260206004820152601f60248201527f526f756c657474653a206f6e676f696e672067616d6520646574656374656400604482015290519081900360640190fd5b61188161332f565b6040518061014001604052808b81526020018a81526020018981526020018881526020018781526020018681526020018581526020018460ff168152602001838152602001600160028111156118d357fe5b90526001600160801b03198c166000908152600860209081526040909120825180519394508493919261190b9284929091019061338f565b506020828101516001830155604083015160028301556060830151805161193892600385019201906133e4565b50608082015180516119549160048401916020909101906133e4565b5060a08201518051611970916005840191602090910190613485565b5060c0820151805161198c9160068401916020909101906133e4565b5060e082015160078201805460ff191660ff90921691909117905561010082015180516119c39160088401916020909101906133e4565b5061012082015160098201805460ff191660018360028111156119e257fe5b02179055509050506119f261352b565b60005b88518160ff161015611d4b57868160ff1681518110611a1057fe5b60200260200101516001600160801b0316600b60009054906101000a90046001600160a01b03166001600160a01b03166371da23e9888460ff1681518110611a5457fe5b60200260200101516040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b158015611a9357600080fd5b505afa158015611aa7573d6000803e3d6000fd5b505050506040513d6020811015611abd57600080fd5b50516001600160801b03161015611b055760405162461bcd60e51b815260040180806020018281038252602981526020018061378c6029913960400191505060405180910390fd5b600b5486516001600160a01b03909116906341d4c74f90889060ff8516908110611b2b57fe5b60200260200101518e8460ff1681518110611b4257fe5b60200260200101518a8560ff1681518110611b5957fe5b60200260200101516040518463ffffffff1660e01b8152600401808460ff168152602001836001600160a01b03168152602001826001600160801b031681526020019350505050602060405180830381600087803b158015611bba57600080fd5b505af1158015611bce573d6000803e3d6000fd5b505050506040513d6020811015611be457600080fd5b505085518290879060ff8416908110611bf957fe5b602002602001015160ff1660058110611c0e57fe5b6020020151611d4357600b5486516000916001600160a01b03169063c70620b590899060ff8616908110611c3e57fe5b60200260200101516040518263ffffffff1660e01b8152600401808260ff16815260200191505060206040518083038186803b158015611c7d57600080fd5b505afa158015611c91573d6000803e3d6000fd5b505050506040513d6020811015611ca757600080fd5b505187519091508190611cd390899060ff8616908110611cc357fe5b602002602001015160ff16611e52565b1115611d105760405162461bcd60e51b81526004018080602001828103825260268152602001806136606026913960400191505060405180910390fd5b600183888460ff1681518110611d2257fe5b602002602001015160ff1660058110611d3757fe5b91151560209092020152505b6001016119f5565b50505050505050505050505050565b600054600160a01b900460ff1681565b6000546001600160a01b03163314611db7576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b600280546fffffffffffffffffffffffffffffff0080821690911860089390931b16919091179055565b600b546001600160a01b031681565b6000546001600160a01b03163314611e3d576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b6002805460ff92831692811618919091179055565b600080611e5d613549565b60005b60095460ff82161015611fe157611e75613567565b60098260ff1681548110611e8557fe5b60009182526020918290206040805160a081018252600290930290910180546001600160a01b038116845260ff600160a01b8204811695850195909552600160a81b8104851692840192909252600160b01b909104909216606082018190526001909201546001600160801b031660808201529150861415611fd8576000611f1b826020015160ff16836040015160ff16610c0c565b606083015160ff908116600090815260076020908152604080832082880151851684528252808320818801519094168352929052205490915081611f905760405162461bcd60e51b81526004018080602001828103825260228152602001806136866022913960400191505060405180910390fd5b611f9a8183612f0b565b955084836020015160ff1660068110611faf57fe5b6020020151861115611fd5578585846020015160ff1660068110611fcf57fe5b60200201525b50505b50600101611e60565b5060005b60068160ff1610156120195761200f828260ff166006811061200357fe5b60200201518590612f6b565b9350600101611fe5565b505050919050565b6000546001600160a01b0316331461206e576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b600355565b6000546001600160a01b031633146120c0576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b6120c981612fc5565b50565b3360009081526001602081905260409091205460ff161515146121205760405162461bcd60e51b81526004018080602001828103825260238152602001806137486023913960400191505060405180910390fd5b600054600160a01b900460ff161561217f576040805162461bcd60e51b815260206004820152601f60248201527f416363657373436f6e74726f6c3a2063757272656e746c792070617573656400604482015290519081900360640190fd5b6000805460ff60a01b1916600160a01b1781556040517f9e87fac88ff661f02d44f95383c817fece4bce600a3dab7a54406878b965e7529190a1565b60095490565b60035481565b60016020526000908152604090205460ff1681565b6000546001600160a01b03163314612229576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b600b80546001600160a01b0319166001600160a01b0392909216919091179055565b60025460881c90565b600760209081526000938452604080852082529284528284209052825290205481565b6000546001600160a01b031633146122c4576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b60005b60ff8116821115612301576122f983838360ff168181106122e457fe5b905060200201356001600160a01b0316612fc5565b6001016122c7565b505050565b6000546001600160a01b03163314612353576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b6120c9816130d6565b60056020526000908152604090205481565b60066020526000908152604090205481565b60025490565b6000546001600160a01b031633146123d3576040805162461bcd60e51b81526020600482018190526024820152600080516020613728833981519152604482015290519081900360640190fd5b60005b60ff81168211156123015761240883838360ff168181106123f357fe5b905060200201356001600160a01b03166130d6565b6001016123d6565b60008060005b600954811015612456576009818154811061242d57fe5b6000918252602090912060016002909202018101546001600160801b0316939093019201612416565b505060095491565b60ff808316600081815260076020908152604080832089861684528252808320948816835293815283822080546001600160801b038716019055918152600690915290812054156124c15760ff83166000908152600660205260409020546124d2565b6008600254901c6001600160801b03165b60ff80851660009081526007602090815260408083208a8516845282528083209389168352929052205490915081101561253d5760405162461bcd60e51b81526004018080602001828103825260258152602001806137fd6025913960400191505060405180910390fd5b506040805160a0810182526001600160a01b03968716815260ff95861660208201908152948616918101918252928516606084019081526001600160801b03928316608085019081526009805460018101825560009190915294517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7af600290960295860180549751945193516001600160a01b0319909816919099161760ff60a01b1916600160a01b938816939093029290921760ff60a81b1916600160a81b918716919091021760ff60b01b1916600160b01b949095169390930293909317909355517f6e1540171b6c0c960b71a7020d9f60077f6af931a8bbf590da0223dacf75c7b090920180546001600160801b03191692909116919091179055565b6009546060906000906126b7576040805162461bcd60e51b815260206004820152601860248201527f526f756c657474653a206d757374206861766520626574730000000000000000604482015290519081900360640190fd5b6126c3600a6000613595565b6002805470ffffffffffffffffffffffffffffffffff198116184260881b1790556040805160208082018a9052825180830382018152918301909252805191012060259006905060005b600954811015612b67576000612721613567565b6009838154811061272e57fe5b60009182526020918290206040805160a08101825260029390930290910180546001600160a01b038116845260ff600160a01b82048116958501869052600160a81b8204811693850193909352600160b01b90049091166060830152600101546001600160801b0316608082015291501580156127b1575083816040015160ff16145b156127bf5760019150612a83565b6001816020015160ff161480156127d7575060248411155b15612804576000841180156127f55750604081015160ff1660028506145b156127ff57600191505b612a83565b6002816020015160ff161480156128205750604081015160ff16155b15612884576000841180156128365750600a8411155b8061284e57506013841015801561284e5750601c8411155b15612861576002840660011491506127ff565b600084118015612872575060248411155b156127ff576002845b06159150612a83565b6002816020015160ff161480156128a25750806040015160ff166001145b15612905576000841180156128b85750600a8411155b806128d05750601384101580156128d05750601c8411155b156128e157600284061591506127ff565b6000841180156128f2575060248411155b156127ff57600284066001149150612a83565b6003816020015160ff1614801561291d575060248411155b1561297357601384101580156129385750604081015160ff16155b1561294257600191505b600084118015612953575060128411155b80156127f55750806040015160ff16600114156127ff5760019150612a83565b6004816020015160ff1614801561298b575060248411155b156129fe57604081015160ff161580156129a55750600084115b156129b4576003840660011491505b806040015160ff1660011480156129cb5750600084115b156129da576003840660021491505b806040015160ff1660021480156129f15750600084115b156127ff5760038461287b565b6005816020015160ff16148015612a16575060248411155b15612a8357604081015160ff16612a3b57600084118015612a385750600c8411155b91505b806040015160ff1660011415612a5f57600c84118015612a5c575060188411155b91505b806040015160ff1660021415612a8357601884118015612a80575060248411155b91505b8115612af3576000612aba612aa6836020015160ff16846040015160ff16610c0c565b60808401516001600160801b031690612f0b565b600a80546001810182556000919091527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a8015550612b26565b600a805460018101825560009182527fc65a7bb8d6351c1cf70c95a316cc6a92839c986682d98bc35f958f4883f9d2a801555b606081015160ff908116600090815260076020908152604080832082860151851684528252808320948101519093168252929092528120555060010161270d565b50612b74600960006135b3565b8281857f9623f640ae1546f2effbb27dd873d724cabc8e76b7df25287c07fcee7b30cf418989600a60405180806020018060200180602001848103845287818151815260200191508051906020019060200280838360005b83811015612be4578181015183820152602001612bcc565b50505050905001848103835286818151815260200191508051906020019060200280838360005b83811015612c23578181015183820152602001612c0b565b505050509050018481038252858181548152602001915080548015612c6757602002820191906000526020600020905b815481526020019060010190808311612c53575b5050965050505050505060405180910390a4600a8181805480602002602001604051908101604052809291908181526020018280548015612cc757602002820191906000526020600020905b815481526020019060010190808311612cb3575b50505050509150915091509550959350505050565b6001600160a01b0384166000908152600460209081526040808320546005909252909120541115612e01576001600160a01b0384166000908152600460209081526040808320546005909252822054612d34916131e8565b6003546001600160a01b03871660009081526004602052604081205492935091612d5d91612f0b565b9050808211612d6c5781612d6e565b805b600b5460408051630b5a7f2360e31b815260ff891660048201529051929450612dfa92899286926001600160a01b0390911691635ad3f91891602480820192602092909190829003018186803b158015612dc757600080fd5b505afa158015612ddb573d6000803e3d6000fd5b505050506040513d6020811015612df157600080fd5b50518787613245565b5050612ee1565b6001600160a01b0384166000908152600460209081526040808320546005909252909120541015612ee1576001600160a01b038416600090815260056020908152604080832054600490925290912054612ee1918691612e60916131e8565b600b5460408051630b5a7f2360e31b815260ff8916600482015290516001600160a01b0390921691635ad3f91891602480820192602092909190829003018186803b158015612eae57600080fd5b505afa158015612ec2573d6000803e3d6000fd5b505050506040513d6020811015612ed857600080fd5b50518585613245565b5050506001600160a01b031660009081526004602090815260408083208390556005909152812055565b600082612f1a57506000610cab565b82820282848281612f2757fe5b0414612f645760405162461bcd60e51b815260040180806020018281038252602181526020018061376b6021913960400191505060405180910390fd5b9392505050565b600082820183811015612f64576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b806001600160a01b038116613021576040805162461bcd60e51b815260206004820152601e60248201527f416363657373436f6e74726f6c3a20696e76616c696420616464726573730000604482015290519081900360640190fd5b6001600160a01b03821660009081526001602052604090205460ff16156130795760405162461bcd60e51b815260040180806020018281038252602381526020018061363d6023913960400191505060405180910390fd5b6001600160a01b038216600081815260016020818152604092839020805460ff1916909217909155815192835290517fb10d2a24a8c3686841e966f0c2c64c385cfaecb50a09b16aa3579bfcf3989dcd9281900390910190a15050565b806001600160a01b038116613132576040805162461bcd60e51b815260206004820152601e60248201527f416363657373436f6e74726f6c3a20696e76616c696420616464726573730000604482015290519081900360640190fd5b6001600160a01b03821660009081526001602081905260409091205460ff1615151461318f5760405162461bcd60e51b815260040180806020018281038252602281526020018061361b6022913960400191505060405180910390fd5b6001600160a01b038216600081815260016020908152604091829020805460ff19169055815192835290517f6cfb0504498d3a8155a2a3dd5f41940ad5ab571197ac70f6d6948d189f6a0d279281900390910190a15050565b60008282111561323f576040805162461bcd60e51b815260206004820152601e60248201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604482015290519081900360640190fd5b50900390565b600c5460408051630680429560e01b81526001600160a01b03888116600483015260248201889052868116604483015260648201869052608482018590529151919092169163068042959160a48083019260609291908290030181600087803b1580156132b157600080fd5b505af11580156132c5573d6000803e3d6000fd5b505050506040513d60608110156132db57600080fd5b50505050505050565b82805482825590600052602060002090810192821561331f579160200282015b8281111561331f578251825591602001919060010190613304565b5061332b9291506135d4565b5090565b60405180610140016040528060608152602001600081526020016000815260200160608152602001606081526020016060815260200160608152602001600060ff168152602001606081526020016000600281111561338a57fe5b905290565b82805482825590600052602060002090810192821561331f579160200282015b8281111561331f57825182546001600160a01b0319166001600160a01b039091161782556020909201916001909101906133af565b82805482825590600052602060002090601f0160209004810192821561331f5791602002820160005b8382111561344b57835183826101000a81548160ff021916908360ff160217905550926020019260010160208160000104928301926001030261340d565b80156134785782816101000a81549060ff021916905560010160208160000104928301926001030261344b565b505061332b9291506135d4565b8280548282559060005260206000209060010160029004810192821561331f5791602002820160005b838211156134f857835183826101000a8154816001600160801b0302191690836001600160801b031602179055509260200192601001602081600f010492830192600103026134ae565b80156134785782816101000a8154906001600160801b030219169055601001602081600f010492830192600103026134f8565b6040518060a001604052806005906020820280368337509192915050565b6040518060c001604052806006906020820280368337509192915050565b6040805160a08101825260008082526020820181905291810182905260608101829052608081019190915290565b50805460008255906000526020600020908101906120c991906135d4565b50805460008255600202906000526020600020908101906120c991906135e9565b5b8082111561332b57600081556001016135d5565b5b8082111561332b5780546001600160b81b03191681556001810180546001600160801b03191690556002016135ea56fe416363657373436f6e74726f6c3a20776f726b6572206e6f74206465746563746564416363657373436f6e74726f6c3a20776f726b657220616c7265616479206578697374526f756c657474653a206e6f7420656e6f75676820746f6b656e7320666f72207061796f7574526f756c657474653a20696e636f72726563742062657420747970652f76616c7565526f756c657474653a20696e636f6e73697374656e7420616d6f756e74206f6620746f6b656e496e646578526f756c657474653a20696e636f6e73697374656e7420616d6f756e74206f6620626574416d6f756e74526f756c657474653a20696e636f6e73697374656e7420616d6f756e74206f66206265747356616c756573416363657373436f6e74726f6c3a2043454f206163636573732064656e696564416363657373436f6e74726f6c3a20776f726b6572206163636573732064656e696564536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77526f756c657474653a2062657420616d6f756e74206973206d6f7265207468616e206d6178696d756d416363657373436f6e74726f6c3a2063757272656e6c7479206e6f74207061757365646467526f756c657474653a206e6f74206f6e676f696e672067616d65206465746563746564526f756c657474653a20657863656564696e67206d6178696d756d20626574206c696d6974526f756c657474653a206d6178696d756d20616d6f756e74206f6620626574732072656163686564a264697066735822122056b4bcb01393ab46ce2d56f5671b77ab12b9208492f31d255bbcedc74dd765e364736f6c63430007050033000000000000000000000000bf79ce2fbd819e5abc2327563d02a200255b7cb300000000000000000000000000000000000000000000000d8d726b7177a80000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000011e46db40d4438d1c64f68993ca43b03ac1b6a6b

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

000000000000000000000000bf79ce2fbd819e5abc2327563d02a200255b7cb300000000000000000000000000000000000000000000000d8d726b7177a80000000000000000000000000000000000000000000000000000000000000000002400000000000000000000000011e46db40d4438d1c64f68993ca43b03ac1b6a6b

-----Encoded View---------------
4 Constructor Arguments found :
Arg [0] : 000000000000000000000000bf79ce2fbd819e5abc2327563d02a200255b7cb3
Arg [1] : 00000000000000000000000000000000000000000000000d8d726b7177a80000
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000024
Arg [3] : 00000000000000000000000011e46db40d4438d1c64f68993ca43b03ac1b6a6b


Deployed ByteCode Sourcemap

6663:15717:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1420:25;;;:::i;:::-;;;;-1:-1:-1;;;;;1420:25:0;;;;;;;;;;;;;;6971:42;;;;;;;;;;;;;;;;-1:-1:-1;6971:42:0;-1:-1:-1;;;;;6971:42:0;;:::i;:::-;;;;;;;;;;;;;;;;7563:17;;;;;;;;;;;;;;;;-1:-1:-1;7563:17:0;;:::i;:::-;;;;-1:-1:-1;;;;;7563:17:0;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7563:17:0;;;;;;;;;;;;;;;;7517:37;;;;;;;;;;;;;;;;-1:-1:-1;7517:37:0;-1:-1:-1;;;;;;7517:37:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2866:221;;;;;;;;;;;;;;;;-1:-1:-1;2866:221:0;-1:-1:-1;;;;;2866:221:0;;:::i;:::-;;18639:736;;;;;;;;;;;;;;;;-1:-1:-1;18639:736:0;;;;;;;:::i;22174:203::-;;;;;;;;;;;;;;;;-1:-1:-1;22174:203:0;-1:-1:-1;;;;;22174:203:0;;:::i;15427:1970::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;15427:1970:0;;;;;;;;:::i;22023:143::-;;;:::i;:::-;;;;-1:-1:-1;;;;;22023:143:0;;;;;;;;;;;;;;4860:138;;;:::i;8033:38::-;;;:::i;20884:204::-;;;;;;;;;;;;;;;;-1:-1:-1;20884:204:0;;;;;;;:::i;13050:2369::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;13050:2369:0;;;;;;;;;;;;;;;-1:-1:-1;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13050:2369:0;;;;;;;;;;;;-1:-1:-1;13050:2369:0;-1:-1:-1;13050:2369:0;;;;-1:-1:-1;13050:2369:0;;;-1:-1:-1;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13050:2369:0;;;;;;;;-1:-1:-1;13050:2369:0;;-1:-1:-1;;;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13050:2369:0;;;;;;;;-1:-1:-1;13050:2369:0;;-1:-1:-1;;;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13050:2369:0;;;;;;;;-1:-1:-1;13050:2369:0;;-1:-1:-1;;;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13050:2369:0;;;;;;;;;;;-1:-1:-1;13050:2369:0;;;;-1:-1:-1;13050:2369:0;;;;-1:-1:-1;;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;13050:2369:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13050:2369:0;;-1:-1:-1;13050:2369:0;;-1:-1:-1;;;;;13050:2369:0:i;1454:26::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;21096:220;;;;;;;;;;;;;;;;-1:-1:-1;21096:220:0;-1:-1:-1;;;;;21096:220:0;;:::i;7994:32::-;;;:::i;21324:202::-;;;;;;;;;;;;;;;;-1:-1:-1;21324:202:0;;;;:::i;19383:1102::-;;;;;;;;;;;;;;;;-1:-1:-1;19383:1102:0;;:::i;17405:142::-;;;;;;;;;;;;;;;;-1:-1:-1;17405:142:0;;:::i;3095:160::-;;;;;;;;;;;;;;;;-1:-1:-1;3095:160:0;-1:-1:-1;;;;;3095:160:0;;:::i;4713:139::-;;;:::i;20751:125::-;;;:::i;6808:24::-;;;:::i;1489:41::-;;;;;;;;;;;;;;;;-1:-1:-1;1489:41:0;-1:-1:-1;;;;;1489:41:0;;:::i;21534:200::-;;;;;;;;;;;;;;;;-1:-1:-1;21534:200:0;-1:-1:-1;;;;;21534:200:0;;:::i;21742:129::-;;;:::i;7123:77::-;;;;;;;;;;;;;;;;-1:-1:-1;7123:77:0;;;;;;;;;;;;:::i;3263:245::-;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3263:245:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;3263:245:0;;;;;;;;;;-1:-1:-1;3263:245:0;;-1:-1:-1;3263:245:0;-1:-1:-1;3263:245:0;:::i;3877:176::-;;;;;;;;;;;;;;;;-1:-1:-1;3877:176:0;-1:-1:-1;;;;;3877:176:0;;:::i;7020:44::-;;;;;;;;;;;;;;;;-1:-1:-1;7020:44:0;-1:-1:-1;;;;;7020:44:0;;:::i;7073:43::-;;;;;;;;;;;;;;;;-1:-1:-1;7073:43:0;;:::i;21879:136::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;4061:254;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4061:254:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;4061:254:0;;;;;;;;;;-1:-1:-1;4061:254:0;;-1:-1:-1;4061:254:0;-1:-1:-1;4061:254:0;:::i;20493:250::-;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1420:25;;;-1:-1:-1;;;;;1420:25:0;;:::o;6971:42::-;;;;;;;;;;;;;:::o;7563:17::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7563:17:0;;;-1:-1:-1;7563:17:0;-1:-1:-1;;;7563:17:0;;;;;-1:-1:-1;;;7563:17:0;;;;;-1:-1:-1;;;7563:17:0;;;;;;;-1:-1:-1;;;;;7563:17:0;;:::o;7517:37::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;2866:221::-;2957:7;-1:-1:-1;;;;;2447:31:0;;2425:111;;;;;-1:-1:-1;;;2425:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2093:10:::1;::::0;-1:-1:-1;;;;;2093:10:0::1;2079;:24;2057:106;;;::::0;;-1:-1:-1;;;2057:106:0;;::::1;;::::0;::::1;::::0;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;::::1;;2999:10:::2;:20:::0;;-1:-1:-1;;;;;;2999:20:0::2;-1:-1:-1::0;;;;;2999:20:0;;::::2;::::0;;;::::2;::::0;;;;3037:42:::2;::::0;;3058:10;;;::::2;3037:42:::0;;;::::2;::::0;::::2;::::0;;;;;;::::2;2866:221:::0;;:::o;18639:736::-;18775:7;18804:33;18800:83;;18872:2;18859:10;:15;:24;;18881:2;18859:24;;;18877:1;18859:24;18852:31;;;;;;18800:83;18916:15;18898:34;;18894:82;;;18967:1;18954:10;:14;:22;;18975:1;18954:22;;18894:82;19009:16;18991:35;;18987:83;;;19061:1;19048:10;:14;:22;;19069:1;19048:22;;18987:83;19103:15;19085:34;;19081:82;;;19154:1;19141:10;:14;:22;;19162:1;19141:22;;19081:82;19196:14;19178:33;;19174:81;;;19246:1;19233:10;:14;:22;;19254:1;19233:22;;19174:81;19288:13;19270:32;;19266:80;;;19337:1;19324:10;:14;:22;;19345:1;19324:22;;19266:80;-1:-1:-1;19366:1:0;18639:736;;;;;:::o;22174:203::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;22292:15:::1;:77:::0;;-1:-1:-1;;;;;;22292:77:0::1;-1:-1:-1::0;;;;;22292:77:0;;;::::1;::::0;;;::::1;::::0;;22174:203::o;15427:1970::-;2623:6;;-1:-1:-1;;;2623:6:0;;;;2622:7;2600:88;;;;;-1:-1:-1;;;2600:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2255:10:::1;2246:20;::::0;;;:8:::1;:20;::::0;;;;;;;;::::1;;:28;;;2224:113;;;;-1:-1:-1::0;;;2224:113:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15631:21:::2;-1:-1:-1::0;;;;;;15607:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:20:::2;;::::0;::::2;;:45;::::0;::::2;;;;;;;15585:132;;;;-1:-1:-1::0;;;15585:132:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;15730:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:20:::2;;:42:::0;;-1:-1:-1;;15730:42:0::2;15753:19;15730:42;::::0;;15785:328:::2;-1:-1:-1::0;;;;;;15807:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:21:::2;;:28:::0;15803:32:::2;::::0;::::2;;15785:328;;;-1:-1:-1::0;;;;;;15879:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:25;;15857:244:::2;::::0;15879:14;:25:::2;::::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;::::0;-1:-1:-1;;;;;;15923:14:0;::::2;::::0;;:5:::2;:14:::0;;;;;;;:21:::2;;:24:::0;;-1:-1:-1;;;;;15879:25:0;;::::2;::::0;15923:24:::2;::::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;;::::0;-1:-1:-1;;;;;;15966:14:0;::::2;::::0;;:5:::2;:14:::0;;;;;;;:24:::2;;:27:::0;;15923:24:::2;::::0;;;;::::2;;::::0;;::::2;::::0;::::2;::::0;15966;;:27;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;;::::0;-1:-1:-1;;;;;;16012:14:0;::::2;::::0;;:5:::2;:14:::0;;;;;;;:25:::2;;:28:::0;;15966:27:::2;::::0;;;;::::2;;::::0;;::::2;::::0;::::2;::::0;16012:25;;:28;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;;::::0;-1:-1:-1;;;;;;16059:14:0;::::2;::::0;;:5:::2;:14:::0;;;;;;;:24:::2;;:27:::0;;16012:28:::2;::::0;;;;::::2;;::::0;;::::2;::::0;::::2;::::0;16059:24;;:27;::::2;::::0;;::::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;16059:27:0::2;15857:3;:244::i;:::-;15837:3;;15785:328;;;-1:-1:-1::0;;;;;;;16230:14:0;::::2;16125:19;16230:14:::0;;;:5:::2;:14;::::0;;;;;;;16183:195;;;;;;::::2;::::0;;;;;;;;;;::::2;::::0;16205:10;;16183:195;16230:14;16183:195;;::::2;16230:14:::0;16183:195;;::::2;;;;;;;;;;;;;;;;::::0;;-1:-1:-1;;;;;16183:195:0::2;::::0;;;;;::::2;::::0;::::2;;::::0;;::::2;;;;-1:-1:-1::0;;;;;;;;;16267:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;;;;;:25:::2;;16183:195:::0;;;;;;::::2;::::0;;;;;;;;;;;;-1:-1:-1;16267:25:0;-1:-1:-1;16183:195:0;::::2;16267:25:::0;16183:195;;::::2;;;;;;;;;;;;;;;;;;::::0;;::::2;::::0;;::::2;::::0;::::2;;;::::0;;::::2;;::::0;;::::2;::::0;;::::2;::::0;;::::2;::::0;;;::::2;::::0;;::::2;::::0;::::2;::::0;;::::2;;;;;;-1:-1:-1::0;;;;;;;;;;16307:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:21:::2;::::0;::::2;::::0;16343:24:::2;::::0;;::::2;::::0;16307:21;;-1:-1:-1;16183:7:0::2;:195::i;:::-;16155:223:::0;;;;-1:-1:-1;16155:223:0;;::::2;::::0;16156:10:::2;::::0;16155:223:::2;::::0;::::2;::::0;::::2;:::i;:::-;;;;16437:7;16432:602;16454:10;:17:::0;16450:21:::2;::::0;::::2;;16432:602;;;-1:-1:-1::0;;;;;;16510:14:0;::::2;16493;16510::::0;;;:5:::2;:14;::::0;;;;:25;;::::2;::::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;::::2;::::0;16554:10:::2;:13:::0;;-1:-1:-1;;;;;16510:25:0;;::::2;::::0;-1:-1:-1;16554:10:0;:13:::2;::::0;::::2;::::0;;::::2;;;;;;;;;;;;;:17;16550:378;;;16592:8;::::0;-1:-1:-1;;;;;;16645:14:0;::::2;16592:8;16645:14:::0;;;:5:::2;:14;::::0;;;;:25:::2;;:28:::0;;-1:-1:-1;;;;;16592:8:0;;::::2;::::0;:30:::2;::::0;16645:25;:28:::2;::::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;;::::0;-1:-1:-1;;;;;;16696:14:0;::::2;::::0;;:5:::2;:14:::0;;;;;;;:25;;16645:28:::2;::::0;;;;::::2;;::::0;;::::2;::::0;::::2;::::0;16696:14;;:25;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;::::2;::::0;16744:10:::2;:13:::0;;-1:-1:-1;;;;;16696:25:0;;::::2;::::0;16744:13:::2;::::0;::::2;::::0;;::::2;;;;;;;;;;;;;16592:184;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;16592:184:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;;16899:10:0::2;:13:::0;;::::2;::::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;::::0;-1:-1:-1;;;;;16877:19:0;::::2;::::0;;:11:::2;:19:::0;;;;;;;;;:35;;::::2;16838:74:::0;;16550:378:::2;-1:-1:-1::0;;;;;;16995:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:24:::2;;:27:::0;;::::2;::::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;::::2;::::0;::::2;;::::0;-1:-1:-1;;;;;16975:17:0;;;::::2;::::0;;:9:::2;:17:::0;;;;;;;;16995:27;;;;::::2;;;;::::0;;::::2;-1:-1:-1::0;;;;;16995:27:0::2;16975:47:::0;;::::2;16942:80:::0;;;16473:3:::2;16432:602;;;;17090:7;17085:305;-1:-1:-1::0;;;;;;17107:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:29;17103:33:::2;::::0;::::2;;17085:305;;;-1:-1:-1::0;;;;;;17195:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:25;;17158:220:::2;::::0;17195:14;:25:::2;::::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;::::0;-1:-1:-1;;;;;;17239:14:0;::::2;::::0;;:5:::2;:14:::0;;;;;;;:25:::2;;:28:::0;;-1:-1:-1;;;;;17195:25:0;;::::2;::::0;17239:28:::2;::::0;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;::::2;;::::0;-1:-1:-1;;;;;;17286:14:0;::::2;::::0;;:5:::2;:14:::0;;;;;;;;:27:::2;::::0;::::2;::::0;17332:28;::::2;:31:::0;;17239:28;;;;::::2;;::::0;;::::2;;::::0;;::::2;::::0;17286:27;;::::2;::::0;17332:31;;::::2;::::0;;::::2;;;;;;::::0;;;::::2;::::0;;;;;;::::2;::::0;;::::2;::::0;::::2;::::0;;;;::::2;;::::0;::::2;;17158:18;:220::i;:::-;17138:3;;17085:305;;;;2348:1;15427:1970:::0;;:::o;22023:143::-;22149:5;;22156:1;22149:8;22023:143;:::o;4860:138::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;2769:6:::1;::::0;-1:-1:-1;;;2769:6:0;::::1;;;2747:91;;;;-1:-1:-1::0;;;2747:91:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4959:5:::2;4950:14:::0;;-1:-1:-1;;;;4950:14:0::2;::::0;;4980:10:::2;::::0;::::2;::::0;4959:5;4980:10:::2;4860:138::o:0;8033:38::-;;;-1:-1:-1;;;;;8033:38:0;;:::o;20884:204::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;21035:26:::1;::::0;;;:13:::1;:26;::::0;;;;;:45;20884:204::o;13050:2369::-;2623:6;;-1:-1:-1;;;2623:6:0;;;;2622:7;2600:88;;;;;-1:-1:-1;;;2600:88:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2255:10:::1;2246:20;::::0;;;:8:::1;:20;::::0;;;;;;;;::::1;;:28;;;2224:113;;;;-1:-1:-1::0;;;2224:113:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13521:10:::2;:17;13503:7;:14;:35;13481:128;;;;-1:-1:-1::0;;;13481:128:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13666:10;:17;13644:11;:18;:39;13622:131;;;;-1:-1:-1::0;;;13622:131:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13809:11;:18;13788:10;:17;:39;13766:132;;;;-1:-1:-1::0;;;13766:132:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13964:1;13957:5;;:8;;13933:33;;:7;:14;:33;;13911:123;;;;-1:-1:-1::0;;;13911:123:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;14069:14:0;::::2;14093:17;14069:14:::0;;;:5:::2;:14;::::0;;;;:20:::2;;::::0;::::2;;:41;::::0;::::2;;;;;;;:101;;;-1:-1:-1::0;14151:19:0::2;-1:-1:-1::0;;;;;;14127:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;:20:::2;;::::0;::::2;;:43;::::0;::::2;;;;;;;14069:101;14047:182;;;::::0;;-1:-1:-1;;;14047:182:0;;::::2;;::::0;::::2;::::0;::::2;::::0;;;;::::2;::::0;;;;;;;;;;;;;::::2;;14242:17;;:::i;:::-;14262:275;;;;;;;;14281:8;14262:275;;;;14304:7;14262:275;;;;14326:10;14262:275;;;;14351:7;14262:275;;;;14373:10;14262:275;;;;14398:10;14262:275;;;;14423:11;14262:275;;;;14449:12;14262:275;;;;;;14476:14;14262:275;;;;14505:21;14262:275;;;;;;;;::::0;;-1:-1:-1;;;;;;14550:14:0;::::2;;::::0;;;:5:::2;:14;::::0;;;;;;;:22;;;;14242:295;;-1:-1:-1;14242:295:0;;14550:14;;:22:::2;::::0;:14;;:22;;::::2;::::0;::::2;:::i;:::-;-1:-1:-1::0;14550:22:0::2;::::0;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;::::2;:::i;:::-;-1:-1:-1::0;14550:22:0::2;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;:::i;:::-;-1:-1:-1::0;14550:22:0::2;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;:::i;:::-;-1:-1:-1::0;14550:22:0::2;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;:::i;:::-;-1:-1:-1::0;14550:22:0::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;-1:-1:-1;;14550:22:0::2;;::::0;;::::2;::::0;;;::::2;::::0;;::::2;::::0;::::2;::::0;;;::::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;::::2;::::0;::::2;:::i;:::-;-1:-1:-1::0;14550:22:0::2;::::0;::::2;::::0;::::2;::::0;::::2;::::0;;-1:-1:-1;;14550:22:0::2;::::0;;::::2;::::0;::::2;;;;;;;;;;;;;;14585:28;;:::i;:::-;14624:7;14644:768;14660:7;:14;14656:1;:18;;;14644:768;;;14766:10;14777:1;14766:13;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;14724:55:0::2;:8;;;;;;;;;-1:-1:-1::0;;;;;14724:8:0::2;-1:-1:-1::0;;;;;14724:22:0::2;;14747:11;14759:1;14747:14;;;;;;;;;;;;;;;;14724:38;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;14724:38:0;-1:-1:-1;;;;;14724:55:0::2;;;14698:158;;;;-1:-1:-1::0;;;14698:158:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14873:8;::::0;14921:14;;-1:-1:-1;;;;;14873:8:0;;::::2;::::0;:29:::2;::::0;14921:11;;:14:::2;::::0;::::2;::::0;;::::2;;;;;;;;;;;14954:8;14963:1;14954:11;;;;;;;;;;;;;;;;14984:10;14995:1;14984:13;;;;;;;;;;;;;;;;14873:139;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;14873:139:0::2;;;;;;-1:-1:-1::0;;;;;14873:139:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;;15048:14:0;;15034:13;;15048:11;;:14:::2;::::0;::::2;::::0;;::::2;;;;;;;;;;;15034:29;;;;;;;;;;;;;15029:372;;15105:8;::::0;15135:14;;15084:18:::2;::::0;-1:-1:-1;;;;;15105:8:0::2;::::0;:29:::2;::::0;15135:11;;:14:::2;::::0;::::2;::::0;;::::2;;;;;;;;;;;15105:45;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;::::0;::::2;;;;;;;;;;;;;;;;;;;::::0;::::2;;-1:-1:-1::0;15105:45:0;15219:14;;15105:45;;-1:-1:-1;15105:45:0;;15199:35:::2;::::0;15219:11;;:14:::2;::::0;::::2;::::0;;::::2;;;;;;;;;;;15199:35;;:19;:35::i;:::-;:49;;15169:161;;;;-1:-1:-1::0;;;15169:161:0::2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15381:4;15349:13;15363:11;15375:1;15363:14;;;;;;;;;;;;;;;;15349:29;;;;;;;;;:36:::0;::::2;;:29;::::0;;::::2;;:36:::0;-1:-1:-1;15029:372:0::2;14676:3;;14644:768;;;2348:1;;;13050:2369:::0;;;;;;;;;;:::o;1454:26::-;;;-1:-1:-1;;;1454:26:0;;;;;:::o;21096:220::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;21249:5:::1;::::0;;21231:31;;;;;;::::1;21261:1;21282:26:::0;;;;21273:35;;;;::::1;::::0;;21096:220::o;7994:32::-;;;-1:-1:-1;;;;;7994:32:0;;:::o;21324:202::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;21466:5:::1;::::0;;21460:15:::1;21495:23:::0;;::::1;21460:15:::0;;::::1;21451:24;21486:32:::0;;;::::1;::::0;;21324:202::o;19383:1102::-;19497:25;19540:28;19579:29;;:::i;:::-;19626:8;19621:678;19645:4;:11;19640:16;;;;19621:678;;;19679:12;;:::i;:::-;19694:4;19699:2;19694:8;;;;;;;;;;;;;;;;;;;19679:23;;;;;;;;19694:8;;;;;;;19679:23;;-1:-1:-1;;;;;19679:23:0;;;;;-1:-1:-1;;;19679:23:0;;;;;;;;;;;-1:-1:-1;;;19679:23:0;;;;;;;;;;;-1:-1:-1;;;19679:23:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;19679:23:0;;;;;;-1:-1:-1;19721:27:0;;19717:571;;;19771:15;19789:37;19806:1;:9;;;19789:37;;19817:1;:8;;;19789:37;;:16;:37::i;:::-;19875:12;;;;19863:25;;;;19845:15;19863:25;;;:11;:25;;;;;;;;19889:9;;;;19863:36;;;;;;;;;19900:8;;;;19863:46;;;;;;;;;;19771:55;;-1:-1:-1;19960:11:0;19930:119;;;;-1:-1:-1;;;19930:119:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;20093:20;:7;20105;20093:11;:20::i;:::-;20070:43;;20161:11;20173:1;:9;;;20161:22;;;;;;;;;;;;;20138:20;:45;20134:139;;;20233:20;20208:11;20220:1;:9;;;20208:22;;;;;;;;;;;;:45;20134:139;19717:571;;;-1:-1:-1;19658:4:0;;19621:678;;;;20316:8;20311:167;20335:18;20330:2;:23;;;20311:167;;;20396:70;20436:11;20448:2;20436:15;;;;;;;;;;;;;20396:17;;:21;:70::i;:::-;20376:90;-1:-1:-1;20355:4:0;;20311:167;;;;19383:1102;;;;;:::o;17405:142::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;17514:9:::1;:25:::0;17405:142::o;3095:160::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;3201:46:::1;3226:10;3201;:46::i;:::-;3095:160:::0;:::o;4713:139::-;2255:10;2246:20;;;;:8;:20;;;;;;;;;;;:28;;;2224:113;;;;-1:-1:-1;;;2224:113:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2623:6:::1;::::0;-1:-1:-1;;;2623:6:0;::::1;;;2622:7;2600:88;;;::::0;;-1:-1:-1;;;2600:88:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;4807:6:::2;:13:::0;;-1:-1:-1;;;;4807:13:0::2;-1:-1:-1::0;;;4807:13:0::2;::::0;;4836:8:::2;::::0;::::2;::::0;4807:6;4836:8:::2;4713:139::o:0;20751:125::-;20857:4;:11;20751:125;:::o;6808:24::-;;;;:::o;1489:41::-;;;;;;;;;;;;;;;:::o;21534:200::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;21654:8:::1;:72:::0;;-1:-1:-1;;;;;;21654:72:0::1;-1:-1:-1::0;;;;;21654:72:0;;;::::1;::::0;;;::::1;::::0;;21534:200::o;21742:129::-;21853:5;;21860:3;21853:10;21742:129;:::o;7123:77::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;3263:245::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;3390:11:::1;3385:116;3407:26;::::0;::::1;::::0;-1:-1:-1;3385:116:0::1;;;3459:30;3470:11;;3482:5;3470:18;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;3470:18:0::1;3459:10;:30::i;:::-;3435:7;;3385:116;;;;3263:245:::0;;:::o;3877:176::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;3991:54:::1;4019:15;3991:13;:54::i;7020:44::-:0;;;;;;;;;;;;;:::o;7073:43::-;;;;;;;;;;;;;:::o;21879:136::-;21998:5;;21879:136;:::o;4061:254::-;2093:10;;-1:-1:-1;;;;;2093:10:0;2079;:24;2057:106;;;;;-1:-1:-1;;;2057:106:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;2057:106:0;;;;;;;;;;;;;;;4192:11:::1;4187:121;4209:27;::::0;::::1;::::0;-1:-1:-1;4187:121:0::1;;;4262:34;4276:12;;4289:5;4276:19;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;4276:19:0::1;4262:13;:34::i;:::-;4238:7;;4187:121;;20493:250:::0;20574:10;20586:4;20613:6;20608:88;20629:4;:11;20625:15;;20608:88;;;20671:4;20676:1;20671:7;;;;;;;;;;;;;;;;:13;:7;;;;;:13;;;-1:-1:-1;;;;;20671:13:0;20662:22;;;;;20642:3;20608:88;;;-1:-1:-1;;20716:4:0;:11;20493:250;:::o;8886:744::-;9068:24;;;;;;;;:11;:24;;;;;;;;:34;;;;;;;;;;:43;;;;;;;;;;;:53;;-1:-1:-1;;;;;9068:53:0;;;;;9158:26;;;:13;:26;;;;;;;:31;:106;;9238:26;;;;;;;:13;:26;;;;;;9158:106;;;9220:1;9213:5;;:8;;-1:-1:-1;;;;;9158:106:0;;9299:24;;;;;;;;:11;:24;;;;;;;;:34;;;;;;;;;;:43;;;;;;;;;;9134:130;;-1:-1:-1;9299:60:0;-1:-1:-1;9299:60:0;9277:147;;;;-1:-1:-1;;;9277:147:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;9447:174:0;;;;;;;;-1:-1:-1;;;;;9447:174:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9447:174:0;;;;;;;;;9437:4;:185;;;;;;;-1:-1:-1;9437:185:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9437:185:0;;;;;;;;-1:-1:-1;;;;9437:185:0;-1:-1:-1;;;9437:185:0;;;;;;;;;;;-1:-1:-1;;;;9437:185:0;-1:-1:-1;;;9437:185:0;;;;;;;;-1:-1:-1;;;;9437:185:0;-1:-1:-1;;;9437:185:0;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;9437:185:0;;;;;;;;;;;8886:744::o;9638:3404::-;9962:4;:11;9867:16;;9898:14;;9940:89;;;;;-1:-1:-1;;;9940:89:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;10042:17;10049:10;;10042:17;:::i;:::-;10082:5;;;-1:-1:-1;;10081:17:0;;10072:26;10118:15;10095:3;10118:20;10109:29;;;10207:68;;;;;;;;;;;;;;;;;;;;;;;;;10179:111;;;;;10304:2;;10160:146;10151:155;;10324:6;10319:2435;10340:4;:11;10336:15;;10319:2435;;;10373:8;10404:12;;:::i;:::-;10419:4;10424:1;10419:7;;;;;;;;;;;;;;;;;10404:22;;;;;;;;10419:7;;;;;;;;10404:22;;-1:-1:-1;;;;;10404:22:0;;;;;-1:-1:-1;;;10404:22:0;;;;;;;;;;-1:-1:-1;;;10404:22:0;;;;;;;;;;;-1:-1:-1;;;10404:22:0;;;;;;;;;;;;-1:-1:-1;;;;;10404:22:0;;;;;;-1:-1:-1;10445:33:0;:55;;;;;10494:6;10482:1;:8;;;:18;;;10445:55;10441:1969;;;10527:4;10521:10;;10441:1969;;;10575:15;10557:1;:9;;;:34;;;:50;;;;;10605:2;10595:6;:12;;10557:50;10553:1857;;;10641:1;10632:6;:10;:36;;;;-1:-1:-1;10660:8:0;;;;10646:22;;10655:1;10646:6;:10;:22;10632:36;10628:95;;;10699:4;10693:10;;10628:95;10553:1857;;;10766:16;10748:1;:9;;;:35;;;:52;;;;-1:-1:-1;10787:8:0;;;;:13;;;10748:52;10744:1666;;;10835:1;10826:6;:10;:26;;;;;10850:2;10840:6;:12;;10826:26;10825:62;;;;10868:2;10858:6;:12;;:28;;;;;10884:2;10874:6;:12;;10858:28;10821:288;;;10928:1;10919:6;:10;10933:1;10919:15;10912:23;;10821:288;;;10997:1;10988:6;:10;:26;;;;;11012:2;11002:6;:12;;10988:26;10984:106;;;11059:1;11050:6;:10;;:15;;-1:-1:-1;10744:1666:0;;;11152:16;11134:1;:9;;;:35;;;:52;;;;;11173:1;:8;;;:13;;11185:1;11173:13;11134:52;11130:1280;;;11221:1;11212:6;:10;:26;;;;;11236:2;11226:6;:12;;11212:26;11211:62;;;;11254:2;11244:6;:12;;:28;;;;;11270:2;11260:6;:12;;11244:28;11207:288;;;11314:1;11305:6;:10;:15;;-1:-1:-1;11207:288:0;;;11383:1;11374:6;:10;:26;;;;;11398:2;11388:6;:12;;11374:26;11370:106;;;11445:1;11436:6;:10;11450:1;11436:15;11429:23;;11130:1280;;;11538:15;11520:1;:9;;;:34;;;:50;;;;;11568:2;11558:6;:12;;11520:50;11516:894;;;11605:2;11595:6;:12;;:29;;;;-1:-1:-1;11611:8:0;;;;:13;;;11595:29;11591:88;;;11655:4;11649:10;;11591:88;11710:1;11701:6;:10;:26;;;;;11725:2;11715:6;:12;;11701:26;:43;;;;;11731:1;:8;;;:13;;11743:1;11731:13;11697:102;;;11775:4;11769:10;;11516:894;;;11842:14;11824:1;:9;;;:33;;;:49;;;;;11871:2;11861:6;:12;;11824:49;11820:590;;;11898:8;;;;:13;;;:27;;;;;11924:1;11915:6;:10;11898:27;11894:56;;;11943:1;11934:6;:10;11948:1;11934:15;11927:23;;11894:56;11973:1;:8;;;:13;;11985:1;11973:13;:27;;;;;11999:1;11990:6;:10;11973:27;11969:56;;;12018:1;12009:6;:10;12023:1;12009:15;12002:23;;11969:56;12048:1;:8;;;:13;;12060:1;12048:13;:27;;;;;12074:1;12065:6;:10;12048:27;12044:56;;;12093:1;12084:6;:10;;11820:590;12144:13;12126:1;:9;;;:32;;;:48;;;;;12172:2;12162:6;:12;;12126:48;12122:288;;;12199:8;;;;:13;;12195:53;;12230:1;12221:6;:10;:26;;;;;12245:2;12235:6;:12;;12221:26;12214:34;;12195:53;12271:1;:8;;;:13;;12283:1;12271:13;12267:54;;;12302:2;12293:6;:11;:27;;;;;12318:2;12308:6;:12;;12293:27;12286:35;;12267:54;12344:1;:8;;;:13;;12356:1;12344:13;12340:54;;;12375:2;12366:6;:11;:27;;;;;12391:2;12381:6;:12;;12366:27;12359:35;;12340:54;12430:3;12426:252;;;12454:14;12471:90;12505:37;12522:1;:9;;;12505:37;;12533:1;:8;;;12505:37;;:16;:37::i;:::-;12471:7;;;;-1:-1:-1;;;;;12471:11:0;;;:90::i;:::-;12580:10;:23;;;;;;;-1:-1:-1;12580:23:0;;;;;;;-1:-1:-1;12426:252:0;;;12644:10;:18;;;;;;;12660:1;12644:18;;;;;;12426:252;12704:12;;;;12692:25;;;;12741:1;12692:25;;;:11;:25;;;;;;;;12718:9;;;;12692:36;;;;;;;;;12729:8;;;;12692:46;;;;;;;;;;;:50;-1:-1:-1;10353:3:0;;10319:2435;;;-1:-1:-1;12766:11:0;12773:4;;12766:11;:::i;:::-;12912:10;12891:6;12869:7;12795:163;12820:8;12843:11;12937:10;12795:163;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12992:10;13017:6;12971:63;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9638:3404;;;;;;;;:::o;17555:1076::-;-1:-1:-1;;;;;17754:18:0;;;;;;:9;:18;;;;;;;;;17731:11;:20;;;;;;;:41;17727:829;;;-1:-1:-1;;;;;17833:18:0;;17791:14;17833:18;;;:9;:18;;;;;;;;;17808:11;:20;;;;;;:44;;:24;:44::i;:::-;17907:9;;-1:-1:-1;;;;;17884:18:0;;17867:14;17884:18;;;:9;:18;;;;;;17791:61;;-1:-1:-1;17867:14:0;17884:33;;:22;:33::i;:::-;17867:50;;17952:6;17943;:15;:67;;18004:6;17943:67;;;17978:6;17943:67;18106:8;;:37;;;-1:-1:-1;;;18106:37:0;;;;;;;;;;;17934:76;;-1:-1:-1;18027:195:0;;18055:7;;17934:76;;-1:-1:-1;;;;;18106:8:0;;;;:24;;:37;;;;;;;;;;;;;;;:8;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18106:37:0;18162:12;18193:14;18027:9;:195::i;:::-;17727:829;;;;;-1:-1:-1;;;;;18276:18:0;;;;;;:9;:18;;;;;;;;;18253:11;:20;;;;;;;:41;18249:307;;;-1:-1:-1;;;;;18388:20:0;;;;;;:11;:20;;;;;;;;;18365:9;:18;;;;;;;18311:233;;18339:7;;18365:44;;:22;:44::i;:::-;18428:8;;:37;;;-1:-1:-1;;;18428:37:0;;;;;;;;;;;-1:-1:-1;;;;;18428:8:0;;;;:24;;:37;;;;;;;;;;;;;;;:8;:37;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18428:37:0;18484:12;18515:14;18311:9;:233::i;:::-;-1:-1:-1;;;;;;;;18566:18:0;18587:1;18566:18;;;:9;:18;;;;;;;;:22;;;18599:11;:20;;;;;:24;17555:1076::o;698:248::-;756:7;780:6;776:47;;-1:-1:-1;810:1:0;803:8;;776:47;847:5;;;851:1;847;:5;:1;871:5;;;;;:10;863:56;;;;-1:-1:-1;;;863:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;937:1;698:248;-1:-1:-1;;;698:248:0:o;321:179::-;379:7;411:5;;;435:6;;;;427:46;;;;;-1:-1:-1;;;427:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;3516:353;3614:10;-1:-1:-1;;;;;2447:31:0;;2425:111;;;;;-1:-1:-1;;;2425:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3664:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;::::1;;:29;3642:114;;;;-1:-1:-1::0;;;3642:114:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;3769:20:0;::::1;;::::0;;;3792:4:::1;3769:20;::::0;;;;;;;;:27;;-1:-1:-1;;3769:27:0::1;::::0;;::::1;::::0;;;3814:47;;;;;;;::::1;::::0;;;;;;;;::::1;3516:353:::0;;:::o;4323:382::-;4429:15;-1:-1:-1;;;;;2447:31:0;;2425:111;;;;;-1:-1:-1;;;2425:111:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4484:25:0;::::1;;::::0;;;:8:::1;:25;::::0;;;;;;;;::::1;;:33;;;4462:117;;;;-1:-1:-1::0;;;4462:117:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;4592:25:0;::::1;4620:5;4592:25:::0;;;:8:::1;:25;::::0;;;;;;;;:33;;-1:-1:-1;;4592:33:0::1;::::0;;4643:54;;;;;;;::::1;::::0;;;;;;;;::::1;4323:382:::0;;:::o;508:182::-;566:7;599:1;594;:6;;586:49;;;;;-1:-1:-1;;;586:49:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;658:5:0;;;508:182::o;8515:363::-;8714:15;;:156;;;-1:-1:-1;;;8714:156:0;;-1:-1:-1;;;;;8714:156:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:15;;;;;:25;;:156;;;;;;;;;;;;;;:15;;:156;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;;8515:363:0:o;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Swarm Source

ipfs://56b4bcb01393ab46ce2d56f5671b77ab12b9208492f31d255bbcedc74dd765e3
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.