ETH Price: $2,282.12 (+2.22%)
Gas: 0.87 Gwei

Contract

0x1178CE8bBd246d4e985c536FB54f7CAB3b08aC9a
 

Overview

ETH Balance

0.002081313811101616 ETH

Eth Value

$4.75 (@ $2,282.12/ETH)

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Withdraw Remaini...108912312020-09-19 7:13:401449 days ago1600499620IN
0x1178CE8b...B3b08aC9a
0 ETH0.00381359110
Withdraw Remaini...108912312020-09-19 7:13:401449 days ago1600499620IN
0x1178CE8b...B3b08aC9a
0 ETH0.00381359110
Withdraw Remaini...108912312020-09-19 7:13:401449 days ago1600499620IN
0x1178CE8b...B3b08aC9a
0 ETH0.00377761109.00000145
Withdraw Remaini...108912312020-09-19 7:13:401449 days ago1600499620IN
0x1178CE8b...B3b08aC9a
0 ETH0.00377761109.00000145
Withdraw Remaini...108912312020-09-19 7:13:401449 days ago1600499620IN
0x1178CE8b...B3b08aC9a
0 ETH0.00377892109.00000145
Withdraw Remaini...108912312020-09-19 7:13:401449 days ago1600499620IN
0x1178CE8b...B3b08aC9a
0 ETH0.00377761109.00000145
Withdraw Remaini...108912312020-09-19 7:13:401449 days ago1600499620IN
0x1178CE8b...B3b08aC9a
0 ETH0.00377892109.00000145
Withdraw Remaini...108912312020-09-19 7:13:401449 days ago1600499620IN
0x1178CE8b...B3b08aC9a
0 ETH0.00377892109.00000145
Withdraw Remaini...108912312020-09-19 7:13:401449 days ago1600499620IN
0x1178CE8b...B3b08aC9a
0 ETH0.00377892109.00000145
Withdraw Remaini...108912312020-09-19 7:13:401449 days ago1600499620IN
0x1178CE8b...B3b08aC9a
0 ETH0.00374295108
Withdraw Remaini...108912312020-09-19 7:13:401449 days ago1600499620IN
0x1178CE8b...B3b08aC9a
0 ETH0.00374295108
Withdraw Remaini...108912312020-09-19 7:13:401449 days ago1600499620IN
0x1178CE8b...B3b08aC9a
0 ETH0.00374295108
Withdraw Remaini...108912302020-09-19 7:13:271449 days ago1600499607IN
0x1178CE8b...B3b08aC9a
0 ETH0.00374295108
Withdraw Remaini...108912302020-09-19 7:13:271449 days ago1600499607IN
0x1178CE8b...B3b08aC9a
0 ETH0.00374306108
Withdraw Remaini...108912302020-09-19 7:13:271449 days ago1600499607IN
0x1178CE8b...B3b08aC9a
0 ETH0.00374436108
Withdraw Remaini...108912302020-09-19 7:13:271449 days ago1600499607IN
0x1178CE8b...B3b08aC9a
0 ETH0.00374306108
Withdraw Remaini...108912302020-09-19 7:13:271449 days ago1600499607IN
0x1178CE8b...B3b08aC9a
0 ETH0.00374436108
Withdraw Remaini...108912302020-09-19 7:13:271449 days ago1600499607IN
0x1178CE8b...B3b08aC9a
0 ETH0.00374306108
Withdraw Remaini...108912282020-09-19 7:13:211449 days ago1600499601IN
0x1178CE8b...B3b08aC9a
0 ETH0.00377772109.00000145
Withdraw Remaini...108912282020-09-19 7:13:211449 days ago1600499601IN
0x1178CE8b...B3b08aC9a
0 ETH0.00377772109.00000145
Withdraw Remaini...108912072020-09-19 7:07:151449 days ago1600499235IN
0x1178CE8b...B3b08aC9a
0 ETH0.00381238110
Withdraw Remaini...108912072020-09-19 7:07:151449 days ago1600499235IN
0x1178CE8b...B3b08aC9a
0 ETH0.00381238110
Withdraw Remaini...108912062020-09-19 7:07:091449 days ago1600499229IN
0x1178CE8b...B3b08aC9a
0 ETH0.00381238110
Withdraw Remaini...108912052020-09-19 7:07:051449 days ago1600499225IN
0x1178CE8b...B3b08aC9a
0 ETH0.00381238110
Withdraw Remaini...108912052020-09-19 7:07:051449 days ago1600499225IN
0x1178CE8b...B3b08aC9a
0 ETH0.00381238110
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
108912302020-09-19 7:13:271449 days ago1600499607
0x1178CE8b...B3b08aC9a
0.01265847 ETH
108912302020-09-19 7:13:271449 days ago1600499607
0x1178CE8b...B3b08aC9a
0.013 ETH
108912302020-09-19 7:13:271449 days ago1600499607
0x1178CE8b...B3b08aC9a
0.01368235 ETH
108912302020-09-19 7:13:271449 days ago1600499607
0x1178CE8b...B3b08aC9a
0.0175 ETH
108912302020-09-19 7:13:271449 days ago1600499607
0x1178CE8b...B3b08aC9a
0.01941089 ETH
108912282020-09-19 7:13:211449 days ago1600499601
0x1178CE8b...B3b08aC9a
0.02452624 ETH
108912282020-09-19 7:13:211449 days ago1600499601
0x1178CE8b...B3b08aC9a
0.02563 ETH
108912072020-09-19 7:07:151449 days ago1600499235
0x1178CE8b...B3b08aC9a
0.026 ETH
108912072020-09-19 7:07:151449 days ago1600499235
0x1178CE8b...B3b08aC9a
0.02753032 ETH
108912062020-09-19 7:07:091449 days ago1600499229
0x1178CE8b...B3b08aC9a
0.02848387 ETH
108912052020-09-19 7:07:051449 days ago1600499225
0x1178CE8b...B3b08aC9a
0.02910184 ETH
108912052020-09-19 7:07:051449 days ago1600499225
0x1178CE8b...B3b08aC9a
0.02941604 ETH
108912052020-09-19 7:07:051449 days ago1600499225
0x1178CE8b...B3b08aC9a
0.03100671 ETH
108912052020-09-19 7:07:051449 days ago1600499225
0x1178CE8b...B3b08aC9a
0.03749652 ETH
108912022020-09-19 7:06:361449 days ago1600499196
0x1178CE8b...B3b08aC9a
0.03964836 ETH
108912022020-09-19 7:06:361449 days ago1600499196
0x1178CE8b...B3b08aC9a
0.041001 ETH
108912022020-09-19 7:06:361449 days ago1600499196
0x1178CE8b...B3b08aC9a
0.04328039 ETH
108912022020-09-19 7:06:361449 days ago1600499196
0x1178CE8b...B3b08aC9a
0.04371334 ETH
108912022020-09-19 7:06:361449 days ago1600499196
0x1178CE8b...B3b08aC9a
0.04380372 ETH
108912022020-09-19 7:06:361449 days ago1600499196
0x1178CE8b...B3b08aC9a
0.04442807 ETH
108912002020-09-19 7:06:121449 days ago1600499172
0x1178CE8b...B3b08aC9a
0.04509152 ETH
108912002020-09-19 7:06:121449 days ago1600499172
0x1178CE8b...B3b08aC9a
0.05798725 ETH
108911992020-09-19 7:06:041449 days ago1600499164
0x1178CE8b...B3b08aC9a
0.06060421 ETH
108911932020-09-19 7:04:591449 days ago1600499099
0x1178CE8b...B3b08aC9a
0.06301 ETH
108911932020-09-19 7:04:591449 days ago1600499099
0x1178CE8b...B3b08aC9a
0.06304892 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Bet0xgameMaster

Compiler Version
v0.4.24+commit.e67f0147

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-12-03
*/

pragma solidity ^0.4.18;


interface OraclizeResolverI {
    function remoteSetWinner(uint _gameId, string _oraclizeSource, uint _callback_wei, uint _callback_gas_limit) external;
    function eventSetWinner(uint _gameId, address _verityAddress, uint _verityResultIndex) external;
}


