Contract 0xde5734b4ac337a57b5821c620e83e5224be18515

 

TxHash Block Age From To Value [TxFee]
0xd385a5c43fb6239f67c7c892adc103a77196185c274110f3a297b2e32a207e6a72118495 days 10 hrs ago0x08ecd9f4bd5df8063855d4914c42604db11517ea  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.000183471009
0x286f3581dc8db5189f7dc550b45a0749fa333631029c6b108b21dcf8ebc554be71936669 days 12 hrs ago0x95096780efd48fa66483bc197677e89f37ca0cb5  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.00022016518
0xa0a93bd56354ae740d0e02ba517fa42b1a81ad13c96ca95b7b8bbae7f2eb4b2a716495115 days 8 hrs ago0xb3cac7157d772a7685824309dc1eb79497839795  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.000062352
0xf7e2791b8eef768fdf4dbae8e78a3e70e081db34d4745c8294c7aec5e406f8ec713230222 days 4 mins ago0xfcfc3a4fa3b95436438d5332b05eb3d903ba799a  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.0010800156
0x654912182ac418320a45ffb0d83b4a9e6857afc9dfcc67d22fcb959fd4ee2506712166224 days 2 hrs ago0x01d2e49c86a83079b128135d19b49723b57acd49  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.00180002604
0x5a3360d3240c290d707c23fe544b8e707d6a6487ec69cca1a82e222e2ee8b5a8711729624 days 22 hrs ago0xb3cac7157d772a7685824309dc1eb79497839795  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.000535017
0x19c7e8a08105404105f92259b0d607fd68ca66b3ffa58dd38d84ebee6626ec3b710595827 days 4 hrs ago0x3b0535c602078a22a9954209b3556549c4e5e987  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.001334762
0xbc1397b1d5d2319110a27b19a579b0a1f60199fa321ad34aec2030cc14ae644a707479032 days 20 hrs ago0xed60571a11985646425832ce2e39819a02e1c5fd  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.001169037
0xcd0def0f85e0f8e49a88b01c2f7ebb330020cf97eb86f81e76bee3efeca1545d707169333 days 9 hrs ago0x2cdbe1fa4580485e43703c97e04563981c234674  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.000364026
0x788514760eaac73b667ac799655ebbaf5c6eac42a04bdb541bdc4aa4a31a702a705664036 days 2 hrs ago0x2edfbd1bd4bcab2a1fd24efd4724d1344c82bb36  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.000389679
0x065e24ed659c69fe383f38c15736684bb8d11906872ed888ce6fcc8d716e5c85705104137 days 2 hrs ago0x233a5180a19717d047999508a34c2dfbfdb25e78  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.0002173395
0x2516d0b9b19800085602dd3b6df586bf1949a2ac8cd0d1992e009e3aeed4e877705104137 days 2 hrs ago0xc4d31b4dc713dc4ac3d3f7be63447ef1d2abe2ef  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.0002173395
0x344c1844392ae6b1818d8c24acfcfb360126627173ad9d277830e6f2aa654823703156540 days 14 hrs ago0x823bdf9fe1c7f828de3ae711ef141465d85c3d0b  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.000434679
0x6d2baed8b324dc414286157d4c968bf3cf4a0bb42fabc557aa136c344ca5b787702475041 days 19 hrs ago0xe3c48ecb69f6bc861402c672b0f8da431d5a619e  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.000968964
0xe199acd7d55132c19876b23f3f5487cd81f5bfb8d62d547bcc3ef7a1c83f5632702310642 days 2 hrs ago0x1d1e7abffe36d3ccc84866fbcec8ac050ae19d1a  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.0005455506
0x622413166d71ff3b6c7dd3187395b9cb9ac335b3561f779c35940f86193f9051702234642 days 5 hrs ago0x1c3416a34c86f9ddcd05c7828bf5693308d19e0b  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.000927252
0xf95836323412f881824a6d8a847b81b33706ae9a2bd1f9e9c1e882d9507aa847701748743 days 2 hrs ago0x992ac25e30dcf717602068cb6c3efa8ce0e575e9  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.0003477432
0x9407ac97384d279b90fff1c543bbc9d63a587b4ac3f1707c0a504fb8aaf79f1d701587543 days 9 hrs ago0xefab50ea729cd4f5fa5729e296a7a31684026e07  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.0005216148
0xbf53e390c977df2443efa91e5f92ceba096ed4b9948569b48c3456f90d7973c5701263643 days 22 hrs ago0x95096780efd48fa66483bc197677e89f37ca0cb5  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.000289786
0x62bac20fc48b7b74bfada1922be8d75ea4aa121e375ccae0262d84560a2fd86c700985544 days 11 hrs ago0xb3ddf26be70050452c8500e1269fee64438e29fc  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.00040526616
0x682647a503d5bd3e4505a4db72930f2819da7e3f8792aa5ba7dd980111e0e088700978144 days 11 hrs ago0x977193d601b364f38ab1a832dbaef69ca7833992  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.00060671
0x0637df43fac8e5edb585e726ddb778767f0fb6e909141f54e93753f7a41a2329700963644 days 12 hrs ago0xb74d5f0a81ce99ac1857133e489bc2b4954935ff  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.00121342
0x3929ae42898094d4ee3495ad751083a6b5641aef765307947882e09eb13497e3700700244 days 23 hrs ago0xc96d129ac1a0cd2351ac5632905c6ad0fbf5d8ca  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.0003117432
0xafe4fdba47220a03cd66a4751bc5969f8b39b27125ba58ce3c7bb5f9afe460d3700632645 days 2 hrs ago0x8da98560a000890a02e5ce5a96ddfd99b788f810  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.0004676148
0x5618aa40274942ba0408a9aff7b0e87038d4a6bd076f4295b2ad8882294be06f700632445 days 2 hrs ago0x8da98560a000890a02e5ce5a96ddfd99b788f810  IN   0xde5734b4ac337a57b5821c620e83e5224be185150 Ether0.000939491028
[ Download CSV Export 

Latest 25 Internal Transaction, Click here to view more Internal Transactions as a result of Contract Execution

Parent TxHash Block Age From To Value
0xa0a93bd56354ae740d0e02ba517fa42b1a81ad13c96ca95b7b8bbae7f2eb4b2a716495115 days 8 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150xb32bb54cfec824f51e77199248e35d7e3b917ace20.673308465678148548 Ether
0xf7e2791b8eef768fdf4dbae8e78a3e70e081db34d4745c8294c7aec5e406f8ec713230222 days 4 mins ago0xde5734b4ac337a57b5821c620e83e5224be185150xfcfc3a4fa3b95436438d5332b05eb3d903ba799a0.247052111968519156 Ether
0x654912182ac418320a45ffb0d83b4a9e6857afc9dfcc67d22fcb959fd4ee2506712166224 days 2 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150x01d2e49c86a83079b128135d19b49723b57acd490.035398696738432117 Ether
0x19c7e8a08105404105f92259b0d607fd68ca66b3ffa58dd38d84ebee6626ec3b710595827 days 4 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150x3b0535c602078a22a9954209b3556549c4e5e9870.000131291002882016 Ether
0xbc1397b1d5d2319110a27b19a579b0a1f60199fa321ad34aec2030cc14ae644a707479032 days 20 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150xed60571a11985646425832ce2e39819a02e1c5fd0.008423596494734529 Ether
0xcd0def0f85e0f8e49a88b01c2f7ebb330020cf97eb86f81e76bee3efeca1545d707169333 days 9 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150x2cdbe1fa4580485e43703c97e04563981c2346740.000484131671777898 Ether
0x788514760eaac73b667ac799655ebbaf5c6eac42a04bdb541bdc4aa4a31a702a705664036 days 2 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150x2edfbd1bd4bcab2a1fd24efd4724d1344c82bb360.004232374742058619 Ether
0x065e24ed659c69fe383f38c15736684bb8d11906872ed888ce6fcc8d716e5c85705104137 days 2 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150x233a5180a19717d047999508a34c2dfbfdb25e780.001039902493963497 Ether
0x2516d0b9b19800085602dd3b6df586bf1949a2ac8cd0d1992e009e3aeed4e877705104137 days 2 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150xc4d31b4dc713dc4ac3d3f7be63447ef1d2abe2ef0.001039902493963497 Ether
0x344c1844392ae6b1818d8c24acfcfb360126627173ad9d277830e6f2aa654823703156540 days 14 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150x823bdf9fe1c7f828de3ae711ef141465d85c3d0b0.009027986231155534 Ether
0x6d2baed8b324dc414286157d4c968bf3cf4a0bb42fabc557aa136c344ca5b787702475041 days 19 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150xe3c48ecb69f6bc861402c672b0f8da431d5a619e0.302211175126533234 Ether
0xe199acd7d55132c19876b23f3f5487cd81f5bfb8d62d547bcc3ef7a1c83f5632702310642 days 2 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150x1d1e7abffe36d3ccc84866fbcec8ac050ae19d1a0.041446751998914062 Ether
0x622413166d71ff3b6c7dd3187395b9cb9ac335b3561f779c35940f86193f9051702234642 days 5 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150x1c3416a34c86f9ddcd05c7828bf5693308d19e0b0.172226537403125535 Ether
0xf95836323412f881824a6d8a847b81b33706ae9a2bd1f9e9c1e882d9507aa847701748743 days 2 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150x992ac25e30dcf717602068cb6c3efa8ce0e575e90.000165309605522282 Ether
0x9407ac97384d279b90fff1c543bbc9d63a587b4ac3f1707c0a504fb8aaf79f1d701587543 days 9 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150xefab50ea729cd4f5fa5729e296a7a31684026e070.000163617961930315 Ether
0xbf53e390c977df2443efa91e5f92ceba096ed4b9948569b48c3456f90d7973c5701263643 days 22 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150x95096780efd48fa66483bc197677e89f37ca0cb50.000173299272837177 Ether
0x62bac20fc48b7b74bfada1922be8d75ea4aa121e375ccae0262d84560a2fd86c700985544 days 11 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150xb3ddf26be70050452c8500e1269fee64438e29fc0.12966637377019546 Ether
0x682647a503d5bd3e4505a4db72930f2819da7e3f8792aa5ba7dd980111e0e088700978144 days 11 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150x977193d601b364f38ab1a832dbaef69ca78339920.011902232329882844 Ether
0x0637df43fac8e5edb585e726ddb778767f0fb6e909141f54e93753f7a41a2329700963644 days 12 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150xb74d5f0a81ce99ac1857133e489bc2b4954935ff0.00222190554072835 Ether
0x3929ae42898094d4ee3495ad751083a6b5641aef765307947882e09eb13497e3700700244 days 23 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150xc96d129ac1a0cd2351ac5632905c6ad0fbf5d8ca0.386773699880228806 Ether
0xafe4fdba47220a03cd66a4751bc5969f8b39b27125ba58ce3c7bb5f9afe460d3700632645 days 2 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150x8da98560a000890a02e5ce5a96ddfd99b788f8100.043746438690609402 Ether
0x771ffeb864059ebf9db446624aaa8870cb8f4d696c001ea1316fbd020e67fb51700584745 days 4 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150x59384d4e49171d7eeb7ea7a962df5376b35283e80.009548319725140731 Ether
0xbc05bb5b0badf22d316e4bcc6551f31c88b8208b7c515b4580e9dc54b4a156af700562745 days 5 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150x1ea7ce1282583308d6f2f2f7ba768dff7e0472020.028206168087794323 Ether
0x3aa636c209b52b42f96b9a7e4fd1733131dc2744f86c888964c5dbe1a8517b38700562645 days 5 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150x4492d5e1d239d415a17f8c0e366b952b07d8b6e90.035144494298348901 Ether
0x3aac25210f0d270a3ddb7d0154a06c6308ce59e49162f5de19794a8ec45172b1700561645 days 5 hrs ago0xde5734b4ac337a57b5821c620e83e5224be185150x27a802367b2fa41bb7a49f1276a29bd0718b4c180.011332189624177771 Ether
[ Download CSV Export 
Contract Self Destruct called at TxHash 0xa0a93bd56354ae740d0e02ba517fa42b1a81ad13c96ca95b7b8bbae7f2eb4b2a

Contract Source Code Verified (Exact Match)
Contract Name: OneHundredthMonkey
Compiler Version: v0.4.25+commit.59dbf8f1
Optimization Enabled: Yes
Runs (Optimizer):  200


Contract Source Code
/*
 ____   _______  _______  _______  __   __    __   __  _______  __    _  ___   _  _______  __   __ 
|    | |  _    ||  _    ||       ||  | |  |  |  |_|  ||       ||  |  | ||   | | ||       ||  | |  |
 |   | | | |   || | |   ||_     _||  |_|  |  |       ||   _   ||   |_| ||   |_| ||    ___||  |_|  |
 |   | | | |   || | |   |  |   |  |       |  |       ||  | |  ||       ||      _||   |___ |       |
 |   | | |_|   || |_|   |  |   |  |       |  |       ||  |_|  ||  _    ||     |_ |    ___||_     _|
 |   | |       ||       |  |   |  |   _   |  | ||_|| ||       || | |   ||    _  ||   |___   |   |  
 |___| |_______||_______|  |___|  |__| |__|  |_|   |_||_______||_|  |__||___| |_||_______|  |___|  

                                          
                                           `oyyydssydy-                                             
                                    `/so/`:hyyhhhyyhhhddyooo+/:-`                                   
                                     `:dhhdhyhhyyhhyhhhhhhhhhhyyyso+-`                              
                               `-+oyhhhhhhhhhhhhhhhhhhhhyysssyyyyysoos+/.                           
                           `:oydhhhhhhhhhhhhhhhhhhhhhhyyyyyyysssssssso+/oo/`                        
                        `/ydhhhhhhhhhhhhhhhhhhhhhhhyysssssssssssssssossso++s+`                      
                      -sysyhhhhhhhhhhhhhhhhhhhhhyyssssssysssssssoooosooosso+oy+`                    
                    .sy+ohhhhhhhhhhhhhhhhhhhhyyyyyyyyyyysssssssssssooosoossso+sy:                   
                  `oy++syhhhhhhhhhhhhhhddhhhhhhhhhhhhhhhhhhhyysssssssssssssssoosys`                 
                 :hs+oyhhhhhhhhhhhddddddhysyhhhhhhhhhhhhhhhhhhhhyysssssysssssyssssy`                
                ohosyhhhhhhhhhhhhhddddhhsyhyhhhhhhhhddddddddddddhhhyysssyysssyhyhyhh`  `----.       
              `yhsyhhhhhhdddddddddddhhhyhyshhhhhddhyo+//:::://oshddhhhssshhysyhhhhdds:/-.```-/:`    
             `yhhhhhhhhhhddmdddddhhhhhhhhhhhhddyo/:-------------:+yddhhyshhhhhhhddhy:`.-//+/-..+`   
             yhhhhhhhhddddddddddmdddhhhhhhhhdy+:--:::::-----------:ohddhhhhhhhhddhs:-/oyysssyo-.o   
            +hhhhhhdddhys+/////ydhddddhhdhdds/-:++/::---------------+dmdhhhhhddhho///ss++++++ss.::  
           `dhhhhdddy+/:------/ddyshdhdddddy/-+s+/-::/+++++:--------:sdddhhhhddho/+ooo+++///++y:.o  
    `-::::-+dhhhddh+:---::://:oh+/+dhdhsddd+--s////++:`./++oo/-------+hmdhhhddhdhdho+++oo+////+:`o  
  .:-.`..-/dhhhddy/:-::::::/+os+//odddo+hdd/--:///o/` omo..:hy+------/hmddhdddmddmhddddyssyo///-`o  
 ::`.-:////mhhhdh//------://++++:-/yddo//sd/:--//++  oNmy-.-sNh/-----/hmddddhdddddmmddyy+++s///--/  
::`./ssooysmhhddo/-----/o/.`.:/o+:-:/os+:-:/:--:/s-  dNNNmmmNNNo-----/hmdddddddddddddyo++//////.o`  
+..:s+++++omdhdd+/----:s. :y:-/yyo:----::::-----/o:  sNNNNNNNNNo-----+dmdddddddddmmmmmmy///////:/   
o`-/s/////+dhhdd+/----++  mdo/+dNm+-------------:+s. `dNNNNNNNh/-----sddddddddddddmdyoos///////o    
o`-/o//:://yhhhdo/:---/o` dNNNNNNNy:-------------:/o-``+dNNNmdosoo+-/hmddddddddddmNddo++/////++     
+.-://+syssydhhhh//---:o: .dNNNNNNy:----::::::::::::+++/:+shho/----:ymdddddddddddNsso+++++//o/      
`+.-///+oyyhdhhhds/:---:o+.`/ydmdh+:/++//:::-:---::::////+yo:-----:ymmdddddddddddm////////+/`       
 -/.:+/+oohdhhhhhds//----/++///+oo+/:-------------------://+::--:/hmmdddddddddddmmhs++++/:`         
  :/./s/:ydhdhhhhhds//:--+soosss+:--------------------------//++sdmmmdddddddmmmmmmmh                
   -+.-osy+odddhhhhdho//::---/+:-----------://:::--------------/odmmmdddddddmmmmmmd.                
    `//--:++hyyhdhhhdmhs+///o/--:-:/:-----::-/++/----------------/sdmmddddddmmmmmd.                 
      .//----:+oyddddddmmdhs/--+-/+oo+/:--:+++/+/-------------...-/ohmmddddmmmmmy`                  
        `-:/++++/smmdddddmh/---:::++oo+/--//////:---------:++:--:///+hmmddmmmmd/                    
              ``/hmmdddddd+:------::///:--:///::----------:/ooo+/////sdmmmmmdo`                     
              -dmdmmmdhyhs//:-------------------------::/oss/////////odmmmh/`                       
              d/`dmmmdo/:----::::::::::::::-------::/ooo+++//////////odh+.                          
              . `d-+dmds+/:::---......-----::://+oo+:.``+o///////////s`                             
                 `  /dy-+o++++++o+++++++ooo+++/:.`   -+s+///////////o-                              
                     `.   +/////+oshddddy+-.`  `.-/oyhs/://////////o-                               
                           :+///////+oyddddhhhhhhhhhs+:-/////////++.                                
                            `//////////+oshhdhhhyso/:--:///////++-                                  
                              ./+/////////:::::-....-://////+o/.                                    
                                `:/+/////////:::::///////++/-                                       
                                    .::/++/////////+++/:-`                                          
                                         `.-------.`        

The game starts on Saturday, November 10, 2018 at 5:00:00 PM (GMT)

https://monkey.game
https://discord.gg/3UQ4dNj

DISCLAIMER:

Please note, during your use of this contract, that online gambling is an entertainment vehicle, and that it carries with it a certain degree of financial risk. 
Players should be aware of this risk, and govern themselves accordingly. All users of this contract should exercise responsibility when playing in online casinos, lotteries, and dAPPS. 
CIRCUS FREAKS PRODUCTIONS have undertaken the appropriate steps to inform all those interested in online gaming about the dangers of excess play; that could potentially result from such an activity. 
There is nothing contained herein that constitutes a guarantee of winning, nor is there an intention to induce anyone into violating any local, state or national laws. 
Recognizing that the laws and regulations involving online gaming are different everywhere, readers are advised to check with the laws that exist within their own jurisdiction to ascertain the legality of the activities which are covered.

*/

pragma solidity ^0.4.25;

library SafeMath {

	function mul(uint256 a, uint256 b) internal pure returns (uint256) {
		if (a == 0) {
			return 0;
		}
		uint256 c = a * b;
		require(c / a == b, "the SafeMath multiplication check failed");
		return c;
	}

	function div(uint256 a, uint256 b) internal pure returns (uint256) {
		require(b > 0, "the SafeMath division check failed");
		uint256 c = a / b;
		return c;
	}

	function sub(uint256 a, uint256 b) internal pure returns (uint256) {
		require(b <= a, "the SafeMath subtraction check failed");
		return a - b;
	}

	function add(uint256 a, uint256 b) internal pure returns (uint256) {
		uint256 c = a + b;
		require(c >= a, "the SafeMath addition check failed");
		return c;
	}

	function mod(uint256 a, uint256 b) internal pure returns (uint256) {
		require(b != 0, "the SafeMath modulo check failed");
		return a % b;
	}
}

contract OneHundredthMonkey {

	using SafeMath for uint256;

	///////////
	//STORAGE//
	///////////

	//ADMIN
	uint256 public adminBalance;
	uint256 public foundationBalance;
	address public adminBank;
	address public foundationFund;
	address[] public admins;
	mapping (address => bool) public isAdmin;

	//GLOBAL
	bool public gameActive = false;
	bool public earlyResolveACalled = false;
	bool public earlyResolveBCalled = false;
	uint256 public activationTime = 1541869200; // (GMT): Saturday, November 10, 2018 5:00:00 PM
	uint256 public miniGamesPerRound = 100; 
	uint256 public miniGamesPerCycle = 1000; 
	uint256 public miniGamePotRate = 25; //25%
	uint256 public progressivePotRate = 25; //25%
	uint256 public roundDivRate = 20; //20%
	uint256 public miniGameDivRate = 10; //10%
	uint256 public referralRate = 10; //10%
	uint256 public miniGameAirdropRate = 5; //5%
	uint256 public adminFeeRate = 5; //5%
	uint256 public roundPotRate = 48; //48% of progressive pot 
	uint256 internal precisionFactor = 18; 
	uint256 public seedAreward = 25000000000000000; 
	uint256 public seedBreward = 25000000000000000; 
	mapping (uint256 => bool) public miniGameSeedAawarded;
	mapping (uint256 => bool) public miniGameSeedBawarded;
	
	//RNG
	uint256 internal RNGblockDelay = 1;
	uint256 internal salt = 0; 
	bytes32 internal hashA; 
	bytes32 internal hashB; 

	//MINIGAME TRACKING
	bool public miniGameProcessing;
	uint256 public miniGameCount;
	uint256 public miniGameProcessingBegun;
	mapping (uint256 => bool) public miniGamePrizeClaimed;
	mapping (uint256 => bool) public miniGameAirdropClaimed;
	mapping (uint256 => uint256) public miniGameStartTime;
	mapping (uint256 => uint256) public miniGameEndTime;
	mapping (uint256 => uint256) public miniGameTokens;
	mapping (uint256 => uint256) public miniGameTokensLeft;
	mapping (uint256 => uint256) public miniGameTokensActive;
	mapping (uint256 => uint256) public miniGameTokenRangeMin;
	mapping (uint256 => uint256) public miniGameTokenRangeMax;
	mapping (uint256 => uint256) public miniGamePrizeNumber;
	mapping (uint256 => uint256) public miniGameAirdropNumber;
	mapping (uint256 => uint256) public miniGamePrizePot;
	mapping (uint256 => uint256) public miniGameAirdropPot;
	mapping (uint256 => uint256) public miniGameDivs;
	mapping (uint256 => uint256) public miniGameDivsClaimed;
	mapping (uint256 => address) public miniGamePrizeWinner;
	mapping (uint256 => address) public miniGameAirdropWinner;

	//ROUND TRACKING
	uint256 public roundCount;
	mapping (uint256 => bool) public roundPrizeClaimed;
	mapping (uint256 => bool) public roundPrizeTokenRangeIdentified;
	mapping (uint256 => uint256) public roundStartTime;
	mapping (uint256 => uint256) public roundEndTime;
	mapping (uint256 => uint256) public roundTokens;
	mapping (uint256 => uint256) public roundTokensActive;
	mapping (uint256 => uint256) public roundTokenRangeMin;
	mapping (uint256 => uint256) public roundTokenRangeMax;
	mapping (uint256 => uint256) public roundPrizeNumber;
	mapping (uint256 => uint256) public roundPrizePot;
	mapping (uint256 => uint256) public roundDivs;
	mapping (uint256 => uint256) public roundDivsClaimed;
	mapping (uint256 => uint256) public roundPrizeInMinigame;
	mapping (uint256 => address) public roundPrizeWinner;

	//CYCLE TRACKING
	bool public cycleOver = false;
	bool public cylcePrizeClaimed;
	bool public cyclePrizeTokenRangeIdentified;
	uint256 public totalVolume;
	uint256 public totalBuys;
	uint256 public tokenSupply;
	uint256 public cycleActiveTokens;
	uint256 public cycleCount;
	uint256 public cycleEnded;
	uint256 public cycleProgressivePot;
	uint256 public cyclePrizeWinningNumber;
	uint256 public cyclePrizeInMinigame;
	uint256 public cyclePrizeInRound;
	uint256 public cycleStartTime;
	address public cyclePrizeWinner;

	//TOKEN TRACKING
	uint256 public tokenPrice = 0.001 ether; 
	uint256 public tokenPriceIncrement = 0.0005 ether; 
	uint256 public minTokensPerMiniGame = 10000; //between 1x and 2x this amount of tokens generated each minigame 

	//USER TRACKING PUBLIC
	address[] public uniqueAddress;
	mapping (address => bool) public knownUsers;
	mapping (address => uint256) public userTokens;
	mapping (address => uint256) public userBalance;
	mapping (address => mapping (uint256 => uint256)) public userMiniGameTokens;
	mapping (address => mapping (uint256 => uint256)) public userRoundTokens;
	mapping (address => mapping (uint256 => uint256[])) public userMiniGameTokensMin;
	mapping (address => mapping (uint256 => uint256[])) public userMiniGameTokensMax;

	//USER TRACKING INTERNAL
	mapping (address => bool) internal userCycleChecked;
	mapping (address => uint256) internal userLastMiniGameInteractedWith;
	mapping (address => uint256) internal userLastRoundInteractedWith;
	mapping (address => uint256) internal userLastMiniGameChecked;
	mapping (address => uint256) internal userLastRoundChecked;
	mapping (address => mapping (uint256 => uint256)) internal userShareMiniGame;
	mapping (address => mapping (uint256 => uint256)) internal userDivsMiniGameTotal;
	mapping (address => mapping (uint256 => uint256)) internal userDivsMiniGameClaimed;
	mapping (address => mapping (uint256 => uint256)) internal userDivsMiniGameUnclaimed;
	mapping (address => mapping (uint256 => uint256)) internal userShareRound;
	mapping (address => mapping (uint256 => uint256)) internal userDivsRoundTotal;
	mapping (address => mapping (uint256 => uint256)) internal userDivsRoundClaimed;
	mapping (address => mapping (uint256 => uint256)) internal userDivsRoundUnclaimed;

	
	///////////////
	//CONSTRUCTOR//
	///////////////

	constructor(address _adminBank, address _foundationFund, address _adminTwo, address _adminThree, address _adminFour) public {
		//set dev bank address and admins
		adminBank = _adminBank;
		foundationFund = _foundationFund;
		admins.push(msg.sender);
		isAdmin[msg.sender] = true;
		admins.push(_adminTwo);
		isAdmin[_adminTwo] = true; 
		admins.push(_adminThree);
		isAdmin[_adminThree] = true; 
		admins.push(_adminFour);
		isAdmin[_adminFour] = true; 
	}

	
	/////////////
	//MODIFIERS//
	/////////////

	modifier onlyAdmins() {
		require (isAdmin[msg.sender] == true, "you must be an admin");
		_;
	}

	modifier onlyHumans() { 
	    require (msg.sender == tx.origin, "only approved contracts allowed"); 
	    _; 
	  }

	modifier gameOpen() {
		require (gameActive == true || now >= activationTime, "the game must be open");
	  	if (miniGameProcessing == true) {
	  		require (block.number > miniGameProcessingBegun + RNGblockDelay, "the round is still processing. try again soon");
	  	}
	  	_;
	}
    
    
    //////////
	//EVENTS//
	//////////

	event adminWithdrew(
		uint256 _amount,
		address indexed _caller,
		string _message 
	);

	event cycleStarted(
		address indexed _caller,
		string _message
	);

	event adminAdded(
		address indexed _caller,
		address indexed _newAdmin,
		string _message
	);

	event resolvedEarly(
		address indexed _caller,
		uint256 _pot,
		string _message
	);

	event processingRestarted(
		address indexed _caller,
		string _message
	);

	event contractDestroyed(
		address indexed _caller,
		uint256 _balance,
		string _message
	);

	event userBought(
		address indexed _user,
		uint256 _tokensBought,
		uint256 indexed _miniGameID,
		string _message
	);

	event userReinvested(
		address indexed _user,
		uint256 _amount,
		string _message
	);

	event userWithdrew(
		address indexed _user,
		uint256 _amount,
		string _message
	);

	event processingStarted(
		address indexed _caller,
		uint256 indexed _miniGameID,
		uint256 _blockNumber,
		string _message
	);

	event processingFinished(
		address indexed _caller,
		uint256 indexed _miniGameID,
		uint256 _blockNumber,
		string _message
	);

	event newMinigameStarted(
		uint256 indexed _miniGameID,
		uint256 _newTokens,
		string _message
	);

	event miniGamePrizeAwarded(
		uint256 indexed _miniGameID,
		uint256 _winningNumber,
		uint256 _prize,
		string _message
	);

	event miniGameAirdropAwarded(
		uint256 indexed _miniGameID,
		uint256 _winningNumber,
		uint256 _prize,
		string _message
	);

	event roundPrizeAwarded(
		uint256 indexed _roundID,
		uint256 _winningNumber,
		uint256 _prize,
		string _message
	);

	event cyclePrizeAwarded(
		uint256 _winningNumber,
		uint256 _prize,
		string _message
	);


	///////////////////
	//ADMIN FUNCTIONS//
	///////////////////

	function adminWithdraw() external {
		require (isAdmin[msg.sender] == true || msg.sender == adminBank);
		require (adminBalance > 0, "there must be a balance");
		uint256 balance = adminBalance;
		adminBalance = 0;
		adminBank.call.value(balance).gas(100000)();

		emit adminWithdrew(balance, msg.sender, "an admin just withdrew to the admin bank");
	}

	function foundationWithdraw() external {
		require (isAdmin[msg.sender] == true || msg.sender == foundationFund);
		require (adminBalance > 0, "there must be a balance");
		uint256 balance = foundationBalance;
		foundationBalance = 0;
		foundationFund.call.value(balance).gas(100000)();

		emit adminWithdrew(balance, msg.sender, "an admin just withdrew to the foundation fund");
	}

	//this function begins resolving the round in the event that the game has stalled
	//it can be called no sooner than 1 week after the start of a minigame 
	//can only be called once. can be restarted with restartMiniGame if 256 blocks pass
	function earlyResolveA() external onlyAdmins() onlyHumans() gameOpen() {
		require (now > miniGameStartTime[miniGameCount] + 604800 && miniGameProcessing == false, "earlyResolveA cannot be called yet"); //1 week
		require (miniGamePrizePot[miniGameCount].sub(seedAreward).sub(seedBreward) >= 0);
		
		gameActive = false;
		earlyResolveACalled = true;
		generateSeedA();
	}

	//this function comlpetes the resolution and ends the game 
	function earlyResolveB() external onlyAdmins() onlyHumans() {
		require (earlyResolveACalled == true && earlyResolveBCalled == false && miniGameProcessing == true && block.number > miniGameProcessingBegun + RNGblockDelay, "earlyResolveB cannot be called yet"); 
		
		earlyResolveBCalled = true;
		resolveCycle();

		emit resolvedEarly(msg.sender, cycleProgressivePot, "the cycle was resolved early"); 
	}

	//resets the first seed in case the processing is not completed within 256 blocks 
	function restartMiniGame() external onlyAdmins() onlyHumans() {
		require (miniGameProcessing == true && block.number > miniGameProcessingBegun + 256, "restartMiniGame cannot be called yet");
		
		generateSeedA();

		emit processingRestarted(msg.sender, "mini-game processing was restarted");
	}

	//admins can close the contract no sooner than 30 days after a full cycle completes 
	//users need to withdraw funds before this date or risk losing them
	function zeroOut() external onlyAdmins() onlyHumans() {
	    require (now >= cycleEnded + 30 days && cycleOver == true, "too early to close the contract"); 
	    
	  	//event emited before selfdestruct
	    emit contractDestroyed(msg.sender, address(this).balance, "contract destroyed"); 

	    selfdestruct(foundationFund);
	}


	//////////////////
	//USER FUNCTIONS//
	//////////////////

	function () external payable onlyHumans() gameOpen() {
		//funds sent directly to contract will trigger buy
		//no refferal on fallback 
		buyInternal(msg.value, 0x0);
	}

	function buy(address _referral) public payable onlyHumans() gameOpen() {
		buyInternal(msg.value, _referral);
	}
	
	function reinvest(uint256 _amount, address _referral) external onlyHumans() gameOpen() {
		//update userBalance at beginning of function in case user has new funds to reinvest
		updateUserBalance(msg.sender);

		require (_amount <= userBalance[msg.sender], "insufficient balance");
		require (_amount >= tokenPrice, "you must buy at least one token");

		//take funds from user persistent storage and buy
		userBalance[msg.sender] = userBalance[msg.sender].sub(_amount);
		
		buyInternal(_amount, _referral);

		emit userReinvested(msg.sender, _amount, "a user reinvested");
	}

	function withdraw() external onlyHumans() {
		//update userBalance at beginning of function in case user has new funds to reinvest
		updateUserBalance(msg.sender);

		require (userBalance[msg.sender] > 0, "no balance to withdraw");
		require (userBalance[msg.sender] <= address(this).balance, "you cannot withdraw more than the contract holds");

		//update user accounting and transfer
		uint256 toTransfer = userBalance[msg.sender];
		userBalance[msg.sender] = 0;
		msg.sender.transfer(toTransfer);

		emit userWithdrew(msg.sender, toTransfer, "a user withdrew");
	}


	//////////////////
	//VIEW FUNCTIONS//
	//////////////////

	//helper function for front end token value
	function getValueOfRemainingTokens() public view returns(uint256 _tokenValue){
		return miniGameTokensLeft[miniGameCount].mul(tokenPrice);
	}

	//helper function for front end minigame prize pot
	function getCurrentMinigamePrizePot() public view returns(uint256 _mgPrize){
	    return miniGamePrizePot[miniGameCount];
	}

	//helper function for front end round prize pot
	function getCurrentRoundPrizePot() public view returns(uint256 _rndPrize){
	    return roundPrizePot[roundCount];
	}

	//helper function to return contract balance 
	function contractBalance() external view returns(uint256 _contractBalance) {
	    return address(this).balance;
	}

	//check for user divs available
	function checkUserDivsAvailable(address _user) external view returns(uint256 _userDivsAvailable) {
		return userBalance[_user] + checkDivsMgView(_user) + checkDivsRndView(_user) + checkPrizesView(_user);
	}

	//user chance of winning minigame prize or airdrop
	function userOddsMiniGame(address _user) external view returns(uint256) {
		//returns percentage precise to two decimal places (eg 1428 == 14.28% odds)
		return userMiniGameTokens[_user][miniGameCount].mul(10 ** 5).div(miniGameTokensActive[miniGameCount]).add(5).div(10);
	}

	//user chance of winning round prize or airdrop
	function userOddsRound(address _user) external view returns(uint256) {
		//returns percentage precise to two decimal places (eg 1428 == 14.28% odds)
		return userRoundTokens[_user][roundCount].mul(10 ** 5).div(roundTokensActive[roundCount]).add(5).div(10);
	}

	//user chance of winning cycle prize
	function userOddsCycle(address _user) external view returns(uint256) {
		//returns percentage precise to two decimal places (eg 1428 == 14.28% odds)
		return userTokens[_user].mul(10 ** 5).div(cycleActiveTokens).add(5).div(10);
	}

	//helper function for minigame data
	function miniGameInfo() external view returns(
		uint256 _id,
		uint256 _miniGameTokens,
		uint256 _miniGameTokensLeft,
		uint256 _miniGamePrizePot,
		uint256 _miniGameAirdropPot,
		uint256 _miniGameStartTime
		) {

		return (
			miniGameCount,
			miniGameTokens[miniGameCount],
			miniGameTokensLeft[miniGameCount],
			miniGamePrizePot[miniGameCount],
			miniGameAirdropPot[miniGameCount],
			miniGameStartTime[miniGameCount]
		);
	}

	//helper function for round data
	function roundInfo() external view returns(
		uint256 _id,
		uint256 _roundPrize,
		uint256 _roundStart
		) {

		return (
			roundCount,
			cycleProgressivePot / 2,
			roundStartTime[roundCount]
		);
	}

	//helper function for contract data
	function contractInfo() external view returns(
		uint256 _balance,
		uint256 _volume,
		uint256 _totalBuys,
		uint256 _totalUsers,
		uint256 _tokenSupply,
		uint256 _tokenPrice
		) {

		return (
			address(this).balance,
			totalVolume,
			totalBuys,
			uniqueAddress.length,
			tokenSupply,
			tokenPrice
		);
	}

	//cycle data	
	function cycleInfo() external view returns(
		bool _cycleComplete,
		uint256 _currentRound,
		uint256 _currentMinigame,
		uint256 _tokenSupply,
		uint256 _progressivePot,
		bool _prizeClaimed,
		uint256 _winningNumber
		) {
		bool isActive;
		if (miniGameCount < 1000) {
			isActive = true;
			} else {
				isActive = false;
			}
		
		return (
			isActive,
			roundCount,
			miniGameCount,
			tokenSupply,
			cycleProgressivePot,
			cylcePrizeClaimed,
			cyclePrizeWinningNumber
		);
	}


	//////////////////////
	//INTERNAL FUNCTIONS//
	//////////////////////

	function startCycle() internal {
		require (gameActive == false && cycleCount == 0, "the cycle has already been started");
		
		gameActive = true;
		cycleStart();
		roundStart();
		miniGameStart();

		emit cycleStarted(msg.sender, "a new cycle just started"); 
	}

	function buyInternal(uint256 _amount, address _referral) internal {
		require (_amount >= tokenPrice, "you must buy at least one token");
		require (userMiniGameTokensMin[msg.sender][miniGameCount].length < 10, "you are buying too often in this round"); //sets up bounded loop 

		//start cycle on first buy
		if (gameActive == false && now >= activationTime) {
			startCycle();
		}

		//update divs here to prevent overwriting userLastRoundInteractedWith
		if (userLastRoundInteractedWith[msg.sender] < roundCount || userLastMiniGameInteractedWith[msg.sender] < miniGameCount) {
			updateUserBalance(msg.sender);
		}

		//if this is the first tx after processing period is over, call generateSeedB
		if (miniGameProcessing == true && block.number > miniGameProcessingBegun + RNGblockDelay) {
			generateSeedB();
		}

		//track user
		if (knownUsers[msg.sender] == false) {
			uniqueAddress.push(msg.sender);
			knownUsers[msg.sender] = true;
		}

		//assign tokens
		uint256 tokensPurchased;
		uint256 ethSpent = _amount;
		uint256 valueOfRemainingTokens = miniGameTokensLeft[miniGameCount].mul(tokenPrice);

		//if round tokens are all sold, push difference to user balance and call generateSeedA
		if (ethSpent >= valueOfRemainingTokens) {
			uint256 incomingValue = ethSpent;
			ethSpent = valueOfRemainingTokens;
			tokensPurchased = miniGameTokensLeft[miniGameCount];
			miniGameTokensLeft[miniGameCount] = 0;
			uint256 ethCredit = incomingValue.sub(ethSpent);
			userBalance[msg.sender] += ethCredit;
			generateSeedA();
		} else {
			tokensPurchased = ethSpent.div(tokenPrice);
		}

		//update user token accounting
		userTokens[msg.sender] += tokensPurchased;
		userMiniGameTokens[msg.sender][miniGameCount] += tokensPurchased;
		userRoundTokens[msg.sender][roundCount] += tokensPurchased;
		//add min ranges and save in user accounting
		userMiniGameTokensMin[msg.sender][miniGameCount].push(cycleActiveTokens + 1);
		userMiniGameTokensMax[msg.sender][miniGameCount].push(cycleActiveTokens + tokensPurchased);
		//log last eligible rounds for withdraw checking 
		userLastMiniGameInteractedWith[msg.sender] = miniGameCount;
		userLastRoundInteractedWith[msg.sender] = roundCount;	

		uint256 referralShare = (ethSpent.mul(referralRate)).div(100);
		//check referral
			if (_referral != 0x0000000000000000000000000000000000000000 && _referral != msg.sender) {
	      // assign refferal
	      userBalance[_referral] += referralShare;
	   	} else if (_referral == 0x0000000000000000000000000000000000000000 || _referral == msg.sender){
	   		//if no referral used, add to progessive pot 
	   		cycleProgressivePot += referralShare;
	   	}

		//divide amount by various percentages and distribute
		uint256 adminShare = (ethSpent.mul(adminFeeRate)).div(100);
		adminBalance += adminShare;

		uint256 mgDivs = (ethSpent.mul(miniGameDivRate)).div(100);
		miniGameDivs[miniGameCount] += mgDivs;

		uint256 roundDivShare = ethSpent.mul(roundDivRate).div(100);
		roundDivs[roundCount] += roundDivShare;

		uint256 miniGamePrize = ethSpent.mul(miniGamePotRate).div(100);
		miniGamePrizePot[miniGameCount] += miniGamePrize;

		uint256 miniGameAirdrop = ethSpent.mul(miniGameAirdropRate).div(100);
		miniGameAirdropPot[miniGameCount] += miniGameAirdrop;

		uint256 cyclePot = ethSpent.mul(progressivePotRate).div(100);
		cycleProgressivePot += cyclePot;

     	//update global token accounting 
     	if (miniGameTokensLeft[miniGameCount] > 0) {
			miniGameTokensLeft[miniGameCount] = miniGameTokensLeft[miniGameCount].sub(tokensPurchased);
		}
		cycleActiveTokens += tokensPurchased;
		roundTokensActive[roundCount] += tokensPurchased;
		miniGameTokensActive[miniGameCount] += tokensPurchased;
		totalVolume += ethSpent;
		totalBuys++;

        //update user balance, if necessary. done here to keep ensure updateUserBalance never has to search through multiple minigames 
		updateUserBalance(msg.sender);

		emit userBought(msg.sender, tokensPurchased, miniGameCount, "a user just bought tokens");
	}

	function checkDivs(address _user) internal {
		//set up local shorthand
		uint256 _mg = userLastMiniGameInteractedWith[_user];
		uint256 _rnd = userLastRoundInteractedWith[_user];

		//calculate minigame divs 
		userShareMiniGame[_user][_mg] = userMiniGameTokens[_user][_mg].mul(10 ** (precisionFactor + 1)).div(miniGameTokens[_mg] + 5).div(10);
	    userDivsMiniGameTotal[_user][_mg] = miniGameDivs[_mg].mul(userShareMiniGame[_user][_mg]).div(10 ** precisionFactor);
	    userDivsMiniGameUnclaimed[_user][_mg] = userDivsMiniGameTotal[_user][_mg].sub(userDivsMiniGameClaimed[_user][_mg]);
	    //add to user balance
	    if (userDivsMiniGameUnclaimed[_user][_mg] > 0) {
			//sanity check
			assert(userDivsMiniGameUnclaimed[_user][_mg] <= miniGameDivs[_mg]);
			assert(userDivsMiniGameUnclaimed[_user][_mg] <= address(this).balance);
			//update user accounting
			userDivsMiniGameClaimed[_user][_mg] = userDivsMiniGameTotal[_user][_mg];
			uint256 shareTempMg = userDivsMiniGameUnclaimed[_user][_mg];
			userDivsMiniGameUnclaimed[_user][_mg] = 0;
			userBalance[_user] += shareTempMg;
			miniGameDivsClaimed[_mg] += shareTempMg;
		    }
	    //calculate round divs 
		userShareRound[_user][_rnd] = userRoundTokens[_user][_rnd].mul(10 ** (precisionFactor + 1)).div(roundTokensActive[_rnd] + 5).div(10);
	    userDivsRoundTotal[_user][_rnd] = roundDivs[_rnd].mul(userShareRound[_user][_rnd]).div(10 ** precisionFactor);
	    userDivsRoundUnclaimed[_user][_rnd] = userDivsRoundTotal[_user][_rnd].sub(userDivsRoundClaimed[_user][_rnd]);
	    //add to user balance
	    if (userDivsRoundUnclaimed[_user][_rnd] > 0) {
			//sanity check
			assert(userDivsRoundUnclaimed[_user][_rnd] <= roundDivs[_rnd]);
			assert(userDivsRoundUnclaimed[_user][_rnd] <= address(this).balance);
			//update user accounting
			userDivsRoundClaimed[_user][_rnd] = userDivsRoundTotal[_user][_rnd];
			uint256 shareTempRnd = userDivsRoundUnclaimed[_user][_rnd];
			userDivsRoundUnclaimed[_user][_rnd] = 0;
			userBalance[_user] += shareTempRnd;
			roundDivsClaimed[_rnd] += shareTempRnd;
	    }	
	}

	function checkPrizes(address _user) internal {
		//push cycle prizes to persistent storage
		if (cycleOver == true && userCycleChecked[_user] == false) {
			//get minigame cycle prize was in 
			uint256 mg = cyclePrizeInMinigame;
			//check if user won cycle prize 
			if (cylcePrizeClaimed == false && userMiniGameTokensMax[_user][mg].length > 0) {
				//check if user won minigame 
				//loop iterations bounded to a max of 10 on buy()
	  			for (uint256 i = 0; i < userMiniGameTokensMin[_user][mg].length; i++) {
	  				if (cyclePrizeWinningNumber >= userMiniGameTokensMin[_user][mg][i] && cyclePrizeWinningNumber <= userMiniGameTokensMax[_user][mg][i]) {
	  					userBalance[_user] += cycleProgressivePot;
	  					cylcePrizeClaimed = true;
						cyclePrizeWinner = msg.sender;				
	  					break;
	  				}
	  			}
			}
			userCycleChecked[_user] = true;
		}
		//push round prizes to persistent storage
		if (roundPrizeClaimed[userLastRoundInteractedWith[_user]] == false && roundPrizeTokenRangeIdentified[userLastRoundInteractedWith[_user]]) {
			//get minigame round prize was in 
			uint256 rnd = userLastRoundInteractedWith[_user];
			uint256 mgp = roundPrizeInMinigame[rnd];
			//check if user won round prize
			for (i = 0; i < userMiniGameTokensMin[_user][mgp].length; i++) {
				if (roundPrizeNumber[rnd] >= userMiniGameTokensMin[_user][mgp][i] && roundPrizeNumber[rnd] <= userMiniGameTokensMax[_user][mgp][i]) {
					userBalance[_user] += roundPrizePot[mgp];
					roundPrizeClaimed[rnd] = true;
					roundPrizeWinner[rnd] = msg.sender;		
					break;
				}
			}
			userLastRoundChecked[_user] = userLastRoundInteractedWith[_user];
		}
		//push minigame prizes to persistent storage
		if (userLastMiniGameChecked[_user] < userLastMiniGameInteractedWith[_user] && miniGameCount > userLastMiniGameInteractedWith[_user]) {
			//check if user won minigame 
			mg = userLastMiniGameInteractedWith[_user];
			for (i = 0; i < userMiniGameTokensMin[_user][mg].length; i++) {
				if (miniGamePrizeNumber[mg] >= userMiniGameTokensMin[_user][mg][i] && miniGamePrizeNumber[mg] <= userMiniGameTokensMax[_user][mg][i]) {
					userBalance[_user] += miniGamePrizePot[mg];
					miniGamePrizeClaimed[mg] = true;
					miniGamePrizeWinner[mg] = msg.sender;			
					break;
				}
			}
			//check if user won airdrop
			for (i = 0; i < userMiniGameTokensMin[_user][mg].length; i++) {
				if (miniGameAirdropNumber[mg] >= userMiniGameTokensMin[_user][mg][i] && miniGameAirdropNumber[mg] <= userMiniGameTokensMax[_user][mg][i]) {
					userBalance[_user] += miniGameAirdropPot[mg];
					miniGameAirdropClaimed[mg] = true;
					miniGameAirdropWinner[mg] = msg.sender;
					break;
				}
			}
			//update last mini game checked 
			userLastMiniGameChecked[_user] = userLastMiniGameInteractedWith[_user];
		}
	}

	function updateUserBalance(address _user) internal {
		checkDivs(_user);
		checkPrizes(_user);
	}

	function miniGameStart() internal {
		require (cycleOver == false, "the cycle cannot be over");
		
		miniGameCount++;
		miniGameStartTime[miniGameCount] = now;
		//set up special case for correct token range on first minigame 
		if (tokenSupply != 0) {
			miniGameTokenRangeMin[miniGameCount] = tokenSupply + 1;
		} else {
			miniGameTokenRangeMin[miniGameCount] = 0;
		}
		//genreate tokens and update accounting 
		miniGameTokens[miniGameCount] = generateTokens();
		miniGameTokensLeft[miniGameCount] = miniGameTokens[miniGameCount];
		miniGameTokenRangeMax[miniGameCount] = tokenSupply;
		//increment token price after 1st minigame 
		if (miniGameCount > 1) {
			tokenPrice += tokenPriceIncrement;
		}
		//award prizes and start new round if current round is complete 
		if (miniGameCount % miniGamesPerRound == 0 && miniGameCount > 1) {
			awardRoundPrize();
			roundStart();
			tokenPrice = 0.001 ether + 0.0005 ether * roundCount.sub(1);
		}
		//award prize if cycle is complete 
		if (miniGameCount % (miniGamesPerCycle + 1) == 0 && miniGameCount > 1) {
			awardCyclePrize();
		}

		emit newMinigameStarted(miniGameCount, miniGameTokens[miniGameCount], "new minigame started");
	}

	function roundStart() internal {
		require (cycleOver == false, "the cycle cannot be over");

		roundCount++;
		roundStartTime[roundCount] = now;
		//set up special case for correct token range on first round 
		if (tokenSupply != 0) {
			roundTokenRangeMin[roundCount] = miniGameTokenRangeMax[miniGameCount.sub(1)] + 1;
		} else {
			roundTokenRangeMin[roundCount] = 0;
		}
		//log max only when round is complete 
		if (roundCount >= 2) {
			roundTokenRangeMax[roundCount.sub(1)] = miniGameTokenRangeMax[miniGameCount.sub(1)];
			roundTokens[roundCount.sub(1)] = tokenSupply.sub(roundTokenRangeMin[roundCount.sub(1)]);
		}
	}

	function cycleStart() internal {
		require (cycleOver == false, "the cycle cannot be over");

		cycleCount++;
		cycleStartTime = now;
	}

	function generateTokens() internal returns(uint256 _tokens) {
		bytes32 hash = keccak256(abi.encodePacked(salt, hashA, hashB));
		uint256 randTokens = uint256(hash).mod(minTokensPerMiniGame);
    	uint256 newMinGameTokens = randTokens + minTokensPerMiniGame;
		tokenSupply += newMinGameTokens;
		salt++;

		return newMinGameTokens;
	}

	function generateSeedA() internal {
		require (miniGameProcessing == false || miniGameProcessing == true && block.number > miniGameProcessingBegun + 256, "seed A cannot be regenerated right now");
		require (miniGameTokensLeft[miniGameCount] == 0 || earlyResolveACalled == true, "active tokens remain in this minigame");
		
		miniGameProcessing = true;
		miniGameProcessingBegun = block.number;
		//generate seed 
		hashA = blockhash(miniGameProcessingBegun - 1);
		//log end times
		if (miniGameCount > 1) {
			miniGameEndTime[miniGameCount] = now;
		}
		if (miniGameCount % miniGamesPerRound == 0) {
			roundEndTime[roundCount] = now;
		}
		//award processing bounty
		if (miniGameSeedAawarded[miniGameCount] == false) {
			userBalance[msg.sender] += seedAreward;
			miniGameSeedAawarded[miniGameCount] = true;
		}
		salt++;

		emit processingStarted(msg.sender, miniGameCount, block.number, "processing started");
	}

	function generateSeedB() internal {
		//gererate seed 
		hashB = blockhash(miniGameProcessingBegun + RNGblockDelay);
		//awared prizes 
		awardMiniGamePrize();
		awardMiniGameAirdrop();
		//award processing bounty 
		if (miniGameSeedBawarded[miniGameCount] == false) {
			userBalance[msg.sender] += seedBreward;
			miniGameSeedBawarded[miniGameCount] = true;
		}
		//start next minigame
		miniGameStart();
		miniGameProcessing = false;
		salt++;

		emit processingFinished(msg.sender, miniGameCount, block.number, "processing finished");
	}

	function awardMiniGamePrize() internal {
		bytes32 hash = keccak256(abi.encodePacked(salt, hashA, hashB));
	    uint256 winningNumber = uint256(hash).mod(miniGameTokens[miniGameCount].sub(miniGameTokensLeft[miniGameCount]));
	    miniGamePrizeNumber[miniGameCount] = winningNumber + miniGameTokenRangeMin[miniGameCount];
	    miniGamePrizePot[miniGameCount] = miniGamePrizePot[miniGameCount].sub(seedAreward).sub(seedBreward);
	    salt++;

	    emit miniGamePrizeAwarded(miniGameCount, winningNumber, miniGamePrizePot[miniGameCount], "minigame prize awarded");
	}

	function awardMiniGameAirdrop() internal {
		bytes32 hash = keccak256(abi.encodePacked(salt, hashA, hashB));
	    uint256 winningNumber = uint256(hash).mod(miniGameTokens[miniGameCount].sub(miniGameTokensLeft[miniGameCount]));
	    miniGameAirdropNumber[miniGameCount] = winningNumber + miniGameTokenRangeMin[miniGameCount];
	    salt++;

	    emit miniGameAirdropAwarded(miniGameCount, winningNumber, miniGameAirdropPot[miniGameCount], "minigame airdrop awarded");
	}

	function awardRoundPrize() internal {
		bytes32 hash = keccak256(abi.encodePacked(salt, hashA, hashB));
		uint256 currentRoundTokens;
		if (miniGameCount > 1) {
			currentRoundTokens = miniGameTokenRangeMax[miniGameCount.sub(1)].sub(roundTokenRangeMin[roundCount]);
		//handles edge case of early resolve during the first minigame 
		} else if (miniGameCount == 1) {
			currentRoundTokens = miniGameTokensActive[1];
		}
	    uint256 winningNumber = uint256(hash).mod(currentRoundTokens);
	    roundPrizeNumber[roundCount] = winningNumber + roundTokenRangeMin[roundCount];
	    //calculate round prize here 
	    uint256 roundPrize = cycleProgressivePot.mul(roundPotRate).div(100);
		uint256 adminShare = cycleProgressivePot.mul(4).div(100);
		foundationBalance += adminShare;
	    roundPrizePot[roundCount] = roundPrize;
	    cycleProgressivePot = roundPrize;
	    narrowRoundPrize(roundCount);
	    salt++;

		emit roundPrizeAwarded(roundCount, winningNumber, roundPrize, "round prize awarded");
	}

	function awardCyclePrize() internal {
		bytes32 hash = keccak256(abi.encodePacked(salt, hashA, hashB));
	    uint256 winningNumber;
	    if (miniGameCount > 1) {
	    	winningNumber = uint256(hash).mod(miniGameTokenRangeMax[miniGameCount - 1]);
	    //handles edge case of early resolve during the first minigame 
	    } else if (miniGameCount == 1) {
	    	winningNumber = uint256(hash).mod(miniGameTokensActive[1]);
	    }
	    cyclePrizeWinningNumber = winningNumber;
	    gameActive = false;
	    cycleEnded = now;
	    cycleOver = true;
	    narrowCyclePrize();
	    salt++;

		emit cyclePrizeAwarded(winningNumber, cycleProgressivePot, "cycle prize awarded");
	}

	function resolveCycle() internal {
		//generate hashB here in instead of calling generateSeedB
		hashB = blockhash(miniGameProcessingBegun + RNGblockDelay);
		//award prizes 
		awardMiniGamePrize();
		awardMiniGameAirdrop();
		awardRoundPrize();
		awardCyclePrize();
		//close game
		miniGameProcessing = false;
		gameActive = false;
	}

	//narrows down the token range of a round to a specific miniGame
	//reduces the search space on user prize updates 
	function narrowRoundPrize(uint256 _ID) internal returns(uint256 _miniGameID) {
		//set up local accounting
		uint256 miniGameRangeMin; 
		uint256 miniGameRangeMax;
		if (_ID == 1) {
			miniGameRangeMin = 1;
			miniGameRangeMax = miniGamesPerRound;
		} else if (_ID >= 2) {
			miniGameRangeMin = _ID.mul(miniGamesPerRound);
			miniGameRangeMax = miniGameRangeMin + miniGamesPerRound - 1;
		}	
		//loop through each minigame to check prize number
		//log globaly so this only needs to be called once per prize 
	    for (uint256 i = miniGameRangeMin; i <= miniGameRangeMax; i++) {
		    if (roundPrizeNumber[_ID] >= miniGameTokenRangeMin[i] && roundPrizeNumber[_ID] <= miniGameTokenRangeMax[i]) {
	        roundPrizeInMinigame[_ID] = i;
	        roundPrizeTokenRangeIdentified[_ID] = true;
	        return roundPrizeInMinigame[_ID];
	        break;
		    }
	    }	
	}

	//narrows down the token range of a round to a specific miniGame
	//reduces the search space on user prize updates 
	function narrowCyclePrize() internal returns(uint256 _miniGameID) {
		//first identify round 
	    for (uint256 i = 1; i <= roundCount; i++) {
	      if (cyclePrizeWinningNumber >= roundTokenRangeMin[i] && cyclePrizeWinningNumber <= roundTokenRangeMax[i]) {
	        cyclePrizeInRound = i;
	        break;
	      }
	    }
	    //set up minigame local accounting 
	    uint256 miniGameRangeMin; 
		uint256 miniGameRangeMax;
		uint256 _ID = cyclePrizeInRound;
		if (_ID == 1) {
			miniGameRangeMin = 1;
			miniGameRangeMax = miniGamesPerRound;
		} else if (_ID >= 2) {
			miniGameRangeMin = _ID.mul(miniGamesPerRound);
			miniGameRangeMax = miniGameRangeMin + miniGamesPerRound - 1;
		}	
		//loop through each minigame to check prize number
		//log globaly so this only needs to be called once per prize  
	    for (i = miniGameRangeMin; i <= miniGameRangeMax; i++) {
			if (cyclePrizeWinningNumber >= miniGameTokenRangeMin[i] && cyclePrizeWinningNumber <= miniGameTokenRangeMax[i]) {
				cyclePrizeInMinigame = i;
				cyclePrizeTokenRangeIdentified = true;
				return cyclePrizeInMinigame;
				break;
			}
	    }	
	}

	//helper function for up to date front end balances without state change
	function checkDivsMgView(address _user) internal view returns(uint256 _divs) {
		//set up local shorthand
		uint256 _mg = userLastMiniGameChecked[_user];
		uint256 mgShare = userShareMiniGame[_user][_mg];
		uint256 mgTotal = userDivsMiniGameTotal[_user][_mg];
		uint256 mgUnclaimed = userDivsMiniGameUnclaimed[_user][_mg];
		//calculate minigame divs 
		mgShare = userMiniGameTokens[_user][_mg].mul(10 ** (precisionFactor + 1)).div(miniGameTokens[_mg] + 5).div(10);
	    mgTotal = miniGameDivs[_mg].mul(mgShare).div(10 ** precisionFactor);
	    mgUnclaimed = mgTotal.sub(userDivsMiniGameClaimed[_user][_mg]);

	    return mgUnclaimed;
	}
	
	//helper function for up to date front end balances without state change
	function checkDivsRndView(address _user) internal view returns(uint256 _divs) {
		//set up local shorthand
		uint256 _rnd = userLastRoundChecked[_user];
		uint256 rndShare = userShareRound[_user][_rnd];
		uint256 rndTotal = userDivsRoundTotal[_user][_rnd];
		uint256 rndUnclaimed = userDivsRoundUnclaimed[_user][_rnd];
        //calculate round divs 
		rndShare = userRoundTokens[_user][_rnd].mul(10 ** (precisionFactor + 1)).div(roundTokensActive[_rnd] + 5).div(10);
	    rndTotal = roundDivs[_rnd].mul(rndShare).div(10 ** precisionFactor);
	    rndUnclaimed = rndTotal.sub(userDivsRoundClaimed[_user][_rnd]);

	    return rndUnclaimed;
	}

	//helper function for up to date front end balances without state change
	function checkPrizesView(address _user) internal view returns(uint256 _prizes) {
		//local accounting
		uint256 prizeValue;
		//push cycle prizes to persistent storage
		if (cycleOver == true && userCycleChecked[_user] == false) {
			//get minigame cycle prize was in 
			uint256 mg;
			if (cyclePrizeTokenRangeIdentified == true) {
				mg = cyclePrizeInMinigame;
			} else {
				narrowCyclePrizeView();
				mg = cyclePrizeInMinigame;
			}
			//check if user won cycle prize 
			if (cylcePrizeClaimed == false && userMiniGameTokensMax[_user][mg].length > 0) {
				//check if user won minigame 
				//loop iterations bounded to a max of 10 on buy()
				for (uint256 i = 0; i < userMiniGameTokensMin[_user][mg].length; i++) {
					if (cyclePrizeWinningNumber >= userMiniGameTokensMin[_user][mg][i] && cyclePrizeWinningNumber <= userMiniGameTokensMax[_user][mg][i]) {
						prizeValue += cycleProgressivePot;			
						break;
					}
				}
			}
		}
		//push round prizes to persistent storage
		if (userLastRoundChecked[_user] < userLastRoundInteractedWith[_user] && roundCount > userLastRoundInteractedWith[_user]) {
			//get minigame round prize was in 
			uint256 mgp;
			uint256 _ID = userLastRoundChecked[_user];
			if (roundPrizeTokenRangeIdentified[_ID] == true) {
				mgp = roundPrizeInMinigame[_ID];
			} else {
				narrowRoundPrizeView(_ID);
				mgp = roundPrizeInMinigame[_ID];
			}
			//check if user won round prize
			for (i = 0; i < userMiniGameTokensMin[_user][mgp].length; i++) {
				if (roundPrizeNumber[_ID] >= userMiniGameTokensMin[_user][mgp][i] && roundPrizeNumber[_ID] <= userMiniGameTokensMax[_user][mgp][i]) {
					prizeValue += roundPrizePot[mgp];	
					break;
				}
			}
		}
		//push minigame prizes to persistent storage
		if (userLastMiniGameChecked[_user] < userLastMiniGameInteractedWith[_user] && miniGameCount > userLastMiniGameInteractedWith[_user]) {
			//check if user won minigame 
			mg = userLastMiniGameInteractedWith[_user];
			for (i = 0; i < userMiniGameTokensMin[_user][mg].length; i++) {
				if (miniGamePrizeNumber[mg] >= userMiniGameTokensMin[_user][mg][i] && miniGamePrizeNumber[mg] <= userMiniGameTokensMax[_user][mg][i]) {
					prizeValue += miniGamePrizePot[mg];			
					break;
				}
			}
			//check if user won airdrop
			for (i = 0; i < userMiniGameTokensMin[_user][mg].length; i++) {
				if (miniGameAirdropNumber[mg] >= userMiniGameTokensMin[_user][mg][i] && miniGameAirdropNumber[mg] <= userMiniGameTokensMax[_user][mg][i]) {
					prizeValue += miniGameAirdropPot[mg];
					break;
				}
			}
		}
		return prizeValue;
	}

	//helper function for up to date front end balances without state change
	function narrowRoundPrizeView(uint256 _ID) internal view returns(uint256 _miniGameID) {
		//set up local accounting
		uint256 winningNumber = roundPrizeNumber[_ID];
		uint256 miniGameRangeMin; 
		uint256 miniGameRangeMax;
		if (_ID == 1) {
			miniGameRangeMin = 1;
			miniGameRangeMax = miniGamesPerRound;
		} else if (_ID >= 2) {
			miniGameRangeMin = _ID.mul(miniGamesPerRound);
			miniGameRangeMax = miniGameRangeMin + miniGamesPerRound - 1;
		}	
		//loop through each minigame to check prize number
		//log globaly so this only needs to be called once per prize 
	    for (uint256 i = miniGameRangeMin; i <= miniGameRangeMax; i++) {
			if (winningNumber >= miniGameTokenRangeMin[i] && winningNumber <= miniGameTokenRangeMax[i]) {
				return i;
				break;
			}
	    }		
	}

	//helper function for up to date front end balances without state change
	function narrowCyclePrizeView() internal view returns(uint256 _miniGameID) {
		//set up local accounting
		uint256 winningNumber = cyclePrizeWinningNumber;
		uint256 rnd;
		//first identify round 
	    for (uint256 i = 1; i <= roundCount; i++) {
			if (winningNumber >= roundTokenRangeMin[i] && winningNumber <= roundTokenRangeMax[i]) {
				rnd = i;
				break;
			}
	    }
	    //set up minigame local accounting 
	    uint256 miniGameRangeMin; 
			uint256 miniGameRangeMax;
			uint256 _ID = rnd;
			if (_ID == 1) {
				miniGameRangeMin = 1;
				miniGameRangeMax = miniGamesPerRound;
			} else if (_ID >= 2) {
				miniGameRangeMin = _ID.mul(miniGamesPerRound);
				miniGameRangeMax = miniGameRangeMin + miniGamesPerRound - 1;
			}	
			//loop through each minigame to check prize number
			//log globaly so this only needs to be called once per prize  
	    for (i = miniGameRangeMin; i <= miniGameRangeMax; i++) {
			if (winningNumber >= miniGameTokenRangeMin[i] && winningNumber <= miniGameTokenRangeMax[i]) {
				return i;
				break;
			}
	    }			
	}
}

Contract ABI
[{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenPriceIncrement","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cycleEnded","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"miniGamesPerCycle","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"earlyResolveACalled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cycleActiveTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentRoundPrizePot","outputs":[{"name":"_rndPrize","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"seedBreward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"roundCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGamePrizeClaimed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"admins","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGameAirdropPot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contractInfo","outputs":[{"name":"_balance","type":"uint256"},{"name":"_volume","type":"uint256"},{"name":"_totalBuys","type":"uint256"},{"name":"_totalUsers","type":"uint256"},{"name":"_tokenSupply","type":"uint256"},{"name":"_tokenPrice","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cyclePrizeWinner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGameTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cylcePrizeClaimed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"minTokensPerMiniGame","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"roundDivs","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"isAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"roundTokensActive","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cycleCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cyclePrizeWinningNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cycleStartTime","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":"_user","type":"address"}],"name":"userOddsRound","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"miniGameInfo","outputs":[{"name":"_id","type":"uint256"},{"name":"_miniGameTokens","type":"uint256"},{"name":"_miniGameTokensLeft","type":"uint256"},{"name":"_miniGamePrizePot","type":"uint256"},{"name":"_miniGameAirdropPot","type":"uint256"},{"name":"_miniGameStartTime","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"uniqueAddress","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"userOddsMiniGame","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGameSeedAawarded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"seedAreward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cycleInfo","outputs":[{"name":"_cycleComplete","type":"bool"},{"name":"_currentRound","type":"uint256"},{"name":"_currentMinigame","type":"uint256"},{"name":"_tokenSupply","type":"uint256"},{"name":"_progressivePot","type":"uint256"},{"name":"_prizeClaimed","type":"bool"},{"name":"_winningNumber","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"miniGameCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"miniGamesPerRound","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"userMiniGameTokensMax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"roundPotRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminBank","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalVolume","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGameSeedBawarded","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"roundDivsClaimed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"checkUserDivsAvailable","outputs":[{"name":"_userDivsAvailable","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cycleProgressivePot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"roundPrizePot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"userMiniGameTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"totalBuys","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGameStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"},{"name":"","type":"uint256"}],"name":"userMiniGameTokensMin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"zeroOut","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"roundPrizeClaimed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokenPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGameDivs","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGameEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGameTokensLeft","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"earlyResolveA","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getCurrentMinigamePrizePot","outputs":[{"name":"_mgPrize","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"roundTokenRangeMin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGameTokenRangeMax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"contractBalance","outputs":[{"name":"_contractBalance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminFeeRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGamePrizePot","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGamePrizeWinner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"adminBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getValueOfRemainingTokens","outputs":[{"name":"_tokenValue","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGameDivsClaimed","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"referralRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"foundationFund","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"roundEndTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cyclePrizeTokenRangeIdentified","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGameTokensActive","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"earlyResolveBCalled","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGameAirdropNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"roundPrizeInMinigame","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cyclePrizeInRound","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"roundPrizeWinner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"foundationBalance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"progressivePotRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"roundStartTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGameAirdropClaimed","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_amount","type":"uint256"},{"name":"_referral","type":"address"}],"name":"reinvest","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGameAirdropWinner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGamePrizeNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"roundPrizeNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"roundInfo","outputs":[{"name":"_id","type":"uint256"},{"name":"_roundPrize","type":"uint256"},{"name":"_roundStart","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"roundDivRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"miniGameProcessingBegun","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"earlyResolveB","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"restartMiniGame","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"miniGameAirdropRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cycleOver","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"miniGameTokenRangeMin","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"},{"name":"","type":"uint256"}],"name":"userRoundTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"foundationWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"activationTime","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"cyclePrizeInMinigame","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"roundPrizeTokenRangeIdentified","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"miniGameProcessing","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_user","type":"address"}],"name":"userOddsCycle","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"miniGamePotRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"userTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"gameActive","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_referral","type":"address"}],"name":"buy","outputs":[],"payable":true,"stateMutability":"payable","type":"function"},{"constant":false,"inputs":[],"name":"adminWithdraw","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"miniGameDivRate","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"roundTokens","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"roundTokenRangeMax","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"knownUsers","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_adminBank","type":"address"},{"name":"_foundationFund","type":"address"},{"name":"_adminTwo","type":"address"},{"name":"_adminThree","type":"address"},{"name":"_adminFour","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":true,"name":"_caller","type":"address"},{"indexed":false,"name":"_message","type":"string"}],"name":"adminWithdrew","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_caller","type":"address"},{"indexed":false,"name":"_message","type":"string"}],"name":"cycleStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_caller","type":"address"},{"indexed":true,"name":"_newAdmin","type":"address"},{"indexed":false,"name":"_message","type":"string"}],"name":"adminAdded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_caller","type":"address"},{"indexed":false,"name":"_pot","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"resolvedEarly","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_caller","type":"address"},{"indexed":false,"name":"_message","type":"string"}],"name":"processingRestarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_caller","type":"address"},{"indexed":false,"name":"_balance","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"contractDestroyed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_user","type":"address"},{"indexed":false,"name":"_tokensBought","type":"uint256"},{"indexed":true,"name":"_miniGameID","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"userBought","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_user","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"userReinvested","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_user","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"userWithdrew","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_caller","type":"address"},{"indexed":true,"name":"_miniGameID","type":"uint256"},{"indexed":false,"name":"_blockNumber","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"processingStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_caller","type":"address"},{"indexed":true,"name":"_miniGameID","type":"uint256"},{"indexed":false,"name":"_blockNumber","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"processingFinished","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_miniGameID","type":"uint256"},{"indexed":false,"name":"_newTokens","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"newMinigameStarted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_miniGameID","type":"uint256"},{"indexed":false,"name":"_winningNumber","type":"uint256"},{"indexed":false,"name":"_prize","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"miniGamePrizeAwarded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_miniGameID","type":"uint256"},{"indexed":false,"name":"_winningNumber","type":"uint256"},{"indexed":false,"name":"_prize","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"miniGameAirdropAwarded","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_roundID","type":"uint256"},{"indexed":false,"name":"_winningNumber","type":"uint256"},{"indexed":false,"name":"_prize","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"roundPrizeAwarded","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_winningNumber","type":"uint256"},{"indexed":false,"name":"_prize","type":"uint256"},{"indexed":false,"name":"_message","type":"string"}],"name":"cyclePrizeAwarded","type":"event"}]

Contract Creation Code
60806040526006805462ffffff19169055635be70e9060075560646008556103e86009556019600a818155600b919091556014600c819055600d829055600e919091556005600f8190556010556030601155601280556658d15e176280006013819055905560016017556000601855603e805460ff1916905566038d7ea4c68000604b556601c6bf52634000604c55612710604d553480156100a057600080fd5b5060405160a08062005b70833981016040908152815160208084015183850151606086015160809096015160028054600160a060020a0319908116600160a060020a03978816179091556003805482169487169490941790935560048054600181810183557f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b918201805433908816811790915560009081526005909752888720805460ff19908116831790915583548083018555830180548816968a1696871790559487528887208054861682179055825480820184558201805487169a89169a8b179055988652878620805485168a1790558154808a01909255018054909316941693841790915591815291822080549091169092179091556159a4908190620001cc90396000f3006080604052600436106104c35763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630103c92b81146105e0578063031ce89514610613578063096dfff0146106285780630a7342841461063d5780630b0246c71461065257806310b7a86d1461067b578063126fb2a314610690578063127ec78e146106a5578063127f0b3f146106ba57806313001b6f146106cf57806314bfd6d0146106e757806315c2d4ad1461071b57806315c43aaf146107335780631e8c9cc01461077b5780632092f7841461079057806320a065ce146107a857806320d83f31146107bd57806324902353146107d257806324d7806c146107ea578063263b93de1461080b578063316fda0f1461082357806331ffb9fb14610838578063335e536c1461084d5780633ccfd60b146108625780633e9f0d5214610877578063474a898b146108985780634ca8af71146108ad5780634e60321d146108c55780634f05a69f146108e657806354b21c11146108fe57806358553baa14610913578063585ba4fa14610964578063591236f5146109795780635cf16f9c1461098e5780635d9a0b27146109b55780635e49e82f146109ca5780635f81a57c146109df57806362d857d8146109f457806363d89ba414610a0c57806364ca55d014610a24578063674fa9c914610a4557806367b8222714610a5a578063684f664114610a725780636c7f3f1714610a965780637348a6b114610aab578063761cbcb814610ac35780637824407f14610aea57806379cf3a7a14610aff5780637b8ad54014610b145780637ff9b59614610b2c5780638220e71d14610b4157806382765ba814610b59578063840cb2ee14610b71578063850c1a0c14610b8957806385cc63ec14610b9e57806388c0979a14610bb357806388faeedf14610bcb5780638b7afe2e14610be35780638cece52714610bf85780638d7d646a14610c0d57806393af08a614610c255780639858befb14610c3d5780639c7336fe14610c525780639e960e0614610c67578063a053ce1f14610c7f578063a3a3382b14610c94578063a4ee8b6314610ca9578063a932ff1314610cc1578063aba5398614610cd6578063ac98f60014610cee578063acf4995214610d03578063ad57777c14610d1b578063b753739a14610d33578063b8a2167914610d48578063b8c7c65a14610d60578063be5b336914610d75578063c137a60f14610d8a578063c161269d14610da2578063c3eed29a14610dba578063c5d0f7ed14610dde578063c8aa8d8714610df6578063c9a17e4614610e0e578063cace12e614610e26578063cb7be53914610e59578063cc9345db14610e6e578063d13a7efd14610e83578063d16617ae14610e98578063d3a0216014610ead578063d3bc11fb14610ec2578063d70b6f2314610ed7578063d81c59ad14610eef578063d8c2612914610f13578063da4493f614610f28578063dd48e34714610f3d578063e13d8cfc14610f52578063e43cf7a814610f6a578063e537ceb914610f7f578063e778077614610fa0578063ed498fa814610fb5578063f020044f14610fd6578063f088d54714610feb578063f18d20be14610fff578063f49102da14611014578063fa827e2e14611029578063fb5dfc9f14611041578063fcf9f5f814611059575b333214610508576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020615959833981519152604482015290519081900360640190fd5b60065460ff1615156001148061052057506007544210155b1515610564576040805160e560020a62461bcd02815260206004820152601560248201526000805160206158d9833981519152604482015290519081900360640190fd5b601b5460ff161515600114156105d357601754601d540143116105d3576040805160e560020a62461bcd02815260206004820152602d60248201526000805160206159198339815191526044820152600080516020615939833981519152606482015290519081900360840190fd5b6105de34600061107a565b005b3480156105ec57600080fd5b50610601600160a060020a036004351661180f565b60408051918252519081900360200190f35b34801561061f57600080fd5b50610601611821565b34801561063457600080fd5b50610601611827565b34801561064957600080fd5b5061060161182d565b34801561065e57600080fd5b50610667611833565b604080519115158252519081900360200190f35b34801561068757600080fd5b50610601611841565b34801561069c57600080fd5b50610601611847565b3480156106b157600080fd5b5061060161185c565b3480156106c657600080fd5b50610601611862565b3480156106db57600080fd5b50610667600435611868565b3480156106f357600080fd5b506106ff60043561187d565b60408051600160a060020a039092168252519081900360200190f35b34801561072757600080fd5b506106016004356118a5565b34801561073f57600080fd5b506107486118b7565b604080519687526020870195909552858501939093526060850191909152608084015260a0830152519081900360c00190f35b34801561078757600080fd5b506106ff6118cb565b34801561079c57600080fd5b506106016004356118da565b3480156107b457600080fd5b506106676118ec565b3480156107c957600080fd5b506106016118fa565b3480156107de57600080fd5b50610601600435611900565b3480156107f657600080fd5b50610667600160a060020a0360043516611912565b34801561081757600080fd5b50610601600435611927565b34801561082f57600080fd5b50610601611939565b34801561084457600080fd5b5061060161193f565b34801561085957600080fd5b50610601611945565b34801561086e57600080fd5b506105de61194b565b34801561088357600080fd5b50610601600160a060020a0360043516611b3d565b3480156108a457600080fd5b50610748611ba6565b3480156108b957600080fd5b506106ff600435611be5565b3480156108d157600080fd5b50610601600160a060020a0360043516611bf3565b3480156108f257600080fd5b50610667600435611c4a565b34801561090a57600080fd5b50610601611c5f565b34801561091f57600080fd5b50610928611c65565b60408051971515885260208801969096528686019490945260608601929092526080850152151560a084015260c0830152519081900360e00190f35b34801561097057600080fd5b50610601611cb9565b34801561098557600080fd5b50610601611cbf565b34801561099a57600080fd5b50610601600160a060020a0360043516602435604435611cc5565b3480156109c157600080fd5b50610601611d02565b3480156109d657600080fd5b506106ff611d08565b3480156109eb57600080fd5b50610601611d17565b348015610a0057600080fd5b50610667600435611d1d565b348015610a1857600080fd5b50610601600435611d32565b348015610a3057600080fd5b50610601600160a060020a0360043516611d44565b348015610a5157600080fd5b50610601611d84565b348015610a6657600080fd5b50610601600435611d8a565b348015610a7e57600080fd5b50610601600160a060020a0360043516602435611d9c565b348015610aa257600080fd5b50610601611db9565b348015610ab757600080fd5b50610601600435611dbf565b348015610acf57600080fd5b50610601600160a060020a0360043516602435604435611dd0565b348015610af657600080fd5b50610601611df7565b348015610b0b57600080fd5b506105de611dfd565b348015610b2057600080fd5b50610667600435611f88565b348015610b3857600080fd5b50610601611f9d565b348015610b4d57600080fd5b50610601600435611fa3565b348015610b6557600080fd5b50610601600435611fb5565b348015610b7d57600080fd5b50610601600435611fc7565b348015610b9557600080fd5b506105de611fd9565b348015610baa57600080fd5b50610601612245565b348015610bbf57600080fd5b5061060160043561225a565b348015610bd757600080fd5b5061060160043561226c565b348015610bef57600080fd5b5061060161227e565b348015610c0457600080fd5b50610601612283565b348015610c1957600080fd5b50610601600435612289565b348015610c3157600080fd5b506106ff60043561229b565b348015610c4957600080fd5b506106016122b6565b348015610c5e57600080fd5b506106016122bc565b348015610c7357600080fd5b506106016004356122e8565b348015610c8b57600080fd5b506106016122fa565b348015610ca057600080fd5b506106ff612300565b348015610cb557600080fd5b5061060160043561230f565b348015610ccd57600080fd5b50610667612321565b348015610ce257600080fd5b50610601600435612330565b348015610cfa57600080fd5b50610667612342565b348015610d0f57600080fd5b50610601600435612351565b348015610d2757600080fd5b50610601600435612363565b348015610d3f57600080fd5b50610601612375565b348015610d5457600080fd5b506106ff60043561237b565b348015610d6c57600080fd5b50610601612396565b348015610d8157600080fd5b5061060161239c565b348015610d9657600080fd5b506106016004356123a2565b348015610dae57600080fd5b506106676004356123b4565b348015610dc657600080fd5b506105de600435600160a060020a03602435166123c9565b348015610dea57600080fd5b506106ff60043561264a565b348015610e0257600080fd5b50610601600435612665565b348015610e1a57600080fd5b50610601600435612677565b348015610e3257600080fd5b50610e3b612689565b60408051938452602084019290925282820152519081900360600190f35b348015610e6557600080fd5b506106016126be565b348015610e7a57600080fd5b506106016126c4565b348015610e8f57600080fd5b506105de6126ca565b348015610ea457600080fd5b506105de6128b5565b348015610eb957600080fd5b50610601612a66565b348015610ece57600080fd5b50610667612a6c565b348015610ee357600080fd5b50610601600435612a75565b348015610efb57600080fd5b50610601600160a060020a0360043516602435612a87565b348015610f1f57600080fd5b506105de612aa4565b348015610f3457600080fd5b50610601612bfa565b348015610f4957600080fd5b50610601612c00565b348015610f5e57600080fd5b50610667600435612c06565b348015610f7657600080fd5b50610667612c1b565b348015610f8b57600080fd5b50610601600160a060020a0360043516612c24565b348015610fac57600080fd5b50610601612c65565b348015610fc157600080fd5b50610601600160a060020a0360043516612c6b565b348015610fe257600080fd5b50610667612c7d565b6105de600160a060020a0360043516612c86565b34801561100b57600080fd5b506105de612da3565b34801561102057600080fd5b50610601612ef6565b34801561103557600080fd5b50610601600435612efc565b34801561104d57600080fd5b50610601600435612f0e565b34801561106557600080fd5b50610667600160a060020a0360043516612f20565b600080600080600080600080600080600080604b548e101515156110e8576040805160e560020a62461bcd02815260206004820152601f60248201527f796f75206d75737420627579206174206c65617374206f6e6520746f6b656e00604482015290519081900360640190fd5b336000908152605460209081526040808320601c548452909152902054600a11611182576040805160e560020a62461bcd02815260206004820152602660248201527f796f752061726520627579696e6720746f6f206f6674656e20696e207468697360448201527f20726f756e640000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b60065460ff1615801561119757506007544210155b156111a4576111a4612f35565b602f543360009081526058602052604090205410806111d35750601c5433600090815260576020526040902054105b156111e1576111e133613036565b601b5460ff16151560011480156111fd5750601754601d540143115b1561120a5761120a613048565b336000908152604f602052604090205460ff16151561128b57604e805460018181019092557f9b65e484ce3d961a557081a44c6c68a0a27eca0b88fce820bdd99c3dc223dcc701805473ffffffffffffffffffffffffffffffffffffffff1916339081179091556000908152604f60205260409020805460ff191690911790555b604b54601c546000908152602360205260409020548f9c506112b29163ffffffff61313a16565b9950898b1061130e57601c54600090815260236020526040812080549190559b5098998a999098506112ea898b63ffffffff6131e416565b336000908152605160205260409020805482019055975061130961326a565b611325565b604b54611322908c9063ffffffff6134e216565b9b505b8b6050600033600160a060020a0316600160a060020a03168152602001908152602001600020600082825401925050819055508b6052600033600160a060020a0316600160a060020a031681526020019081526020016000206000601c548152602001908152602001600020600082825401925050819055508b6053600033600160a060020a0316600160a060020a031681526020019081526020016000206000602f548152602001908152602001600020600082825401925050819055506054600033600160a060020a0316600160a060020a031681526020019081526020016000206000601c54815260200190815260200160002060425460010190806001815401808255809150509060018203906000526020600020016000909192909190915055506055600033600160a060020a0316600160a060020a031681526020019081526020016000206000601c5481526020019081526020016000208c604254019080600181540180825580915050906001820390600052602060002001600090919290919091505550601c546057600033600160a060020a0316600160a060020a0316815260200190815260200160002081905550602f546058600033600160a060020a0316600160a060020a031681526020019081526020016000208190555061152f6064611523600e548e61313a90919063ffffffff16565b9063ffffffff6134e216565b9650600160a060020a038d16158015906115525750600160a060020a038d163314155b1561157a57600160a060020a038d1660009081526051602052604090208054880190556115a6565b600160a060020a038d1615806115985750600160a060020a038d1633145b156115a65760458054880190555b6115c060646115236010548e61313a90919063ffffffff16565b6000805482019055600d549096506115e690606490611523908e9063ffffffff61313a16565b601c546000908152602b60205260409020805482019055600c5490955061161b90606490611523908e9063ffffffff61313a16565b602f546000908152603a60205260409020805482019055600a5490945061165090606490611523908e9063ffffffff61313a16565b601c546000908152602960205260409020805482019055600f5490935061168590606490611523908e9063ffffffff61313a16565b601c546000908152602a60205260409020805482019055600b549092506116ba90606490611523908e9063ffffffff61313a16565b6045805482019055601c54600090815260236020526040812054919250101561171257601c546000908152602360205260409020546116ff908d63ffffffff6131e416565b601c546000908152602360205260409020555b8b6042600082825401925050819055508b60356000602f548152602001908152602001600020600082825401925050819055508b60246000601c548152602001908152602001600020600082825401925050819055508a603f6000828254019250508190555060406000815480929190600101919050555061179333613036565b601c54604080518e8152602081018290526019818301527f612075736572206a75737420626f7567687420746f6b656e73000000000000006060820152905133917f950fd392c5fe0748dd5533b48a4a05d47aac83df8417290db0f87bc9375a8b09919081900360800190a35050505050505050505050505050565b60516020526000908152604090205481565b604c5481565b60445481565b60095481565b600654610100900460ff1681565b60425481565b602f5460009081526039602052604090205490565b60145481565b602f5481565b601e6020526000908152604090205460ff1681565b600480548290811061188b57fe5b600091825260209091200154600160a060020a0316905081565b602a6020526000908152604090205481565b603f54604054604e54604154604b54303195565b604a54600160a060020a031681565b60226020526000908152604090205481565b603e54610100900460ff1681565b604d5481565b603a6020526000908152604090205481565b60056020526000908152604090205460ff1681565b60356020526000908152604090205481565b60435481565b60465481565b60495481565b6000333214611992576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020615959833981519152604482015290519081900360640190fd5b61199b33613036565b3360009081526051602052604081205411611a00576040805160e560020a62461bcd02815260206004820152601660248201527f6e6f2062616c616e636520746f20776974686472617700000000000000000000604482015290519081900360640190fd5b3360009081526051602052604090205430311015611a8e576040805160e560020a62461bcd02815260206004820152603060248201527f796f752063616e6e6f74207769746864726177206d6f7265207468616e20746860448201527f6520636f6e747261637420686f6c647300000000000000000000000000000000606482015290519081900360840190fd5b5033600081815260516020526040808220805490839055905190929183156108fc02918491818181858888f19350505050158015611ad0573d6000803e3d6000fd5b506040805182815260208101829052600f818301527f61207573657220776974686472657700000000000000000000000000000000006060820152905133917fe813c10dc796032ac603c2fd7e519ab79d52f1985ed8fdce5d4f05ca011cabc8919081900360800190a250565b602f54600081815260356020908152604080832054600160a060020a038616845260538352818420948452939091528120549091611ba091600a9161152391600591611b94918490620186a063ffffffff61313a16565b9063ffffffff61355e16565b92915050565b601c5460008181526022602090815260408083205460238352818420546029845282852054602a85528386205494805292909420549093929192939495565b604e80548290811061188b57fe5b601c54600081815260246020908152604080832054600160a060020a038616845260528352818420948452939091528120549091611ba091600a9161152391600591611b94918490620186a063ffffffff61313a16565b60156020526000908152604090205460ff1681565b60135481565b6000806000806000806000806103e8601c541015611c8557506001611c89565b5060005b602f54601c54604154604554603e54604654959d949c50929a509098509650610100900460ff1694509092509050565b601c5481565b60085481565b605560205282600052604060002060205281600052604060002081815481101515611cec57fe5b9060005260206000200160009250925050505481565b60115481565b600254600160a060020a031681565b603f5481565b60166020526000908152604090205460ff1681565b603b6020526000908152604090205481565b6000611d4f826135c9565b611d5883613b79565b611d6184613c8e565b600160a060020a0385166000908152605160205260409020540101019050919050565b60455481565b60396020526000908152604090205481565b605260209081526000928352604080842090915290825290205481565b60405481565b602080526000908152604090205481565b605460205282600052604060002060205281600052604060002081815481101515611cec57fe5b60415481565b3360009081526005602052604090205460ff161515600114611e57576040805160e560020a62461bcd02815260206004820152601460248201526000805160206158f9833981519152604482015290519081900360640190fd5b333214611e9c576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020615959833981519152604482015290519081900360640190fd5b60445462278d00014210158015611eba5750603e5460ff1615156001145b1515611f10576040805160e560020a62461bcd02815260206004820152601f60248201527f746f6f206561726c7920746f20636c6f73652074686520636f6e747261637400604482015290519081900360640190fd5b6040805130318152602081018290526012818301527f636f6e74726163742064657374726f79656400000000000000000000000000006060820152905133917f63fdda159eb5f4ef203e133a4b723175b0e4235d131c7906ade7fdc32f5c3bf7919081900360800190a2600354600160a060020a0316ff5b60306020526000908152604090205460ff1681565b604b5481565b602b6020526000908152604090205481565b60216020526000908152604090205481565b60236020526000908152604090205481565b3360009081526005602052604090205460ff161515600114612033576040805160e560020a62461bcd02815260206004820152601460248201526000805160206158f9833981519152604482015290519081900360640190fd5b333214612078576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020615959833981519152604482015290519081900360640190fd5b60065460ff1615156001148061209057506007544210155b15156120d4576040805160e560020a62461bcd02815260206004820152601560248201526000805160206158d9833981519152604482015290519081900360640190fd5b601b5460ff1615156001141561214357601754601d54014311612143576040805160e560020a62461bcd02815260206004820152602d60248201526000805160206159198339815191526044820152600080516020615939833981519152606482015290519081900360840190fd5b601c54600090815260208052604090205462093a80014211801561216a5750601b5460ff16155b15156121e6576040805160e560020a62461bcd02815260206004820152602260248201527f6561726c795265736f6c7665412063616e6e6f742062652063616c6c6564207960448201527f6574000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b601454601354601c5460009081526029602052604081205490926122219290916122159163ffffffff6131e416565b9063ffffffff6131e416565b101561222c57600080fd5b6006805461ffff191661010017905561224361326a565b565b601c5460009081526029602052604090205490565b60366020526000908152604090205481565b60266020526000908152604090205481565b303190565b60105481565b60296020526000908152604090205481565b602d60205260009081526040902054600160a060020a031681565b60005481565b604b54601c5460009081526023602052604081205490916122e3919063ffffffff61313a16565b905090565b602c6020526000908152604090205481565b600e5481565b600354600160a060020a031681565b60336020526000908152604090205481565b603e5462010000900460ff1681565b60246020526000908152604090205481565b60065462010000900460ff1681565b60286020526000908152604090205481565b603c6020526000908152604090205481565b60485481565b603d60205260009081526040902054600160a060020a031681565b60015481565b600b5481565b60326020526000908152604090205481565b601f6020526000908152604090205460ff1681565b33321461240e576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020615959833981519152604482015290519081900360640190fd5b60065460ff1615156001148061242657506007544210155b151561246a576040805160e560020a62461bcd02815260206004820152601560248201526000805160206158d9833981519152604482015290519081900360640190fd5b601b5460ff161515600114156124d957601754601d540143116124d9576040805160e560020a62461bcd02815260206004820152602d60248201526000805160206159198339815191526044820152600080516020615939833981519152606482015290519081900360840190fd5b6124e233613036565b33600090815260516020526040902054821115612549576040805160e560020a62461bcd02815260206004820152601460248201527f696e73756666696369656e742062616c616e6365000000000000000000000000604482015290519081900360640190fd5b604b548210156125a3576040805160e560020a62461bcd02815260206004820152601f60248201527f796f75206d75737420627579206174206c65617374206f6e6520746f6b656e00604482015290519081900360640190fd5b336000908152605160205260409020546125c3908363ffffffff6131e416565b336000908152605160205260409020556125dd828261107a565b60408051838152602081018290526011818301527f612075736572207265696e7665737465640000000000000000000000000000006060820152905133917f7089cb758939a26dfd96447cfb746e9401dfad6a02f6bba6d8704e84d5142353919081900360800190a25050565b602e60205260009081526040902054600160a060020a031681565b60276020526000908152604090205481565b60386020526000908152604090205481565b6000806000602f54600260455481151561269f57fe5b602f546000908152603260205260409020549295500492509050909192565b600c5481565b601d5481565b3360009081526005602052604090205460ff161515600114612724576040805160e560020a62461bcd02815260206004820152601460248201526000805160206158f9833981519152604482015290519081900360640190fd5b333214612769576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020615959833981519152604482015290519081900360640190fd5b60065460ff610100909104161515600114801561278f575060065462010000900460ff16155b80156127a25750601b5460ff1615156001145b80156127b35750601754601d540143115b151561282f576040805160e560020a62461bcd02815260206004820152602260248201527f6561726c795265736f6c7665422063616e6e6f742062652063616c6c6564207960448201527f6574000000000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6006805462ff0000191662010000179055612848613d94565b6045546040805191825260208201819052601c828201527f746865206379636c6520776173207265736f6c766564206561726c790000000060608301525133917fd6ef6a176aa40fb33015eb650e2cfd21f3b9d3a183fd9e6387061aaac8ad6635919081900360800190a2565b3360009081526005602052604090205460ff16151560011461290f576040805160e560020a62461bcd02815260206004820152601460248201526000805160206158f9833981519152604482015290519081900360640190fd5b333214612954576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020615959833981519152604482015290519081900360640190fd5b601b5460ff16151560011480156129705750601d546101000143115b15156129eb576040805160e560020a62461bcd028152602060048201526024808201527f726573746172744d696e6947616d652063616e6e6f742062652063616c6c656460448201527f2079657400000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b6129f361326a565b6040805160208082526022908201527f6d696e692d67616d652070726f63657373696e672077617320726573746172748183015260f260020a611959026060820152905133917f206d4a37d6c0659e4ec230d287e07c594e15e276fa73a5f81640166600ab0f83919081900360800190a2565b600f5481565b603e5460ff1681565b60256020526000908152604090205481565b605360209081526000928352604080842090915290825290205481565b3360009081526005602052604081205460ff16151560011480612ad15750600354600160a060020a031633145b1515612adc57600080fd5b6000805411612b35576040805160e560020a62461bcd02815260206004820152601760248201527f7468657265206d75737420626520612062616c616e6365000000000000000000604482015290519081900360640190fd5b50600180546000918290556003546040519192600160a060020a0390911691620186a091849190818181858888f150506040805185815260208101829052602d818301527f616e2061646d696e206a75737420776974686472657720746f2074686520666f60608201527f756e646174696f6e2066756e6400000000000000000000000000000000000000608082015290513394507f95df0f66869f60dce077afdfdd5a8eae3038bfd01a988c9375ea7b81b69e1dfa93509081900360a0019150a250565b60075481565b60475481565b60316020526000908152604090205460ff1681565b601b5460ff1681565b604254600160a060020a0382166000908152605060205260408120549091611ba091600a9161152391600591611b94918490620186a063ffffffff61313a16565b600a5481565b60506020526000908152604090205481565b60065460ff1681565b333214612ccb576040805160e560020a62461bcd02815260206004820152601f6024820152600080516020615959833981519152604482015290519081900360640190fd5b60065460ff16151560011480612ce357506007544210155b1515612d27576040805160e560020a62461bcd02815260206004820152601560248201526000805160206158d9833981519152604482015290519081900360640190fd5b601b5460ff16151560011415612d9657601754601d54014311612d96576040805160e560020a62461bcd02815260206004820152602d60248201526000805160206159198339815191526044820152600080516020615939833981519152606482015290519081900360840190fd5b612da0348261107a565b50565b3360009081526005602052604081205460ff16151560011480612dd05750600254600160a060020a031633145b1515612ddb57600080fd5b6000805411612e34576040805160e560020a62461bcd02815260206004820152601760248201527f7468657265206d75737420626520612062616c616e6365000000000000000000604482015290519081900360640190fd5b50600080548180556002546040519192600160a060020a0390911691620186a091849190818181858888f1505060408051858152602081018290526028818301527f616e2061646d696e206a75737420776974686472657720746f2074686520616460608201527f6d696e2062616e6b000000000000000000000000000000000000000000000000608082015290513394507f95df0f66869f60dce077afdfdd5a8eae3038bfd01a988c9375ea7b81b69e1dfa93509081900360a0019150a250565b600d5481565b60346020526000908152604090205481565b60376020526000908152604090205481565b604f6020526000908152604090205460ff1681565b60065460ff16158015612f485750604354155b1515612fac576040805160e560020a62461bcd02815260206004820152602260248201527f746865206379636c652068617320616c7265616479206265656e207374617274604482015260f260020a61195902606482015290519081900360840190fd5b6006805460ff19166001179055612fc1613dd7565b612fc9613e41565b612fd1613fe6565b6040805160208082526018908201527f61206e6577206379636c65206a7573742073746172746564000000000000000081830152905133917f58c1ee4f9436456f2ef3c321290be0fbf76d80852237d9e31b8df5a84ddbb646919081900360600190a2565b61303f816141fc565b612da0816145e8565b601754601d540140601a5561305b614cde565b613063614e91565b601c5460009081526016602052604090205460ff1615156130b1576014543360009081526051602090815260408083208054909401909355601c5482526016905220805460ff191660011790555b6130b9613fe6565b601b805460ff19169055601880546001019055601c5460408051438152602081018290526013818301527f70726f63657373696e672066696e6973686564000000000000000000000000006060820152905133917fb3a773331914267a7262435efa9633f5701e577627af9934252fdec756030d81919081900360800190a3565b60008083151561314d57600091506131dd565b5082820282848281151561315d57fe5b04146131d9576040805160e560020a62461bcd02815260206004820152602860248201527f74686520536166654d617468206d756c7469706c69636174696f6e206368656360448201527f6b206661696c6564000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b8091505b5092915050565b600082821115613264576040805160e560020a62461bcd02815260206004820152602560248201527f74686520536166654d617468207375627472616374696f6e20636865636b206660448201527f61696c6564000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b50900390565b601b5460ff1615806132935750601b5460ff16151560011480156132935750601d546101000143115b151561330f576040805160e560020a62461bcd02815260206004820152602660248201527f7365656420412063616e6e6f7420626520726567656e6572617465642072696760448201527f6874206e6f770000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b601c54600090815260236020526040902054158061333a575060065460ff6101009091041615156001145b15156133b6576040805160e560020a62461bcd02815260206004820152602560248201527f61637469766520746f6b656e732072656d61696e20696e2074686973206d696e60448201527f6967616d65000000000000000000000000000000000000000000000000000000606482015290519081900360840190fd5b601b805460ff1916600190811790915543601d8190556000190140601955601c5411156133f257601c5460009081526021602052604090204290555b600854601c5481151561340157fe5b06151561341d57602f5460009081526033602052604090204290555b601c5460009081526015602052604090205460ff16151561346b576013543360009081526051602090815260408083208054909401909355601c5482526015905220805460ff191660011790555b601880546001019055601c5460408051438152602081018290526012818301527f70726f63657373696e67207374617274656400000000000000000000000000006060820152905133917f12df28cb5dc1acadb13f650f1febf3b8d0ad9b02fc9fe76061d528b6572d40b1919081900360800190a3565b60008080831161354a576040805160e560020a62461bcd02815260206004820152602260248201527f74686520536166654d617468206469766973696f6e20636865636b206661696c604482015260f260020a61195902606482015290519081900360840190fd5b828481151561355557fe5b04949350505050565b6000828201838110156131d9576040805160e560020a62461bcd02815260206004820152602260248201527f74686520536166654d617468206164646974696f6e20636865636b206661696c604482015260f260020a61195902606482015290519081900360840190fd5b603e546000908190819081908190819060ff16151560011480156136065750600160a060020a03871660009081526056602052604090205460ff16155b1561374a57603e5462010000900460ff1615156001141561362b57604754935061363a565b613633614ffa565b5060475493505b603e54610100900460ff161580156136735750600160a060020a0387166000908152605560209081526040808320878452909152812054115b1561374a57600092505b600160a060020a038716600090815260546020908152604080832087845290915290205483101561374a57600160a060020a038716600090815260546020908152604080832087845290915290208054849081106136d757fe5b90600052602060002001546046541015801561372e5750600160a060020a0387166000908152605560209081526040808320878452909152902080548490811061371d57fe5b906000526020600020015460465411155b1561373f576045548501945061374a565b60019092019161367d565b600160a060020a038716600090815260586020908152604080832054605a909252909120541080156137955750600160a060020a038716600090815260586020526040902054602f54115b156139035750600160a060020a0386166000908152605a602090815260408083205480845260319092529091205460ff161515600114156137e6576000818152603c60205260409020549150613802565b6137ef816150ee565b506000818152603c602052604090205491505b600092505b600160a060020a038716600090815260546020908152604080832085845290915290205483101561390357600160a060020a0387166000908152605460209081526040808320858452909152902080548490811061386157fe5b90600052602060002001546038600083815260200190815260200160002054101580156138da5750600160a060020a038716600090815260556020908152604080832085845290915290208054849081106138b857fe5b9060005260206000200154603860008381526020019081526020016000205411155b156138f8576000828152603960205260409020549490940193613903565b600190920191613807565b600160a060020a03871660009081526057602090815260408083205460599092529091205410801561394e5750600160a060020a038716600090815260576020526040902054601c54115b15613b6e57600160a060020a038716600090815260576020526040812054945092505b600160a060020a0387166000908152605460209081526040808320878452909152902054831015613a6d57600160a060020a038716600090815260546020908152604080832087845290915290208054849081106139cb57fe5b9060005260206000200154602760008681526020019081526020016000205410158015613a445750600160a060020a03871660009081526055602090815260408083208784529091529020805484908110613a2257fe5b9060005260206000200154602760008681526020019081526020016000205411155b15613a62576000848152602960205260409020549490940193613a6d565b600190920191613971565b600092505b600160a060020a0387166000908152605460209081526040808320878452909152902054831015613b6e57600160a060020a03871660009081526054602090815260408083208784529091529020805484908110613acc57fe5b9060005260206000200154602860008681526020019081526020016000205410158015613b455750600160a060020a03871660009081526055602090815260408083208784529091529020805484908110613b2357fe5b9060005260206000200154602860008681526020019081526020016000205411155b15613b63576000848152602a60205260409020549490940193613b6e565b600190920191613a72565b509295945050505050565b600160a060020a0381166000818152605a6020908152604080832054605f8352818420818552835281842054858552606084528285208286528452828520548686526062855283862083875285528386205460358652848720546012549888526053875285882085895290965293862054959692959194909392613c1692600a92611523926005909101918391600101850a63ffffffff61313a16565b9250613c47601254600a0a61152385603a60008981526020019081526020016000205461313a90919063ffffffff16565b600160a060020a0387166000908152606160209081526040808320888452909152902054909250613c7f90839063ffffffff6131e416565b90508094505b50505050919050565b600160a060020a038116600081815260596020908152604080832054605b8352818420818552835281842054858552605c8452828520828652845282852054868652605e855283862083875285528386205460228652848720546012549888526052875285882085895290965293862054959692959194909392613d2b92600a92611523926005909101918391600101850a63ffffffff61313a16565b9250613d5c601254600a0a61152385602b60008981526020019081526020016000205461313a90919063ffffffff16565b600160a060020a0387166000908152605d60209081526040808320888452909152902054909250613c7f90839063ffffffff6131e416565b601754601d540140601a55613da7614cde565b613daf614e91565b613db761518b565b613dbf6153ed565b601b805460ff19908116909155600680549091169055565b603e5460ff1615613e32576040805160e560020a62461bcd02815260206004820152601860248201527f746865206379636c652063616e6e6f74206265206f7665720000000000000000604482015290519081900360640190fd5b60438054600101905542604955565b603e5460ff1615613e9c576040805160e560020a62461bcd02815260206004820152601860248201527f746865206379636c652063616e6e6f74206265206f7665720000000000000000604482015290519081900360640190fd5b602f805460010190819055600090815260326020526040902042905560415415613f0a5760266000613eda6001601c546131e490919063ffffffff16565b81526020019081526020016000205460010160366000602f54815260200190815260200160002081905550613f1d565b602f546000908152603660205260408120555b602f546002116122435760266000613f416001601c546131e490919063ffffffff16565b81526020019081526020016000205460376000613f6a6001602f546131e490919063ffffffff16565b815260200190815260200160002081905550613fb960366000613f996001602f546131e490919063ffffffff16565b8152602001908152602001600020546041546131e490919063ffffffff16565b60346000613fd36001602f546131e490919063ffffffff16565b8152602081019190915260400160002055565b603e5460ff1615614041576040805160e560020a62461bcd02815260206004820152601860248201527f746865206379636c652063616e6e6f74206265206f7665720000000000000000604482015290519081900360640190fd5b601c805460010190819055600090815260208052604090204290556041541561408457604154601c54600090815260256020526040902060019091019055614097565b601c546000908152602560205260408120555b61409f6155b2565b601c8054600090815260226020908152604080832094909455825482528382205460238252848320556041548354835260269091529290209190915554600110156140f157604c54604b805490910190555b600854601c5481151561410057fe5b0615801561411057506001601c54115b156141525761411d61518b565b614125613e41565b602f5461413990600163ffffffff6131e416565b6601c6bf526340000266038d7ea4c6800001604b819055505b600954600101601c5481151561416457fe5b0615801561417457506001601c54115b15614181576141816153ed565b601c546000818152602260209081526040918290205482519081529081018290526014818301527f6e6577206d696e6967616d652073746172746564000000000000000000000000606082015290517fab4f8235dd6e91d2d31a0edc8c8c9fd500224f08e3ee894c6bb0c2a4dd89515a9181900360800190a2565b600160a060020a0381166000818152605760209081526040808320546058835281842054818552602284528285205460125496865260528552838620838752909452918420549094919392839261426c92600a92611523926005909101918391600101850a63ffffffff61313a16565b600160a060020a0386166000908152605b602090815260408083208884528252808320849055601254602b909252909120546142b392600a9290920a91611523919061313a565b600160a060020a0386166000818152605c60209081526040808320898452808352818420869055938352605d82528083208984528252909120549190526142fa91906131e4565b600160a060020a0386166000908152605e60209081526040808320888452909152812082905510156143fd576000848152602b6020908152604080832054600160a060020a0389168452605e835281842088855290925290912054111561435d57fe5b600160a060020a0385166000908152605e602090815260408083208784529091529020543031101561438b57fe5b600160a060020a0385166000818152605c60209081526040808320888452825280832054848452605d8352818420898552835281842055838352605e8252808320888452825280832080549084905593835260518252808320805485019055878352602c909152902080548201905591505b600083815260356020908152604080832054601254600160a060020a038a1685526053845282852088865290935292205461445192600a92611523926005909201918391600101850a63ffffffff61313a16565b600160a060020a0386166000908152605f602090815260408083208784528252808320849055601254603a9092529091205461449892600a9290920a91611523919061313a565b600160a060020a0386166000818152606060209081526040808320888452808352818420869055938352606182528083208884528252909120549190526144df91906131e4565b600160a060020a0386166000908152606260209081526040808320878452909152812082905510156145e1576000838152603a6020908152604080832054600160a060020a03891684526062835281842087855290925290912054111561454257fe5b600160a060020a03851660009081526062602090815260408083208684529091529020543031101561457057fe5b50600160a060020a03841660008181526060602090815260408083208684528252808320548484526061835281842087855283528184205583835260628252808320868452825280832080549084905593835260518252808320805485019055858352603b90915290208054820190555b5050505050565b603e5460009081908190819060ff16151560011480156146215750600160a060020a03851660009081526056602052604090205460ff16155b156147a957604754603e54909450610100900460ff161580156146655750600160a060020a0385166000908152605560209081526040808320878452909152812054115b1561478557600092505b600160a060020a038516600090815260546020908152604080832087845290915290205483101561478557600160a060020a038516600090815260546020908152604080832087845290915290208054849081106146c957fe5b9060005260206000200154604654101580156147205750600160a060020a0385166000908152605560209081526040808320878452909152902080548490811061470f57fe5b906000526020600020015460465411155b1561477a57604554600160a060020a038616600090815260516020526040902080549091019055603e805461ff001916610100179055604a805473ffffffffffffffffffffffffffffffffffffffff191633179055614785565b60019092019161466f565b600160a060020a0385166000908152605660205260409020805460ff191660011790555b600160a060020a0385166000908152605860209081526040808320548352603090915290205460ff161580156148045750600160a060020a0385166000908152605860209081526040808320548352603190915290205460ff165b156149a757505050600160a060020a038216600090815260586020908152604080832054808452603c9092528220545b600160a060020a038516600090815260546020908152604080832084845290915290205483101561498157600160a060020a0385166000908152605460209081526040808320848452909152902080548490811061488e57fe5b90600052602060002001546038600084815260200190815260200160002054101580156149075750600160a060020a038516600090815260556020908152604080832084845290915290208054849081106148e557fe5b9060005260206000200154603860008481526020019081526020016000205411155b1561497657600081815260396020908152604080832054600160a060020a0389168452605183528184208054909101905584835260308252808320805460ff19166001179055603d9091529020805473ffffffffffffffffffffffffffffffffffffffff191633179055614981565b600190920191614834565b600160a060020a038516600090815260586020908152604080832054605a909252909120555b600160a060020a0385166000908152605760209081526040808320546059909252909120541080156149f25750600160a060020a038516600090815260576020526040902054601c54115b156145e157600160a060020a038516600090815260576020526040812054945092505b600160a060020a0385166000908152605460209081526040808320878452909152902054831015614b6257600160a060020a03851660009081526054602090815260408083208784529091529020805484908110614a6f57fe5b9060005260206000200154602760008681526020019081526020016000205410158015614ae85750600160a060020a03851660009081526055602090815260408083208784529091529020805484908110614ac657fe5b9060005260206000200154602760008681526020019081526020016000205411155b15614b5757600084815260296020908152604080832054600160a060020a03891684526051835281842080549091019055868352601e8252808320805460ff19166001179055602d9091529020805473ffffffffffffffffffffffffffffffffffffffff191633179055614b62565b600190920191614a15565b600092505b600160a060020a0385166000908152605460209081526040808320878452909152902054831015614cb457600160a060020a03851660009081526054602090815260408083208784529091529020805484908110614bc157fe5b9060005260206000200154602860008681526020019081526020016000205410158015614c3a5750600160a060020a03851660009081526055602090815260408083208784529091529020805484908110614c1857fe5b9060005260206000200154602860008681526020019081526020016000205411155b15614ca9576000848152602a6020908152604080832054600160a060020a03891684526051835281842080549091019055868352601f8252808320805460ff19166001179055602e9091529020805473ffffffffffffffffffffffffffffffffffffffff191633179055614cb4565b600190920191614b67565b50505050600160a060020a0316600090815260576020908152604080832054605990925290912055565b601854601954601a54604080516020808201959095528082019390935260608084019290925280518084039092018252608090920191829052805160009384939182918401908083835b60208310614d475780518252601f199092019160209182019101614d28565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120601c546000908152602383528481205460229093529390932054929650614daa9450614d9d935090506131e4565b839063ffffffff61568016565b601c805460009081526025602090815260408083205460278352818420908601905560145460135494548452602990925290912054929350614df8929091612215919063ffffffff6131e416565b601c80546000908152602960209081526040808320949094556018805460010190559154808252908390205483518581529283015260608284018190526016908301527f6d696e6967616d65207072697a65206177617264656400000000000000000000608083015291517fcda8e84b652675a8e341621d30185dfcf07eb61bca2b1fb4fcd9b4458a3d144e9181900360a00190a25050565b601854601954601a54604080516020808201959095528082019390935260608084019290925280518084039092018252608090920191829052805160009384939182918401908083835b60208310614efa5780518252601f199092019160209182019101614edb565b51815160209384036101000a60001901801990921691161790526040805192909401829003909120601c546000908152602383528481205460229093529390932054929650614f509450614d9d935090506131e4565b601c80546000908152602560209081526040808320546028835281842090860190556018805460010181559354808452602a8352928190205481518681529283015260608282018190528201939093527f6d696e6967616d652061697264726f702061776172646564000000000000000060808201529151929350917f6d2f5773ccbf41f3a3da493acf5a64a6d22a22e0eaca32d794683d1c72dae0099181900360a00190a25050565b6046546000908160018180805b602f54841161505457600084815260366020526040902054861080159061503c57506000848152603760205260409020548611155b1561504957839450615054565b600190930192615007565b5083600181141561506d57600192506008549150615096565b600281106150965760085461508990829063ffffffff61313a16565b9250600160085484010391505b8293505b8184116150e55760008481526025602052604090205486108015906150cd57506000848152602660205260409020548611155b156150da578396506150e5565b60019093019261509a565b50505050505090565b600081815260386020526040812054818080600186141561511757600192506008549150615140565b600286106151405760085461513390879063ffffffff61313a16565b9250600160085484010391505b50815b818111613c8557600081815260256020526040902054841080159061517657506000818152602660205260409020548411155b1561518357809450613c85565b600101615143565b6000806000806000601854601954601a54604051602001808481526020018360001916600019168152602001826000191660001916815260200193505050506040516020818303038152906040526040518082805190602001908083835b602083106152085780518252601f1990920191602091820191016151e9565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902094506001601c54111561529357602f54600090815260366020526040812054601c5461528c9260269161526f90600163ffffffff6131e416565b8152602001908152602001600020546131e490919063ffffffff16565b93506152cd565b601c54600114156152cd57600160005260246020527fbbbb3b1da0cb0951f34c5e9db4606f934b7367b5284f29163e9e6fe67e1e97d65493505b6152dd858563ffffffff61568016565b602f546000908152603660209081526040808320546038909252909120908201905560115460455491945061531f91606491611523919063ffffffff61313a16565b915061533c6064611523600460455461313a90919063ffffffff16565b6001805482019055602f8054600090815260396020526040902084905560458490555490915061536b906156ec565b50601880546001019055602f54604080518581526020810185905260608183018190526013908201527f726f756e64207072697a65206177617264656400000000000000000000000000608082015290517ff3315f3af360a6c6236052caa1610cb885187b421c2746f6c6c762f9a5fbb8349181900360a00190a25050505050565b601854601954601a54604080516020808201959095528082019390935260608084019290925280518084039092018252608090920191829052805160009384939182918401908083835b602083106154565780518252601f199092019160209182019101615437565b6001836020036101000a038019825116818451168082178552505050505050905001915050604051809103902091506001601c5411156154be57601c54600019016000908152602660205260409020546154b790839063ffffffff61568016565b9050615509565b601c546001141561550957600160005260246020527fbbbb3b1da0cb0951f34c5e9db4606f934b7367b5284f29163e9e6fe67e1e97d65461550690839063ffffffff61568016565b90505b60468190556006805460ff1990811690915542604455603e805490911660011790556155336157c7565b5060188054600101905560455460408051838152602081019290925260608282018190526013908301527f6379636c65207072697a652061776172646564000000000000000000000000006080830152517f31931b65ed09497bdc80c1adff693bb082fa9136c0ffe287a6379d29a56384369181900360a00190a15050565b601854601954601a54604080516020808201959095528082019390935260608084019290925280518084039092018252608090920191829052805160009384938493849390928291908401908083835b602083106156215780518252601f199092019160209182019101615602565b5181516020939093036101000a60001901801990911692169190911790526040519201829003909120604d5490965061565f93508692509050615680565b604d5460418054929091019182019055601880546001019055949350505050565b60008115156156d9576040805160e560020a62461bcd02815260206004820181905260248201527f74686520536166654d617468206d6f64756c6f20636865636b206661696c6564604482015290519081900360640190fd5b81838115156156e457fe5b069392505050565b600080600080846001141561570957600192506008549150615732565b600285106157325760085461572590869063ffffffff61313a16565b9250600160085484010391505b50815b8181116157bf5760008181526025602090815260408083205488845260389092529091205410801590615784575060008181526026602090815260408083205488845260389092529091205411155b156157b7576000858152603c60208181526040808420858155603183529320805460ff19166001179055525493506157bf565b600101615735565b505050919050565b600060018180805b602f5484116158225760008481526036602052604090205460465410801590615808575060008481526037602052604090205460465411155b15615817576048849055615822565b6001909301926157cf565b50604854600181141561583d57600192506008549150615866565b600281106158665760085461585990829063ffffffff61313a16565b9250600160085484010391505b8293505b8184116158d157600084815260256020526040902054604654108015906158a1575060008481526026602052604090205460465411155b156158c6576047849055603e805462ff000019166201000017905592935083926158d1565b60019093019261586a565b505050509056007468652067616d65206d757374206265206f70656e0000000000000000000000796f75206d75737420626520616e2061646d696e00000000000000000000000074686520726f756e64206973207374696c6c2070726f63657373696e672e2074727920616761696e20736f6f6e000000000000000000000000000000000000006f6e6c7920617070726f76656420636f6e74726163747320616c6c6f77656400a165627a7a7230582050143ac61dbe89807838e6302ec4835ca817e4b37ae79d3aaec7eda5d25f4f2f00290000000000000000000000006e226310db63ac3701f657bcc62c153c1aaa3004000000000000000000000000b32bb54cfec824f51e77199248e35d7e3b917ace0000000000000000000000002597afe84661669e590016e51f8fb0059d1ad63e0000000000000000000000002e6c1b2b4f7307dc588c289c9150deeb1a66b73d00000000000000000000000087395d203b35834f79b46cd16313e6027ae4c9d4


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

-----Encoded View---------------
5 Constructor Arguments found :
Arg [0] : 0000000000000000000000006e226310db63ac3701f657bcc62c153c1aaa3004
Arg [1] : 000000000000000000000000b32bb54cfec824f51e77199248e35d7e3b917ace
Arg [2] : 0000000000000000000000002597afe84661669e590016e51f8fb0059d1ad63e
Arg [3] : 0000000000000000000000002e6c1b2b4f7307dc588c289c9150deeb1a66b73d
Arg [4] : 00000000000000000000000087395d203b35834f79b46cd16313e6027ae4c9d4


   Swarm Source:
bzzr://50143ac61dbe89807838e6302ec4835ca817e4b37ae79d3aaec7eda5d25f4f2f
Block Age transaction Difficulty GasUsed Reward
Block Age Uncle Number Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.