ETH Price: $2,291.41 (+4.07%)

Transaction Decoder

Block:
9697896 at Mar-18-2020 08:56:57 PM +UTC
Transaction Fee:
0.0044681355 ETH $10.24
Gas Used:
2,978,757 Gas / 1.5 Gwei

Account State Difference:

  Address   Before After State Difference Code
(Spark Pool)
58.834152948270470192 Eth58.838621083770470192 Eth0.0044681355
0xa61bBbe6...00d959984
(Bullrunv3.github.io: Deployer)
0.15 Eth
Nonce: 0
0.1455318645 Eth
Nonce: 1
0.0044681355
0xFeAfb4ce...982eDb30C
0 Eth
Nonce: 0
0 Eth
Nonce: 1
From: 0 To: 8536343888520031075826940214119817784062743523024395828908456315694870335890194464247397270875567846141934761078320005761934724926982046019200244300805649809510751886001095531531970556567878809496416174705677952405809098810444780124998379180727656904845096263922753815018094613890251016874645796250386455546818239954259396372902818114835624005872039503708615979534538077300180001467433801409172062607966469722122179423515489322126208208996784242305519986668689662763105107650553114987999199233802254836498433997618707239662836646266966598821831790453123558665190904189439548091632307026948398772571173476557124336860566383906704811966134989392791914704390392218019458366919166511340058927454053979762954965247685446214598068174212088838798670795294246822856677735935374191060656287610312801562300833462316134452687195611850487524031975975628916917392874080657639427183678443003285315728205141913371410814387162145272964324049564042732246046377260248319787565244586504208950668526815225369096189254590865816915359933913051937145341946261604170795055975541845944080748543082476158850706194400585532062713003491584095420365839433356137178057914635461215663935060421296234246859065102001225190637732031869684873715774281954117503362151480350010578915183530263098475964493561643916886309748809043614881238037413619225710558503282947211101664462296686293176722217651488686844439759014982833118535212013635109559141366734112894840453685372741929009704199403725442788915572452093732118498552358500485155528670970663363785649236988394571587829606826566850101223659925080258327978455779610721546935368169442443484216084817387832513248037081611776495661616842051982822330535136570907249402620393402906163953608298366291999322834696042819026936571367336646691344054197088613267003148609518702469362638425504863111458169845963980506316255729896524496392704619450511244884095032786185680991513292671903588293178396478355659857011478182081521626753907245635406293148477273682907728956566962717565498574453968998208727575061288158834702852404672406498794409562499264450956423026943919553547795922611962066301873373184600288722762585683826883793373791867563621069147810944073327200485184392069067898215657281835599649381799548299454313058879684512681773932042068026233019808171671828737713147354378185839561583256609471873257914037349013177941541681309845474172581351970109398265930619909020980984530200314722250299704607073657718513083498827494254289494575025108175504337174915641855474073161488940183463468735320737942254273888898470843909980199852410725877161213497833527209419558651932470406736843042728413318156113352490352334102126762493529105281777492596698248014087268896013542274636044540196007500662520661151319530161018604650471755071397882761741473081780206654185660280270740680469570714368821284793602852805844159681845197434149119282499002482276145860443434495391936548529655555286379704009517066905228263801449005775353087662583966298257839835973768108743216519216446556262760182826620237829864016620666042340054209736524584409041825350199005979239824529539245898475378053104814256209037470100673090206745237796136498112031341839990556540213600965541452914208614887035665817098119534289159191326910530181555569618619204493922352101306919934230979939730289236500269821970391822749895738594981471443658308490457680111592259786044002941065607046092979274922945131796421268246251558724017576389507007489703807100343824528570694663160590734524720790667280988541498188562743034562661510489527554696745969598368457533016107740894760594882286569700759359862190810001263168786532465018330129660162499693734613296362047414863002043229170102674089105757196707384683209916327576448568240632897803562725063185760924081078531398123956393626037311309870854133200194868923937871439936893452873368834874439347263982854865015079412746166847792870876245927208608723449271504621889662957490622867773672504094743964971873550385914443506902450712128752977973780467633997479798391864269226913911570526974316653292556171458269814230832661237125448336973550774945390002986137074673631746280488399998054062103960086759414128460246190651235531337682728748249341406130105892544325982616694160167087912805292559467835076164444130740301737321153281497359876520521852679232945716288673323481485605071361840805000798736263016662919107335869479228795014524693209917371288816002246264872471020140186293152381070294599163802025695681536483668738547127609802470868872146035898235037116328587150390706466074346836746233311451999859223884824737718554836483569033614732863845673146663192799712438952848727610403331796563184645292688205545012190539536354269014951768118126324788919439976382366948094377764817431128536630873923464778105739877221021333054050951789684770975207833696397935544213962797732947001293999293391695700433930099051492925305542523196397579842457667697045022302883602655064536437583321602882649812587868309809253577172186204709989671347174671587117940649314011822954678076674654409058534471527857475462843302289592757951611347858670077485866798544083923921143081184562872149754374291971254039230661993244078659407562368831682084060641039457613316163789254528521247934846145437981117376306484709848698105842439952847976602990194926241947417908523372052862207517821621990960478596546521900947025407916574358883568966878924636397844587852141155349853610767327672009035579954410307917983893371271602464605161952896575140104716810761361692353368728111137297132962015197330755354893932396676506697064094832611249738190371282569860568701334739500695332642779472640370942929499663065019223840569500703648908358978114165734800279578791203037399530623207096636490851058018297617576445346669740354711401278887534872454623177803126889221416547334224307981129689511156017254066616123035935808132861629442932903966756645953021336143866476699181067022945248038684672163621593223640390409403187418256329948509383610761179608420783953896108565918384051631902459131917334661578698530768469674834227107061036068674978188380868215513229443161047122868285237304816235583414111299626149172835365358546343184734019181006160484730875002795766956254745806468769393684154574100953466233942605807412555165945308446392450759102515645851639946287548090218812317801212046848960007165929778460446978311894859080453140129745059975599652775549490434695281402013369648793365314234545946333184567498473783854382117320834013167539287872615916894050992926228949122653619995894478258123114891194354331330771323501788084683116620730377090173337332946207103627920974104321955907689721165476240583018358981964397191585143122377675037898365352607864355715071566365729043711255330138976493597657867180563505971574123119449139092840874175600884271352047655568324095184591133272263402996205517931323282388919415172387766853583144971548359972094216415169160729862245612033431000652370773163105539183949242824512167689388583727269260329556417007055388848673852552605805964474832053452863361364976663389174235469309005428937479719386554160226798745080924186297375789084152312884388817099752907320117073607151711914569912761277019735937871431580415141259387782753362598210297687379473099632285075011763184671718091072212298219535461126454320743352321818288487487593484389939572118024127866022910754510295711481648208610084814073499841687101612137454195751668978001505049958075158283412184188182324889487653281260752025606736584983061563656565127087161139996234597335826507899805390931522715489255723394814072408291846135227619003857761618107000027787584069566597213001223924686372707654142200003869891215827830859204585154927364417686790773272359090424325468397210065803430002700848280884549534776741824161337538138955125357630727982063390624124678506108125974333368604750620231283336567576771199370814208243619249206660599444798269973006560694573594766919044783832520795053967061246395295106447760782004498821006205731650856797563099341028526455567665879947231925194398708588536964418121493706730654221338522975100208503928974929961206173018357701853924458006766541082751507239279360965804449620336825535550125135796709850965598156462202783769357284160095733705264726248175287211063153790579756687079228273626810860889931002304693706376324096130038173896375902224448753053898295321793512398122736397480865441575511466095070840795225527449550032966428528673578743994659803916706536665216485013966912999745677093598564689866617362718078650470194021784575842533900234318649093141792001071132939647970708023253340611610960044926244535415724628005978321753930599726376637021064524962874517464264119754855847959074279156793714646775142449396691270457000217392684838883878342763997452966895700049154642232252976469399948203323986191826130226702803496582015201364618313208596357879058987049942405541690213482653200797735965093881680690784381519143037353240674898529771882710143838644890235103813357894690120802516698010365028128375686197183898303751490157830458308756653516512667361866570448217548631860043258235850718833123824586926025564271513708629212687818894966303511932179374009981009424930874431961093252388724747295890489842010039463399578514710748893226572427168485511826418866270476454475343506904090965155834253112207279996446651519345498597718406608658821288616235812393592417003910071034080923963849353261431791994211178169318506023170985628755759922594542659518142172904099299740814940174874099234475948397695900727414074150301671965773632647390547145507740670585932002088961670647154778285114619920143093938728569246560320440927899691346777412303106474380041460168768829976539303517059759691577453575295799932072277130400817692290942226356913915264083696502136161123554039101148109321603131035861101714097905162517259512255402931424463319665431711920170585381138155494217330492819272417188262922528869942288791964297340064482261620931911603240757201494795408428851175580068103297949184978108153438883772504466592957852524409866162253771754922904697035315433266114471999848120957182873711499024283842131020541547252196852948116895990026094577648788652708809940360046773167070815036023829045155008699103342037467097243855165598456033262492851654916219688422491734212996179977161317514540444504138187907732797526505443288988749598531777496169076367248363923765347458319702822464771916954553599896847352014696276422174458417495703289636664907751114552681095451425778414626098555742959480706521038663085137279058118211865263673180770202447686268368999759896748509260373182137212850684970834320376796646293767675906983636288447318136146936487982231260773641392804501322798394273805794600531203639502800005284483456984920487083874667026800264244992489173491601583448560811764962461401363102954229334100453264973514185409227452304867732020130468576025756912331893820418615859637981153946173041836803683895094840009425408752560031482488451324106694469890398741181164718845313671023546362579319462373987524263997548063115728521356285444004677731566704925202472197402311825401427809389839465737459456553998212324372244793856442655601605727646340560387087270905617026241533592095082327902666093649086426779635631740848802719354730432842444673059131787636014144256241420944120218295621934176649724284666507661281788281148230283995013736805397599757774529592524154789562494067234059228231345628073218855817596289277152970884999304767598195320365968629841389495660231147715686540546062708767045523487950970140645617774877308131518745256123134013849319650998415271681023162243398836779323389596441878497947822458174711331099432703221599781981013211154681923800778493419483915725764121506241379309236042717976944607652663636036713587850939752218486215524894418621472352910364515653580861332503374618124944207252447363709910154971165002627426869251586434421756654175218531671556843588402600000741965271992671391735361472991012357990414663584243602231320528343357784997379844148442575021159296587363741677508879454223238386043725039443426368802337370764542614942034562547748992776223584221629712867194308091288430472679415953747895611803845652618203894723561569895786275445077641584597913553889116741368964525817918489425018488400622842709762326583615219773418457016251587341549437492456788890339166988987819506477031816515504884781223476359884773584790009401093807188375942433877725108357503436550293173934642706426691293643569539471439798682130012052412521401318989457734673162399699744662726895021032575225732244816140892637864670007767585113657884425084196440981797459600190573601008521920762564251841514934738391372814895166072939243178726409200873312010842125895273648302920874347000231581941524117153319465642830536061318532575795344972473318597964394965185620855254387615412001930969012118969300243113689641618023502536931937935006393286680163043668785845032077361741951843037646175932095168474206010085384159115091319884029876969467902829640415624971011584151465134302176268669504365546097701180190178103675449355679433762537913514149360520577449233506670114023148239959967752349085365292316077248272391070653066823007070622273475146959711635381834459577930692251776509232335415088390555856548250899772161195575284710289999888854503684864464002425541608963956978752980026254994686035061664436635443560440503814793057471799967028716686162245288019686771138461875060244646431415940006411477292040890340344131071893806213054505736219133353235902913063969094747307821210521113548968350353777404280887487642078770308813727116925666541872701374751741571569658221836972424879664824020394060871460379891323340674837863362760082896448606604475913324673434476449435010951494157210063128809839208646653826463798425794446188212013191869908933452893636436642631687624358437520701951081142815151192342051475430335434548694875598221613998644989310690769709808746643366686558447027212690676731588631598934854023840266580870826676180352702267803273485234487870219659760610276439479377200673925949869763615226942298369059811898622314931826626590860248999119230556951133994701968010385322994853706274205825566544637122609861458755488786697799955039020371935563668862375388441257818760741944483944778327163979224022050321308001654896416724181564607770828097573271342961206326652517900966611099821937815734205006808434657865100494626979086502311323914827037488894515965380429255646197275130004341065825367805497368934095614716379015182694155625450012184712140559045219842436553045420492319809928538686831604067860451688993791721548833967049423182259041183608482375002354003624902684142057902333585334417955301240479382063105706161655687348256108799410847338328240760328172904309773068319239258145175047163289045838400145858301788080828458819017673332133093537733502686308114504707977210153717647431207523407322804482802597556901193220389165818130780800299741866338381615681118003024741338820284962168131511973344468509038628939307931578896693057428182105308172971990298519833406888924099888257469540876633857549340265843047109625065688492482793384369988942919780956495984939704884688537719508181814754400354746007278995742422739441440917490715131182667284740135657269735878926452487941214625276393982477441729018079425048793753058147158844741077212545698413561809050321653213704174773370993499841633080101501948101605053989598108921825528948607567129788079305037555119433866468390984222311749256536705391280035163194720769929065998512102639187592184687235493261451542187276949854005516426943258530181133382717052012945077044577103736849083593615600301224607376969670625290074483857798872524194855336538374370278507207473312317738953189162010567899652291019302818147586793665559521003851815478631157204530413777105862467540905826120147417734482513559039718447647570984646293114868293303619867583228288429542031493931053990532102271490341125764834631140771890031251464099421781525327792692128252406307933987452361964694592164102496667609718054418845889043723017475309942761555922736540309583576637371996506843323807550634871574527649019991997712128666668628024491605305051520777417180796680572186365702354664030127978594834477207549012475154481695632594969054668912030892774472788374500920543124520888691024339417925315143212466123445508097553188876228005488867329655531449181818523799341241652705309534938508481695132750238309803793731932544215432373252382358158193804265201579908802729252778992553757906326282301581622058870445696928050311151526688672398202266017821843359152791082564235005303761313558914584745239068895929841072804347304938999077794463492101436019345340697234326055210195298777423177728049992033482927611218327574786084371936759690883112595728451348002296870696972535046426031041518276391840687182996904387606273117556643950239173421643984354598732092062272465209162507525599009429379569007288881059387795157319761157920409945489724298864587651714741382567009117631908701554535894492200818507905613388276506591771064407185279486743560875063372401202365235104094534772648698964795169250608049655595429098364969468610977187256297362261929980573548324538890685418931882521786961716585654569477547361741129186122875821059904470382821339712037013928100812255155162601822028316240852797305505028001424316003346821425505701001941075372552123100299629228645944100415100312309499836148422595604558883673358534486078649208849705992142535035770268569377377716628799464817867290610755828965638983325440955033849811530335084314411132986711456722666705636639296576707781008020779410843900194837037518106698784258591918839608062760501747997924370880906156003737640060748993840713936754534259970730237199380149908015964698415556092080971816400812274562768453036451011302354127316221354734962091999170041112844384976372350219544725894787072454043232437021100285574787922420305810545512001850037697910547491665769177944605686622799935254288164731923195563246790753292562866185378177178438863589504216256474560421277876610569433107309631923448621682301843894607718714675246093127509738013829002287651466046353808741038836991267214890652249907783268046321855959414480894943068933628111158844811531275201697477126942257322226458363974783160795513183271269216003567923798443427603970597283236806538366854432421011160211974107539660277321808903741196448641677003709044881093852063191803158985929302388926936063562086543952885915508213528217948943996852711351822030580148418431963431289254286973644679510371749643424611780856498212916219766019914108397546186317117445591409670901892403319218267342339653766315055251905561975816822949320530864698895453399916729110981143256710607502757235030294633662104722359343745730923283907303136700649680470905710274741180753215927714695172525065949473144754120359479463925245953420143657340628479493108336437995524309115640260442068423841740524773700782239787287100788737660240055817184188161130516573204434339702770845752763631536080144166046566534683945180434638584906326701854252433657336763530466062080835092908469687620918420436558475666787319112947427958419963133774000604162092930436447629546934062746831593484902242324022426921544695372427998281806146798522317973181131078329198248580807396763159052693275498809036823044958910539884207107840572179096004964445148047830611016303036566651411954454738886213490950810704489704155704153051780158676922224167897240214138360503351529787462619118381849819584366284339550050853163891984456732808384092291870623451579977869603038672988191578441823488497313459005038810880243690751006623964755447860095265139478394983369897429542474574058083874874090452848320200587570901102233798891956872438702294277980607621057313511921497324533811577814552913226472173016623536556875135255212795816913613834182329055978241047250675066903153025683057696001459901557197525784968420523828524094311779505383851508488188256680123548487739593418985429347457792440968589460100945326536508997550909862891040003547542040565913154467053475521632258693332256907158376206905641837008833155629730354716215143628588769781870877542253885828014799054217061991561228380951069253031756929835844261726612760316686000883953040059115958436596441821891398540446881036349015792956319562964998962562592574797406404607976099523808524541269903706642803917454268598517843331924169295613485349231621797414693519035417360796907015725908063491571066646722161503321189659563240538486106232617446496602580468525438568616461845166248425276325330299777587282552996711587412398173942713811042430404955569737197358739947012623069445944458707793038436892792551575852318671917322960436028012342610083765852581503381644768342685062989235256705433961870316378498760848635279434687431017114650083466598169096873130397674777078969459943259933161442418348158661912210318852166560656068333030536133969443896450186601264885029816386032152780568058583498200486575799836584370568425729162317783878366646045996356737398878615483710424021478815168414528903481552951942730775221781414396045213900430514061269134404869779437272369390529523041321503086010991984013426531247276113031646463856237136431809870332424767038301668473050384366446673280742571155836939404585266494702790955934259330386082338840035188810224942055409130123149737765013370998191452581527222098310717188594698515099573191810005278752052898704231934014220462436948654284168310159011209542712418576893991840970490751747450507103770584987708217236014925184950398056815975130448995881992741327512513791928563914790892919113536885878733646041778553431697998160346588535982465436997611583445598339034946855503533509952071677634323259169638954745933068230713263264137065040540901748949583901477734166230037718572116084551129469680422311080829990288839330878726352281228563639995223292811317251643879970161915016297794305136191351453176235910850814723367086812362574441192151047329381370603970198519249034649359619977907409030030300477367989109280352292232101800742011081933633389421599158883702789897631094346092638645044984615272747258125520053436406046353872038617547121999008059326356637472903083007845487931962371363005665611276355366919353674657518376144337846127855538232992518220470068555870487485356623631403656224136037752649130723114095832358028995572217828824244120781804035436138431585376949544321230012533405616394340786767003046761306636802409616328687219606799079848877029401027098660035256788191962938844971198519601302121229361054542102176576797732308447697553323259711134319855346830823958348521507365399987407141916832427246232475947095984632557680398729473847738310761326983524830216118428606263291245156068234971215289948884301171091257468261344637516614100394966503302554587737604092623699865596440146720198548924959073252470110509793772044172300114856327157975626027191386379525124651667671028346301486951042312592687102183441736721070162450946906304189189873879694034878237142073981839128670170729396795797789544747315147676997308227775277476963411507450489222671395844848771037872785415093546375520511426935133106262433348037442456613371472358293609312064987668395784470445679736951253447200586683080692340680797044216931935222612073454058690107572051368395501575050468042194519117802253196127270303922405473552723529913731520641372475631665784159781290833007644733356493346370968150014299216277662904538284160557679163491538021120454706559249868644364800388370006442124103162412817666214156792377934387138977269656529988102096696636962547756994549261508756085618869859395188987647523550536772960749203228540249062684121231454584889738289568155753360845002215991290166707928878285808841990715920715029507148378390235798053398652150134868151697328665315826864585085562320062768441848845938045061456700856156389539511446865886094059621595354561449145316677859263668828842658829108138954070084858285901163729029183023400877457121676800188884381764437215612919488132344147675688393295597413575210580273829451387220798277689782009800489198522532506639370035060896065285281672023722228669572161500271626606477805816449820139482749046119494448428998986510622945297005946406693401845633510412325756786574469308839712935766794187794148876120314257706581498940611726520098227074930169645403786996094948717342045116954988909285042816220995196264126927656613633775647734478455952827465832131010966476254138564136150553941683598543847552530472205396632624303675321542929661313440625623170558451566529853048294289645492422321814549766319597348539654199963331504783563123604427676445234179005801483776617785366984310851985526095695373670259553984165675731319033936859757507654892975738147159132359264738494548973701475369467659730000876086775970563187857235082599209647987599754156720554199915679717984489967634099386327414925471286071760838633094823411715513277599828475756754509836287307914405347220258530106785741811353059659899459294780614689531981867450197133357674479129529724391969770951069208229985982581605419490375251555751550640361091261128467629374612395636696239842572483527173060549987203670930965044774947662847025123048041373844965378868388022984282377053982536456397498696047289714609672545736934072023500087059323336679432997742569447062223178196404286067733417005168347960538120063020934312223785194000120128184218624290115607952678106475115926848750259281280484182159294591313808868561765901318986826529468772944882831244545257811847350602013108060305922558862447938253824308788437708362373307986217795303751110810812239633835826848283602020525441919751809176913816795229839113269404331127383977033622807969146464050373948700961062318556456438363989780802359490880061252097397693698801607488787820192326775190167511188605200875162282196344103766581648612563798443557135603285668235577787504261969367190296644455382902340482202747080604602337926576017910046969771730531510917545518600734589491578980519542703621881111049381437395789070967625663991709060842414613347566655348452890335139777063408486410489395110544341176943104234707918695867584850781009441389242384477950599823696838419061705301183110627824297006389905914411573373728640715448971548903637400391620230575859600003850488896089200507454313800774956477741832195214472295883948212290881208365513791498059485048943014320701874186282999831586633329177005476646507751731464880555789282975977648065847237181625410415457846126681796959576960883097420341792261733606857375775336403829972143835757834148878448924619231732146377695710915342650145094035398901133027759496942206901830443717777602796607089578333234580542900598725523211158148095944149898163210070107807416182085103743825886219216946843387278701907425499024090389801751450192845741957570493391428600706311768207242784399828305935020531705375093412294360091778874307958891252488560106682842802257713460824715336179751720759531362674322780045903867500128779776378762578692019480622760545991065641