contract Bet0xgameMaster {
    address public owner;
    address public resolverAddress;

    mapping(bool => uint) boolMapping;

    string constant draw = "draw";

    uint public totalBetPool;

    struct PlayerBet {
        uint betAmount;
        uint team;
        bool withdrawn;
    }

    struct PlayerData {
        uint totalBetAmount;
        uint totalWithdrawn;
    }
    mapping(address => PlayerData) playerData;

    struct Game {
        uint WINNER;
        uint loserOne;
        uint loserTwo;
        string teamOne;
        string teamTwo;

        string description;
        string oddsApi;

        string oraclizeSource;

        address verityAddress;
        uint verityResultIndex;

        bytes32 category;
        bytes32 subcategory;

        uint betsCloseAt;
        uint endsAt;

        uint gameId;
        uint balance;
        uint totalPool;

        bool drawPossible;

        uint withdrawAfter;

        mapping(uint => mapping(address => uint)) book;
        mapping(uint => uint) oddsMapping;
        mapping(string => uint) teamMapping;
        mapping(address => mapping(uint => PlayerBet)) playerBets;
    }
    Game[] game;

    /// Events
    event PlayerJoined(
        uint indexed gameId,
        address indexed playerAddress,
        uint betAmount,
        uint team
    );

    event RewardWithdrawn(
        uint indexed gameId,
        address indexed withdrawer,
        uint withdrawnAmount
    );

    event WinningTeamSet(
        uint indexed gameId,
        string team
    );

    event NewGame(
        uint indexed gameId,
        string teamOne,
        string teamTwo,
        uint betsCloseAt
    );

    event BetFailed(
        uint indexed gameId,
        address indexed playerAddress,
        uint betAmount,
        uint team
    );

    event GameInvalidated(
        uint gameId
    );

    /// Modifiers
    modifier onlyOwner {
        require(
            msg.sender == owner,
            "Only owner can do this"
        );
        _;
    }

    modifier onlyValidTeamName(uint _gameId, string _team) {
        require(
            keccak256(bytes(_team)) == keccak256(bytes(game[_gameId].teamOne)) ||
            keccak256(bytes(_team)) == keccak256(bytes(game[_gameId].teamTwo)) ||
            keccak256(bytes(_team)) == keccak256(bytes(draw)),
            "Not a valid team name for game."
        );
        _;
    }

    modifier onlyValidTeam(uint _team) {
        require(
            _team > 0 &&
            _team <= 3,
            "Not a valid team identifier."
        );
        _;
    }

    modifier onlyAfterEndTime(uint _gameId) {
        require(
            now >= game[_gameId].endsAt,
            "Game not ended yet."
        );
        _;
    }

    modifier onlyAfterWithdrawTime(uint _gameId) {
        require(
            now >= game[_gameId].withdrawAfter,
            "Can't withdraw remaining rewards yet."
        );
        _;
    }

    modifier onlyIfGameValid(uint _gameId) {
        require(
            game[_gameId].betsCloseAt > 0,
            "Game not valid"
        );
        _;
    }

    modifier onlyIfWinnerIsMissing(uint _gameId) {
        require(
            game[_gameId].WINNER == 0,
            "Winner already set."
        );
        _;
    }

    modifier onlyIfWinnerIsSet(uint _gameId) {
        require(
            game[_gameId].WINNER != 0,
            "Winner not set."
        );
        _;
    }

    modifier endsAtAfterBetsCloseAt(uint _betsCloseAt, uint _endsAt) {
        require(
            _betsCloseAt < _endsAt,
            "Bets can't close after game ends."
        );
        _;
    }

    modifier onlyBeforeBetsCloseAt(uint _gameId) {
        require(
            now < game[_gameId].betsCloseAt,
            "Bets already closed."
        );
        _;
    }

    modifier onlyResolver {
        require(
            msg.sender == resolverAddress || msg.sender == address(this),
            "Only resolver can do this"
        );
        _;
    }

    /// Constructor
    constructor(address _resolverAddress) public {
        owner = msg.sender;
        resolverAddress = _resolverAddress;

        buildBoolMapping();
    }

    /// Public functions
    function createGame(
        string _teamOne,
        string _teamTwo,
        uint _endsAt,
        uint _betsCloseAt,
        string _oraclizeSource,
        address _verityAddress,
        uint _verityResultIndex,
        string _oddsApi,
        bytes32[2] _categories,
        bool _drawPossible,
        string _description
    )
        public
        onlyOwner
        endsAtAfterBetsCloseAt(_betsCloseAt, _endsAt)
    {
        Game memory _game;

        _game.gameId = game.length;
        _game.teamOne = _teamOne;
        _game.teamTwo = _teamTwo;
        _game.betsCloseAt = _betsCloseAt;
        _game.endsAt = _endsAt;
        _game.oddsApi = _oddsApi;
        _game.category = _categories[0];
        _game.subcategory = _categories[1];
        _game.drawPossible = _drawPossible;
        _game.description = _description;
        _game.verityAddress = _verityAddress;
        _game.verityResultIndex = _verityResultIndex;
        _game.oraclizeSource = _oraclizeSource;

        _game.withdrawAfter = _endsAt + 1 weeks;

        game.push(_game);

        buildTeamMapping(_game.gameId);

        emit NewGame(
            _game.gameId,
            _teamOne,
            _teamTwo,
            _betsCloseAt
        );
    }

    function getGameLength() public view returns(uint) {
        return game.length;
    }

    function getGame(uint _gameId) public view returns(string, string, bool, uint, uint, uint, uint, string, string) {
        Game storage _game = game[_gameId];

        return (
            _game.teamOne,
            _game.teamTwo,
            _game.drawPossible,
            _game.WINNER,
            _game.betsCloseAt,
            _game.endsAt,
            _game.totalPool,
            _game.oddsApi,
            _game.description
        );
    }

    // Returns only first 32 characters of each team's name
    function getGames(uint[] _gameIds) public view returns(
        uint[], bytes32[], bytes32[], bool[], uint[], uint[]
    ) {
        bytes32[] memory _teamOne = new bytes32[](_gameIds.length);
        bytes32[] memory _teamTwo = new bytes32[](_gameIds.length);
        uint[] memory _WINNER = new uint[](_gameIds.length);
        uint[] memory _betsCloseAt = new uint[](_gameIds.length);

        bool[] memory _drawPossible = new bool[](_gameIds.length);

        for(uint i = 0; i < _gameIds.length; ++i) {
            _teamOne[i] = strToBytes32(game[_gameIds[i]].teamOne);
            _teamTwo[i] = strToBytes32(game[_gameIds[i]].teamTwo);
            _WINNER[i] = game[_gameIds[i]].WINNER;
            _betsCloseAt[i] = game[_gameIds[i]].betsCloseAt;
            _drawPossible[i] = game[_gameIds[i]].drawPossible;

        }

        return (
            _gameIds,
            _teamOne,
            _teamTwo,
            _drawPossible,
            _WINNER,
            _betsCloseAt
        );
    }

    function getGamesMeta(uint[] _gameIds) public view returns(
        uint[], bytes32[], bytes32[], bool[], bool[]
    ) {
        bytes32[] memory _category = new bytes32[](_gameIds.length);
        bytes32[] memory _subcategory = new bytes32[](_gameIds.length);
        bool[] memory _hasOddsApi = new bool[](_gameIds.length);
        bool[] memory _hasDescription = new bool[](_gameIds.length);

        for(uint i = 0; i < _gameIds.length; ++i) {
            _category[i] = game[_gameIds[i]].category;
            _subcategory[i] = game[_gameIds[i]].subcategory;
            _hasOddsApi[i] = (bytes(game[_gameIds[i]].oddsApi).length != 0);
            _hasDescription[i] = (bytes(game[_gameIds[i]].description).length != 0);
        }

        return (
            _gameIds,
            _category,
            _subcategory,
            _hasOddsApi,
            _hasDescription
        );
    }

    function getGamesPool(uint[] _gameIds) public view returns(
        uint[], uint[], uint[], uint[]
    ) {
        uint[] memory _oddsOne = new uint[](_gameIds.length);
        uint[] memory _oddsTwo = new uint[](_gameIds.length);
        uint[] memory _oddsDraw = new uint[](_gameIds.length);

        for(uint i = 0; i < _gameIds.length; ++i) {
            _oddsOne[i] = game[_gameIds[i]].oddsMapping[1];
            _oddsTwo[i] = game[_gameIds[i]].oddsMapping[2];
            _oddsDraw[i] = game[_gameIds[i]].oddsMapping[3];
        }

        return (
            _gameIds,
            _oddsOne,
            _oddsTwo,
            _oddsDraw
        );
    }

    function getGameResolverData(uint _gameId) public view returns(string, address, uint) {
        Game storage _game = game[_gameId];

        return(
            _game.oraclizeSource,
            _game.verityAddress,
            _game.verityResultIndex
        );
    }

    function invalidateGame(uint _gameId)
        public
        onlyOwner
        onlyIfWinnerIsMissing(_gameId)
    {
        Game storage _game = game[_gameId];

        _game.betsCloseAt = 0;
        _game.endsAt = 0;
        _game.withdrawAfter = now + 1 weeks;

        emit GameInvalidated(_gameId);
    }

    function bet(uint _gameId, uint _team)
        public
        payable
    {
        if (storeBet(_gameId, _team, msg.value)) {
            playerData[msg.sender].totalBetAmount += msg.value;
            totalBetPool += msg.value;
        } else {
            address(msg.sender).transfer(msg.value);
        }
    }

    function multiBet(uint[] _gameIds, uint[] _teams, uint[] _amounts)
        public
        payable
    {
        require(
            _gameIds.length == _teams.length &&
            _gameIds.length == _amounts.length,
            "Lengths do not match."
        );

        uint _betsNum = _gameIds.length;
        uint _balance = msg.value;

        for(uint i = 0; i < _betsNum; ++i) {
            if (_balance >= _amounts[i]) {
                if (storeBet(_gameIds[i], _teams[i], _amounts[i])) {
                    _balance -= _amounts[i];
                }
            } else {
                revert("Not enough balance sent.");
            }
        }

        if (_balance > 0) {
            msg.sender.transfer(_balance);
        }

        playerData[msg.sender].totalBetAmount += (msg.value - _balance);
        totalBetPool += (msg.value - _balance);
    }

    function withdrawReward(uint _gameId)
        public
        onlyIfGameValid(_gameId)
        onlyAfterEndTime(_gameId)
        onlyIfWinnerIsSet(_gameId)
    {
        Game storage _game = game[_gameId];

        uint betAmount = _game.book[_game.WINNER][msg.sender];
        if (betAmount == 0) {
            return;
        }

        uint reward = betAmount + (
            betAmount *
            (_game.oddsMapping[_game.loserOne] + _game.oddsMapping[_game.loserTwo]) /
            _game.oddsMapping[_game.WINNER]
        );

        if (_game.balance < reward) {
            revert("Not enough balance on game. Contact 0xgame.");
        }
        address(msg.sender).transfer(reward);
        _game.balance -= reward;
        playerData[msg.sender].totalWithdrawn += reward;

        _game.playerBets[msg.sender][_game.WINNER].withdrawn = true;
        _game.book[_game.WINNER][msg.sender] = 0;

        emit RewardWithdrawn(_gameId, msg.sender, reward);
    }

    function multiWithdrawReward(uint[] _gameIds)
        public
    {
        for (uint i = 0; i < _gameIds.length; ++i) {
            withdrawReward(_gameIds[i]);
        }
    }

    function withdrawInvalidated(uint _gameId)
        public
    {
        Game storage _game = game[_gameId];

        require(
            _game.betsCloseAt == 0,
            "Game not invalidated."
        );

        uint[3][3] memory _playerData = getPlayerDataForGame(_gameId, msg.sender);

        uint _totalBetAmount =
            _playerData[0][1] +
            _playerData[1][1] +
            _playerData[2][1];

        address(msg.sender).transfer(_totalBetAmount);

        _game.playerBets[msg.sender][1].betAmount = 0;
        _game.playerBets[msg.sender][2].betAmount = 0;
        _game.playerBets[msg.sender][3].betAmount = 0;
    }

    function remoteSetWinner(uint _gameId, uint _callback_wei, uint _callback_gas_limit)
        public
        onlyAfterEndTime(_gameId)
        onlyIfWinnerIsMissing(_gameId)
    {
        if (game[_gameId].verityAddress == 0x0) {
            OraclizeResolverI(resolverAddress).remoteSetWinner(
                _gameId,
                game[_gameId].oraclizeSource,
                _callback_wei,
                _callback_gas_limit
            );
        } else {
            OraclizeResolverI(resolverAddress).eventSetWinner(_gameId, game[_gameId].verityAddress, game[_gameId].verityResultIndex);
        }
    }

    function callback(uint _gameId, string _result)
        external
        onlyResolver
        onlyValidTeamName(_gameId, _result)
    {
        game[_gameId].WINNER = game[_gameId].teamMapping[_result];
        emit WinningTeamSet(_gameId, _result);
        setLosers(_gameId);
    }

    //  see private method buildTeamMapping, buildBoolMapping
    //  first element in the nested array represents the team user betted on:
    //    (teamOne -> 1, teamTwo -> 2, draw -> 3)
    //  second element in nested array is the bet amount
    //  third element in nested array represents withdrawal status:
    //    (false -> 0, true -> 1)
    //  additionally (applies to first level elements):
    //    first array holds player data for teamOne
    //    second array holds player data for teamTwo
    //    third array holds pleyer data for draw
    function getPlayerDataForGame(uint _gameId, address _playerAddress) public view returns(uint[3][3]) {
        Game storage _game = game[_gameId];

        return [
            [
                1,
                _game.playerBets[_playerAddress][1].betAmount,
                boolMapping[_game.playerBets[_playerAddress][1].withdrawn]
            ],
            [
                2,
                _game.playerBets[_playerAddress][2].betAmount,
                boolMapping[_game.playerBets[_playerAddress][2].withdrawn]
            ],
            [
                3,
                _game.playerBets[_playerAddress][3].betAmount,
                boolMapping[_game.playerBets[_playerAddress][3].withdrawn]
            ]
        ];
    }

    function getPlayerData(address _playerAddress) public view returns(uint[2]) {
        return [
            playerData[_playerAddress].totalBetAmount,
            playerData[_playerAddress].totalWithdrawn
        ];
    }

    function getGamePool(uint _gameId) public view returns(uint[3]) {
        Game storage _game = game[_gameId];

        return [
            _game.oddsMapping[1],
            _game.oddsMapping[2],
            _game.oddsMapping[3]
        ];
    }

    function addBalanceToGame(uint _gameId)
        public
        payable
        onlyOwner
    {
        game[_gameId].balance += msg.value;
    }

    function withdrawRemainingRewards(uint _gameId)
        public
        onlyOwner
        onlyAfterWithdrawTime(_gameId)
    {
        address(owner).transfer(game[_gameId].balance);
    }

    function setResolver(address _resolverAddress)
        public
        onlyOwner
    {
        resolverAddress = _resolverAddress;
    }

    function updateGameMeta(uint _gameId, string _oddsApi, string _description)
        public
        onlyOwner
    {
        Game storage _game = game[_gameId];

        _game.oddsApi = _oddsApi;
        _game.description = _description;
    }

    /// Private functions
    function buildBoolMapping() private {
        boolMapping[false] = 0;
        boolMapping[true] = 1;
    }

    function buildTeamMapping(uint _gameId) internal {
        game[_gameId].teamMapping[game[_gameId].teamOne] = 1;
        game[_gameId].teamMapping[game[_gameId].teamTwo] = 2;
        game[_gameId].teamMapping[draw] = 3;
    }

    function setLosers(uint _gameId) private returns(string) {
        Game storage _game = game[_gameId];

        if (_game.WINNER == 1) {
            _game.loserOne = 2;
            _game.loserTwo = 3;
        } else if (_game.WINNER == 2) {
            _game.loserOne = 1;
            _game.loserTwo = 3;
        } else if (_game.WINNER == 3) {
            _game.loserOne = 1;
            _game.loserTwo = 2;
        }
    }

    function storeBet(uint _gameId, uint _team, uint _amount)
        private
        onlyIfGameValid(_gameId)
        onlyValidTeam(_team)
        returns(bool)
    {
        Game storage _game = game[_gameId];

        if (now > _game.betsCloseAt) {
            emit BetFailed(_gameId, msg.sender, _amount, _team);
            return false;
        }

        _game.book[_team][msg.sender] += _amount;
        _game.oddsMapping[_team] += _amount;
        _game.balance += _amount;
        _game.totalPool += _amount;

        if (_game.playerBets[msg.sender][_team].betAmount == 0) {
            _game.playerBets[msg.sender][_team] = PlayerBet(_amount, _team, false);
        } else {
            _game.playerBets[msg.sender][_team].betAmount += _amount;
        }

        emit PlayerJoined(_gameId, msg.sender, _amount, _team);
        return true;
    }

    function strToBytes32(string _team) internal pure returns(bytes32 result) {
        bytes memory _teamBytes;

        _teamBytes = bytes(_team);
        assembly {
            result := mload(add(_teamBytes, 32))
        }
    }
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"totalBetPool","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_gameIds","type":"uint256[]"},{"name":"_teams","type":"uint256[]"},{"name":"_amounts","type":"uint256[]"}],"name":"multiBet","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_gameId","type":"uint256"}],"name":"addBalanceToGame","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"_playerAddress","type":"address"}],"name":"getPlayerData","outputs":[{"name":"","type":"uint256[2]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_gameIds","type":"uint256[]"}],"name":"getGamesMeta","outputs":[{"name":"","type":"uint256[]"},{"name":"","type":"bytes32[]"},{"name":"","type":"bytes32[]"},{"name":"","type":"bool[]"},{"name":"","type":"bool[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_gameId","type":"uint256"},{"name":"_callback_wei","type":"uint256"},{"name":"_callback_gas_limit","type":"uint256"}],"name":"remoteSetWinner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_gameIds","type":"uint256[]"}],"name":"getGamesPool","outputs":[{"name":"","type":"uint256[]"},{"name":"","type":"uint256[]"},{"name":"","type":"uint256[]"},{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getGameLength","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_resolverAddress","type":"address"}],"name":"setResolver","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_gameId","type":"uint256"}],"name":"withdrawReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_gameId","type":"uint256"}],"name":"getGameResolverData","outputs":[{"name":"","type":"string"},{"name":"","type":"address"},{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_gameId","type":"uint256"}],"name":"getGamePool","outputs":[{"name":"","type":"uint256[3]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_gameId","type":"uint256"},{"name":"_oddsApi","type":"string"},{"name":"_description","type":"string"}],"name":"updateGameMeta","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_gameIds","type":"uint256[]"}],"name":"getGames","outputs":[{"name":"","type":"uint256[]"},{"name":"","type":"bytes32[]"},{"name":"","type":"bytes32[]"},{"name":"","type":"bool[]"},{"name":"","type":"uint256[]"},{"name":"","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_gameId","type":"uint256"},{"name":"_team","type":"uint256"}],"name":"bet","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_gameId","type":"uint256"}],"name":"getGame","outputs":[{"name":"","type":"string"},{"name":"","type":"string"},{"name":"","type":"bool"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"uint256"},{"name":"","type":"string"},{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_gameId","type":"uint256"}],"name":"invalidateGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_gameId","type":"uint256"}],"name":"withdrawInvalidated","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_gameId","type":"uint256"},{"name":"_playerAddress","type":"address"}],"name":"getPlayerDataForGame","outputs":[{"name":"","type":"uint256[3][3]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"resolverAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_gameIds","type":"uint256[]"}],"name":"multiWithdrawReward","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_gameId","type":"uint256"},{"name":"_result","type":"string"}],"name":"callback","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_teamOne","type":"string"},{"name":"_teamTwo","type":"string"},{"name":"_endsAt","type":"uint256"},{"name":"_betsCloseAt","type":"uint256"},{"name":"_oraclizeSource","type":"string"},{"name":"_verityAddress","type":"address"},{"name":"_verityResultIndex","type":"uint256"},{"name":"_oddsApi","type":"string"},{"name":"_categories","type":"bytes32[2]"},{"name":"_drawPossible","type":"bool"},{"name":"_description","type":"string"}],"name":"createGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_gameId","type":"uint256"}],"name":"withdrawRemainingRewards","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[{"name":"_resolverAddress","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"gameId","type":"uint256"},{"indexed":true,"name":"playerAddress","type":"address"},{"indexed":false,"name":"betAmount","type":"uint256"},{"indexed":false,"name":"team","type":"uint256"}],"name":"PlayerJoined","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"gameId","type":"uint256"},{"indexed":true,"name":"withdrawer","type":"address"},{"indexed":false,"name":"withdrawnAmount","type":"uint256"}],"name":"RewardWithdrawn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"gameId","type":"uint256"},{"indexed":false,"name":"team","type":"string"}],"name":"WinningTeamSet","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"gameId","type":"uint256"},{"indexed":false,"name":"teamOne","type":"string"},{"indexed":false,"name":"teamTwo","type":"string"},{"indexed":false,"name":"betsCloseAt","type":"uint256"}],"name":"NewGame","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"gameId","type":"uint256"},{"indexed":true,"name":"playerAddress","type":"address"},{"indexed":false,"name":"betAmount","type":"uint256"},{"indexed":false,"name":"team","type":"uint256"}],"name":"BetFailed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"gameId","type":"uint256"}],"name":"GameInvalidated","type":"event"}]

