Overview
ETH Balance
0 ETH
Eth Value
$0.00More Info
Private Name Tags
ContractCreator
Latest 25 from a total of 25,237 transactions
Transaction Hash |
Method
|
Block
|
From
|
To
|
|||||
---|---|---|---|---|---|---|---|---|---|
Kill | 8090463 | 1999 days ago | IN | 0 ETH | 0.00002045 | ||||
Settle Bet | 7987540 | 2015 days ago | IN | 0 ETH | 0.0004972 | ||||
Place Bet | 7987537 | 2015 days ago | IN | 0.02 ETH | 0.0014941 | ||||
Settle Bet | 7954841 | 2020 days ago | IN | 0 ETH | 0.00020569 | ||||
Place Bet | 7954838 | 2020 days ago | IN | 0.03 ETH | 0.00062314 | ||||
Settle Bet | 7954834 | 2020 days ago | IN | 0 ETH | 0.00020878 | ||||
Place Bet | 7954830 | 2020 days ago | IN | 0.1 ETH | 0.00062341 | ||||
Settle Bet | 7870552 | 2033 days ago | IN | 0 ETH | 0.00020582 | ||||
Place Bet | 7870550 | 2033 days ago | IN | 0.01 ETH | 0.00062254 | ||||
Settle Bet | 7870546 | 2033 days ago | IN | 0 ETH | 0.00020544 | ||||
Place Bet | 7870542 | 2033 days ago | IN | 0.02 ETH | 0.00062254 | ||||
Settle Bet | 7870363 | 2033 days ago | IN | 0 ETH | 0.00016431 | ||||
Place Bet | 7870361 | 2033 days ago | IN | 0.04 ETH | 0.000498 | ||||
Settle Bet | 7870320 | 2033 days ago | IN | 0 ETH | 0.00016478 | ||||
Place Bet | 7870318 | 2033 days ago | IN | 0.02 ETH | 0.00049803 | ||||
Settle Bet | 7870316 | 2033 days ago | IN | 0 ETH | 0.00016386 | ||||
Place Bet | 7870314 | 2033 days ago | IN | 0.01 ETH | 0.00049752 | ||||
Settle Bet | 7855882 | 2035 days ago | IN | 0 ETH | 0.0004073 | ||||
Place Bet | 7855879 | 2035 days ago | IN | 0.05 ETH | 0.00124509 | ||||
Settle Bet | 7793910 | 2045 days ago | IN | 0 ETH | 0.00028518 | ||||
Place Bet | 7793905 | 2045 days ago | IN | 0.01 ETH | 0.0007471 | ||||
Settle Bet | 7774759 | 2048 days ago | IN | 0 ETH | 0.00033643 | ||||
Place Bet | 7774754 | 2048 days ago | IN | 0.01 ETH | 0.00099709 | ||||
Settle Bet | 7730237 | 2055 days ago | IN | 0 ETH | 0.00020331 | ||||
Place Bet | 7730233 | 2055 days ago | IN | 0.01 ETH | 0.00062226 |
Latest 25 internal transactions (View All)
Advanced mode:
Parent Transaction Hash | Block |
From
|
To
|
|||
---|---|---|---|---|---|---|
8090463 | 1999 days ago | 32.45343526 ETH | ||||
7987540 | 2015 days ago | 0.02364 ETH | ||||
7954841 | 2020 days ago | 0.042768 ETH | ||||
7954834 | 2020 days ago | 0.14112 ETH | ||||
7870552 | 2033 days ago | 0.0194 ETH | ||||
7870546 | 2033 days ago | 0.0394 ETH | ||||
7870363 | 2033 days ago | 0.0792 ETH | ||||
7870320 | 2033 days ago | 1 wei | ||||
7870316 | 2033 days ago | 1 wei | ||||
7855882 | 2035 days ago | 1 wei | ||||
7793910 | 2045 days ago | 1 wei | ||||
7774759 | 2048 days ago | 1 wei | ||||
7730237 | 2055 days ago | 1 wei | ||||
7724975 | 2056 days ago | 0.01276315 ETH | ||||
7718935 | 2057 days ago | 1 wei | ||||
7710880 | 2058 days ago | 1 wei | ||||
7710746 | 2058 days ago | 1 wei | ||||
7710698 | 2058 days ago | 1 wei | ||||
7680519 | 2063 days ago | 1 wei | ||||
7680510 | 2063 days ago | 0.03054857 ETH | ||||
7680495 | 2063 days ago | 1 wei | ||||
7678665 | 2063 days ago | 0.02686153 ETH | ||||
7667408 | 2065 days ago | 0.1176 ETH | ||||
7628552 | 2071 days ago | 0.03907894 ETH | ||||
7628543 | 2071 days ago | 0.0194 ETH |
Loading...
Loading
Contract Self Destruct called at Txn Hash 0x39ff126cd20d8094aea4d39a95412038d23b821a6879d05c217d1149e31d29b4
Contract Name:
Game365Meta
Compiler Version
v0.5.4+commit.9549d8ff
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2019-02-19 */ pragma solidity <= 0.6; contract Game365Meta { /* set constants */ uint constant HOUSE_EDGE_PERCENT = 1; uint constant HOUSE_EDGE_MINIMUM_AMOUNT = 0.0003 ether; // Chance to win jackpot (currently 0.1%) and fee deducted into jackpot fund. uint public constant MIN_JACKPOT_BET = 0.1 ether; uint public constant JACKPOT_MODULO = 1000; uint constant JACKPOT_FEE = 0.001 ether; // There is minimum and maximum bets. uint public constant MIN_BET = 0.01 ether; uint constant MAX_AMOUNT = 300000 ether; // Modulo is a number of equiprobable outcomes in a game: // - 2 for coin flip // - 6 for dice // - 6*6 = 36 for double dice // - 100 for etheroll // etc. // It's called so because 256-bit entropy is treated like a huge integer and // the remainder of its division by modulo is considered bet outcome. uint constant MAX_MODULO = 100; uint constant MAX_MASK_MODULO = 40; // This is a check on bet mask overflow. uint constant MAX_BET_MASK = 2 ** MAX_MASK_MODULO; // EVM BLOCKHASH opcode can query no further than 256 blocks into the // past. Given that settleBet uses block hash of placeBet as one of // complementary entropy sources, we cannot process bets older than this // threshold. On rare occasions our croupier may fail to invoke // settleBet in this timespan due to technical issues or extreme Ethereum // congestion; such bets can be refunded via invoking refundBet. uint constant BET_EXPIRATION_BLOCKS = 250; // This are some constants making O(1) population count in placeBet possible. // See whitepaper for intuition and proofs behind it. uint constant POPCNT_MULT = 0x0000000000002000000000100000000008000000000400000000020000000001; uint constant POPCNT_MASK = 0x0001041041041041041041041041041041041041041041041041041041041041; uint constant POPCNT_MODULO = 0x3F; // decimal:63, binary:111111 // Owner setting address payable public owner = address(0x0); // Croupier account. address public croupier = address(0x0); // The address corresponding to a private key used to sign placeBet commits. address public secretSigner = address(0x0); // Adjustable max bet profit and start winning the jackpot. Used to cap bets against dynamic odds. uint public maxProfit = 5 ether; uint public minJackpotWinAmount = 0.1 ether; // Funds that are locked in potentially winning bets. Prevents contract from // committing to bets it cannot pay out. uint256 public lockedInBets_; uint256 public lockedInJackpot_; struct Bet { // Wager amount in wei. uint128 amount; // Modulo of a game. uint8 modulo; // Number of winning outcomes, used to compute winning payment (* modulo/rollUnder), // and used instead of mask for games with modulo > MAX_MASK_MODULO. uint8 rollUnder; // Block number of placeBet tx. uint40 placeBlockNumber; // Bit mask representing winning bet outcomes (see MAX_MASK_MODULO comment). uint40 mask; // Address of a gambler, used to pay out winning bets. address payable gambler; } mapping(uint256 => Bet) bets; // Events that are issued to make statistic recovery easier. event FailedPayment(uint256 indexed commit, address indexed beneficiary, uint amount, uint jackpotAmount); event Payment(uint256 indexed commit, address indexed beneficiary, uint amount, uint jackpotAmount); event JackpotPayment(address indexed beneficiary, uint amount); event Commit(uint256 indexed commit, uint256 possibleWinAmount); /** Constructor */ constructor () public { owner = msg.sender; } /** Modifier */ // Standard modifier on methods invokable only by contract owner. modifier onlyOwner { require (msg.sender == owner, "OnlyOwner methods called by non-owner."); _; } // Standard modifier on methods invokable only by contract owner. modifier onlyCroupier { require (msg.sender == croupier, "OnlyCroupier methods called by non-croupier."); _; } // See comment for "secretSigner" variable. function setSecretSigner(address newSecretSigner) external onlyOwner { secretSigner = newSecretSigner; } // Change the croupier address. function setCroupier(address newCroupier) external onlyOwner { croupier = newCroupier; } function setMaxProfit(uint _maxProfit) public onlyOwner { require (_maxProfit < MAX_AMOUNT, "maxProfit should be a sane number."); maxProfit = _maxProfit; } function setMinJackPotWinAmount(uint _minJackpotAmount) public onlyOwner { minJackpotWinAmount = _minJackpotAmount; } // This function is used to bump up the jackpot fund. Cannot be used to lower it. function increaseJackpot(uint increaseAmount) external onlyOwner { require (increaseAmount <= address(this).balance, "Increase amount larger than balance."); require (lockedInJackpot_ + lockedInBets_ + increaseAmount <= address(this).balance, "Not enough funds."); lockedInJackpot_ += uint128(increaseAmount); } // Funds withdrawal to cover costs of our operation. function withdrawFunds(address payable beneficiary, uint withdrawAmount) external onlyOwner { require (withdrawAmount <= address(this).balance, "Increase amount larger than balance."); require (lockedInJackpot_ + lockedInBets_ + withdrawAmount <= address(this).balance, "Not enough funds."); sendFunds(1, beneficiary, withdrawAmount, 0); } // Contract may be destroyed only when there are no ongoing bets, // either settled or refunded. All funds are transferred to contract owner. function kill() external onlyOwner { require (lockedInBets_ == 0, "All bets should be processed (settled or refunded) before self-destruct."); selfdestruct(owner); } // Fallback function deliberately left empty. It's primary use case // is to top up the bank roll. function () external payable { } function placeBet(uint256 betMask, uint256 modulo, uint256 commitLastBlock, uint256 commit, bytes32 r, bytes32 s) external payable { Bet storage bet = bets[commit]; require(bet.gambler == address(0), "already betting same commit number"); uint256 amount = msg.value; require (modulo > 1 && modulo <= MAX_MODULO, "Modulo should be within range."); require (amount >= MIN_BET && amount <= MAX_AMOUNT, "Amount should be within range."); require (betMask > 0 && betMask < MAX_BET_MASK, "Mask should be within range."); require (block.number <= commitLastBlock, "Commit has expired."); //@DEV It will be changed later. bytes memory prefix = "\x19Ethereum Signed Message:\n32"; bytes32 prefixedHash = keccak256(abi.encodePacked(prefix, commit)); require (secretSigner == ecrecover(prefixedHash, 28, r, s), "ECDSA signature is not valid."); // Winning amount and jackpot increase. uint rollUnder; // Small modulo games specify bet outcomes via bit mask. // rollUnder is a number of 1 bits in this mask (population count). // This magical looking formula is an efficient way to compute population // count on EVM for numbers below 2**40. For detailed proof consult // the our whitepaper. if(modulo <= MAX_MASK_MODULO){ rollUnder = ((betMask * POPCNT_MULT) & POPCNT_MASK) % POPCNT_MODULO; // mask = betMask; //Stack too deep, try removing local variables. }else{ require (betMask > 0 && betMask <= modulo, "High modulo range, betMask larger than modulo."); rollUnder = betMask; } uint possibleWinAmount; uint jackpotFee; (possibleWinAmount, jackpotFee) = getGameWinAmount(amount, modulo, rollUnder); // Enforce max profit limit. require (possibleWinAmount <= amount + maxProfit, "maxProfit limit violation."); // Lock funds. lockedInBets_ += uint128(possibleWinAmount); lockedInJackpot_ += uint128(jackpotFee); // Check whether contract has enough funds to process this bet. require (lockedInJackpot_ + lockedInBets_ <= address(this).balance, "Cannot afford to lose this bet."); // Record commit in logs. emit Commit(commit, possibleWinAmount); bet.amount = uint128(amount); bet.modulo = uint8(modulo); bet.rollUnder = uint8(rollUnder); bet.placeBlockNumber = uint40(block.number); bet.mask = uint40(betMask); bet.gambler = msg.sender; } // This is the method used to settle 99% of bets. To process a bet with a specific // "commit", settleBet should supply a "reveal" number that would Keccak256-hash to // "commit". "blockHash" is the block hash of placeBet block as seen by croupier; it // is additionally asserted to prevent changing the bet outcomes on Ethereum reorgs. function settleBet(uint reveal, bytes32 blockHash) external onlyCroupier { uint commit = uint(keccak256(abi.encodePacked(reveal))); Bet storage bet = bets[commit]; uint placeBlockNumber = bet.placeBlockNumber; // Check that bet has not expired yet (see comment to BET_EXPIRATION_BLOCKS). require (block.number > placeBlockNumber, "settleBet in the same block as placeBet, or before."); require (block.number <= placeBlockNumber + BET_EXPIRATION_BLOCKS, "Blockhash can't be queried by EVM."); require (blockhash(placeBlockNumber) == blockHash, "Does not matched blockHash."); // Settle bet using reveal and blockhash as entropy sources. settleBetCommon(bet, reveal, blockHash); } // Common settlement code for settleBet. function settleBetCommon(Bet storage bet, uint reveal, bytes32 entropyBlockHash) private { // Fetch bet parameters into local variables (to save gas). uint commit = uint(keccak256(abi.encodePacked(reveal))); uint amount = bet.amount; uint modulo = bet.modulo; uint rollUnder = bet.rollUnder; address payable gambler = bet.gambler; // Check that bet is in 'active' state. require (amount != 0, "Bet should be in an 'active' state"); // Move bet into 'processed' state already. bet.amount = 0; // The RNG - combine "reveal" and blockhash of placeBet using Keccak256. Miners // are not aware of "reveal" and cannot deduce it from "commit" (as Keccak256 // preimage is intractable), and house is unable to alter the "reveal" after // placeBet have been mined (as Keccak256 collision finding is also intractable). bytes32 entropy = keccak256(abi.encodePacked(reveal, entropyBlockHash)); // Do a roll by taking a modulo of entropy. Compute winning amount. uint game = uint(entropy) % modulo; uint gameWinAmount; uint _jackpotFee; (gameWinAmount, _jackpotFee) = getGameWinAmount(amount, modulo, rollUnder); uint gameWin = 0; uint jackpotWin = 0; // Determine game outcome. if (modulo <= MAX_MASK_MODULO) { // For small modulo games, check the outcome against a bit mask. if ((2 ** game) & bet.mask != 0) { gameWin = gameWinAmount; } } else { // For larger modulos, check inclusion into half-open interval. if (game < rollUnder) { gameWin = gameWinAmount; } } // Unlock the bet amount, regardless of the outcome. lockedInBets_ -= uint128(gameWinAmount); // Roll for a jackpot (if eligible). if (amount >= MIN_JACKPOT_BET && lockedInJackpot_ >= minJackpotWinAmount) { // The second modulo, statistically independent from the "main" dice roll. // Effectively you are playing two games at once! uint jackpotRng = (uint(entropy) / modulo) % JACKPOT_MODULO; // Bingo! if (jackpotRng == 0) { jackpotWin = lockedInJackpot_; lockedInJackpot_ = 0; } } // Log jackpot win. if (jackpotWin > 0) { emit JackpotPayment(gambler, jackpotWin); } // Send the funds to gambler. sendFunds(commit, gambler, gameWin, jackpotWin); } function getGameWinAmount(uint amount, uint modulo, uint rollUnder) private pure returns (uint winAmount, uint jackpotFee) { require (0 < rollUnder && rollUnder <= modulo, "Win probability out of range."); jackpotFee = amount >= MIN_JACKPOT_BET ? JACKPOT_FEE : 0; uint houseEdge = amount * HOUSE_EDGE_PERCENT / 100; if (houseEdge < HOUSE_EDGE_MINIMUM_AMOUNT) { houseEdge = HOUSE_EDGE_MINIMUM_AMOUNT; } require (houseEdge + jackpotFee <= amount, "Bet doesn't even cover house edge."); winAmount = (amount - houseEdge - jackpotFee) * modulo / rollUnder; } // Refund transaction - return the bet amount of a roll that was not processed in a // due timeframe. Processing such blocks is not possible due to EVM limitations (see // BET_EXPIRATION_BLOCKS comment above for details). In case you ever find yourself // in a situation like this, just contact the our support, however nothing // precludes you from invoking this method yourself. function refundBet(uint commit) external { // Check that bet is in 'active' state. Bet storage bet = bets[commit]; uint amount = bet.amount; require (amount != 0, "Bet should be in an 'active' state"); // Check that bet has already expired. require (block.number > bet.placeBlockNumber + BET_EXPIRATION_BLOCKS, "Blockhash can't be queried by EVM."); // Move bet into 'processed' state, release funds. bet.amount = 0; uint gameWinAmount; uint jackpotFee; (gameWinAmount, jackpotFee) = getGameWinAmount(amount, bet.modulo, bet.rollUnder); lockedInBets_ -= uint128(gameWinAmount); lockedInJackpot_ -= uint128(jackpotFee); // Send the refund. sendFunds(commit, bet.gambler, amount, 0); } // Helper routine to process the payment. function sendFunds(uint commit, address payable beneficiary, uint gameWin, uint jackpotWin) private { uint amount = gameWin + jackpotWin == 0 ? 1 wei : gameWin + jackpotWin; uint successLogAmount = gameWin; if (beneficiary.send(amount)) { emit Payment(commit, beneficiary, successLogAmount, jackpotWin); } else { emit FailedPayment(commit, beneficiary, amount, 0); } } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"JACKPOT_MODULO","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"MIN_JACKPOT_BET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_minJackpotAmount","type":"uint256"}],"name":"setMinJackPotWinAmount","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lockedInJackpot_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"kill","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"secretSigner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"betMask","type":"uint256"},{"name":"modulo","type":"uint256"},{"name":"commitLastBlock","type":"uint256"},{"name":"commit","type":"uint256"},{"name":"r","type":"bytes32"},{"name":"s","type":"bytes32"}],"name":"placeBet","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[],"name":"MIN_BET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"croupier","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minJackpotWinAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxProfit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"beneficiary","type":"address"},{"name":"withdrawAmount","type":"uint256"}],"name":"withdrawFunds","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"reveal","type":"uint256"},{"name":"blockHash","type":"bytes32"}],"name":"settleBet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"increaseAmount","type":"uint256"}],"name":"increaseJackpot","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"newSecretSigner","type":"address"}],"name":"setSecretSigner","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"commit","type":"uint256"}],"name":"refundBet","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lockedInBets_","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"newCroupier","type":"address"}],"name":"setCroupier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_maxProfit","type":"uint256"}],"name":"setMaxProfit","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"commit","type":"uint256"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"jackpotAmount","type":"uint256"}],"name":"FailedPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"commit","type":"uint256"},{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"},{"indexed":false,"name":"jackpotAmount","type":"uint256"}],"name":"Payment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"beneficiary","type":"address"},{"indexed":false,"name":"amount","type":"uint256"}],"name":"JackpotPayment","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"commit","type":"uint256"},{"indexed":false,"name":"possibleWinAmount","type":"uint256"}],"name":"Commit","type":"event"}]
Contract Creation Code
608060405260008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550674563918244f4000060035567016345785d8a00006004553480156100ed57600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061232b8061013d6000396000f3fe60806040526004361061013c576000357c010000000000000000000000000000000000000000000000000000000090048063abb8303b116100bd578063d702087f11610081578063d702087f146104d2578063e1fdb4b414610523578063e63ea2811461055e578063f8bb201c14610589578063fbd668a9146105da5761013c565b8063abb8303b146103a1578063b539cd55146103cc578063c1075329146103f7578063ca722cdc14610452578063d6d30a51146104975761013c565b80634d61537f116101045780634d61537f146102115780635e83b463146102685780636540742f146102c85780636b5c5f39146102f35780638da5cb5b1461034a5761013c565b806301f602171461013e5780630cf9349d146101695780631c692c0b14610194578063387d9037146101cf57806341c0e1b5146101fa575b005b34801561014a57600080fd5b50610153610615565b6040518082815260200191505060405180910390f35b34801561017557600080fd5b5061017e61061b565b6040518082815260200191505060405180910390f35b3480156101a057600080fd5b506101cd600480360360208110156101b757600080fd5b8101908080359060200190929190505050610627565b005b3480156101db57600080fd5b506101e46106d8565b6040518082815260200191505060405180910390f35b34801561020657600080fd5b5061020f6106de565b005b34801561021d57600080fd5b5061022661081c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102c6600480360360c081101561027e57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610842565b005b3480156102d457600080fd5b506102dd611081565b6040518082815260200191505060405180910390f35b3480156102ff57600080fd5b5061030861108c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561035657600080fd5b5061035f6110b2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103ad57600080fd5b506103b66110d7565b6040518082815260200191505060405180910390f35b3480156103d857600080fd5b506103e16110dd565b6040518082815260200191505060405180910390f35b34801561040357600080fd5b506104506004803603604081101561041a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110e3565b005b34801561045e57600080fd5b506104956004803603604081101561047557600080fd5b8101908080359060200190929190803590602001909291905050506112a5565b005b3480156104a357600080fd5b506104d0600480360360208110156104ba57600080fd5b81019080803590602001909291905050506114f6565b005b3480156104de57600080fd5b50610521600480360360208110156104f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116cb565b005b34801561052f57600080fd5b5061055c6004803603602081101561054657600080fd5b81019080803590602001909291905050506117b6565b005b34801561056a57600080fd5b506105736119cf565b6040518082815260200191505060405180910390f35b34801561059557600080fd5b506105d8600480360360208110156105ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119d5565b005b3480156105e657600080fd5b50610613600480360360208110156105fd57600080fd5b8101908080359060200190929190505050611ac0565b005b6103e881565b67016345785d8a000081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061228a6026913960400191505060405180910390fd5b8060048190555050565b60065481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061228a6026913960400191505060405180910390fd5b60006005541415156107e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260488152602001806122426048913960600191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008581526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610904576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061219d6022913960400191505060405180910390fd5b600034905060018711801561091a575060648711155b151561098e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4d6f64756c6f2073686f756c642062652077697468696e2072616e67652e000081525060200191505060405180910390fd5b662386f26fc1000081101580156109af5750693f870857a3e0e38000008111155b1515610a23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f416d6f756e742073686f756c642062652077697468696e2072616e67652e000081525060200191505060405180910390fd5b600088118015610a365750602860020a88105b1515610aaa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d61736b2073686f756c642062652077697468696e2072616e67652e0000000081525060200191505060405180910390fd5b854311151515610b22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f436f6d6d69742068617320657870697265642e0000000000000000000000000081525060200191505060405180910390fd5b60606040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600081876040516020018083805190602001908083835b602083101515610b985780518252602082019150602081019050602083039250610b73565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200192505050604051602081830303815290604052805190602001209050600181601c888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610c37573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4543445341207369676e6174757265206973206e6f742076616c69642e00000081525060200191505060405180910390fd5b600060288a111515610d6257603f7e010410410410410410410410410410410410410410410410410410410410417920000000001000000000080000000004000000000200000000018d0216811515610d5a57fe5b069050610dcd565b60008b118015610d725750898b11155b1515610dc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806122b0602e913960400191505060405180910390fd5b8a90505b600080610ddb868d85611bd5565b809250819350505060035486018211151515610e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6d617850726f666974206c696d69742076696f6c6174696f6e2e00000000000081525060200191505060405180910390fd5b816fffffffffffffffffffffffffffffffff16600560008282540192505081905550806fffffffffffffffffffffffffffffffff166006600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff16316005546006540111151515610f38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f43616e6e6f74206166666f726420746f206c6f73652074686973206265742e0081525060200191505060405180910390fd5b897facafc53544c2ca5cd4dbfda9282c25a35859f0d4ceb77a8275dca1660b1ed3ad836040518082815260200191505060405180910390a2858760000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508b8760000160106101000a81548160ff021916908360ff160217905550828760000160116101000a81548160ff021916908360ff160217905550438760000160126101000a81548164ffffffffff021916908364ffffffffff1602179055508c8760000160176101000a81548164ffffffffff021916908364ffffffffff160217905550338760010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050505050505050565b662386f26fc1000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60035481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561118a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061228a6026913960400191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163181111515156111fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061221e6024913960400191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163181600554600654010111151515611293576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4e6f7420656e6f7567682066756e64732e00000000000000000000000000000081525060200191505060405180910390fd5b6112a1600183836000611d26565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561134d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806121f2602c913960400191505060405180910390fd5b6000826040516020018082815260200191505060405160208183030381529060405280519060200120600190049050600060076000838152602001908152602001600020905060008160000160129054906101000a900464ffffffffff1664ffffffffff169050804311151561140e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806121bf6033913960400191505060405180910390fd5b60fa8101431115151561146c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806122de6022913960400191505060405180910390fd5b8381401415156114e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f446f6573206e6f74206d61746368656420626c6f636b486173682e000000000081525060200191505060405180910390fd5b6114ef828686611e3a565b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061228a6026913960400191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1631811115151561160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061221e6024913960400191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1631816005546006540101111515156116a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4e6f7420656e6f7567682066756e64732e00000000000000000000000000000081525060200191505060405180910390fd5b806fffffffffffffffffffffffffffffffff1660066000828254019250508190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061228a6026913960400191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060076000838152602001908152602001600020905060008160000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16905060008114151515611860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061217b6022913960400191505060405180910390fd5b60fa8260000160129054906101000a900464ffffffffff1664ffffffffff1601431115156118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806122de6022913960400191505060405180910390fd5b60008260000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060008061194b838560000160109054906101000a900460ff1660ff168660000160119054906101000a900460ff1660ff16611bd5565b8092508193505050816fffffffffffffffffffffffffffffffff16600560008282540392505081905550806fffffffffffffffffffffffffffffffff166006600082825403925050819055506119c8858560010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856000611d26565b5050505050565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061228a6026913960400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061228a6026913960400191505060405180910390fd5b693f870857a3e0e380000081101515611bcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806121376022913960400191505060405180910390fd5b8060038190555050565b600080826000108015611be85750838311155b1515611c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f57696e2070726f626162696c697479206f7574206f662072616e67652e00000081525060200191505060405180910390fd5b67016345785d8a0000851015611c73576000611c7c565b66038d7ea4c680005b90506000606460018702811515611c8f57fe5b049050660110d9316ec000811015611cac57660110d9316ec00090505b8582820111151515611d09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806121596022913960400191505060405180910390fd5b8385838389030302811515611d1a57fe5b04925050935093915050565b60008082840114611d3957818301611d3c565b60015b905060008390508473ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015611dd9578473ffffffffffffffffffffffffffffffffffffffff16867f18cd56b3b5d7c0d015402709124a50282389601c018b30730138c1fd30b249e18386604051808381526020018281526020019250505060405180910390a3611e32565b8473ffffffffffffffffffffffffffffffffffffffff16867fe781ffba117fc05b201ed9a3830783e7eb5c6b6496655520584ecf315dc86f37846000604051808381526020018281526020019250505060405180910390a35b505050505050565b600082604051602001808281526020019150506040516020818303038152906040528051906020012060019004905060008460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16905060008560000160109054906101000a900460ff1660ff16905060008660000160119054906101000a900460ff1660ff16905060008760010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008414151515611f57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061217b6022913960400191505060405180910390fd5b60008860000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506000878760405160200180838152602001828152602001925050506040516020818303038152906040528051906020012090506000848260019004811515611fd757fe5b069050600080611fe8888888611bd5565b8092508193505050600080905060008090506028891115156120385760008e60000160179054906101000a900464ffffffffff1664ffffffffff168660020a16141515612033578391505b612045565b87851015612044578391505b5b836fffffffffffffffffffffffffffffffff1660056000828254039250508190555067016345785d8a00008a10158015612083575060045460065410155b156120c25760006103e88a886001900481151561209c57fe5b048115156120a657fe5b06905060008114156120c057600654915060006006819055505b505b600081111561211a578673ffffffffffffffffffffffffffffffffffffffff167fc388db0e8aa560a59633c094a0d0aa21322cd6234836fd5bac00fc5ae63b5783826040518082815260200191505060405180910390a25b6121268b888484611d26565b505050505050505050505050505056fe6d617850726f6669742073686f756c6420626520612073616e65206e756d6265722e42657420646f65736e2774206576656e20636f76657220686f75736520656467652e4265742073686f756c6420626520696e20616e202761637469766527207374617465616c72656164792062657474696e672073616d6520636f6d6d6974206e756d626572736574746c6542657420696e207468652073616d6520626c6f636b20617320706c6163654265742c206f72206265666f72652e4f6e6c7943726f7570696572206d6574686f64732063616c6c6564206279206e6f6e2d63726f75706965722e496e63726561736520616d6f756e74206c6172676572207468616e2062616c616e63652e416c6c20626574732073686f756c642062652070726f6365737365642028736574746c6564206f7220726566756e64656429206265666f72652073656c662d64657374727563742e4f6e6c794f776e6572206d6574686f64732063616c6c6564206279206e6f6e2d6f776e65722e48696768206d6f64756c6f2072616e67652c206265744d61736b206c6172676572207468616e206d6f64756c6f2e426c6f636b686173682063616e277420626520717565726965642062792045564d2ea165627a7a72305820112287f9dc0c1ce7a8f6cefc7700d12b1991649c2629b487734fe32740d5183b0029
Deployed Bytecode
0x60806040526004361061013c576000357c010000000000000000000000000000000000000000000000000000000090048063abb8303b116100bd578063d702087f11610081578063d702087f146104d2578063e1fdb4b414610523578063e63ea2811461055e578063f8bb201c14610589578063fbd668a9146105da5761013c565b8063abb8303b146103a1578063b539cd55146103cc578063c1075329146103f7578063ca722cdc14610452578063d6d30a51146104975761013c565b80634d61537f116101045780634d61537f146102115780635e83b463146102685780636540742f146102c85780636b5c5f39146102f35780638da5cb5b1461034a5761013c565b806301f602171461013e5780630cf9349d146101695780631c692c0b14610194578063387d9037146101cf57806341c0e1b5146101fa575b005b34801561014a57600080fd5b50610153610615565b6040518082815260200191505060405180910390f35b34801561017557600080fd5b5061017e61061b565b6040518082815260200191505060405180910390f35b3480156101a057600080fd5b506101cd600480360360208110156101b757600080fd5b8101908080359060200190929190505050610627565b005b3480156101db57600080fd5b506101e46106d8565b6040518082815260200191505060405180910390f35b34801561020657600080fd5b5061020f6106de565b005b34801561021d57600080fd5b5061022661081c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102c6600480360360c081101561027e57600080fd5b81019080803590602001909291908035906020019092919080359060200190929190803590602001909291908035906020019092919080359060200190929190505050610842565b005b3480156102d457600080fd5b506102dd611081565b6040518082815260200191505060405180910390f35b3480156102ff57600080fd5b5061030861108c565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561035657600080fd5b5061035f6110b2565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156103ad57600080fd5b506103b66110d7565b6040518082815260200191505060405180910390f35b3480156103d857600080fd5b506103e16110dd565b6040518082815260200191505060405180910390f35b34801561040357600080fd5b506104506004803603604081101561041a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506110e3565b005b34801561045e57600080fd5b506104956004803603604081101561047557600080fd5b8101908080359060200190929190803590602001909291905050506112a5565b005b3480156104a357600080fd5b506104d0600480360360208110156104ba57600080fd5b81019080803590602001909291905050506114f6565b005b3480156104de57600080fd5b50610521600480360360208110156104f557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506116cb565b005b34801561052f57600080fd5b5061055c6004803603602081101561054657600080fd5b81019080803590602001909291905050506117b6565b005b34801561056a57600080fd5b506105736119cf565b6040518082815260200191505060405180910390f35b34801561059557600080fd5b506105d8600480360360208110156105ac57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506119d5565b005b3480156105e657600080fd5b50610613600480360360208110156105fd57600080fd5b8101908080359060200190929190505050611ac0565b005b6103e881565b67016345785d8a000081565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156106ce576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061228a6026913960400191505060405180910390fd5b8060048190555050565b60065481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515610785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061228a6026913960400191505060405180910390fd5b60006005541415156107e2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260488152602001806122426048913960600191505060405180910390fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16ff5b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600760008581526020019081526020016000209050600073ffffffffffffffffffffffffffffffffffffffff168160010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610904576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061219d6022913960400191505060405180910390fd5b600034905060018711801561091a575060648711155b151561098e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f4d6f64756c6f2073686f756c642062652077697468696e2072616e67652e000081525060200191505060405180910390fd5b662386f26fc1000081101580156109af5750693f870857a3e0e38000008111155b1515610a23576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601e8152602001807f416d6f756e742073686f756c642062652077697468696e2072616e67652e000081525060200191505060405180910390fd5b600088118015610a365750602860020a88105b1515610aaa576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601c8152602001807f4d61736b2073686f756c642062652077697468696e2072616e67652e0000000081525060200191505060405180910390fd5b854311151515610b22576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f436f6d6d69742068617320657870697265642e0000000000000000000000000081525060200191505060405180910390fd5b60606040805190810160405280601c81526020017f19457468657265756d205369676e6564204d6573736167653a0a3332000000008152509050600081876040516020018083805190602001908083835b602083101515610b985780518252602082019150602081019050602083039250610b73565b6001836020036101000a03801982511681845116808217855250505050505090500182815260200192505050604051602081830303815290604052805190602001209050600181601c888860405160008152602001604052604051808581526020018460ff1681526020018381526020018281526020019450505050506020604051602081039080840390855afa158015610c37573d6000803e3d6000fd5b5050506020604051035173ffffffffffffffffffffffffffffffffffffffff16600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141515610d05576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f4543445341207369676e6174757265206973206e6f742076616c69642e00000081525060200191505060405180910390fd5b600060288a111515610d6257603f7e010410410410410410410410410410410410410410410410410410410410417920000000001000000000080000000004000000000200000000018d0216811515610d5a57fe5b069050610dcd565b60008b118015610d725750898b11155b1515610dc9576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602e8152602001806122b0602e913960400191505060405180910390fd5b8a90505b600080610ddb868d85611bd5565b809250819350505060035486018211151515610e5f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601a8152602001807f6d617850726f666974206c696d69742076696f6c6174696f6e2e00000000000081525060200191505060405180910390fd5b816fffffffffffffffffffffffffffffffff16600560008282540192505081905550806fffffffffffffffffffffffffffffffff166006600082825401925050819055503073ffffffffffffffffffffffffffffffffffffffff16316005546006540111151515610f38576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f43616e6e6f74206166666f726420746f206c6f73652074686973206265742e0081525060200191505060405180910390fd5b897facafc53544c2ca5cd4dbfda9282c25a35859f0d4ceb77a8275dca1660b1ed3ad836040518082815260200191505060405180910390a2858760000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055508b8760000160106101000a81548160ff021916908360ff160217905550828760000160116101000a81548160ff021916908360ff160217905550438760000160126101000a81548164ffffffffff021916908364ffffffffff1602179055508c8760000160176101000a81548164ffffffffff021916908364ffffffffff160217905550338760010160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050505050505050505050505050565b662386f26fc1000081565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b60035481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561118a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061228a6026913960400191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163181111515156111fc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061221e6024913960400191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff163181600554600654010111151515611293576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4e6f7420656e6f7567682066756e64732e00000000000000000000000000000081525060200191505060405180910390fd5b6112a1600183836000611d26565b5050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561134d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c8152602001806121f2602c913960400191505060405180910390fd5b6000826040516020018082815260200191505060405160208183030381529060405280519060200120600190049050600060076000838152602001908152602001600020905060008160000160129054906101000a900464ffffffffff1664ffffffffff169050804311151561140e576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260338152602001806121bf6033913960400191505060405180910390fd5b60fa8101431115151561146c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806122de6022913960400191505060405180910390fd5b8381401415156114e4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f446f6573206e6f74206d61746368656420626c6f636b486173682e000000000081525060200191505060405180910390fd5b6114ef828686611e3a565b5050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061228a6026913960400191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1631811115151561160f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602481526020018061221e6024913960400191505060405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff1631816005546006540101111515156116a6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f4e6f7420656e6f7567682066756e64732e00000000000000000000000000000081525060200191505060405180910390fd5b806fffffffffffffffffffffffffffffffff1660066000828254019250508190555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611772576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061228a6026913960400191505060405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600060076000838152602001908152602001600020905060008160000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16905060008114151515611860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061217b6022913960400191505060405180910390fd5b60fa8260000160129054906101000a900464ffffffffff1664ffffffffff1601431115156118d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806122de6022913960400191505060405180910390fd5b60008260000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555060008061194b838560000160109054906101000a900460ff1660ff168660000160119054906101000a900460ff1660ff16611bd5565b8092508193505050816fffffffffffffffffffffffffffffffff16600560008282540392505081905550806fffffffffffffffffffffffffffffffff166006600082825403925050819055506119c8858560010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16856000611d26565b5050505050565b60055481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611a7c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061228a6026913960400191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611b67576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061228a6026913960400191505060405180910390fd5b693f870857a3e0e380000081101515611bcb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806121376022913960400191505060405180910390fd5b8060038190555050565b600080826000108015611be85750838311155b1515611c5c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f57696e2070726f626162696c697479206f7574206f662072616e67652e00000081525060200191505060405180910390fd5b67016345785d8a0000851015611c73576000611c7c565b66038d7ea4c680005b90506000606460018702811515611c8f57fe5b049050660110d9316ec000811015611cac57660110d9316ec00090505b8582820111151515611d09576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806121596022913960400191505060405180910390fd5b8385838389030302811515611d1a57fe5b04925050935093915050565b60008082840114611d3957818301611d3c565b60015b905060008390508473ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f1935050505015611dd9578473ffffffffffffffffffffffffffffffffffffffff16867f18cd56b3b5d7c0d015402709124a50282389601c018b30730138c1fd30b249e18386604051808381526020018281526020019250505060405180910390a3611e32565b8473ffffffffffffffffffffffffffffffffffffffff16867fe781ffba117fc05b201ed9a3830783e7eb5c6b6496655520584ecf315dc86f37846000604051808381526020018281526020019250505060405180910390a35b505050505050565b600082604051602001808281526020019150506040516020818303038152906040528051906020012060019004905060008460000160009054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16905060008560000160109054906101000a900460ff1660ff16905060008660000160119054906101000a900460ff1660ff16905060008760010160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905060008414151515611f57576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602281526020018061217b6022913960400191505060405180910390fd5b60008860000160006101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506000878760405160200180838152602001828152602001925050506040516020818303038152906040528051906020012090506000848260019004811515611fd757fe5b069050600080611fe8888888611bd5565b8092508193505050600080905060008090506028891115156120385760008e60000160179054906101000a900464ffffffffff1664ffffffffff168660020a16141515612033578391505b612045565b87851015612044578391505b5b836fffffffffffffffffffffffffffffffff1660056000828254039250508190555067016345785d8a00008a10158015612083575060045460065410155b156120c25760006103e88a886001900481151561209c57fe5b048115156120a657fe5b06905060008114156120c057600654915060006006819055505b505b600081111561211a578673ffffffffffffffffffffffffffffffffffffffff167fc388db0e8aa560a59633c094a0d0aa21322cd6234836fd5bac00fc5ae63b5783826040518082815260200191505060405180910390a25b6121268b888484611d26565b505050505050505050505050505056fe6d617850726f6669742073686f756c6420626520612073616e65206e756d6265722e42657420646f65736e2774206576656e20636f76657220686f75736520656467652e4265742073686f756c6420626520696e20616e202761637469766527207374617465616c72656164792062657474696e672073616d6520636f6d6d6974206e756d626572736574746c6542657420696e207468652073616d6520626c6f636b20617320706c6163654265742c206f72206265666f72652e4f6e6c7943726f7570696572206d6574686f64732063616c6c6564206279206e6f6e2d63726f75706965722e496e63726561736520616d6f756e74206c6172676572207468616e2062616c616e63652e416c6c20626574732073686f756c642062652070726f6365737365642028736574746c6564206f7220726566756e64656429206265666f72652073656c662d64657374727563742e4f6e6c794f776e6572206d6574686f64732063616c6c6564206279206e6f6e2d6f776e65722e48696768206d6f64756c6f2072616e67652c206265744d61736b206c6172676572207468616e206d6f64756c6f2e426c6f636b686173682063616e277420626520717565726965642062792045564d2ea165627a7a72305820112287f9dc0c1ce7a8f6cefc7700d12b1991649c2629b487734fe32740d5183b0029
Swarm Source
bzzr://112287f9dc0c1ce7a8f6cefc7700d12b1991649c2629b487734fe32740d5183b
Loading...
Loading
Loading...
Loading
Multichain Portfolio | 30 Chains
Chain | Token | Portfolio % | Price | Amount | Value |
---|
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.