Execution Trace

Global_One_ID.60806040( )
/**
 *Submitted for verification at Etherscan.io on 2020-03-19 // yyyy-mm-dd
*/


// Website: https://globaloneid.zyrosite.com
 
// ADVANTAGES OF THIS SMART CONTRACT

// Only allow registration if 1 Referral ID is 1.
// Can not stop, exist forever.
// Simple registration and upgrade. No login or password required.
// Auto-overflow 3 F1, 9 F2, ... 81 F4.
// Repeat high income to level 8.
// 10-year term before extension.
// Reach 50000 ID in 6 months.
// Every member is happy.
// Simple and manipulative interface on Etherscan.
// Open source, authenticated on Etherscan.
// High income. invite people online & offline.
// Market development by international leaders.
// And more, ...

pragma solidity ^0.5.7;


contract Ownable {

  address public owner;
  address public manager;
  address public ownerWallet;

  constructor() public {
    owner = msg.sender;
    manager = msg.sender;
    ownerWallet = 0xa61bBbe65fE0A8dD51cDe8bdD65306700d959984;
  }

  modifier onlyOwner() {
    require(msg.sender == owner, "only for owner");
    _;
  }

  modifier onlyOwnerOrManager() {
     require((msg.sender == owner)||(msg.sender == manager), "only for owner or manager");
      _;
  }

  function transferOwnership(address newOwner) public onlyOwner {
    owner = newOwner;
  }

  function setManager(address _manager) public onlyOwnerOrManager {
      manager = _manager;
  }
}