60806040523480156200001157600080fd5b5060405160208062003b0583398101604052516000805433600160a060020a03199182161790915560018054909116600160a060020a0383161790556200006064010000000062000067810204565b50620000bc565b600260205260007fac33ff75c19e70fe83507db0d683fd3465c996598dc972688b7ace676c89077b8190556001908190527fe90b7bceb6e7df5418fb78d8ee546e97c83a08bbccc01a0644d599ccd2a7c2e055565b613a3980620000cc6000396000f30060806040526004361061012f5763ffffffff60e060020a60003504166303b6759281146101345780630b3cd0701461015b57806312007984146102175780632aa531d9146102225780632b96a0a11461027e5780632da5b88e1461043b578063359581961461045957806343fb86d2146105d15780634e543b26146105e6578063523a3f0814610607578063531c267e1461061f57806355566036146106cf5780636bbbec85146106fc5780636cc5f3ad146107985780636ffcc7191461099a5780638da5cb5b146109a8578063a2f77bcc146109d9578063a665609614610bc2578063abf6439214610bda578063adbf29fd14610bf2578063b1db5bec14610c70578063b315e45314610c85578063b69a375d14610cda578063bd5196cf14610cfe578063fa60889014610e9b575b600080fd5b34801561014057600080fd5b50610149610eb3565b60408051918252519081900360200190f35b6040805160206004803580820135838102808601850190965280855261021595369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610eb99650505050505050565b005b610215600435611088565b34801561022e57600080fd5b50610243600160a060020a0360043516611105565b6040518082600260200280838360005b8381101561026b578181015183820152602001610253565b5050505090500191505060405180910390f35b34801561028a57600080fd5b50604080516020600480358082013583810280860185019096528085526102d3953695939460249493850192918291850190849080828437509497506111479650505050505050565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b8381101561032357818101518382015260200161030b565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b8381101561036257818101518382015260200161034a565b50505050905001868103845289818151815260200191508051906020019060200280838360005b838110156103a1578181015183820152602001610389565b50505050905001868103835288818151815260200191508051906020019060200280838360005b838110156103e05781810151838201526020016103c8565b50505050905001868103825287818151815260200191508051906020019060200280838360005b8381101561041f578181015183820152602001610407565b505050509050019a505050505050505050505060405180910390f35b34801561044757600080fd5b506102156004356024356044356113ab565b34801561046557600080fd5b50604080516020600480358082013583810280860185019096528085526104ae953695939460249493850192918291850190849080828437509497506116d09650505050505050565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b838110156104fa5781810151838201526020016104e2565b50505050905001858103845288818151815260200191508051906020019060200280838360005b83811015610539578181015183820152602001610521565b50505050905001858103835287818151815260200191508051906020019060200280838360005b83811015610578578181015183820152602001610560565b50505050905001858103825286818151815260200191508051906020019060200280838360005b838110156105b757818101518382015260200161059f565b505050509050019850505050505050505060405180910390f35b3480156105dd57600080fd5b506101496118ae565b3480156105f257600080fd5b50610215600160a060020a03600435166118b5565b34801561061357600080fd5b50610215600435611934565b34801561062b57600080fd5b50610637600435611c78565b604051808060200184600160a060020a0316600160a060020a03168152602001838152602001828103825285818151815260200191508051906020019080838360005b8381101561069257818101518382015260200161067a565b50505050905090810190601f1680156106bf5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b3480156106db57600080fd5b506106e7600435611d5a565b60405181518152808260608083836020610253565b34801561070857600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261021595833595369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750611dcc9650505050505050565b3480156107a457600080fd5b50604080516020600480358082013583810280860185019096528085526107ed95369593946024949385019291829185019084908082843750949750611e699650505050505050565b6040518080602001806020018060200180602001806020018060200187810387528d818151815260200191508051906020019060200280838360005b83811015610841578181015183820152602001610829565b5050505090500187810386528c818151815260200191508051906020019060200280838360005b83811015610880578181015183820152602001610868565b5050505090500187810385528b818151815260200191508051906020019060200280838360005b838110156108bf5781810151838201526020016108a7565b5050505090500187810384528a818151815260200191508051906020019060200280838360005b838110156108fe5781810151838201526020016108e6565b50505050905001878103835289818151815260200191508051906020019060200280838360005b8381101561093d578181015183820152602001610925565b50505050905001878103825288818151815260200191508051906020019060200280838360005b8381101561097c578181015183820152602001610964565b505050509050019c5050505050505050505050505060405180910390f35b610215600435602435612211565b3480156109b457600080fd5b506109bd612279565b60408051600160a060020a039092168252519081900360200190f35b3480156109e557600080fd5b506109f1600435612288565b6040518080602001806020018a151515158152602001898152602001888152602001878152602001868152602001806020018060200185810385528e818151815260200191508051906020019080838360005b83811015610a5c578181015183820152602001610a44565b50505050905090810190601f168015610a895780820380516001836020036101000a031916815260200191505b5085810384528d5181528d516020918201918f019080838360005b83811015610abc578181015183820152602001610aa4565b50505050905090810190601f168015610ae95780820380516001836020036101000a031916815260200191505b50858103835287518152875160209182019189019080838360005b83811015610b1c578181015183820152602001610b04565b50505050905090810190601f168015610b495780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b83811015610b7c578181015183820152602001610b64565b50505050905090810190601f168015610ba95780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390f35b348015610bce57600080fd5b50610215600435612542565b348015610be657600080fd5b5061021560043561267c565b348015610bfe57600080fd5b50610c16600435600160a060020a0360243516612799565b6040516000826003835b81841015610c605760208402830151606080838360005b83811015610c4f578181015183820152602001610c37565b505050509050019260010192610c20565b9250505091505060405180910390f35b348015610c7c57600080fd5b506109bd612889565b348015610c9157600080fd5b5060408051602060048035808201358381028086018501909652808552610215953695939460249493850192918291850190849080828437509497506128989650505050505050565b348015610ce657600080fd5b506102156004803590602480359081019101356128cc565b348015610d0a57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261021594369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a89359a8a8301359a9199909850606090910196509194509081019250819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a91999098506060909101965091945090810192508190840183828082843750506040805180820182529598979681810196955093506002925084915083908082843750506040805160208781013589018035601f81018390048302840183018552808452979a893515159a909990989401965091945090810192508190840183828082843750949750612d589650505050505050565b348015610ea757600080fd5b506102156004356131d2565b60035481565b600080600084518651148015610ed0575083518651145b1515610f26576040805160e560020a62461bcd02815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e0000000000000000000000604482015290519081900360640190fd5b5050835190503460005b82811015611025578381815181101515610f4657fe5b602090810290910101518210610fcd57610fa68682815181101515610f6757fe5b906020019060200201518683815181101515610f7f57fe5b906020019060200201518684815181101515610f9757fe5b90602001906020020151613322565b15610fc8578381815181101515610fb957fe5b90602001906020020151820391505b61101d565b6040805160e560020a62461bcd02815260206004820152601860248201527f4e6f7420656e6f7567682062616c616e63652073656e742e0000000000000000604482015290519081900360640190fd5b600101610f30565b600082111561105d57604051339083156108fc029084906000818181858888f1935050505015801561105b573d6000803e3d6000fd5b505b5033600090815260046020526040902080543492909203918201905560038054909101905550505050565b600054600160a060020a031633146110d8576040805160e560020a62461bcd02815260206004820152601660248201526000805160206139ee833981519152604482015290519081900360640190fd5b346005828154811015156110e857fe5b60009182526020909120600f601790920201018054909101905550565b61110d613848565b50604080518082018252600160a060020a039290921660008181526004602081815293822080548652929091528252600101549082015290565b606080606080606080606080606060008a51604051908082528060200260200182016040528015611182578160200160208202803883390190505b5094508a516040519080825280602002602001820160405280156111b0578160200160208202803883390190505b5093508a516040519080825280602002602001820160405280156111de578160200160208202803883390190505b5092508a5160405190808252806020026020018201604052801561120c578160200160208202803883390190505b509150600090505b8a5181101561139a5760058b8281518110151561122d57fe5b602090810290910101518154811061124157fe5b9060005260206000209060170201600a0154858281518110151561126157fe5b602090810290910101528a516005908c908390811061127c57fe5b602090810290910101518154811061129057fe5b9060005260206000209060170201600b015484828151811015156112b057fe5b602090810290910101528a516005908c90839081106112cb57fe5b60209081029091010151815481106112df57fe5b906000526020600020906017020160060180546001816001161561010002031660029004905060001415838281518110151561131757fe5b9115156020928302909101909101528a516005908c908390811061133757fe5b602090810290910101518154811061134b57fe5b906000526020600020906017020160050180546001816001161561010002031660029004905060001415828281518110151561138357fe5b911515602092830290910190910152600101611214565b509899929891975095509350915050565b826005818154811015156113bb57fe5b9060005260206000209060170201600d01544210151515611426576040805160e560020a62461bcd02815260206004820152601360248201527f47616d65206e6f7420656e646564207965742e00000000000000000000000000604482015290519081900360640190fd5b8360058181548110151561143657fe5b60009182526020909120601790910201541561149c576040805160e560020a62461bcd02815260206004820152601360248201527f57696e6e657220616c7265616479207365742e00000000000000000000000000604482015290519081900360640190fd5b60058054869081106114aa57fe5b6000918252602090912060086017909202010154600160a060020a031615156115f25760015460058054600160a060020a0390921691633d59995c918891829081106114f257fe5b906000526020600020906017020160070187876040518563ffffffff1660e060020a02815260040180858152602001806020018481526020018381526020018281038252858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156115b25780601f10611587576101008083540402835291602001916115b2565b820191906000526020600020905b81548152906001019060200180831161159557829003601f168201915b505095505050505050600060405180830381600087803b1580156115d557600080fd5b505af11580156115e9573d6000803e3d6000fd5b505050506116c9565b60015460058054600160a060020a039092169163304ddebe9188918290811061161757fe5b600091825260209091206008601790920201015460058054600160a060020a03909216918a90811061164557fe5b9060005260206000209060170201600901546040518463ffffffff1660e060020a0281526004018084815260200183600160a060020a0316600160a060020a031681526020018281526020019350505050600060405180830381600087803b1580156116b057600080fd5b505af11580156116c4573d6000803e3d6000fd5b505050505b5050505050565b606080606080606080606060008851604051908082528060200260200182016040528015611708578160200160208202803883390190505b5093508851604051908082528060200260200182016040528015611736578160200160208202803883390190505b5092508851604051908082528060200260200182016040528015611764578160200160208202803883390190505b509150600090505b885181101561189f576005898281518110151561178557fe5b602090810290910101518154811061179957fe5b90600052602060002090601702016014016000600181526020019081526020016000205484828151811015156117cb57fe5b6020908102909101015288516005908a90839081106117e657fe5b60209081029091010151815481106117fa57fe5b906000526020600020906017020160140160006002815260200190815260200160002054838281518110151561182c57fe5b6020908102909101015288516005908a908390811061184757fe5b602090810290910101518154811061185b57fe5b906000526020600020906017020160140160006003815260200190815260200160002054828281518110151561188d57fe5b6020908102909101015260010161176c565b50969791969095509350915050565b6005545b90565b600054600160a060020a03163314611905576040805160e560020a62461bcd02815260206004820152601660248201526000805160206139ee833981519152604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600080600083600060058281548110151561194b57fe5b9060005260206000209060170201600c01541115156119b4576040805160e560020a62461bcd02815260206004820152600e60248201527f47616d65206e6f742076616c6964000000000000000000000000000000000000604482015290519081900360640190fd5b846005818154811015156119c457fe5b9060005260206000209060170201600d01544210151515611a2f576040805160e560020a62461bcd02815260206004820152601360248201527f47616d65206e6f7420656e646564207965742e00000000000000000000000000604482015290519081900360640190fd5b85600581815481101515611a3f57fe5b60009182526020909120601790910201541515611aa6576040805160e560020a62461bcd02815260206004820152600f60248201527f57696e6e6572206e6f74207365742e0000000000000000000000000000000000604482015290519081900360640190fd5b6005805488908110611ab457fe5b6000918252602080832060179092029091018054835260138101825260408084203385529092529120549096509450841515611aef57611c6f565b8554600090815260148701602052604080822054600289015483528183205460018a015484529190922054018602811515611b2657fe5b04850193508386600f01541015611bad576040805160e560020a62461bcd02815260206004820152602b60248201527f4e6f7420656e6f7567682062616c616e6365206f6e2067616d652e20436f6e7460448201527f61637420307867616d652e000000000000000000000000000000000000000000606482015290519081900360840190fd5b604051339085156108fc029086906000818181858888f19350505050158015611bda573d6000803e3d6000fd5b50600f860180548590039055336000818152600460209081526040808320600190810180548a01905560168b0183528184208b5485528352818420600201805460ff191690911790558954835260138a018252808320848452825280832092909255815187815291518a927fb886382d42263e3c08a157dd29a33c435741f36625dbc3acb6fb8c19bbf7824792908290030190a35b50505050505050565b60606000806000600585815481101515611c8e57fe5b6000918252602091829020600860179092020190810154600982015460078301805460408051601f600260001960018616156101000201909416939093049283018890048802810188019091528181529496509094600160a060020a03909316939192859190830182828015611d455780601f10611d1a57610100808354040283529160200191611d45565b820191906000526020600020905b815481529060010190602001808311611d2857829003601f168201915b50505050509250935093509350509193909250565b611d62613863565b6000600583815481101515611d7357fe5b600091825260208083206040805160608101825260018652601460179095029092019384018084528186205483526002865280845281862054838501526003865290925292819020549083015290925090505b50919050565b60008054600160a060020a03163314611e1d576040805160e560020a62461bcd02815260206004820152601660248201526000805160206139ee833981519152604482015290519081900360640190fd5b6005805485908110611e2b57fe5b9060005260206000209060170201905082816006019080519060200190611e53929190613882565b5081516116c99060058301906020850190613882565b606080606080606080606080606080606060008c51604051908082528060200260200182016040528015611ea7578160200160208202803883390190505b5095508c51604051908082528060200260200182016040528015611ed5578160200160208202803883390190505b5094508c51604051908082528060200260200182016040528015611f03578160200160208202803883390190505b5093508c51604051908082528060200260200182016040528015611f31578160200160208202803883390190505b5092508c51604051908082528060200260200182016040528015611f5f578160200160208202803883390190505b509150600090505b8c518110156121fd5761203760058e83815181101515611f8357fe5b6020908102909101015181548110611f9757fe5b6000918252602091829020600360179092020101805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561202d5780601f106120025761010080835404028352916020019161202d565b820191906000526020600020905b81548152906001019060200180831161201057829003601f168201915b50505050506135a7565b868281518110151561204557fe5b602090810290910101528c516120e3906005908f908490811061206457fe5b602090810290910101518154811061207857fe5b6000918252602091829020600460179092020101805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561202d5780601f106120025761010080835404028352916020019161202d565b85828151811015156120f157fe5b602090810290910101528c516005908e908390811061210c57fe5b602090810290910101518154811061212057fe5b906000526020600020906017020160000154848281518110151561214057fe5b602090810290910101528c516005908e908390811061215b57fe5b602090810290910101518154811061216f57fe5b9060005260206000209060170201600c0154838281518110151561218f57fe5b602090810290910101528c516005908e90839081106121aa57fe5b60209081029091010151815481106121be57fe5b6000918252602090912060116017909202010154825160ff909116908390839081106121e657fe5b911515602092830290910190910152600101611f67565b509a9b939a92995091975095509350915050565b61221c828234613322565b1561224757336000908152600460205260409020805434908101909155600380549091019055612275565b60405133903480156108fc02916000818181858888f19350505050158015612273573d6000803e3d6000fd5b505b5050565b600054600160a060020a031681565b6060806000806000806000606080600060058b8154811015156122a757fe5b60009182526020918290206011601790920201908101548154600c830154600d840154601085015460038601805460408051601f600260001960018616156101000201909416939093049283018b90048b0281018b01909152818152979950909760048a019760ff9097169660068b019260058c01928b91908301828280156123715780601f1061234657610100808354040283529160200191612371565b820191906000526020600020905b81548152906001019060200180831161235457829003601f168201915b50508b5460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959e508d9450925084019050828280156123ff5780601f106123d4576101008083540402835291602001916123ff565b820191906000526020600020905b8154815290600101906020018083116123e257829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959d508794509250840190508282801561248d5780601f106124625761010080835404028352916020019161248d565b820191906000526020600020905b81548152906001019060200180831161247057829003601f168201915b5050845460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529597508694509250840190508282801561251b5780601f106124f05761010080835404028352916020019161251b565b820191906000526020600020905b8154815290600101906020018083116124fe57829003601f168201915b50505050509050995099509950995099509950995099509950509193959799909294969850565b60008054600160a060020a03163314612593576040805160e560020a62461bcd02815260206004820152601660248201526000805160206139ee833981519152604482015290519081900360640190fd5b816005818154811015156125a357fe5b600091825260209091206017909102015415612609576040805160e560020a62461bcd02815260206004820152601360248201527f57696e6e657220616c7265616479207365742e00000000000000000000000000604482015290519081900360640190fd5b600580548490811061261757fe5b60009182526020808320600c601790930201918201839055600d82019290925562093a80420160128201556040805186815290519194507f3251f5fe5231b3681ff593b97e5a31720697f30eea923fc25da0667755895f4192908290030190a1505050565b6000612686613900565b600060058481548110151561269757fe5b9060005260206000209060170201925082600c01546000141515612705576040805160e560020a62461bcd02815260206004820152601560248201527f47616d65206e6f7420696e76616c6964617465642e0000000000000000000000604482015290519081900360640190fd5b61270f8433612799565b6040808201516020908101518184015182015184519092015192519395509101019150339082156108fc029083906000818181858888f1935050505015801561275c573d6000803e3d6000fd5b5050336000908152601692909201602090815260408084206001855290915280832083905560028352808320839055600383528220919091555050565b6127a1613900565b60006005848154811015156127b257fe5b600091825260208083206040805160c08101825260016060808301828152600160a060020a039b909b16885260179690960290930160160184528186209286528284528186208054608083015260029081015460ff908116151588528186528388205460a0840152998252825180870184528181528188528486528388208054828801528201548b1615158852818652838820548185015282860152825195860183526003808752875292845281862080548686015283015490981615158552915291829020548183015290840152509092915050565b600154600160a060020a031681565b60005b8151811015612275576128c482828151811015156128b557fe5b90602001906020020151611934565b60010161289b565b600154600160a060020a03163314806128e457503330145b151561293a576040805160e560020a62461bcd02815260206004820152601960248201527f4f6e6c79207265736f6c7665722063616e20646f207468697300000000000000604482015290519081900360640190fd5b8282828080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505060058281548110151561297d57fe5b906000526020600020906017020160030160405180828054600181600116156101000203166002900480156129e95780601f106129c75761010080835404028352918201916129e9565b820191906000526020600020905b8154815290600101906020018083116129d5575b50506040519081900381208451909350849250819060208401908083835b60208310612a265780518252601f199092019160209182019101612a07565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161480612b4857506005805483908110612a6c57fe5b90600052602060002090601702016004016040518082805460018160011615610100020316600290048015612ad85780601f10612ab6576101008083540402835291820191612ad8565b820191906000526020600020905b815481529060010190602001808311612ac4575b50506040519081900381208451909350849250819060208401908083835b60208310612b155780518252601f199092019160209182019101612af6565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916145b80612c39575060408051808201825260048082527f6472617700000000000000000000000000000000000000000000000000000000602083019081529251919282918083835b60208310612bad5780518252601f199092019160209182019101612b8e565b51815160209384036101000a6000190180199092169116179052604051919093018190038120865190955086945090928392508401908083835b60208310612c065780518252601f199092019160209182019101612be7565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916145b1515612c8f576040805160e560020a62461bcd02815260206004820152601f60248201527f4e6f7420612076616c6964207465616d206e616d6520666f722067616d652e00604482015290519081900360640190fd5b6005805486908110612c9d57fe5b9060005260206000209060170201601501848460405180838380828437820191505092505050908152602001604051809103902054600586815481101515612ce157fe5b906000526020600020906017020160000181905550847fae424704583762013c13ba533a0d0048ad655efb54b20eb63bb14e08e88fc9ce85856040518080602001828103825284848281815260200192508082843760405192018290039550909350505050a2612d50856135ae565b505050505050565b612d6061392f565b600054600160a060020a03163314612db0576040805160e560020a62461bcd02815260206004820152601660248201526000805160206139ee833981519152604482015290519081900360640190fd5b888a808210612e2f576040805160e560020a62461bcd02815260206004820152602160248201527f426574732063616e277420636c6f73652061667465722067616d6520656e647360448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6005546101c0840152606083018e9052608083018d905261018083018b90526101a083018c905260c0830187905285600060200201516101408401528560016020908102919091015161016085015285151561022085015260a08401859052600160a060020a038a16610100850152610120840189905260e084018b905262093a808d016102408501526005805460018101808355600092909252855160179091027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08101918255868401517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db182015560408701517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db28201556060870151805193948894612f83937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db3019290910190613882565b5060808201518051612f9f916004840191602090910190613882565b5060a08201518051612fbb916005840191602090910190613882565b5060c08201518051612fd7916006840191602090910190613882565b5060e08201518051612ff3916007840191602090910190613882565b5061010082015160088201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790556101208201516009820155610140820151600a820155610160820151600b820155610180820151600c8201556101a0820151600d8201556101c080830151600e8301556101e0830151600f830155610200830151601083015561022083015160118301805460ff1916911515919091179055610240909201516012909101558401516130b49150613629565b826101c001517f9d5eb843b568c7bd26fd64fb0b301dee05759e45432c661b0564c588cf206aa78f8f8e604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561312557818101518382015260200161310d565b50505050905090810190601f1680156131525780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561318557818101518382015260200161316d565b50505050905090810190601f1680156131b25780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a25050505050505050505050505050565b600054600160a060020a03163314613222576040805160e560020a62461bcd02815260206004820152601660248201526000805160206139ee833981519152604482015290519081900360640190fd5b8060058181548110151561323257fe5b90600052602060002090601702016012015442101515156132c3576040805160e560020a62461bcd02815260206004820152602560248201527f43616e27742077697468647261772072656d61696e696e67207265776172647360448201527f207965742e000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60005460058054600160a060020a03909216916108fc9190859081106132e557fe5b9060005260206000209060170201600f01549081150290604051600060405180830381858888f19350505050158015612273573d6000803e3d6000fd5b60008084600060058281548110151561333757fe5b9060005260206000209060170201600c01541115156133a0576040805160e560020a62461bcd02815260206004820152600e60248201527f47616d65206e6f742076616c6964000000000000000000000000000000000000604482015290519081900360640190fd5b846000811180156133b2575060038111155b1515613408576040805160e560020a62461bcd02815260206004820152601c60248201527f4e6f7420612076616c6964207465616d206964656e7469666965722e00000000604482015290519081900360640190fd5b600580548890811061341657fe5b9060005260206000209060170201925082600c015442111561347a576040805186815260208101889052815133928a927fa03c3b465fbe681058e53fe611e213f14281cbe2a863479db25d0689668e7387929081900390910190a36000935061359d565b600086815260138401602090815260408083203380855290835281842080548a01905589845260148701835281842080548a019055600f870180548a0190556010870180548a019055835260168601825280832089845290915290205415156135365760408051606081018252868152602080820189815260008385018181523382526016890184528582208c835290935293909320915182559151600182015590516002909101805460ff1916911515919091179055613559565b336000908152601684016020908152604080832089845290915290208054860190555b6040805186815260208101889052815133928a927f1106c14aab1f44b1577fd2f42206ee286f0fbf82c72942bbcdc9028af44216ff929081900390910190a3600193505b5050509392505050565b6020015190565b606060006005838154811015156135c157fe5b906000526020600020906017020190508060000154600114156135f257600260018201819055600390820155611dc6565b80546002141561360e5760018181015560036002820155611dc6565b805460031415611dc657600181810155600290810155919050565b600160058281548110151561363a57fe5b906000526020600020906017020160150160058381548110151561365a57fe5b906000526020600020906017020160030160405180828054600181600116156101000203166002900480156136c65780601f106136a45761010080835404028352918201916136c6565b820191906000526020600020905b8154815290600101906020018083116136b2575b50509283525050604051908190036020019020556005805460029190839081106136ec57fe5b906000526020600020906017020160150160058381548110151561370c57fe5b906000526020600020906017020160040160405180828054600181600116156101000203166002900480156137785780601f10613756576101008083540402835291820191613778565b820191906000526020600020905b815481529060010190602001808311613764575b505092835250506040519081900360200190205560058054600391908390811061379e57fe5b90600052602060002090601702016015016040805190810160405280600481526020017f64726177000000000000000000000000000000000000000000000000000000008152506040518082805190602001908083835b602083106138145780518252601f1990920191602091820191016137f5565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092909255505050565b60408051808201825290600290829080388339509192915050565b6060604051908101604052806003906020820280388339509192915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106138c357805160ff19168380011785556138f0565b828001600101855582156138f0579182015b828111156138f05782518255916020019190600101906138d5565b506138fc9291506139d3565b5090565b610120604051908101604052806003905b613919613863565b8152602001906001900390816139115790505090565b6102606040519081016040528060008152602001600081526020016000815260200160608152602001606081526020016060815260200160608152602001606081526020016000600160a060020a031681526020016000815260200160008019168152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081525090565b6118b291905b808211156138fc57600081556001016139d956004f6e6c79206f776e65722063616e20646f207468697300000000000000000000a165627a7a723058202ecdca3c835a7f6948f0c0bdda9a775c85d4eedef2496696e59dd485d4f9703d002900000000000000000000000018605a2efa250095c57909ca2f6be602925c03ed

