Source Code
Overview
ETH Balance
0.000244331474598766 ETH
Eth Value
$0.47 (@ $1,937.17/ETH)Latest 25 from a total of 39 transactions
| Transaction Hash |
Method
|
Block
|
From
|
|
To
|
||||
|---|---|---|---|---|---|---|---|---|---|
| Register | 9843679 | 2152 days ago | IN | 0.01 ETH | 0.00119067 | ||||
| Withdraw | 7405012 | 2539 days ago | IN | 0 ETH | 0.00006806 | ||||
| Withdraw | 6962801 | 2621 days ago | IN | 0 ETH | 0.00021226 | ||||
| Withdraw | 6955406 | 2623 days ago | IN | 0 ETH | 0.00010613 | ||||
| Claim | 6849915 | 2640 days ago | IN | 0 ETH | 0.00025265 | ||||
| Withdraw | 6849910 | 2640 days ago | IN | 0 ETH | 0.00021226 | ||||
| Withdraw | 6708301 | 2664 days ago | IN | 0 ETH | 0.00013323 | ||||
| Claim | 6708299 | 2664 days ago | IN | 0 ETH | 0.00037456 | ||||
| Withdraw | 6420070 | 2711 days ago | IN | 0 ETH | 0.00062034 | ||||
| Withdraw | 6401899 | 2714 days ago | IN | 0 ETH | 0.00034259 | ||||
| Withdraw | 6401895 | 2714 days ago | IN | 0 ETH | 0.00047759 | ||||
| Claim | 6401894 | 2714 days ago | IN | 0 ETH | 0.00056846 | ||||
| Withdraw | 6395916 | 2715 days ago | IN | 0 ETH | 0.000329 | ||||
| Claim | 6395870 | 2715 days ago | IN | 0 ETH | 0.0003701 | ||||
| Claim | 6395825 | 2715 days ago | IN | 0 ETH | 0.00089898 | ||||
| Buy Xid | 6353766 | 2722 days ago | IN | 0.00296893 ETH | 0.00193159 | ||||
| Buy Xname | 6326154 | 2726 days ago | IN | 0.01962546 ETH | 0.00104461 | ||||
| Buy Xname | 6325353 | 2726 days ago | IN | 0.0237493 ETH | 0.00177836 | ||||
| Buy Xname | 6319952 | 2727 days ago | IN | 0.02943542 ETH | 0.00120328 | ||||
| Register | 6318611 | 2727 days ago | IN | 0.01 ETH | 0.0006879 | ||||
| Buy Xname | 6318567 | 2727 days ago | IN | 0.03805218 ETH | 0.00177106 | ||||
| Buy Xname | 6318560 | 2727 days ago | IN | 0.04218982 ETH | 0.00157075 | ||||
| Register | 6318542 | 2727 days ago | IN | 0.01 ETH | 0.00081894 | ||||
| Register | 6318444 | 2727 days ago | IN | 0.01 ETH | 0.00081904 | ||||
| Register | 6318441 | 2727 days ago | IN | 0.01 ETH | 0.00072843 |
Latest 25 internal transactions (View All)
Advanced mode:
| Parent Transaction Hash | Method | Block |
From
|
|
To
|
||
|---|---|---|---|---|---|---|---|
| - | 9843679 | 2152 days ago | 0.01 ETH | ||||
| - | 7405012 | 2539 days ago | 0.01973877 ETH | ||||
| - | 6962801 | 2621 days ago | 0.00448719 ETH | ||||
| - | 6955406 | 2623 days ago | 0.04115938 ETH | ||||
| - | 6849915 | 2640 days ago | 0.11096765 ETH | ||||
| - | 6849910 | 2640 days ago | 0.01415853 ETH | ||||
| Transfer | 6708301 | 2664 days ago | 0.00814284 ETH | ||||
| Transfer | 6708299 | 2664 days ago | 0.11165946 ETH | ||||
| Transfer | 6420070 | 2711 days ago | 0.00944028 ETH | ||||
| Transfer | 6401899 | 2714 days ago | 0.00545043 ETH | ||||
| Transfer | 6401895 | 2714 days ago | 0.00808239 ETH | ||||
| Transfer | 6401894 | 2714 days ago | 0.11097106 ETH | ||||
| Transfer | 6395916 | 2715 days ago | 0.01133141 ETH | ||||
| Transfer | 6395870 | 2715 days ago | 0.11165833 ETH | ||||
| Transfer | 6353766 | 2722 days ago | 0.00035627 ETH | ||||
| Transfer | 6353766 | 2722 days ago | 0.00017813 ETH | ||||
| Transfer | 6326154 | 2726 days ago | 0.00235505 ETH | ||||
| Transfer | 6326154 | 2726 days ago | 0.00117752 ETH | ||||
| Transfer | 6325353 | 2726 days ago | 0.00284991 ETH | ||||
| Transfer | 6325353 | 2726 days ago | 0.00142495 ETH | ||||
| Transfer | 6319952 | 2727 days ago | 0.00353225 ETH | ||||
| Transfer | 6319952 | 2727 days ago | 0.00176612 ETH | ||||
| Transfer | 6318611 | 2727 days ago | 0.01 ETH | ||||
| Transfer | 6318567 | 2727 days ago | 0.00456626 ETH | ||||
| Transfer | 6318567 | 2727 days ago | 0.00228313 ETH |
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions
Loading...
Loading
Contract Name:
FoMoInsurance
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/**
*Submitted for verification at Etherscan.io on 2018-09-12
*/
pragma solidity ^0.4.24;
contract FoMoInsurance {
using SafeMath for *;
using NameFilter for string;
using F3DKeysCalcLong for uint256;
//*********
// STRUCTS
//*********
struct Player {
uint256 id; // player id
bytes32 name; // player name
uint256 gen; // general vault
uint256 aff; // affiliate vault
bool isAgent; // referral activated
uint256 eth; // eth player has added to round
uint256 keys; // keys
uint256 units; // uints of insurance
uint256 plyrLastSeen; // last day player played
uint256 mask; // player mask
uint256 level;
uint256 accumulatedAff;
}
//***************
// EXTERNAL DATA
//***************
FoMo3Dlong constant private FoMoLong = FoMo3Dlong(0xA62142888ABa8370742bE823c1782D17A0389Da1);
DiviesInterface constant private Divies = DiviesInterface(0x93B2dbDd3F242EED7D7c7180c5A4Eddc4BaAE3E7);
address constant private community = address(0xe853A139b87dD816f052A60Ef646Fd89f7964545);
uint256 public end;
bool public ended;
//******************
// GLOBAL VARIABLES
//******************
mapping(address => mapping(uint256 => uint256)) public unitToExpirePlayer;
mapping(uint256 => uint256) public unitToExpire; // unit of insurance due at day x
uint256 public issuedInsurance; // all issued insurance
uint256 public ethOfKey; // virtual eth of bought keys
uint256 public keys; // totalSupply of key
uint256 public pot; // eth gonna pay to beneficiary
uint256 public today; // today's date
uint256 public _now; // current time
uint256 public mask; // global mask
uint256 public agents; // number of agent
// player data
mapping(address => Player) public player; // player data
mapping(uint256 => address) public agentxID_; // return agent address by id
mapping(bytes32 => address) public agentxName_; // return agent address by name
// constant parameters
uint256 constant maxInsurePeriod = 100;
uint256 constant thisRoundIndex = 2;
uint256 constant maxLevel = 10;
// rate of buying x day insurance
uint256[101] public rate =
[0,
1000000000000000000,
1990000000000000000,
2970100000000000000,
3940399000000000000,
4900995010000000000,
5851985059900000000,
6793465209301000000,
7725530557207990000,
8648275251635910100,
9561792499119550999,
10466174574128355489,
11361512828387071934,
12247897700103201215,
13125418723102169203,
13994164535871147511,
14854222890512436036,
15705680661607311676,
16548623854991238559,
17383137616441326173,
18209306240276912911,
19027213177874143782,
19836941046095402344,
20638571635634448321,
21432185919278103838,
22217864060085322800,
22995685419484469572,
23765728565289624876,
24528071279636728627,
25282790566840361341,
26029962661171957728,
26769663034560238151,
27501966404214635769,
28226946740172489411,
28944677272770764517,
29655230500043056872,
30358678195042626303,
31055091413092200040,
31744540498961278040,
32427095093971665260,
33102824143031948607,
33771795901601629121,
34434077942585612830,
35089737163159756702,
35738839791528159135,
36381451393612877544,
37017636879676748769,
37647460510879981281,
38270985905771181468,
38888276046713469653,
39499393286246334956,
40104399353383871606,
40703355359850032890,
41296321806251532561,
41883358588189017235,
42464525002307127063,
43039879752284055792,
43609480954761215234,
44173386145213603082,
44731652283761467051,
45284335760923852380,
45831492403314613856,
46373177479281467717,
46909445704488653040,
47440351247443766510,
47965947734969328845,
48486288257619635557,
49001425375043439201,
49511411121293004809,
50016297010080074761,
50516134039979274013,
51010972699579481273,
51500862972583686460,
51985854342857849595,
52465995799429271099,
52941335841434978388,
53411922483020628604,
53877803258190422318,
54339025225608518095,
54795634973352432914,
55247678623618908585,
55695201837382719499,
56138249819008892304,
56576867320818803381,
57011098647610615347,
57440987661134509194,
57866577784523164102,
58287912006677932461,
58705032886611153136,
59117982557745041605,
59526802732167591189,
59931534704845915277,
60332219357797456124,
60728897164219481563,
61121608192577286747,
61510392110651513880,
61895288189544998741,
62276335307649548754,
62653571954573053266,
63027036235027322733,
63396765872677049506];
// threshold of agent upgrade
uint256[10] public requirement =
[0,
73890560989306501,
200855369231876674,
545981500331442382,
1484131591025766010,
4034287934927351160,
10966331584284585813,
29809579870417282259,
81030839275753838749,
220264657948067161559];
//******************
// EVENT
//******************
event UPGRADE (address indexed agent, uint256 level);
event BUYINSURANCE(address indexed buyer, uint256 indexed start, uint256 unit, uint256 date);
//******************
// MODIFIER
//******************
modifier isHuman() {
address _addr = msg.sender;
uint256 _codeLength;
assembly {_codeLength := extcodesize(_addr)}
require(_codeLength == 0, "sorry humans only");
_;
}
/**
* @dev Constructor
* @notice Initialize the time
*/
constructor() public {
_now = now;
today = _now / 1 days;
}
/**
* @dev Ticker
* @notice It is called everytime when a player interacts with this contract
* @return true is Fomo3D is ended, false otherwise
*/
function tick() internal returns(bool) {
if (_now != now) {
_now = now;
uint256 _today; // the current day as soon as ticker is called
//check if fomo3D ends
(,,end, ended,,,,,,,,) = FoMoLong.round_(thisRoundIndex);
if (!ended) {
_today = _now / 1 days;
}
else {
_today = end / 1 days;
}
// calculate the outdated issuedInsurance
while (today < _today) {
issuedInsurance = issuedInsurance.sub(unitToExpire[today]);
today += 1;
}
}
return ended;
}
/**
* @dev Register
* @notice Register a name by a human player
*/
function register(string _nameString) external payable isHuman() {
bytes32 _name = _nameString.nameFilter();
address _agent = msg.sender;
require(msg.value >= 10000000000000000);
require(agentxName_[_name] == address(0));
if(!player[_agent].isAgent){
agents += 1;
player[_agent].isAgent = true;
player[_agent].id = agents;
player[_agent].level = 1;
agentxID_[agents] = _agent;
}
// set name active for the player
player[_agent].name = _name;
agentxName_[_name] = _agent;
if(!community.send(msg.value)){
pot = pot.add(msg.value);
}
}
/**
* @dev Upgrade
* @notice Upgrade when a player's affiliate bonus meet the promotion
*/
function upgrade() external isHuman(){
address _agent = msg.sender;
require(player[_agent].isAgent);
require(player[_agent].level < maxLevel);
if(player[_agent].accumulatedAff >= requirement[player[_agent].level]){
player[_agent].level = (1).add(player[_agent].level);
emit UPGRADE(_agent,player[_agent].level);
}
}
/**
* @dev Buy, using address for referral
*/
function buyXaddr(address _agent, uint256 _date)
isHuman()
public
payable
{
// ticker
if(tick()){
msg.sender.transfer(msg.value);
return;
}
// validate agent
if(!player[_agent].isAgent){
_agent = address(0);
}
buyCore(msg.sender, msg.value, _date, _agent);
}
function buyXid(uint256 _agentId, uint256 _date)
isHuman()
public
payable
{
// ticker
if(tick()){
msg.sender.transfer(msg.value);
return;
}
address _agent = agentxID_[_agentId];
// validate agent
if(!player[_agent].isAgent){
_agent = address(0);
}
buyCore(msg.sender, msg.value, _date, _agent);
}
function buyXname(bytes32 _agentName, uint256 _date)
isHuman()
public
payable
{
// ticker
if(tick()){
msg.sender.transfer(msg.value);
return;
}
address _agent = agentxName_[_agentName];
// validate agent
if(!player[_agent].isAgent){
_agent = address(0);
}
buyCore(msg.sender, msg.value, _date, _agent);
}
/**
* @dev Core part of buying
*/
function buyCore(address _buyer, uint256 _eth, uint256 _date, address _agent) internal {
updatePlayerUnit(_buyer);
require(_eth >= 1000000000, "pocket lint: not a valid currency");
if(_date > maxInsurePeriod){
_date = maxInsurePeriod;
}
uint256 _rate = rate[_date] + 1000000000000000000;
uint256 ethToBuyKey = _eth.mul(1000000000000000000) / _rate;
//-- ethToBuyKey is a virtual amount used to represent the eth player paid for buying keys, which is usually different from _eth
// get value of keys and insurances can be bought
uint256 _key = ethOfKey.keysRec(ethToBuyKey);
uint256 _unit = (_date == 0)? 0: _key;
uint256 newDate = today + _date - 1;
// update global data
ethOfKey = ethOfKey.add(ethToBuyKey);
keys = keys.add(_key);
unitToExpire[newDate] = unitToExpire[newDate].add(_unit);
issuedInsurance = issuedInsurance.add(_unit);
// update player data
player[_buyer].eth = player[_buyer].eth.add(_eth);
player[_buyer].keys = player[_buyer].keys.add(_key);
player[_buyer].units = player[_buyer].units.add(_unit);
unitToExpirePlayer[_buyer][newDate] = unitToExpirePlayer[_buyer][newDate].add(_unit);
distributeEx(_eth, _agent);
distributeIn(_buyer, _eth, _key);
emit BUYINSURANCE(_buyer, today, _unit, _date);
}
/**
* @dev Update player's units of insurance
*/
function updatePlayerUnit(address _player) internal {
uint256 _today = player[_player].plyrLastSeen;
uint256 expiredUnit = 0;
if(_today != 0){
while(_today < today){
expiredUnit = expiredUnit.add(unitToExpirePlayer[_player][_today]);
_today += 1;
}
player[_player].units = player[_player].units.sub(expiredUnit);
}
player[_player].plyrLastSeen = today;
}
/**
* @dev Distribute to the external
*/
function distributeEx(uint256 _eth, address _agent) internal {
uint256 ex = _eth / 4 ;
uint256 affRate;
if(player[_agent].isAgent){
affRate = player[_agent].level.add(6);
}
uint256 _aff = _eth.mul(affRate) / 100;
if (_aff > 0) {
player[_agent].aff = player[_agent].aff.add(_aff);
player[_agent].accumulatedAff = player[_agent].accumulatedAff.add(_aff);
}
ex = ex.sub(_aff);
uint256 _com = ex / 3;
uint256 _p3d = ex.sub(_com);
if(!community.send(_com)){
pot = pot.add(_com);
}
Divies.deposit.value(_p3d)();
}
/**
* @dev Distribute to the internal
*/
function distributeIn(address _buyer, uint256 _eth, uint256 _keys) internal {
uint256 _gen = _eth.mul(3) / 20;
// update eth balance (eth = eth - (com share + aff share + p3d share))
_eth = _eth.sub(_eth / 4);
// calculate pot
uint256 _pot = _eth.sub(_gen);
// distribute gen share (that's what updateMasks() does) and adjust
// balances for dust.
uint256 _dust = updateMasks(_buyer, _gen, _keys);
if (_dust > 0)
_gen = _gen.sub(_dust);
// add eth to pot
pot = pot.add(_dust).add(_pot);
}
function updateMasks(address _player, uint256 _gen, uint256 _keys)
private
returns(uint256)
{
/* MASKING NOTES
earnings masks are a tricky thing for people to wrap their minds around.
the basic thing to understand here is we're going to have a global
tracker based on profit per share for each round, that increases in
relevant proportion to the increase in share supply.
the player will have an additional mask that basically says "based
on the global mask, my shares, and how much i've already withdrawn,
how much is still owed to me?"
*/
// calculate profit per key & global mask based on this buy: (dust goes to pot)
uint256 _ppt = _gen.mul(1000000000000000000) / keys;
mask = mask.add(_ppt);
// calculate player earning from their own buy (only based on the keys
// they just bought). & update player earnings mask
uint256 _pearn = (_ppt.mul(_keys)) / 1000000000000000000;
player[_player].mask = (((mask.mul(_keys)) / 1000000000000000000).sub(_pearn)).add(player[_player].mask);
// calculate & return dust
return(_gen.sub( _ppt.mul(keys) / 1000000000000000000));
}
/**
* @dev Submit a claim from the beneficiary
*/
function claim() isHuman() public {
require(tick());
address beneficiary = msg.sender;
updatePlayerUnit(beneficiary);
uint256 amount = pot.mul(player[beneficiary].units) / issuedInsurance;
player[beneficiary].units = 0;
beneficiary.transfer(amount);
}
/**
* @dev Withdraw dividends and aff
*/
function withdraw() isHuman() public {
// setup temp var for player eth
uint256 _eth;
// get their earnings
_eth = withdrawEarnings(msg.sender);
// gib moni
if (_eth > 0)
msg.sender.transfer(_eth);
}
function withdrawEarnings(address _player)
private
returns(uint256)
{
// update gen vault
updateGenVault(_player);
// from vaults
uint256 _earnings = player[_player].gen.add(player[_player].aff);
if (_earnings > 0) {
player[_player].gen = 0;
player[_player].aff = 0;
}
return(_earnings);
}
function updateGenVault(address _player)
private
{
uint256 _earnings = calcUnMaskedEarnings(_player);
if (_earnings > 0) {
// put in gen vault
player[_player].gen = _earnings.add(player[_player].gen);
// zero out their earnings by updating mask
player[_player].mask = _earnings.add(player[_player].mask);
}
}
function calcUnMaskedEarnings(address _player)
private
view
returns(uint256)
{
return( (mask.mul(player[_player].keys) / 1000000000000000000).sub(player[_player].mask) );
}
/**
* @dev Return the price buyer will pay for next 1 individual key.
* @return Price for next key bought (in wei format)
*/
function getBuyPrice() public view returns(uint256) {
return(keys.add(1000000000000000000).ethRec(1000000000000000000));
}
/**
* @dev Get the units of insurance of player
* @return Amount of existing units of insurance
*/
function getCurrentUnit(address _player) public view returns(uint256) {
uint256 _unit = player[_player].units;
uint256 _today = player[_player].plyrLastSeen;
uint256 expiredUnit = 0;
if(_today != 0){
while(_today < today){
expiredUnit = expiredUnit.add(unitToExpirePlayer[_player][_today]);
_today += 1;
}
}
return( _unit == 0 ? 0 : _unit.sub(expiredUnit));
}
/**
* @dev Get the list of units of insurace going to expire of a player
* @return List of units of insurance going to expire from a player
*/
function getExpiringUnitListPlayer(address _player)
public
view
returns(uint256[maxInsurePeriod] expiringUnitList)
{
for(uint256 i=0; i<maxInsurePeriod; i++) {
expiringUnitList[i] = unitToExpirePlayer[_player][today+i];
}
return(expiringUnitList);
}
/**
* @dev Get the list of units of insurace going to expire
* @return List of units of insurance going to expire
*/
function getExpiringUnitList()
public
view
returns(uint256[maxInsurePeriod] expiringUnitList)
{
for(uint256 i=0; i<maxInsurePeriod; i++){
expiringUnitList[i] = unitToExpire[today+i];
}
return(expiringUnitList);
}
}
contract FoMo3Dlong {
//==============================================================================
// _| _ _|_ _ _ _ _|_ _ .
// (_|(_| | (_| _\(/_ | |_||_) . (data used to store game info that changes)
//=============================|================================================
uint256 public rID_; // round id number / total rounds that have happened
//****************
// ROUND DATA
//****************
mapping (uint256 => F3Ddatasets.Round) public round_;
}
interface DiviesInterface {
function deposit() external payable;
}
library F3DKeysCalcLong {
using SafeMath for *;
/**
* @dev calculates number of keys received given X eth
* @param _curEth current amount of eth in contract
* @param _newEth eth being spent
* @return amount of ticket purchased
*/
function keysRec(uint256 _curEth, uint256 _newEth)
internal
pure
returns (uint256)
{
return(keys((_curEth).add(_newEth)).sub(keys(_curEth)));
}
/**
* @dev calculates amount of eth received if you sold X keys
* @param _curKeys current amount of keys that exist
* @param _sellKeys amount of keys you wish to sell
* @return amount of eth received
*/
function ethRec(uint256 _curKeys, uint256 _sellKeys)
internal
pure
returns (uint256)
{
return((eth(_curKeys)).sub(eth(_curKeys.sub(_sellKeys))));
}
/**
* @dev calculates how many keys would exist with given an amount of eth
* @param _eth eth "in contract"
* @return number of keys that would exist
*/
function keys(uint256 _eth)
internal
pure
returns(uint256)
{
return ((((((_eth).mul(1000000000000000000)).mul(312500000000000000000000000)).add(5624988281256103515625000000000000000000000000000000000000000000)).sqrt()).sub(74999921875000000000000000000000)) / (156250000);
}
/**
* @dev calculates how much eth would be in contract given a number of keys
* @param _keys number of keys "in contract"
* @return eth that would exists
*/
function eth(uint256 _keys)
internal
pure
returns(uint256)
{
return ((78125000).mul(_keys.sq()).add(((149999843750000).mul(_keys.mul(1000000000000000000))) / (2))) / ((1000000000000000000).sq());
}
}
library F3Ddatasets {
struct Round {
uint256 plyr; // pID of player in lead
uint256 team; // tID of team in lead
uint256 end; // time ends/ended
bool ended; // has round end function been ran
uint256 strt; // time round started
uint256 keys; // keys
uint256 eth; // total eth in
uint256 pot; // eth to pot (during round) / final amount paid to winner (after round ends)
uint256 mask; // global mask
uint256 ico; // total eth sent in during ICO phase
uint256 icoGen; // total eth for gen during ICO phase
uint256 icoAvg; // average key price for ICO phase
}
}
library NameFilter {
/**
* @dev filters name strings
* -converts uppercase to lower case.
* -makes sure it does not start/end with a space
* -makes sure it does not contain multiple spaces in a row
* -cannot be only numbers
* -cannot start with 0x
* -restricts characters to A-Z, a-z, 0-9, and space.
* @return reprocessed string in bytes32 format
*/
function nameFilter(string _input)
internal
pure
returns(bytes32)
{
bytes memory _temp = bytes(_input);
uint256 _length = _temp.length;
//sorry limited to 32 characters
require (_length <= 32 && _length > 0, "string must be between 1 and 32 characters");
// make sure it doesnt start with or end with space
require(_temp[0] != 0x20 && _temp[_length-1] != 0x20, "string cannot start or end with space");
// make sure first two characters are not 0x
if (_temp[0] == 0x30)
{
require(_temp[1] != 0x78, "string cannot start with 0x");
require(_temp[1] != 0x58, "string cannot start with 0X");
}
// create a bool to track if we have a non number character
bool _hasNonNumber;
// convert & check
for (uint256 i = 0; i < _length; i++)
{
// if its uppercase A-Z
if (_temp[i] > 0x40 && _temp[i] < 0x5b)
{
// convert to lower case a-z
_temp[i] = byte(uint(_temp[i]) + 32);
// we have a non number
if (_hasNonNumber == false)
_hasNonNumber = true;
} else {
require
(
// require character is a space
_temp[i] == 0x20 ||
// OR lowercase a-z
(_temp[i] > 0x60 && _temp[i] < 0x7b) ||
// or 0-9
(_temp[i] > 0x2f && _temp[i] < 0x3a),
"string contains invalid characters"
);
// make sure theres not 2x spaces in a row
if (_temp[i] == 0x20)
require( _temp[i+1] != 0x20, "string cannot contain consecutive spaces");
// see if we have a character other than a number
if (_hasNonNumber == false && (_temp[i] < 0x30 || _temp[i] > 0x39))
_hasNonNumber = true;
}
}
require(_hasNonNumber == true, "string cannot be only numbers");
bytes32 _ret;
assembly {
_ret := mload(add(_temp, 32))
}
return (_ret);
}
}
library SafeMath {
/**
* @dev Multiplies two numbers, throws on overflow.
*/
function mul(uint256 a, uint256 b)
internal
pure
returns (uint256 c)
{
if (a == 0) {
return 0;
}
c = a * b;
require(c / a == b, "SafeMath mul failed");
return c;
}
/**
* @dev Subtracts two numbers, throws on overflow (i.e. if subtrahend is greater than minuend).
*/
function sub(uint256 a, uint256 b)
internal
pure
returns (uint256)
{
require(b <= a, "SafeMath sub failed");
return a - b;
}
/**
* @dev Adds two numbers, throws on overflow.
*/
function add(uint256 a, uint256 b)
internal
pure
returns (uint256 c)
{
c = a + b;
require(c >= a, "SafeMath add failed");
return c;
}
/**
* @dev gives square root of given x.
*/
function sqrt(uint256 x)
internal
pure
returns (uint256 y)
{
uint256 z = ((add(x,1)) / 2);
y = x;
while (z < y)
{
y = z;
z = ((add((x / z),z)) / 2);
}
}
/**
* @dev gives square. multiplies x by x
*/
function sq(uint256 x)
internal
pure
returns (uint256)
{
return (mul(x,x));
}
/**
* @dev x to the power of y
*/
function pwr(uint256 x, uint256 y)
internal
pure
returns (uint256)
{
if (x==0)
return (0);
else if (y==0)
return (1);
else
{
uint256 z = x;
for (uint256 i=1; i < y; i++)
z = mul(z,x);
return (z);
}
}
}Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
Contract ABI
API[{"constant":true,"inputs":[],"name":"getBuyPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"mask","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ended","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"bytes32"}],"name":"agentxName_","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"unitToExpirePlayer","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"keys","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getExpiringUnitList","outputs":[{"name":"expiringUnitList","type":"uint256[100]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"issuedInsurance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_player","type":"address"}],"name":"getExpiringUnitListPlayer","outputs":[{"name":"expiringUnitList","type":"uint256[100]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"pot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"player","outputs":[{"name":"id","type":"uint256"},{"name":"name","type":"bytes32"},{"name":"gen","type":"uint256"},{"name":"aff","type":"uint256"},{"name":"isAgent","type":"bool"},{"name":"eth","type":"uint256"},{"name":"keys","type":"uint256"},{"name":"units","type":"uint256"},{"name":"plyrLastSeen","type":"uint256"},{"name":"mask","type":"uint256"},{"name":"level","type":"uint256"},{"name":"accumulatedAff","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claim","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"agents","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_player","type":"address"}],"name":"getCurrentUnit","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"requirement","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_agentId","type":"uint256"},{"name":"_date","type":"uint256"}],"name":"buyXid","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_agent","type":"address"},{"name":"_date","type":"uint256"}],"name":"buyXaddr","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[{"name":"_agentName","type":"bytes32"},{"name":"_date","type":"uint256"}],"name":"buyXname","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"unitToExpire","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_now","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"ethOfKey","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"today","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"upgrade","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"agentxID_","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"rate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"end","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_nameString","type":"string"}],"name":"register","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"name":"agent","type":"address"},{"indexed":false,"name":"level","type":"uint256"}],"name":"UPGRADE","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"buyer","type":"address"},{"indexed":true,"name":"start","type":"uint256"},{"indexed":false,"name":"unit","type":"uint256"},{"indexed":false,"name":"date","type":"uint256"}],"name":"BUYINSURANCE","type":"event"}]Contract Creation Code
6080604052610ca060405190810160405280600068ffffffffffffffffff168152602001670de0b6b3a764000068ffffffffffffffffff168152602001671b9de674df07000068ffffffffffffffffff168152602001672937ea36b763400068ffffffffffffffffff1681526020016736af1c036c4df00068ffffffffffffffffff168152602001674403d4feb903140068ffffffffffffffffff1681526020016751366d68263b870068ffffffffffffffffff168152602001675e473c9d525c5f4068ffffffffffffffffff168152602001676b36991c33cecef068ffffffffffffffffff168152602001677804d885558f75d468ffffffffffffffffff1681526020016784b24f9e0e03f21768ffffffffffffffffff16815260200167913f5252b02558a168ffffffffffffffffff168152602001679dac33b8b70e17be68ffffffffffffffffff16815260200167a9f94610ebf9a1bf68ffffffffffffffffff16815260200167b626dac986c4187368ffffffffffffffffff16815260200167c235428048f80df768ffffffffffffffffff16815260200167ce24cd0493784b4468ffffffffffffffffff16815260200167d9f5c95976d3693c68ffffffffffffffffff16815260200167e5a885b7be4ee59f68ffffffffffffffffff16815260200167f13d4f8ff5b73a5d68ffffffffffffffffff16815260200167fcb4738c6a025b0f68ffffffffffffffffff1681526020016801080e3d9324d1da2668ffffffffffffffffff1681526020016801134af8c7e2e1d56868ffffffffffffffffff16815260200168011e6aef8e0571a7c168ffffffffffffffffff1681526020016801296e6b8a7eb33d1e68ffffffffffffffffff16815260200168013455b5a5b94dc43068ffffffffffffffffff16815260200168013f21160d7b00594468ffffffffffffffffff168152602001680149d0d436c271252c68ffffffffffffffffff1681526020016801546536dfa0354b3368ffffffffffffffffff16815260200168015ede84110b1de17d68ffffffffffffffffff1681526020016801693d0120afd60fe068ffffffffffffffffff16815260200168017380f2b2bbde524768ffffffffffffffffff16815260200168017daa9cbba3f0bcf968ffffffffffffffffff168152602001680187ba4281e5da02c368ffffffffffffffffff168152602001680191b0269fc5d2dee568ffffffffffffffffff16815260200168019b8c8b05076566e868ffffffffffffffffff1681526020016801a54fb0f8a1e9aaff68ffffffffffffffffff1681526020016801aef9d91a70a4ee6868ffffffffffffffffff1681526020016801b88b4364de96a45868ffffffffffffffffff1681526020016801c2042f2e8dfe416c68ffffffffffffffffff1681526020016801cb64db2bfba4d53f68ffffffffffffffffff1681526020016801d4ad85711df543c168ffffffffffffffffff1681526020016801ddde6b72ffedda1e68ffffffffffffffffff1681526020016801e6f7ca0957f5df9e68ffffffffffffffffff1681526020016801eff9dd701aa1a79f68ffffffffffffffffff1681526020016801f8e4e149096f8ee868ffffffffffffffffff168152602001680201b9109d3d8833e168ffffffffffffffffff16815260200168020a76a5deae8c1ee168ffffffffffffffffff1681526020016802131ddae9b578f59c68ffffffffffffffffff16815260200168021baee9068bb03ad568ffffffffffffffffff1681526020016802242a08eac62981ec68ffffffffffffffffff16815260200168022c8f72baccd9e47668ffffffffffffffffff168152602001680234df5e0b4e5a6efa68ffffffffffffffffff16815260200168023d1a01e2afd7211168ffffffffffffffffff1681526020016802453f94ba7950049368ffffffffffffffffff16815260200168024d504c80be35c71768ffffffffffffffffff1681526020016802554c5e99826b28f068ffffffffffffffffff16815260200168025d33ffe01bb47d0268ffffffffffffffffff1681526020016802650764a88f9e5d0a68ffffffffffffffffff16815260200168026cc6c0c0ede49eab68ffffffffffffffffff168152602001680274724772a7627e5c68ffffffffffffffffff16815260200168027c0a2b83e194de6068ffffffffffffffffff1681526020016802838e9f38c6b7614568ffffffffffffffffff16815260200168028affd454d28510f068ffffffffffffffffff1681526020016802925dfc1c1ba52cee68ffffffffffffffffff168152602001680299a9475499cca4cd68ffffffffffffffffff1681526020016802a0e1e647689cad6568ffffffffffffffffff1681526020016802a80808c20746ca6168ffffffffffffffffff1681526020016802af1bde1794fe900968ffffffffffffffffff1681526020016802b61d95220a414c0968ffffffffffffffffff1681526020016802bd0d5c436efbaf1d68ffffffffffffffffff1681526020016802c3eb61670d957cb968ffffffffffffffffff1681526020016802cab7d202a2eb313c68ffffffffffffffffff1681526020016802d172db178b3d7afb68ffffffffffffffffff1681526020016802d81ca933ec1e4e3b68ffffffffffffffffff1681526020016802deb56873db63485468ffffffffffffffffff1681526020016802e53d44828325027c68ffffffffffffffffff1681526020016802ebb4689b42d2e12e68ffffffffffffffffff1681526020016802f21aff8acd62d9cf68ffffffffffffffffff1681526020016802f87133b044a4951268ffffffffffffffffff1681526020016802feb72efe51bf41a968ffffffffffffffffff168152602001680304ed1afc3ae1580b68ffffffffffffffffff16815260200168030b1320c6f6297d9068ffffffffffffffffff16815260200168031129691239cfa2b568ffffffffffffffffff168152602001680317301c298995663368ffffffffffffffffff16815260200168031d2761f14184b48a68ffffffffffffffffff1681526020016803230f61e79e0389c668ffffffffffffffffff168152602001680328e84325c143a9ad68ffffffffffffffffff16815260200168032eb22c60b61510f068ffffffffffffffffff1681526020016803346d43ea7021d0c568ffffffffffffffffff16815260200168033a19afb2c999f51568ffffffffffffffffff16815260200168033fb795487e56048d68ffffffffffffffffff1681526020016803454719da247698fc68ffffffffffffffffff16815260200168034ac8623722877ddb68ffffffffffffffffff1681526020016803503b92d0a32cb25b68ffffffffffffffffff168152602001680355a0cfba865f9c1868ffffffffffffffffff16815260200168035af83cac5042a75568ffffffffffffffffff16815260200168036041fd02159181d268ffffffffffffffffff1681526020016803657e33bd65b40d5268ffffffffffffffffff16815260200168036aad0386327a176d68ffffffffffffffffff16815260200168036fce8eabb585d4a268ffffffffffffffffff16815250600f90606562000a4792919062000b8f565b5061014060405190810160405280600068ffffffffffffffffff1681526020016701068312e0059e8568ffffffffffffffffff1681526020016702c994e4e64bc24268ffffffffffffffffff168152602001670793b7482530c0ce68ffffffffffffffffff168152602001671498b1d19b06ae7a68ffffffffffffffffff1681526020016737fcab8092fd2d7868ffffffffffffffffff1681526020016798303c794a6def5568ffffffffffffffffff16815260200168019db0e6f447db64d368ffffffffffffffffff168152602001680464875f006314189d68ffffffffffffffffff168152602001680bf0c943643f76e5d768ffffffffffffffffff16815250607490600a62000b5b92919062000be1565b5034801562000b6957600080fd5b50426009819055506201518060095481151562000b8257fe5b0460088190555062000c5b565b826065810192821562000bce579160200282015b8281111562000bcd578251829068ffffffffffffffffff1690559160200191906001019062000ba3565b5b50905062000bdd919062000c33565b5090565b82600a810192821562000c20579160200282015b8281111562000c1f578251829068ffffffffffffffffff1690559160200191906001019062000bf5565b5b50905062000c2f919062000c33565b5090565b62000c5891905b8082111562000c5457600081600090555060010162000c3a565b5090565b90565b613fa98062000c6b6000396000f30060806040526004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063018a25e81461016f578063116134ee1461019a57806312fa6feb146101c557806317604f71146101f4578063274806e014610265578063307540f6146102c65780633ccfd60b146102f15780633ef7c68714610308578063402e912f1461035b578063489b3fee146103865780634ba2363a146104055780634c54e1b5146104305780634e71d92d146104e057806358516661146104f7578063729fc61314610522578063757b0884146105795780638f38f309146105ba57806398a0871d146105e4578063a65b37a114610624578063aaaadb5814610652578063b3bb8cd414610693578063b510e42c146106be578063b74e452b146106e9578063d55ec69714610714578063d93be4331461072b578063e7ee6ad614610798578063efbe1c1c146107d9578063f2c298be14610804575b600080fd5b34801561017b57600080fd5b50610184610832565b6040518082815260200191505060405180910390f35b3480156101a657600080fd5b506101af610870565b6040518082815260200191505060405180910390f35b3480156101d157600080fd5b506101da610876565b604051808215151515815260200191505060405180910390f35b34801561020057600080fd5b506102236004803603810190808035600019169060200190929190505050610889565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561027157600080fd5b506102b0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108bc565b6040518082815260200191505060405180910390f35b3480156102d257600080fd5b506102db6108e1565b6040518082815260200191505060405180910390f35b3480156102fd57600080fd5b506103066108e7565b005b34801561031457600080fd5b5061031d6109cc565b6040518082606460200280838360005b8381101561034857808201518184015260208101905061032d565b5050505090500191505060405180910390f35b34801561036757600080fd5b50610370610a26565b6040518082815260200191505060405180910390f35b34801561039257600080fd5b506103c7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a2c565b6040518082606460200280838360005b838110156103f25780820151818401526020810190506103d7565b5050505090500191505060405180910390f35b34801561041157600080fd5b5061041a610ac5565b6040518082815260200191505060405180910390f35b34801561043c57600080fd5b50610471600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610acb565b604051808d81526020018c600019166000191681526020018b81526020018a8152602001891515151581526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019c5050505050505050505050505060405180910390f35b3480156104ec57600080fd5b506104f5610b38565b005b34801561050357600080fd5b5061050c610cd7565b6040518082815260200191505060405180910390f35b34801561052e57600080fd5b50610563600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cdd565b6040518082815260200191505060405180910390f35b34801561058557600080fd5b506105a460048036038101908080359060200190929190505050610e24565b6040518082815260200191505060405180910390f35b6105e26004803603810190808035906020019092919080359060200190929190505050610e3e565b005b610622600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fc0565b005b610650600480360381019080803560001916906020019092919080359060200190929190505050611109565b005b34801561065e57600080fd5b5061067d60048036038101908080359060200190929190505050611293565b6040518082815260200191505060405180910390f35b34801561069f57600080fd5b506106a86112ab565b6040518082815260200191505060405180910390f35b3480156106ca57600080fd5b506106d36112b1565b6040518082815260200191505060405180910390f35b3480156106f557600080fd5b506106fe6112b7565b6040518082815260200191505060405180910390f35b34801561072057600080fd5b506107296112bd565b005b34801561073757600080fd5b50610756600480360381019080803590602001909291905050506115bf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107a457600080fd5b506107c3600480360381019080803590602001909291905050506115f2565b6040518082815260200191505060405180910390f35b3480156107e557600080fd5b506107ee61160c565b6040518082815260200191505060405180910390f35b610830600480360381019080803590602001908201803590602001919091929391929390505050611612565b005b600061086b670de0b6b3a764000061085d670de0b6b3a7640000600654611a2390919063ffffffff16565b611aab90919063ffffffff16565b905090565b600a5481565b600160009054906101000a900460ff1681565b600e6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002602052816000526040600020602052806000526040600020600091509150505481565b60065481565b6000806000339150813b905060008114151561096b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f736f7272792068756d616e73206f6e6c7900000000000000000000000000000081525060200191505060405180910390fd5b61097433611aea565b925060008311156109c7573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156109c5573d6000803e3d6000fd5b505b505050565b6109d4613f59565b60008090505b6064811015610a1f576003600082600854018152602001908152602001600020548282606481101515610a0957fe5b60200201818152505080806001019150506109da565b8191505090565b60045481565b610a34613f59565b60008090505b6064811015610abc57600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082600854018152602001908152602001600020548282606481101515610aa657fe5b6020020181815250508080600101915050610a3a565b81915050919050565b60075481565b600c6020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040160009054906101000a900460ff169080600501549080600601549080600701549080600801549080600901549080600a01549080600b015490508c565b600080600080339150813b9050600081141515610bbd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f736f7272792068756d616e73206f6e6c7900000000000000000000000000000081525060200191505060405180910390fd5b610bc5611c32565b1515610bd057600080fd5b339350610bdc84611e81565b600454610c36600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015460075461203c90919063ffffffff16565b811515610c3f57fe5b0492506000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055508373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015610cd0573d6000803e3d6000fd5b5050505050565b600b5481565b600080600080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701549250600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154915060009050600082141515610df7575b600854821015610df657610de9600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000205482611a2390919063ffffffff16565b9050600182019150610d7c565b5b60008314610e1757610e1281846120e090919063ffffffff16565b610e1a565b60005b9350505050919050565b607481600a81101515610e3357fe5b016000915090505481565b6000806000339150813b9050600081141515610ec2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f736f7272792068756d616e73206f6e6c7900000000000000000000000000000081525060200191505060405180910390fd5b610eca611c32565b15610f1b573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610f15573d6000803e3d6000fd5b50610fb9565b600d600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff161515610fac57600092505b610fb833348686612165565b5b5050505050565b600080339150813b9050600081141515611042576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f736f7272792068756d616e73206f6e6c7900000000000000000000000000000081525060200191505060405180910390fd5b61104a611c32565b1561109b573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611095573d6000803e3d6000fd5b50611103565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff1615156110f657600093505b61110233348587612165565b5b50505050565b6000806000339150813b905060008114151561118d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f736f7272792068756d616e73206f6e6c7900000000000000000000000000000081525060200191505060405180910390fd5b611195611c32565b156111e6573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156111e0573d6000803e3d6000fd5b5061128c565b600e6000866000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff16151561127f57600092505b61128b33348686612165565b5b5050505050565b60036020528060005260406000206000915090505481565b60095481565b60055481565b60085481565b6000806000339150813b9050600081141515611341576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f736f7272792068756d616e73206f6e6c7900000000000000000000000000000081525060200191505060405180910390fd5b339250600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff16151561139f57600080fd5b600a600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a01541015156113f057600080fd5b6074600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0154600a8110151561144157fe5b0154600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01541015156115ba576114e3600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a01546001611a2390919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a01819055508273ffffffffffffffffffffffffffffffffffffffff167f082e58bd2e7f7268b36ef0ce2331f7bfd29c08979529cbe85f06375fcecd4372600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a01546040518082815260200191505060405180910390a25b505050565b600d6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f8160658110151561160157fe5b016000915090505481565b60005481565b600080600080339150813b9050600081141515611697576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f736f7272792068756d616e73206f6e6c7900000000000000000000000000000081525060200191505060405180910390fd5b6116d286868080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061262e565b9350339250662386f26fc1000034101515156116ed57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600e6000866000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561176357600080fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff16151561190b576001600b600082825401925050819055506001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160006101000a81548160ff021916908315150217905550600b54600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a018190555082600d6000600b54815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b83600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101816000191690555082600e6000866000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e853a139b87dd816f052a60ef646fd89f796454573ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501515611a1b57611a1434600754611a2390919063ffffffff16565b6007819055505b505050505050565b60008183019050828110151515611aa2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820616464206661696c65640000000000000000000000000081525060200191505060405180910390fd5b80905092915050565b6000611ae2611acb611ac684866120e090919063ffffffff16565b6135b0565b611ad4856135b0565b6120e090919063ffffffff16565b905092915050565b600080611af683613643565b611b8d600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154611a2390919063ffffffff16565b90506000811115611c29576000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055505b80915050919050565b60008042600954141515611e6b574260098190555073a62142888aba8370742be823c1782d17a0389da173ffffffffffffffffffffffffffffffffffffffff166324c33d3360026040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505061018060405180830381600087803b158015611ccc57600080fd5b505af1158015611ce0573d6000803e3d6000fd5b505050506040513d610180811015611cf757600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050909192939495969798999a509091929394959697989950909192939495965090919293949550909192939450909192935090919250909150905050600080600160008491906101000a81548160ff02191690831515021790555083919050555050600160009054906101000a900460ff161515611e055762015180600954811515611dfd57fe5b049050611e19565b62015180600054811515611e1557fe5b0490505b5b806008541015611e6a57611e4e600360006008548152602001908152602001600020546004546120e090919063ffffffff16565b6004819055506001600860008282540192505081905550611e1a565b5b600160009054906101000a900460ff1691505090565b600080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154915060009050600082141515611fee575b600854821015611f5257611f45600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000205482611a2390919063ffffffff16565b9050600182019150611ed8565b611fa781600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701546120e090919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055505b600854600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080181905550505050565b60008083141561204f57600090506120da565b818302905081838281151561206057fe5b041415156120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d617468206d756c206661696c65640000000000000000000000000081525060200191505060405180910390fd5b8090505b92915050565b600082821115151561215a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820737562206661696c65640000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b600080600080600061217689611e81565b633b9aca008810151515612218576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6381526020017f790000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b606487111561222657606496505b670de0b6b3a7640000600f8860658110151561223e57fe5b01540194508461225f670de0b6b3a76400008a61203c90919063ffffffff16565b81151561226857fe5b0493506122808460055461379490919063ffffffff16565b9250600087146122905782612293565b60005b9150600187600854010390506122b484600554611a2390919063ffffffff16565b6005819055506122cf83600654611a2390919063ffffffff16565b6006819055506122fb826003600084815260200190815260200160002054611a2390919063ffffffff16565b600360008381526020019081526020016000208190555061232782600454611a2390919063ffffffff16565b60048190555061238288600c60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154611a2390919063ffffffff16565b600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018190555061241d83600c60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154611a2390919063ffffffff16565b600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055506124b882600c60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154611a2390919063ffffffff16565b600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018190555061256182600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054611a2390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055506125bf88876137d3565b6125ca898985613b37565b6008548973ffffffffffffffffffffffffffffffffffffffff167f4b9622a7ffcb20551847f4dd71b5b98c4267e10d7d338a6c7fb7b26d45d854e0848a604051808381526020018281526020019250505060405180910390a3505050505050505050565b6000606060008060008086945084519350602084111580156126505750600084115b15156126ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f737472696e67206d757374206265206265747765656e203120616e642033322081526020017f636861726163746572730000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60207f01000000000000000000000000000000000000000000000000000000000000000285600081518110151561271d57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614158015612838575060207f01000000000000000000000000000000000000000000000000000000000000000285600186038151811015156127c857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15156128d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f737472696e672063616e6e6f74207374617274206f7220656e6420776974682081526020017f737061636500000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60307f01000000000000000000000000000000000000000000000000000000000000000285600081518110151561290557fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415612ba55760787f0100000000000000000000000000000000000000000000000000000000000000028560018151811015156129ab57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151515612a8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f737472696e672063616e6e6f742073746172742077697468203078000000000081525060200191505060405180910390fd5b60587f010000000000000000000000000000000000000000000000000000000000000002856001815181101515612ac157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151515612ba4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f737472696e672063616e6e6f742073746172742077697468203058000000000081525060200191505060405180910390fd5b5b600091505b838210156135205760407f0100000000000000000000000000000000000000000000000000000000000000028583815181101515612be457fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916118015612cfa5750605b7f0100000000000000000000000000000000000000000000000000000000000000028583815181101515612c8b57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916105b15612df55760208583815181101515612d0f57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004017f0100000000000000000000000000000000000000000000000000000000000000028583815181101515612dae57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600015158315151415612df057600192505b613513565b60207f0100000000000000000000000000000000000000000000000000000000000000028583815181101515612e2757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612fe4575060607f0100000000000000000000000000000000000000000000000000000000000000028583815181101515612ecd57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916118015612fe35750607b7f0100000000000000000000000000000000000000000000000000000000000000028583815181101515612f7457fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916105b5b806131335750602f7f010000000000000000000000000000000000000000000000000000000000000002858381518110151561301c57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161180156131325750603a7f01000000000000000000000000000000000000000000000000000000000000000285838151811015156130c357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916105b5b15156131cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f737472696e6720636f6e7461696e7320696e76616c696420636861726163746581526020017f727300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60207f01000000000000000000000000000000000000000000000000000000000000000285838151811015156131ff57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156133b15760207f01000000000000000000000000000000000000000000000000000000000000000285600184018151811015156132a757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515156133b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697681526020017f652073706163657300000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b60001515831515148015613508575060307f01000000000000000000000000000000000000000000000000000000000000000285838151811015156133f257fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161080613507575060397f010000000000000000000000000000000000000000000000000000000000000002858381518110151561349857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916115b5b1561351257600192505b5b8180600101925050612baa565b6001151583151514151561359c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f737472696e672063616e6e6f74206265206f6e6c79206e756d6265727300000081525060200191505060405180910390fd5b602085015190508095505050505050919050565b60006135c3670de0b6b3a7640000613bf5565b61363260026135fb6135e6670de0b6b3a76400008761203c90919063ffffffff16565b65886c8f67307061203c90919063ffffffff16565b81151561360457fe5b0461362461361186613bf5565b6304a817c861203c90919063ffffffff16565b611a2390919063ffffffff16565b81151561363b57fe5b049050919050565b600061364e82613c08565b90506000811115613790576136ae600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015482611a2390919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550613749600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206009015482611a2390919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600901819055505b5050565b60006137cb6137a284613ccf565b6137bd6137b88587611a2390919063ffffffff16565b613ccf565b6120e090919063ffffffff16565b905092915050565b60008060008060006004878115156137e757fe5b049450600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff1615613898576138956006600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0154611a2390919063ffffffff16565b93505b60646138ad858961203c90919063ffffffff16565b8115156138b657fe5b04925060008311156139f95761391783600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154611a2390919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506139b283600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b0154611a2390919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01819055505b613a0c83866120e090919063ffffffff16565b9450600385811515613a1a57fe5b049150613a3082866120e090919063ffffffff16565b905073e853a139b87dd816f052a60ef646fd89f796454573ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515613a9d57613a9682600754611a2390919063ffffffff16565b6007819055505b7393b2dbdd3f242eed7d7c7180c5a4eddc4baae3e773ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b158015613b1557600080fd5b505af1158015613b29573d6000803e3d6000fd5b505050505050505050505050565b60008060006014613b5260038761203c90919063ffffffff16565b811515613b5b57fe5b049250613b7d600486811515613b6d57fe5b04866120e090919063ffffffff16565b9450613b9283866120e090919063ffffffff16565b9150613b9f868486613d75565b90506000811115613bc057613bbd81846120e090919063ffffffff16565b92505b613be782613bd983600754611a2390919063ffffffff16565b611a2390919063ffffffff16565b600781905550505050505050565b6000613c01828361203c565b9050919050565b6000613cc8600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090154670de0b6b3a7640000613cb0600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154600a5461203c90919063ffffffff16565b811515613cb957fe5b046120e090919063ffffffff16565b9050919050565b60006309502f90613d646d03b2a1d15167e7c5699bfde00000613d56613d517a0dac7055469777a6122ee4310dd6c14410500f2904840000000000613d436b01027e72f1f1281308800000613d35670de0b6b3a76400008b61203c90919063ffffffff16565b61203c90919063ffffffff16565b611a2390919063ffffffff16565b613f00565b6120e090919063ffffffff16565b811515613d6d57fe5b049050919050565b6000806000600654613d98670de0b6b3a76400008761203c90919063ffffffff16565b811515613da157fe5b049150613db982600a54611a2390919063ffffffff16565b600a81905550670de0b6b3a7640000613ddb858461203c90919063ffffffff16565b811515613de457fe5b049050613e75600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090154613e6783670de0b6b3a7640000613e4f89600a5461203c90919063ffffffff16565b811515613e5857fe5b046120e090919063ffffffff16565b611a2390919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090181905550613ef5670de0b6b3a7640000613edc6006548561203c90919063ffffffff16565b811515613ee557fe5b04866120e090919063ffffffff16565b925050509392505050565b6000806002613f10846001611a23565b811515613f1957fe5b0490508291505b81811015613f53578091506002613f428285811515613f3b57fe5b0483611a23565b811515613f4b57fe5b049050613f20565b50919050565b610c80604051908101604052806064906020820280388339808201915050905050905600a165627a7a72305820e9c4be2df65f0917683a00ef0f245ef0fb4370a9508e0237f6cd91529cf3a0a00029
Deployed Bytecode
0x60806040526004361061016a576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063018a25e81461016f578063116134ee1461019a57806312fa6feb146101c557806317604f71146101f4578063274806e014610265578063307540f6146102c65780633ccfd60b146102f15780633ef7c68714610308578063402e912f1461035b578063489b3fee146103865780634ba2363a146104055780634c54e1b5146104305780634e71d92d146104e057806358516661146104f7578063729fc61314610522578063757b0884146105795780638f38f309146105ba57806398a0871d146105e4578063a65b37a114610624578063aaaadb5814610652578063b3bb8cd414610693578063b510e42c146106be578063b74e452b146106e9578063d55ec69714610714578063d93be4331461072b578063e7ee6ad614610798578063efbe1c1c146107d9578063f2c298be14610804575b600080fd5b34801561017b57600080fd5b50610184610832565b6040518082815260200191505060405180910390f35b3480156101a657600080fd5b506101af610870565b6040518082815260200191505060405180910390f35b3480156101d157600080fd5b506101da610876565b604051808215151515815260200191505060405180910390f35b34801561020057600080fd5b506102236004803603810190808035600019169060200190929190505050610889565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561027157600080fd5b506102b0600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506108bc565b6040518082815260200191505060405180910390f35b3480156102d257600080fd5b506102db6108e1565b6040518082815260200191505060405180910390f35b3480156102fd57600080fd5b506103066108e7565b005b34801561031457600080fd5b5061031d6109cc565b6040518082606460200280838360005b8381101561034857808201518184015260208101905061032d565b5050505090500191505060405180910390f35b34801561036757600080fd5b50610370610a26565b6040518082815260200191505060405180910390f35b34801561039257600080fd5b506103c7600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610a2c565b6040518082606460200280838360005b838110156103f25780820151818401526020810190506103d7565b5050505090500191505060405180910390f35b34801561041157600080fd5b5061041a610ac5565b6040518082815260200191505060405180910390f35b34801561043c57600080fd5b50610471600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610acb565b604051808d81526020018c600019166000191681526020018b81526020018a8152602001891515151581526020018881526020018781526020018681526020018581526020018481526020018381526020018281526020019c5050505050505050505050505060405180910390f35b3480156104ec57600080fd5b506104f5610b38565b005b34801561050357600080fd5b5061050c610cd7565b6040518082815260200191505060405180910390f35b34801561052e57600080fd5b50610563600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610cdd565b6040518082815260200191505060405180910390f35b34801561058557600080fd5b506105a460048036038101908080359060200190929190505050610e24565b6040518082815260200191505060405180910390f35b6105e26004803603810190808035906020019092919080359060200190929190505050610e3e565b005b610622600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610fc0565b005b610650600480360381019080803560001916906020019092919080359060200190929190505050611109565b005b34801561065e57600080fd5b5061067d60048036038101908080359060200190929190505050611293565b6040518082815260200191505060405180910390f35b34801561069f57600080fd5b506106a86112ab565b6040518082815260200191505060405180910390f35b3480156106ca57600080fd5b506106d36112b1565b6040518082815260200191505060405180910390f35b3480156106f557600080fd5b506106fe6112b7565b6040518082815260200191505060405180910390f35b34801561072057600080fd5b506107296112bd565b005b34801561073757600080fd5b50610756600480360381019080803590602001909291905050506115bf565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107a457600080fd5b506107c3600480360381019080803590602001909291905050506115f2565b6040518082815260200191505060405180910390f35b3480156107e557600080fd5b506107ee61160c565b6040518082815260200191505060405180910390f35b610830600480360381019080803590602001908201803590602001919091929391929390505050611612565b005b600061086b670de0b6b3a764000061085d670de0b6b3a7640000600654611a2390919063ffffffff16565b611aab90919063ffffffff16565b905090565b600a5481565b600160009054906101000a900460ff1681565b600e6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6002602052816000526040600020602052806000526040600020600091509150505481565b60065481565b6000806000339150813b905060008114151561096b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f736f7272792068756d616e73206f6e6c7900000000000000000000000000000081525060200191505060405180910390fd5b61097433611aea565b925060008311156109c7573373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f193505050501580156109c5573d6000803e3d6000fd5b505b505050565b6109d4613f59565b60008090505b6064811015610a1f576003600082600854018152602001908152602001600020548282606481101515610a0957fe5b60200201818152505080806001019150506109da565b8191505090565b60045481565b610a34613f59565b60008090505b6064811015610abc57600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082600854018152602001908152602001600020548282606481101515610aa657fe5b6020020181815250508080600101915050610a3a565b81915050919050565b60075481565b600c6020528060005260406000206000915090508060000154908060010154908060020154908060030154908060040160009054906101000a900460ff169080600501549080600601549080600701549080600801549080600901549080600a01549080600b015490508c565b600080600080339150813b9050600081141515610bbd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f736f7272792068756d616e73206f6e6c7900000000000000000000000000000081525060200191505060405180910390fd5b610bc5611c32565b1515610bd057600080fd5b339350610bdc84611e81565b600454610c36600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007015460075461203c90919063ffffffff16565b811515610c3f57fe5b0492506000600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055508373ffffffffffffffffffffffffffffffffffffffff166108fc849081150290604051600060405180830381858888f19350505050158015610cd0573d6000803e3d6000fd5b5050505050565b600b5481565b600080600080600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701549250600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154915060009050600082141515610df7575b600854821015610df657610de9600260008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000205482611a2390919063ffffffff16565b9050600182019150610d7c565b5b60008314610e1757610e1281846120e090919063ffffffff16565b610e1a565b60005b9350505050919050565b607481600a81101515610e3357fe5b016000915090505481565b6000806000339150813b9050600081141515610ec2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f736f7272792068756d616e73206f6e6c7900000000000000000000000000000081525060200191505060405180910390fd5b610eca611c32565b15610f1b573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015610f15573d6000803e3d6000fd5b50610fb9565b600d600086815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff161515610fac57600092505b610fb833348686612165565b5b5050505050565b600080339150813b9050600081141515611042576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f736f7272792068756d616e73206f6e6c7900000000000000000000000000000081525060200191505060405180910390fd5b61104a611c32565b1561109b573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f19350505050158015611095573d6000803e3d6000fd5b50611103565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff1615156110f657600093505b61110233348587612165565b5b50505050565b6000806000339150813b905060008114151561118d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f736f7272792068756d616e73206f6e6c7900000000000000000000000000000081525060200191505060405180910390fd5b611195611c32565b156111e6573373ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501580156111e0573d6000803e3d6000fd5b5061128c565b600e6000866000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff16151561127f57600092505b61128b33348686612165565b5b5050505050565b60036020528060005260406000206000915090505481565b60095481565b60055481565b60085481565b6000806000339150813b9050600081141515611341576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f736f7272792068756d616e73206f6e6c7900000000000000000000000000000081525060200191505060405180910390fd5b339250600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff16151561139f57600080fd5b600a600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a01541015156113f057600080fd5b6074600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0154600a8110151561144157fe5b0154600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01541015156115ba576114e3600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a01546001611a2390919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a01819055508273ffffffffffffffffffffffffffffffffffffffff167f082e58bd2e7f7268b36ef0ce2331f7bfd29c08979529cbe85f06375fcecd4372600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a01546040518082815260200191505060405180910390a25b505050565b600d6020528060005260406000206000915054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600f8160658110151561160157fe5b016000915090505481565b60005481565b600080600080339150813b9050600081141515611697576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260118152602001807f736f7272792068756d616e73206f6e6c7900000000000000000000000000000081525060200191505060405180910390fd5b6116d286868080601f01602080910402602001604051908101604052809392919081815260200183838082843782019150505050505061262e565b9350339250662386f26fc1000034101515156116ed57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff16600e6000866000191660001916815260200190815260200160002060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614151561176357600080fd5b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff16151561190b576001600b600082825401925050819055506001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160006101000a81548160ff021916908315150217905550600b54600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600001819055506001600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a018190555082600d6000600b54815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b83600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600101816000191690555082600e6000866000191660001916815260200190815260200160002060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073e853a139b87dd816f052a60ef646fd89f796454573ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f193505050501515611a1b57611a1434600754611a2390919063ffffffff16565b6007819055505b505050505050565b60008183019050828110151515611aa2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820616464206661696c65640000000000000000000000000081525060200191505060405180910390fd5b80905092915050565b6000611ae2611acb611ac684866120e090919063ffffffff16565b6135b0565b611ad4856135b0565b6120e090919063ffffffff16565b905092915050565b600080611af683613643565b611b8d600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020154611a2390919063ffffffff16565b90506000811115611c29576000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600201819055506000600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055505b80915050919050565b60008042600954141515611e6b574260098190555073a62142888aba8370742be823c1782d17a0389da173ffffffffffffffffffffffffffffffffffffffff166324c33d3360026040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004018082815260200191505061018060405180830381600087803b158015611ccc57600080fd5b505af1158015611ce0573d6000803e3d6000fd5b505050506040513d610180811015611cf757600080fd5b81019080805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190805190602001909291908051906020019092919080519060200190929190505050909192939495969798999a509091929394959697989950909192939495965090919293949550909192939450909192935090919250909150905050600080600160008491906101000a81548160ff02191690831515021790555083919050555050600160009054906101000a900460ff161515611e055762015180600954811515611dfd57fe5b049050611e19565b62015180600054811515611e1557fe5b0490505b5b806008541015611e6a57611e4e600360006008548152602001908152602001600020546004546120e090919063ffffffff16565b6004819055506001600860008282540192505081905550611e1a565b5b600160009054906101000a900460ff1691505090565b600080600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080154915060009050600082141515611fee575b600854821015611f5257611f45600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008481526020019081526020016000205482611a2390919063ffffffff16565b9050600182019150611ed8565b611fa781600c60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701546120e090919063ffffffff16565b600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600701819055505b600854600c60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060080181905550505050565b60008083141561204f57600090506120da565b818302905081838281151561206057fe5b041415156120d6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d617468206d756c206661696c65640000000000000000000000000081525060200191505060405180910390fd5b8090505b92915050565b600082821115151561215a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260138152602001807f536166654d61746820737562206661696c65640000000000000000000000000081525060200191505060405180910390fd5b818303905092915050565b600080600080600061217689611e81565b633b9aca008810151515612218576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001807f706f636b6574206c696e743a206e6f7420612076616c69642063757272656e6381526020017f790000000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b606487111561222657606496505b670de0b6b3a7640000600f8860658110151561223e57fe5b01540194508461225f670de0b6b3a76400008a61203c90919063ffffffff16565b81151561226857fe5b0493506122808460055461379490919063ffffffff16565b9250600087146122905782612293565b60005b9150600187600854010390506122b484600554611a2390919063ffffffff16565b6005819055506122cf83600654611a2390919063ffffffff16565b6006819055506122fb826003600084815260200190815260200160002054611a2390919063ffffffff16565b600360008381526020019081526020016000208190555061232782600454611a2390919063ffffffff16565b60048190555061238288600c60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060050154611a2390919063ffffffff16565b600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206005018190555061241d83600c60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154611a2390919063ffffffff16565b600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600601819055506124b882600c60008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060070154611a2390919063ffffffff16565b600c60008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206007018190555061256182600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600084815260200190815260200160002054611a2390919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000838152602001908152602001600020819055506125bf88876137d3565b6125ca898985613b37565b6008548973ffffffffffffffffffffffffffffffffffffffff167f4b9622a7ffcb20551847f4dd71b5b98c4267e10d7d338a6c7fb7b26d45d854e0848a604051808381526020018281526020019250505060405180910390a3505050505050505050565b6000606060008060008086945084519350602084111580156126505750600084115b15156126ea576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602a8152602001807f737472696e67206d757374206265206265747765656e203120616e642033322081526020017f636861726163746572730000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60207f01000000000000000000000000000000000000000000000000000000000000000285600081518110151561271d57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614158015612838575060207f01000000000000000000000000000000000000000000000000000000000000000285600186038151811015156127c857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614155b15156128d2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260258152602001807f737472696e672063616e6e6f74207374617274206f7220656e6420776974682081526020017f737061636500000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60307f01000000000000000000000000000000000000000000000000000000000000000285600081518110151561290557fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161415612ba55760787f0100000000000000000000000000000000000000000000000000000000000000028560018151811015156129ab57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151515612a8e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f737472696e672063616e6e6f742073746172742077697468203078000000000081525060200191505060405180910390fd5b60587f010000000000000000000000000000000000000000000000000000000000000002856001815181101515612ac157fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614151515612ba4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f737472696e672063616e6e6f742073746172742077697468203058000000000081525060200191505060405180910390fd5b5b600091505b838210156135205760407f0100000000000000000000000000000000000000000000000000000000000000028583815181101515612be457fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916118015612cfa5750605b7f0100000000000000000000000000000000000000000000000000000000000000028583815181101515612c8b57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916105b15612df55760208583815181101515612d0f57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027f01000000000000000000000000000000000000000000000000000000000000009004017f0100000000000000000000000000000000000000000000000000000000000000028583815181101515612dae57fe5b9060200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916908160001a905350600015158315151415612df057600192505b613513565b60207f0100000000000000000000000000000000000000000000000000000000000000028583815181101515612e2757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161480612fe4575060607f0100000000000000000000000000000000000000000000000000000000000000028583815181101515612ecd57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916118015612fe35750607b7f0100000000000000000000000000000000000000000000000000000000000000028583815181101515612f7457fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916105b5b806131335750602f7f010000000000000000000000000000000000000000000000000000000000000002858381518110151561301c57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161180156131325750603a7f01000000000000000000000000000000000000000000000000000000000000000285838151811015156130c357fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916105b5b15156131cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001807f737472696e6720636f6e7461696e7320696e76616c696420636861726163746581526020017f727300000000000000000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b60207f01000000000000000000000000000000000000000000000000000000000000000285838151811015156131ff57fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191614156133b15760207f01000000000000000000000000000000000000000000000000000000000000000285600184018151811015156132a757fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916141515156133b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260288152602001807f737472696e672063616e6e6f7420636f6e7461696e20636f6e7365637574697681526020017f652073706163657300000000000000000000000000000000000000000000000081525060400191505060405180910390fd5b5b60001515831515148015613508575060307f01000000000000000000000000000000000000000000000000000000000000000285838151811015156133f257fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19161080613507575060397f010000000000000000000000000000000000000000000000000000000000000002858381518110151561349857fe5b9060200101517f010000000000000000000000000000000000000000000000000000000000000090047f0100000000000000000000000000000000000000000000000000000000000000027effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916115b5b1561351257600192505b5b8180600101925050612baa565b6001151583151514151561359c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601d8152602001807f737472696e672063616e6e6f74206265206f6e6c79206e756d6265727300000081525060200191505060405180910390fd5b602085015190508095505050505050919050565b60006135c3670de0b6b3a7640000613bf5565b61363260026135fb6135e6670de0b6b3a76400008761203c90919063ffffffff16565b65886c8f67307061203c90919063ffffffff16565b81151561360457fe5b0461362461361186613bf5565b6304a817c861203c90919063ffffffff16565b611a2390919063ffffffff16565b81151561363b57fe5b049050919050565b600061364e82613c08565b90506000811115613790576136ae600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206002015482611a2390919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060020181905550613749600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206009015482611a2390919063ffffffff16565b600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600901819055505b5050565b60006137cb6137a284613ccf565b6137bd6137b88587611a2390919063ffffffff16565b613ccf565b6120e090919063ffffffff16565b905092915050565b60008060008060006004878115156137e757fe5b049450600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060040160009054906101000a900460ff1615613898576138956006600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600a0154611a2390919063ffffffff16565b93505b60646138ad858961203c90919063ffffffff16565b8115156138b657fe5b04925060008311156139f95761391783600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060030154611a2390919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600301819055506139b283600c60008973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b0154611a2390919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600b01819055505b613a0c83866120e090919063ffffffff16565b9450600385811515613a1a57fe5b049150613a3082866120e090919063ffffffff16565b905073e853a139b87dd816f052a60ef646fd89f796454573ffffffffffffffffffffffffffffffffffffffff166108fc839081150290604051600060405180830381858888f193505050501515613a9d57613a9682600754611a2390919063ffffffff16565b6007819055505b7393b2dbdd3f242eed7d7c7180c5a4eddc4baae3e773ffffffffffffffffffffffffffffffffffffffff1663d0e30db0826040518263ffffffff167c01000000000000000000000000000000000000000000000000000000000281526004016000604051808303818588803b158015613b1557600080fd5b505af1158015613b29573d6000803e3d6000fd5b505050505050505050505050565b60008060006014613b5260038761203c90919063ffffffff16565b811515613b5b57fe5b049250613b7d600486811515613b6d57fe5b04866120e090919063ffffffff16565b9450613b9283866120e090919063ffffffff16565b9150613b9f868486613d75565b90506000811115613bc057613bbd81846120e090919063ffffffff16565b92505b613be782613bd983600754611a2390919063ffffffff16565b611a2390919063ffffffff16565b600781905550505050505050565b6000613c01828361203c565b9050919050565b6000613cc8600c60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090154670de0b6b3a7640000613cb0600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060060154600a5461203c90919063ffffffff16565b811515613cb957fe5b046120e090919063ffffffff16565b9050919050565b60006309502f90613d646d03b2a1d15167e7c5699bfde00000613d56613d517a0dac7055469777a6122ee4310dd6c14410500f2904840000000000613d436b01027e72f1f1281308800000613d35670de0b6b3a76400008b61203c90919063ffffffff16565b61203c90919063ffffffff16565b611a2390919063ffffffff16565b613f00565b6120e090919063ffffffff16565b811515613d6d57fe5b049050919050565b6000806000600654613d98670de0b6b3a76400008761203c90919063ffffffff16565b811515613da157fe5b049150613db982600a54611a2390919063ffffffff16565b600a81905550670de0b6b3a7640000613ddb858461203c90919063ffffffff16565b811515613de457fe5b049050613e75600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090154613e6783670de0b6b3a7640000613e4f89600a5461203c90919063ffffffff16565b811515613e5857fe5b046120e090919063ffffffff16565b611a2390919063ffffffff16565b600c60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060090181905550613ef5670de0b6b3a7640000613edc6006548561203c90919063ffffffff16565b811515613ee557fe5b04866120e090919063ffffffff16565b925050509392505050565b6000806002613f10846001611a23565b811515613f1957fe5b0490508291505b81811015613f53578091506002613f428285811515613f3b57fe5b0483611a23565b811515613f4b57fe5b049050613f20565b50919050565b610c80604051908101604052806064906020820280388339808201915050905050905600a165627a7a72305820e9c4be2df65f0917683a00ef0f245ef0fb4370a9508e0237f6cd91529cf3a0a00029
Swarm Source
bzzr://e9c4be2df65f0917683a00ef0f245ef0fb4370a9508e0237f6cd91529cf3a0a0
Loading...
Loading
Loading...
Loading
Net Worth in USD
$0.47
Net Worth in ETH
0.000245
Token Allocations
ETH
100.00%
Multichain Portfolio | 33 Chains
| Chain | Token | Portfolio % | Price | Amount | Value |
|---|---|---|---|---|---|
| ETH | 100.00% | $1,940.52 | 0.00024433 | $0.47413 |
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.