contract Global_One_ID is Ownable {

    event regLevelEvent(address indexed _user, address indexed _referrer, uint _time);
    event buyLevelEvent(address indexed _user, uint _level, uint _time);
    event prolongateLevelEvent(address indexed _user, uint _level, uint _time);
    event getMoneyForLevelEvent(address indexed _user, address indexed _referral, uint _level, uint _time);
    event lostMoneyForLevelEvent(address indexed _user, address indexed _referral, uint _level, uint _time);
    //------------------------------

    mapping (uint => uint) public LEVEL_PRICE;
    uint REFERRER_1_LEVEL_LIMIT = 3;
    uint PERIOD_LENGTH = 3650 days;


    struct UserStruct {
        bool isExist;
        uint id;
        uint referrerID;
        address[] referral;
        mapping (uint => uint) levelExpired;
    }

    mapping (address => UserStruct) public users;
    mapping (uint => address) public userList;
    uint public currUserID = 0;




    constructor() public {

        LEVEL_PRICE[1] = 0.5 ether;
        LEVEL_PRICE[2] = 1.5 ether;
        LEVEL_PRICE[3] = 4.5 ether;
        LEVEL_PRICE[4] = 13.5 ether;
        LEVEL_PRICE[5] = 40.5 ether;
        LEVEL_PRICE[6] = 121.5 ether;
        LEVEL_PRICE[7] = 364.5 ether;
        LEVEL_PRICE[8] = 1093.5 ether;

        UserStruct memory userStruct;
        currUserID++;

        userStruct = UserStruct({
            isExist : true,
            id : currUserID,
            referrerID : 0,
            referral : new address[](0)
        });
        users[ownerWallet] = userStruct;
        userList[currUserID] = ownerWallet;

        users[ownerWallet].levelExpired[1] = 777777777777;
        users[ownerWallet].levelExpired[2] = 777777777777;
        users[ownerWallet].levelExpired[3] = 777777777777;
        users[ownerWallet].levelExpired[4] = 777777777777;
        users[ownerWallet].levelExpired[5] = 777777777777;
        users[ownerWallet].levelExpired[6] = 777777777777;
        users[ownerWallet].levelExpired[7] = 777777777777;
        users[ownerWallet].levelExpired[8] = 777777777777;
    }

    function () external payable {

        uint level;

        if(msg.value == LEVEL_PRICE[1]){
            level = 1;
        }else if(msg.value == LEVEL_PRICE[2]){
            level = 2;
        }else if(msg.value == LEVEL_PRICE[3]){
            level = 3;
        }else if(msg.value == LEVEL_PRICE[4]){
            level = 4;
        }else if(msg.value == LEVEL_PRICE[5]){
            level = 5;
        }else if(msg.value == LEVEL_PRICE[6]){
            level = 6;
        }else if(msg.value == LEVEL_PRICE[7]){
            level = 7;
        }else if(msg.value == LEVEL_PRICE[8]){
            level = 8;
        }else {
            revert('Incorrect Value send');
        }

        if(users[msg.sender].isExist){
            buyLevel(level);
        } else if(level == 1) {
            uint refId = 0;
            address referrer = bytesToAddress(msg.data);

            if (users[referrer].isExist){
                refId = users[referrer].id;
            } else {
                revert('Incorrect referrer');
            }

            regUser(refId);
        } else {
            revert("Please regUser for 0.5 ETH");
        }
    }

   
   
    function regUser(uint _referrerID) public payable {
        require(!users[msg.sender].isExist, 'User exist');

        require(_referrerID > 0 && _referrerID < 2 , 'Use Only ID 1 As a General Referral ID');

        require(msg.value==LEVEL_PRICE[1], 'Incorrect Value');


        if(users[userList[_referrerID]].referral.length >= REFERRER_1_LEVEL_LIMIT)
        {
            _referrerID = users[findFreeReferrer(userList[_referrerID])].id;
        }


        UserStruct memory userStruct;
        currUserID++;

        userStruct = UserStruct({
            isExist : true,
            id : currUserID,
            referrerID : _referrerID,
            referral : new address[](0)
        });

        users[msg.sender] = userStruct;
        userList[currUserID] = msg.sender;

        users[msg.sender].levelExpired[1] = now + PERIOD_LENGTH;
        users[msg.sender].levelExpired[2] = 0;
        users[msg.sender].levelExpired[3] = 0;
        users[msg.sender].levelExpired[4] = 0;
        users[msg.sender].levelExpired[5] = 0;
        users[msg.sender].levelExpired[6] = 0;
        users[msg.sender].levelExpired[7] = 0;
        users[msg.sender].levelExpired[8] = 0;

        users[userList[_referrerID]].referral.push(msg.sender);

        payForLevel(1, msg.sender);

        emit regLevelEvent(msg.sender, userList[_referrerID], now);
    }

    function buyLevel(uint _level) public payable {
        require(users[msg.sender].isExist, 'User not exist');

        require( _level>0 && _level<=8, 'Incorrect level');

        if(_level == 1){
            require(msg.value==LEVEL_PRICE[1], 'Incorrect Value');
            users[msg.sender].levelExpired[1] += PERIOD_LENGTH;
        } else {
            require(msg.value==LEVEL_PRICE[_level], 'Incorrect Value');

            for(uint l =_level-1; l>0; l-- ){
                require(users[msg.sender].levelExpired[l] >= now, 'Buy the previous level');
            }

            if(users[msg.sender].levelExpired[_level] == 0){
                users[msg.sender].levelExpired[_level] = now + PERIOD_LENGTH;
            } else {
                users[msg.sender].levelExpired[_level] += PERIOD_LENGTH;
            }
        }
        payForLevel(_level, msg.sender);
        emit buyLevelEvent(msg.sender, _level, now);
    }

    function payForLevel(uint _level, address _user) internal {

        address referer;
        address referer1;
        address referer2;
        address referer3;
        if(_level == 1 || _level == 5){
            referer = userList[users[_user].referrerID];
        } else if(_level == 2 || _level == 6){
            referer1 = userList[users[_user].referrerID];
            referer = userList[users[referer1].referrerID];
        } else if(_level == 3 || _level == 7){
            referer1 = userList[users[_user].referrerID];
            referer2 = userList[users[referer1].referrerID];
            referer = userList[users[referer2].referrerID];
        } else if(_level == 4 || _level == 8){
            referer1 = userList[users[_user].referrerID];
            referer2 = userList[users[referer1].referrerID];
            referer3 = userList[users[referer2].referrerID];
            referer = userList[users[referer3].referrerID];
        }

        if(!users[referer].isExist){
            referer = userList[1];
        }

        if(users[referer].levelExpired[_level] >= now ){
            bool result;
            result = address(uint160(referer)).send(LEVEL_PRICE[_level]);
            emit getMoneyForLevelEvent(referer, msg.sender, _level, now);
        } else {
            emit lostMoneyForLevelEvent(referer, msg.sender, _level, now);
            payForLevel(_level,referer);
        }
    }

    function findFreeReferrer(address _user) public view returns(address) {
        if(users[_user].referral.length < REFERRER_1_LEVEL_LIMIT){
            return _user;
        }

        address[] memory referrals = new address[](363);
        referrals[0] = users[_user].referral[0]; 
        referrals[1] = users[_user].referral[1];
        referrals[2] = users[_user].referral[2];

        address freeReferrer;
        bool noFreeReferrer = true;

        for(uint i =0; i<363;i++){
            if(users[referrals[i]].referral.length == REFERRER_1_LEVEL_LIMIT){
                if(i<120){
                    referrals[(i+1)*3] = users[referrals[i]].referral[0];
                    referrals[(i+1)*3+1] = users[referrals[i]].referral[1];
                    referrals[(i+1)*3+2] = users[referrals[i]].referral[2];
                }
            }else{
                noFreeReferrer = false;
                freeReferrer = referrals[i];
                break;
            }
        }
        require(!noFreeReferrer, '');
        return freeReferrer;

    }

    function viewUserReferral(address _user) public view returns(address[] memory) {
        return users[_user].referral;
    }

    function viewUserLevelExpired(address _user, uint _level) public view returns(uint) {
        return users[_user].levelExpired[_level];
    }
    function bytesToAddress(bytes memory bys) private pure returns (address  addr ) {
        assembly {
            addr := mload(add(bys, 20))
        }
    }
}