Deployed Bytecode

0x60806040526004361061012f5763ffffffff60e060020a60003504166303b6759281146101345780630b3cd0701461015b57806312007984146102175780632aa531d9146102225780632b96a0a11461027e5780632da5b88e1461043b578063359581961461045957806343fb86d2146105d15780634e543b26146105e6578063523a3f0814610607578063531c267e1461061f57806355566036146106cf5780636bbbec85146106fc5780636cc5f3ad146107985780636ffcc7191461099a5780638da5cb5b146109a8578063a2f77bcc146109d9578063a665609614610bc2578063abf6439214610bda578063adbf29fd14610bf2578063b1db5bec14610c70578063b315e45314610c85578063b69a375d14610cda578063bd5196cf14610cfe578063fa60889014610e9b575b600080fd5b34801561014057600080fd5b50610149610eb3565b60408051918252519081900360200190f35b6040805160206004803580820135838102808601850190965280855261021595369593946024949385019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750506040805187358901803560208181028481018201909552818452989b9a998901989297509082019550935083925085019084908082843750949750610eb99650505050505050565b005b610215600435611088565b34801561022e57600080fd5b50610243600160a060020a0360043516611105565b6040518082600260200280838360005b8381101561026b578181015183820152602001610253565b5050505090500191505060405180910390f35b34801561028a57600080fd5b50604080516020600480358082013583810280860185019096528085526102d3953695939460249493850192918291850190849080828437509497506111479650505050505050565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b8381101561032357818101518382015260200161030b565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b8381101561036257818101518382015260200161034a565b50505050905001868103845289818151815260200191508051906020019060200280838360005b838110156103a1578181015183820152602001610389565b50505050905001868103835288818151815260200191508051906020019060200280838360005b838110156103e05781810151838201526020016103c8565b50505050905001868103825287818151815260200191508051906020019060200280838360005b8381101561041f578181015183820152602001610407565b505050509050019a505050505050505050505060405180910390f35b34801561044757600080fd5b506102156004356024356044356113ab565b34801561046557600080fd5b50604080516020600480358082013583810280860185019096528085526104ae953695939460249493850192918291850190849080828437509497506116d09650505050505050565b6040518080602001806020018060200180602001858103855289818151815260200191508051906020019060200280838360005b838110156104fa5781810151838201526020016104e2565b50505050905001858103845288818151815260200191508051906020019060200280838360005b83811015610539578181015183820152602001610521565b50505050905001858103835287818151815260200191508051906020019060200280838360005b83811015610578578181015183820152602001610560565b50505050905001858103825286818151815260200191508051906020019060200280838360005b838110156105b757818101518382015260200161059f565b505050509050019850505050505050505060405180910390f35b3480156105dd57600080fd5b506101496118ae565b3480156105f257600080fd5b50610215600160a060020a03600435166118b5565b34801561061357600080fd5b50610215600435611934565b34801561062b57600080fd5b50610637600435611c78565b604051808060200184600160a060020a0316600160a060020a03168152602001838152602001828103825285818151815260200191508051906020019080838360005b8381101561069257818101518382015260200161067a565b50505050905090810190601f1680156106bf5780820380516001836020036101000a031916815260200191505b5094505050505060405180910390f35b3480156106db57600080fd5b506106e7600435611d5a565b60405181518152808260608083836020610253565b34801561070857600080fd5b5060408051602060046024803582810135601f810185900485028601850190965285855261021595833595369560449491939091019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a999881019791965091820194509250829150840183828082843750949750611dcc9650505050505050565b3480156107a457600080fd5b50604080516020600480358082013583810280860185019096528085526107ed95369593946024949385019291829185019084908082843750949750611e699650505050505050565b6040518080602001806020018060200180602001806020018060200187810387528d818151815260200191508051906020019060200280838360005b83811015610841578181015183820152602001610829565b5050505090500187810386528c818151815260200191508051906020019060200280838360005b83811015610880578181015183820152602001610868565b5050505090500187810385528b818151815260200191508051906020019060200280838360005b838110156108bf5781810151838201526020016108a7565b5050505090500187810384528a818151815260200191508051906020019060200280838360005b838110156108fe5781810151838201526020016108e6565b50505050905001878103835289818151815260200191508051906020019060200280838360005b8381101561093d578181015183820152602001610925565b50505050905001878103825288818151815260200191508051906020019060200280838360005b8381101561097c578181015183820152602001610964565b505050509050019c5050505050505050505050505060405180910390f35b610215600435602435612211565b3480156109b457600080fd5b506109bd612279565b60408051600160a060020a039092168252519081900360200190f35b3480156109e557600080fd5b506109f1600435612288565b6040518080602001806020018a151515158152602001898152602001888152602001878152602001868152602001806020018060200185810385528e818151815260200191508051906020019080838360005b83811015610a5c578181015183820152602001610a44565b50505050905090810190601f168015610a895780820380516001836020036101000a031916815260200191505b5085810384528d5181528d516020918201918f019080838360005b83811015610abc578181015183820152602001610aa4565b50505050905090810190601f168015610ae95780820380516001836020036101000a031916815260200191505b50858103835287518152875160209182019189019080838360005b83811015610b1c578181015183820152602001610b04565b50505050905090810190601f168015610b495780820380516001836020036101000a031916815260200191505b50858103825286518152865160209182019188019080838360005b83811015610b7c578181015183820152602001610b64565b50505050905090810190601f168015610ba95780820380516001836020036101000a031916815260200191505b509d505050505050505050505050505060405180910390f35b348015610bce57600080fd5b50610215600435612542565b348015610be657600080fd5b5061021560043561267c565b348015610bfe57600080fd5b50610c16600435600160a060020a0360243516612799565b6040516000826003835b81841015610c605760208402830151606080838360005b83811015610c4f578181015183820152602001610c37565b505050509050019260010192610c20565b9250505091505060405180910390f35b348015610c7c57600080fd5b506109bd612889565b348015610c9157600080fd5b5060408051602060048035808201358381028086018501909652808552610215953695939460249493850192918291850190849080828437509497506128989650505050505050565b348015610ce657600080fd5b506102156004803590602480359081019101356128cc565b348015610d0a57600080fd5b506040805160206004803580820135601f810184900484028501840190955284845261021594369492936024939284019190819084018382808284375050604080516020601f89358b018035918201839004830284018301909452808352979a99988101979196509182019450925082915084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a89359a8a8301359a9199909850606090910196509194509081019250819084018382808284375050604080516020888301358a018035601f8101839004830284018301909452838352979a8935600160a060020a03169a8a8301359a91999098506060909101965091945090810192508190840183828082843750506040805180820182529598979681810196955093506002925084915083908082843750506040805160208781013589018035601f81018390048302840183018552808452979a893515159a909990989401965091945090810192508190840183828082843750949750612d589650505050505050565b348015610ea757600080fd5b506102156004356131d2565b60035481565b600080600084518651148015610ed0575083518651145b1515610f26576040805160e560020a62461bcd02815260206004820152601560248201527f4c656e6774687320646f206e6f74206d617463682e0000000000000000000000604482015290519081900360640190fd5b5050835190503460005b82811015611025578381815181101515610f4657fe5b602090810290910101518210610fcd57610fa68682815181101515610f6757fe5b906020019060200201518683815181101515610f7f57fe5b906020019060200201518684815181101515610f9757fe5b90602001906020020151613322565b15610fc8578381815181101515610fb957fe5b90602001906020020151820391505b61101d565b6040805160e560020a62461bcd02815260206004820152601860248201527f4e6f7420656e6f7567682062616c616e63652073656e742e0000000000000000604482015290519081900360640190fd5b600101610f30565b600082111561105d57604051339083156108fc029084906000818181858888f1935050505015801561105b573d6000803e3d6000fd5b505b5033600090815260046020526040902080543492909203918201905560038054909101905550505050565b600054600160a060020a031633146110d8576040805160e560020a62461bcd02815260206004820152601660248201526000805160206139ee833981519152604482015290519081900360640190fd5b346005828154811015156110e857fe5b60009182526020909120600f601790920201018054909101905550565b61110d613848565b50604080518082018252600160a060020a039290921660008181526004602081815293822080548652929091528252600101549082015290565b606080606080606080606080606060008a51604051908082528060200260200182016040528015611182578160200160208202803883390190505b5094508a516040519080825280602002602001820160405280156111b0578160200160208202803883390190505b5093508a516040519080825280602002602001820160405280156111de578160200160208202803883390190505b5092508a5160405190808252806020026020018201604052801561120c578160200160208202803883390190505b509150600090505b8a5181101561139a5760058b8281518110151561122d57fe5b602090810290910101518154811061124157fe5b9060005260206000209060170201600a0154858281518110151561126157fe5b602090810290910101528a516005908c908390811061127c57fe5b602090810290910101518154811061129057fe5b9060005260206000209060170201600b015484828151811015156112b057fe5b602090810290910101528a516005908c90839081106112cb57fe5b60209081029091010151815481106112df57fe5b906000526020600020906017020160060180546001816001161561010002031660029004905060001415838281518110151561131757fe5b9115156020928302909101909101528a516005908c908390811061133757fe5b602090810290910101518154811061134b57fe5b906000526020600020906017020160050180546001816001161561010002031660029004905060001415828281518110151561138357fe5b911515602092830290910190910152600101611214565b509899929891975095509350915050565b826005818154811015156113bb57fe5b9060005260206000209060170201600d01544210151515611426576040805160e560020a62461bcd02815260206004820152601360248201527f47616d65206e6f7420656e646564207965742e00000000000000000000000000604482015290519081900360640190fd5b8360058181548110151561143657fe5b60009182526020909120601790910201541561149c576040805160e560020a62461bcd02815260206004820152601360248201527f57696e6e657220616c7265616479207365742e00000000000000000000000000604482015290519081900360640190fd5b60058054869081106114aa57fe5b6000918252602090912060086017909202010154600160a060020a031615156115f25760015460058054600160a060020a0390921691633d59995c918891829081106114f257fe5b906000526020600020906017020160070187876040518563ffffffff1660e060020a02815260040180858152602001806020018481526020018381526020018281038252858181546001816001161561010002031660029004815260200191508054600181600116156101000203166002900480156115b25780601f10611587576101008083540402835291602001916115b2565b820191906000526020600020905b81548152906001019060200180831161159557829003601f168201915b505095505050505050600060405180830381600087803b1580156115d557600080fd5b505af11580156115e9573d6000803e3d6000fd5b505050506116c9565b60015460058054600160a060020a039092169163304ddebe9188918290811061161757fe5b600091825260209091206008601790920201015460058054600160a060020a03909216918a90811061164557fe5b9060005260206000209060170201600901546040518463ffffffff1660e060020a0281526004018084815260200183600160a060020a0316600160a060020a031681526020018281526020019350505050600060405180830381600087803b1580156116b057600080fd5b505af11580156116c4573d6000803e3d6000fd5b505050505b5050505050565b606080606080606080606060008851604051908082528060200260200182016040528015611708578160200160208202803883390190505b5093508851604051908082528060200260200182016040528015611736578160200160208202803883390190505b5092508851604051908082528060200260200182016040528015611764578160200160208202803883390190505b509150600090505b885181101561189f576005898281518110151561178557fe5b602090810290910101518154811061179957fe5b90600052602060002090601702016014016000600181526020019081526020016000205484828151811015156117cb57fe5b6020908102909101015288516005908a90839081106117e657fe5b60209081029091010151815481106117fa57fe5b906000526020600020906017020160140160006002815260200190815260200160002054838281518110151561182c57fe5b6020908102909101015288516005908a908390811061184757fe5b602090810290910101518154811061185b57fe5b906000526020600020906017020160140160006003815260200190815260200160002054828281518110151561188d57fe5b6020908102909101015260010161176c565b50969791969095509350915050565b6005545b90565b600054600160a060020a03163314611905576040805160e560020a62461bcd02815260206004820152601660248201526000805160206139ee833981519152604482015290519081900360640190fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b600080600083600060058281548110151561194b57fe5b9060005260206000209060170201600c01541115156119b4576040805160e560020a62461bcd02815260206004820152600e60248201527f47616d65206e6f742076616c6964000000000000000000000000000000000000604482015290519081900360640190fd5b846005818154811015156119c457fe5b9060005260206000209060170201600d01544210151515611a2f576040805160e560020a62461bcd02815260206004820152601360248201527f47616d65206e6f7420656e646564207965742e00000000000000000000000000604482015290519081900360640190fd5b85600581815481101515611a3f57fe5b60009182526020909120601790910201541515611aa6576040805160e560020a62461bcd02815260206004820152600f60248201527f57696e6e6572206e6f74207365742e0000000000000000000000000000000000604482015290519081900360640190fd5b6005805488908110611ab457fe5b6000918252602080832060179092029091018054835260138101825260408084203385529092529120549096509450841515611aef57611c6f565b8554600090815260148701602052604080822054600289015483528183205460018a015484529190922054018602811515611b2657fe5b04850193508386600f01541015611bad576040805160e560020a62461bcd02815260206004820152602b60248201527f4e6f7420656e6f7567682062616c616e6365206f6e2067616d652e20436f6e7460448201527f61637420307867616d652e000000000000000000000000000000000000000000606482015290519081900360840190fd5b604051339085156108fc029086906000818181858888f19350505050158015611bda573d6000803e3d6000fd5b50600f860180548590039055336000818152600460209081526040808320600190810180548a01905560168b0183528184208b5485528352818420600201805460ff191690911790558954835260138a018252808320848452825280832092909255815187815291518a927fb886382d42263e3c08a157dd29a33c435741f36625dbc3acb6fb8c19bbf7824792908290030190a35b50505050505050565b60606000806000600585815481101515611c8e57fe5b6000918252602091829020600860179092020190810154600982015460078301805460408051601f600260001960018616156101000201909416939093049283018890048802810188019091528181529496509094600160a060020a03909316939192859190830182828015611d455780601f10611d1a57610100808354040283529160200191611d45565b820191906000526020600020905b815481529060010190602001808311611d2857829003601f168201915b50505050509250935093509350509193909250565b611d62613863565b6000600583815481101515611d7357fe5b600091825260208083206040805160608101825260018652601460179095029092019384018084528186205483526002865280845281862054838501526003865290925292819020549083015290925090505b50919050565b60008054600160a060020a03163314611e1d576040805160e560020a62461bcd02815260206004820152601660248201526000805160206139ee833981519152604482015290519081900360640190fd5b6005805485908110611e2b57fe5b9060005260206000209060170201905082816006019080519060200190611e53929190613882565b5081516116c99060058301906020850190613882565b606080606080606080606080606080606060008c51604051908082528060200260200182016040528015611ea7578160200160208202803883390190505b5095508c51604051908082528060200260200182016040528015611ed5578160200160208202803883390190505b5094508c51604051908082528060200260200182016040528015611f03578160200160208202803883390190505b5093508c51604051908082528060200260200182016040528015611f31578160200160208202803883390190505b5092508c51604051908082528060200260200182016040528015611f5f578160200160208202803883390190505b509150600090505b8c518110156121fd5761203760058e83815181101515611f8357fe5b6020908102909101015181548110611f9757fe5b6000918252602091829020600360179092020101805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561202d5780601f106120025761010080835404028352916020019161202d565b820191906000526020600020905b81548152906001019060200180831161201057829003601f168201915b50505050506135a7565b868281518110151561204557fe5b602090810290910101528c516120e3906005908f908490811061206457fe5b602090810290910101518154811061207857fe5b6000918252602091829020600460179092020101805460408051601f600260001961010060018716150201909416939093049283018590048502810185019091528181529283018282801561202d5780601f106120025761010080835404028352916020019161202d565b85828151811015156120f157fe5b602090810290910101528c516005908e908390811061210c57fe5b602090810290910101518154811061212057fe5b906000526020600020906017020160000154848281518110151561214057fe5b602090810290910101528c516005908e908390811061215b57fe5b602090810290910101518154811061216f57fe5b9060005260206000209060170201600c0154838281518110151561218f57fe5b602090810290910101528c516005908e90839081106121aa57fe5b60209081029091010151815481106121be57fe5b6000918252602090912060116017909202010154825160ff909116908390839081106121e657fe5b911515602092830290910190910152600101611f67565b509a9b939a92995091975095509350915050565b61221c828234613322565b1561224757336000908152600460205260409020805434908101909155600380549091019055612275565b60405133903480156108fc02916000818181858888f19350505050158015612273573d6000803e3d6000fd5b505b5050565b600054600160a060020a031681565b6060806000806000806000606080600060058b8154811015156122a757fe5b60009182526020918290206011601790920201908101548154600c830154600d840154601085015460038601805460408051601f600260001960018616156101000201909416939093049283018b90048b0281018b01909152818152979950909760048a019760ff9097169660068b019260058c01928b91908301828280156123715780601f1061234657610100808354040283529160200191612371565b820191906000526020600020905b81548152906001019060200180831161235457829003601f168201915b50508b5460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959e508d9450925084019050828280156123ff5780601f106123d4576101008083540402835291602001916123ff565b820191906000526020600020905b8154815290600101906020018083116123e257829003601f168201915b5050855460408051602060026001851615610100026000190190941693909304601f8101849004840282018401909252818152959d508794509250840190508282801561248d5780601f106124625761010080835404028352916020019161248d565b820191906000526020600020905b81548152906001019060200180831161247057829003601f168201915b5050845460408051602060026001851615610100026000190190941693909304601f81018490048402820184019092528181529597508694509250840190508282801561251b5780601f106124f05761010080835404028352916020019161251b565b820191906000526020600020905b8154815290600101906020018083116124fe57829003601f168201915b50505050509050995099509950995099509950995099509950509193959799909294969850565b60008054600160a060020a03163314612593576040805160e560020a62461bcd02815260206004820152601660248201526000805160206139ee833981519152604482015290519081900360640190fd5b816005818154811015156125a357fe5b600091825260209091206017909102015415612609576040805160e560020a62461bcd02815260206004820152601360248201527f57696e6e657220616c7265616479207365742e00000000000000000000000000604482015290519081900360640190fd5b600580548490811061261757fe5b60009182526020808320600c601790930201918201839055600d82019290925562093a80420160128201556040805186815290519194507f3251f5fe5231b3681ff593b97e5a31720697f30eea923fc25da0667755895f4192908290030190a1505050565b6000612686613900565b600060058481548110151561269757fe5b9060005260206000209060170201925082600c01546000141515612705576040805160e560020a62461bcd02815260206004820152601560248201527f47616d65206e6f7420696e76616c6964617465642e0000000000000000000000604482015290519081900360640190fd5b61270f8433612799565b6040808201516020908101518184015182015184519092015192519395509101019150339082156108fc029083906000818181858888f1935050505015801561275c573d6000803e3d6000fd5b5050336000908152601692909201602090815260408084206001855290915280832083905560028352808320839055600383528220919091555050565b6127a1613900565b60006005848154811015156127b257fe5b600091825260208083206040805160c08101825260016060808301828152600160a060020a039b909b16885260179690960290930160160184528186209286528284528186208054608083015260029081015460ff908116151588528186528388205460a0840152998252825180870184528181528188528486528388208054828801528201548b1615158852818652838820548185015282860152825195860183526003808752875292845281862080548686015283015490981615158552915291829020548183015290840152509092915050565b600154600160a060020a031681565b60005b8151811015612275576128c482828151811015156128b557fe5b90602001906020020151611934565b60010161289b565b600154600160a060020a03163314806128e457503330145b151561293a576040805160e560020a62461bcd02815260206004820152601960248201527f4f6e6c79207265736f6c7665722063616e20646f207468697300000000000000604482015290519081900360640190fd5b8282828080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505060058281548110151561297d57fe5b906000526020600020906017020160030160405180828054600181600116156101000203166002900480156129e95780601f106129c75761010080835404028352918201916129e9565b820191906000526020600020905b8154815290600101906020018083116129d5575b50506040519081900381208451909350849250819060208401908083835b60208310612a265780518252601f199092019160209182019101612a07565b6001836020036101000a0380198251168184511680821785525050505050509050019150506040518091039020600019161480612b4857506005805483908110612a6c57fe5b90600052602060002090601702016004016040518082805460018160011615610100020316600290048015612ad85780601f10612ab6576101008083540402835291820191612ad8565b820191906000526020600020905b815481529060010190602001808311612ac4575b50506040519081900381208451909350849250819060208401908083835b60208310612b155780518252601f199092019160209182019101612af6565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916145b80612c39575060408051808201825260048082527f6472617700000000000000000000000000000000000000000000000000000000602083019081529251919282918083835b60208310612bad5780518252601f199092019160209182019101612b8e565b51815160209384036101000a6000190180199092169116179052604051919093018190038120865190955086945090928392508401908083835b60208310612c065780518252601f199092019160209182019101612be7565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902060001916145b1515612c8f576040805160e560020a62461bcd02815260206004820152601f60248201527f4e6f7420612076616c6964207465616d206e616d6520666f722067616d652e00604482015290519081900360640190fd5b6005805486908110612c9d57fe5b9060005260206000209060170201601501848460405180838380828437820191505092505050908152602001604051809103902054600586815481101515612ce157fe5b906000526020600020906017020160000181905550847fae424704583762013c13ba533a0d0048ad655efb54b20eb63bb14e08e88fc9ce85856040518080602001828103825284848281815260200192508082843760405192018290039550909350505050a2612d50856135ae565b505050505050565b612d6061392f565b600054600160a060020a03163314612db0576040805160e560020a62461bcd02815260206004820152601660248201526000805160206139ee833981519152604482015290519081900360640190fd5b888a808210612e2f576040805160e560020a62461bcd02815260206004820152602160248201527f426574732063616e277420636c6f73652061667465722067616d6520656e647360448201527f2e00000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6005546101c0840152606083018e9052608083018d905261018083018b90526101a083018c905260c0830187905285600060200201516101408401528560016020908102919091015161016085015285151561022085015260a08401859052600160a060020a038a16610100850152610120840189905260e084018b905262093a808d016102408501526005805460018101808355600092909252855160179091027f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db08101918255868401517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db182015560408701517f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db28201556060870151805193948894612f83937f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db3019290910190613882565b5060808201518051612f9f916004840191602090910190613882565b5060a08201518051612fbb916005840191602090910190613882565b5060c08201518051612fd7916006840191602090910190613882565b5060e08201518051612ff3916007840191602090910190613882565b5061010082015160088201805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a039092169190911790556101208201516009820155610140820151600a820155610160820151600b820155610180820151600c8201556101a0820151600d8201556101c080830151600e8301556101e0830151600f830155610200830151601083015561022083015160118301805460ff1916911515919091179055610240909201516012909101558401516130b49150613629565b826101c001517f9d5eb843b568c7bd26fd64fb0b301dee05759e45432c661b0564c588cf206aa78f8f8e604051808060200180602001848152602001838103835286818151815260200191508051906020019080838360005b8381101561312557818101518382015260200161310d565b50505050905090810190601f1680156131525780820380516001836020036101000a031916815260200191505b50838103825285518152855160209182019187019080838360005b8381101561318557818101518382015260200161316d565b50505050905090810190601f1680156131b25780820380516001836020036101000a031916815260200191505b509550505050505060405180910390a25050505050505050505050505050565b600054600160a060020a03163314613222576040805160e560020a62461bcd02815260206004820152601660248201526000805160206139ee833981519152604482015290519081900360640190fd5b8060058181548110151561323257fe5b90600052602060002090601702016012015442101515156132c3576040805160e560020a62461bcd02815260206004820152602560248201527f43616e27742077697468647261772072656d61696e696e67207265776172647360448201527f207965742e000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60005460058054600160a060020a03909216916108fc9190859081106132e557fe5b9060005260206000209060170201600f01549081150290604051600060405180830381858888f19350505050158015612273573d6000803e3d6000fd5b60008084600060058281548110151561333757fe5b9060005260206000209060170201600c01541115156133a0576040805160e560020a62461bcd02815260206004820152600e60248201527f47616d65206e6f742076616c6964000000000000000000000000000000000000604482015290519081900360640190fd5b846000811180156133b2575060038111155b1515613408576040805160e560020a62461bcd02815260206004820152601c60248201527f4e6f7420612076616c6964207465616d206964656e7469666965722e00000000604482015290519081900360640190fd5b600580548890811061341657fe5b9060005260206000209060170201925082600c015442111561347a576040805186815260208101889052815133928a927fa03c3b465fbe681058e53fe611e213f14281cbe2a863479db25d0689668e7387929081900390910190a36000935061359d565b600086815260138401602090815260408083203380855290835281842080548a01905589845260148701835281842080548a019055600f870180548a0190556010870180548a019055835260168601825280832089845290915290205415156135365760408051606081018252868152602080820189815260008385018181523382526016890184528582208c835290935293909320915182559151600182015590516002909101805460ff1916911515919091179055613559565b336000908152601684016020908152604080832089845290915290208054860190555b6040805186815260208101889052815133928a927f1106c14aab1f44b1577fd2f42206ee286f0fbf82c72942bbcdc9028af44216ff929081900390910190a3600193505b5050509392505050565b6020015190565b606060006005838154811015156135c157fe5b906000526020600020906017020190508060000154600114156135f257600260018201819055600390820155611dc6565b80546002141561360e5760018181015560036002820155611dc6565b805460031415611dc657600181810155600290810155919050565b600160058281548110151561363a57fe5b906000526020600020906017020160150160058381548110151561365a57fe5b906000526020600020906017020160030160405180828054600181600116156101000203166002900480156136c65780601f106136a45761010080835404028352918201916136c6565b820191906000526020600020905b8154815290600101906020018083116136b2575b50509283525050604051908190036020019020556005805460029190839081106136ec57fe5b906000526020600020906017020160150160058381548110151561370c57fe5b906000526020600020906017020160040160405180828054600181600116156101000203166002900480156137785780601f10613756576101008083540402835291820191613778565b820191906000526020600020905b815481529060010190602001808311613764575b505092835250506040519081900360200190205560058054600391908390811061379e57fe5b90600052602060002090601702016015016040805190810160405280600481526020017f64726177000000000000000000000000000000000000000000000000000000008152506040518082805190602001908083835b602083106138145780518252601f1990920191602091820191016137f5565b51815160209384036101000a6000190180199092169116179052920194855250604051938490030190922092909255505050565b60408051808201825290600290829080388339509192915050565b6060604051908101604052806003906020820280388339509192915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106138c357805160ff19168380011785556138f0565b828001600101855582156138f0579182015b828111156138f05782518255916020019190600101906138d5565b506138fc9291506139d3565b5090565b610120604051908101604052806003905b613919613863565b8152602001906001900390816139115790505090565b6102606040519081016040528060008152602001600081526020016000815260200160608152602001606081526020016060815260200160608152602001606081526020016000600160a060020a031681526020016000815260200160008019168152602001600080191681526020016000815260200160008152602001600081526020016000815260200160008152602001600015158152602001600081525090565b6118b291905b808211156138fc57600081556001016139d956004f6e6c79206f776e65722063616e20646f207468697300000000000000000000a165627a7a723058202ecdca3c835a7f6948f0c0bdda9a775c85d4eedef2496696e59dd485d4f9703d0029

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

00000000000000000000000018605a2efa250095c57909ca2f6be602925c03ed

-----Decoded View---------------
Arg [0] : _resolverAddress (address): 0x18605A2eFa250095C57909Ca2f6BE602925c03ED

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


Swarm Source

bzzr://2ecdca3c835a7f6948f0c0bdda9a775c85d4eedef2496696e59dd485d4f9703d

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

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

Validator Index Block Amount
View All Withdrawals

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

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