ERC-20
Overview
Max Total Supply
21,000,000 SKO
Holders
105
Market
Onchain Market Cap
$0.00
Circulating Supply Market Cap
-
Other Info
Token Contract (WITH 8 Decimals)
Balance
55,795.01847736 SKOValue
$0.00Loading...
Loading
Loading...
Loading
Loading...
Loading
# | Exchange | Pair | Price | 24H Volume | % Volume |
---|
Contract Name:
AABitcoinToken
Compiler Version
v0.4.24+commit.e67f0147
Optimization Enabled:
No with 200 runs
Other Settings:
default evmVersion
Contract Source Code (Solidity)
/** *Submitted for verification at Etherscan.io on 2018-06-12 */ pragma solidity ^0.4.18; // To fix the original Skorch token contract a snapshot was taken at block 5772500. Snapshot is applied here library SafeMath { function add(uint a, uint b) internal pure returns (uint c) { c = a + b; require(c >= a); } function sub(uint a, uint b) internal pure returns (uint c) { require(b <= a); c = a - b; } function mul(uint a, uint b) internal pure returns (uint c) { c = a * b; require(a == 0 || c / a == b); } function div(uint a, uint b) internal pure returns (uint c) { require(b > 0); c = a / b; } } library ExtendedMath { //return the smaller of the two inputs (a or b) function limitLessThan(uint a, uint b) internal pure returns (uint c) { if(a > b) return b; return a; } } contract ERC20Interface { function totalSupply() public constant returns (uint); function balanceOf(address tokenOwner) public constant returns (uint balance); function allowance(address tokenOwner, address spender) public constant returns (uint remaining); function transfer(address to, uint tokens) public returns (bool success); function approve(address spender, uint tokens) public returns (bool success); function transferFrom(address from, address to, uint tokens) public returns (bool success); event Transfer(address indexed from, address indexed to, uint tokens); event Approval(address indexed tokenOwner, address indexed spender, uint tokens); } contract ApproveAndCallFallBack { function receiveApproval(address from, uint256 tokens, address token, bytes data) public; } contract Owned { address public owner; address public newOwner; event OwnershipTransferred(address indexed _from, address indexed _to); constructor() public { owner = msg.sender; } modifier onlyOwner { require(msg.sender == owner); _; } function transferOwnership(address _newOwner) public onlyOwner { newOwner = _newOwner; } function acceptOwnership() public { require(msg.sender == newOwner); emit OwnershipTransferred(owner, newOwner); owner = newOwner; newOwner = address(0); } } contract AABitcoinToken is ERC20Interface, Owned { using SafeMath for uint; using ExtendedMath for uint; string public symbol; string public name; uint8 public decimals; uint public _totalSupply; uint public latestDifficultyPeriodStarted; uint public epochCount; uint public _BLOCKS_PER_READJUSTMENT = 1024; uint public _MINIMUM_TARGET = 2**16; uint public _MAXIMUM_TARGET = 2**234; uint public miningTarget; bytes32 public challengeNumber; //generate a new one when a new reward is minted uint public rewardEra; uint public maxSupplyForEra; address public lastRewardTo; uint public lastRewardAmount; uint public lastRewardEthBlockNumber; bool locked = false; mapping(bytes32 => bytes32) solutionForChallenge; uint public tokensMinted; uint internal GLOBAL_START_TIMER; mapping(address => uint) balances; mapping(address => mapping(address => uint)) allowed; mapping(address => uint256) timer; // timer to check PoS // how to calculate doubleUnit: // specify how much percent increase you want per year // e.g. 130% -> 2.3 multiplier every year // now divide (1 years) by LOG(2.3) where LOG is the natural logarithm (not LOG10) // in this case LOG(2.3) is 0.83290912293 // hence multiplying by 1/0.83290912293 is the same // 31536000 = 1 years (to prevent deprecated warning in solc) uint256 doubleUnit = (31536000) * 3.811; event Mint(address indexed from, uint reward_amount, uint epochCount, bytes32 newChallengeNumber); event PoS(address indexed from, uint reward_amount); constructor() public onlyOwner() { symbol = "SKO"; name = "Skorch Token"; decimals = 8; // uncomment this to test //balances[msg.sender] = (20000) * (10 ** uint(decimals)); // change 20000 to some lower number than 20000 //to see you will not get PoS tokens if you have less than 20000 tokens //timer[msg.sender] = now - (1 years); _totalSupply = 21000000 * 10**uint(decimals); if(locked) revert(); locked = true; tokensMinted = 0; rewardEra = 0; maxSupplyForEra = _totalSupply.div(2); miningTarget = _MAXIMUM_TARGET; latestDifficultyPeriodStarted = block.number; //_startNewMiningEpoch(); all relevant vars are set below GLOBAL_START_TIMER = now; challengeNumber = 0x85d676fa25011d060e3c7405f6e55de1921372c788bfaaed75c00b63a63c510d; epochCount = 6231; rewardEra = 0; maxSupplyForEra = _totalSupply - _totalSupply.div( 2**(rewardEra + 1)); miningTarget = 431359146674410236714672241392314090778194310760649159697657763988184; // token balances as of block 5772500 balances[0xbf45f4280cfbe7c2d2515a7d984b8c71c15e82b7] = 2000 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xbf45f4280cfbe7c2d2515a7d984b8c71c15e82b7, 2000 * 10 ** uint(decimals)); balances[0xb38094d492af4fffff760707f36869713bfb2250] = 20050 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xb38094d492af4fffff760707f36869713bfb2250, 20050 * 10 ** uint(decimals)); balances[0x8f3dd21c9334980030ba95c37565ba25df9574cd] = 200 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x8f3dd21c9334980030ba95c37565ba25df9574cd, 200 * 10 ** uint(decimals)); balances[0xaa7a7c2decb180f68f11e975e6d92b5dc06083a6] = 1150 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xaa7a7c2decb180f68f11e975e6d92b5dc06083a6, 1150 * 10 ** uint(decimals)); balances[0x07a68bd44a526e09b8dbfc7085b265450362b61a] = 1000 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x07a68bd44a526e09b8dbfc7085b265450362b61a, 1000 * 10 ** uint(decimals)); balances[0x4e27a678c8dc883035c542c83124e7e3f39842b0] = 350 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x4e27a678c8dc883035c542c83124e7e3f39842b0, 350 * 10 ** uint(decimals)); balances[0x0102f6ca7278e7d96a6d649da30bfe07e87155a3] = 2800 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x0102f6ca7278e7d96a6d649da30bfe07e87155a3, 2800 * 10 ** uint(decimals)); balances[0xfc313f77c2cbc6cd0dd82b9a0ed1620ba906e46d] = 1900 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xfc313f77c2cbc6cd0dd82b9a0ed1620ba906e46d, 1900 * 10 ** uint(decimals)); balances[0xfec55e783595682141c4b5e6ad9ea605f1683844] = 100 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xfec55e783595682141c4b5e6ad9ea605f1683844, 100 * 10 ** uint(decimals)); balances[0x167e733de0861f0d61b179d3d1891e6b90587732] = 20200 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x167e733de0861f0d61b179d3d1891e6b90587732, 20200 * 10 ** uint(decimals)); balances[0x22dd964193df4de2e6954a2a9d9cbbd6f44f0b28] = 7650 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x22dd964193df4de2e6954a2a9d9cbbd6f44f0b28, 7650 * 10 ** uint(decimals)); balances[0xd2b752bec2fe5c7e5cc600eb5ce465a210cb857a] = 3750 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xd2b752bec2fe5c7e5cc600eb5ce465a210cb857a, 3750 * 10 ** uint(decimals)); balances[0xe14cffadb6bbad8de69bd5ba214441a9582ec548] = 700 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xe14cffadb6bbad8de69bd5ba214441a9582ec548, 700 * 10 ** uint(decimals)); balances[0xfe5a94e5bab010f52ae8fd8589b7d0a7b0b433ae] = 20000 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xfe5a94e5bab010f52ae8fd8589b7d0a7b0b433ae, 20000 * 10 ** uint(decimals)); balances[0xae7c95f2192c739edfb16412a6112a54f8965305] = 550 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xae7c95f2192c739edfb16412a6112a54f8965305, 550 * 10 ** uint(decimals)); balances[0x30385a99e66469a8c0bf172896758dd4595704a9] = 50 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x30385a99e66469a8c0bf172896758dd4595704a9, 50 * 10 ** uint(decimals)); balances[0x219fdb55ea364fcaf29aaa87fb1c45ba7db8128e] = 200 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x219fdb55ea364fcaf29aaa87fb1c45ba7db8128e, 200 * 10 ** uint(decimals)); balances[0xab4485ca338b91087a09ae8bc141648bb1c6e967] = 1100 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xab4485ca338b91087a09ae8bc141648bb1c6e967, 1100 * 10 ** uint(decimals)); balances[0xafaf9a165408737e11191393fe695c1ebc7a5429] = 35500 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xafaf9a165408737e11191393fe695c1ebc7a5429, 35500 * 10 ** uint(decimals)); balances[0xebd76aa221968b8ba9cdd6e6b4dbb889140088a3] = 3050 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xebd76aa221968b8ba9cdd6e6b4dbb889140088a3, 3050 * 10 ** uint(decimals)); balances[0x26b8c7606e828a509bbb208a0322cf960c17b225] = 4300 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x26b8c7606e828a509bbb208a0322cf960c17b225, 4300 * 10 ** uint(decimals)); balances[0x9b8957d1ac592bd388dcde346933ac1269b7c314] = 1050 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x9b8957d1ac592bd388dcde346933ac1269b7c314, 1050 * 10 ** uint(decimals)); balances[0xad9f11d1dd6d202243473a0cdae606308ab243b4] = 1000 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xad9f11d1dd6d202243473a0cdae606308ab243b4, 1000 * 10 ** uint(decimals)); balances[0x2f0d5a1d6bb5d7eaa0eaad39518621911a4a1d9f] = 200 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x2f0d5a1d6bb5d7eaa0eaad39518621911a4a1d9f, 200 * 10 ** uint(decimals)); balances[0xfbc2b315ac1fba765597a92ff100222425ce66fd] = 6000 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xfbc2b315ac1fba765597a92ff100222425ce66fd, 6000 * 10 ** uint(decimals)); balances[0x0a26d9674c2a1581ada4316e3f5960bb70fb0fb2] = 5100 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x0a26d9674c2a1581ada4316e3f5960bb70fb0fb2, 5100 * 10 ** uint(decimals)); balances[0xdc680cc11a535e45329f49566850668fef34054f] = 9750 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xdc680cc11a535e45329f49566850668fef34054f, 9750 * 10 ** uint(decimals)); balances[0x9fc5b0edc0309745c6974f1a6718029ea41a4d6e] = 400 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x9fc5b0edc0309745c6974f1a6718029ea41a4d6e, 400 * 10 ** uint(decimals)); balances[0xe0c059faabce16dd5ddb4817f427f5cf3b40f4c4] = 1800 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xe0c059faabce16dd5ddb4817f427f5cf3b40f4c4, 1800 * 10 ** uint(decimals)); balances[0x85d66f3a8da35f47e03d6bb51f51c2d70a61e12e] = 13200 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x85d66f3a8da35f47e03d6bb51f51c2d70a61e12e, 13200 * 10 ** uint(decimals)); balances[0xa5b3725e37431dc6a103961749cb9c98954202cd] = 4400 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xa5b3725e37431dc6a103961749cb9c98954202cd, 4400 * 10 ** uint(decimals)); balances[0xf3552d4018fad9fcc390f5684a243f7318d8b570] = 2500 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xf3552d4018fad9fcc390f5684a243f7318d8b570, 2500 * 10 ** uint(decimals)); balances[0x1fca39ed4f19edd12eb274dc467c099eb5106a13] = 2750 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x1fca39ed4f19edd12eb274dc467c099eb5106a13, 2750 * 10 ** uint(decimals)); balances[0xf95f528d7c25904f15d4154e45eab8e5d4b6c160] = 350 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xf95f528d7c25904f15d4154e45eab8e5d4b6c160, 350 * 10 ** uint(decimals)); balances[0xa62178f120cccba370d2d2d12ec6fb1ff276d706] = 20250 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xa62178f120cccba370d2d2d12ec6fb1ff276d706, 20250 * 10 ** uint(decimals)); balances[0xc446073e0c00a1138812b3a99a19df3cb8ace70d] = 20050 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xc446073e0c00a1138812b3a99a19df3cb8ace70d, 20050 * 10 ** uint(decimals)); balances[0xfcc6bf3369077e22a90e05ad567744bf5109e4d4] = 300 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xfcc6bf3369077e22a90e05ad567744bf5109e4d4, 300 * 10 ** uint(decimals)); balances[0x25e5c43d5f53ee1a7dd5ad7560348e29baea3048] = 50 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x25e5c43d5f53ee1a7dd5ad7560348e29baea3048, 50 * 10 ** uint(decimals)); balances[0x4d01d11697f00097064d7e05114ecd3843e82867] = 6050 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x4d01d11697f00097064d7e05114ecd3843e82867, 6050 * 10 ** uint(decimals)); balances[0xe585ba86b84283f0f1118041837b06d03b96885e] = 1350 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xe585ba86b84283f0f1118041837b06d03b96885e, 1350 * 10 ** uint(decimals)); balances[0x21a6043877a0ac376b7ca91195521de88d440eba] = 1600 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x21a6043877a0ac376b7ca91195521de88d440eba, 1600 * 10 ** uint(decimals)); balances[0xe8a01b61f80130aefda985ee2e9c6899a57a17c8] = 1750 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xe8a01b61f80130aefda985ee2e9c6899a57a17c8, 1750 * 10 ** uint(decimals)); balances[0x8d12a197cb00d4747a1fe03395095ce2a5cc6819] = 46800 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x8d12a197cb00d4747a1fe03395095ce2a5cc6819, 46800 * 10 ** uint(decimals)); balances[0xa1a3e2fcc1e7c805994ca7309f9a829908a18b4c] = 4100 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xa1a3e2fcc1e7c805994ca7309f9a829908a18b4c, 4100 * 10 ** uint(decimals)); balances[0x51138ab5497b2c3d85be94d23905f5ead9e533a7] = 50 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x51138ab5497b2c3d85be94d23905f5ead9e533a7, 50 * 10 ** uint(decimals)); balances[0x559a922941f84ebe6b9f0ed58e3b96530614237e] = 650 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x559a922941f84ebe6b9f0ed58e3b96530614237e, 650 * 10 ** uint(decimals)); balances[0xe539a7645d2f33103c89b5b03abb422a163b7c73] = 600 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xe539a7645d2f33103c89b5b03abb422a163b7c73, 600 * 10 ** uint(decimals)); balances[0x4ffe17a2a72bc7422cb176bc71c04ee6d87ce329] = 4300 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x4ffe17a2a72bc7422cb176bc71c04ee6d87ce329, 4300 * 10 ** uint(decimals)); balances[0x88058d4d90cc9d9471509e5be819b2be361b51c6] = 9450 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x88058d4d90cc9d9471509e5be819b2be361b51c6, 9450 * 10 ** uint(decimals)); balances[0x0000bb50ee5f5df06be902d1f9cb774949c337ed] = 1150 * 10 ** uint(decimals); emit Transfer(address(0x0), 0x0000bb50ee5f5df06be902d1f9cb774949c337ed, 1150 * 10 ** uint(decimals)); balances[0xd7dd80404d3d923c8a40c47c1f61aacbccb4191e] = 6450 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xd7dd80404d3d923c8a40c47c1f61aacbccb4191e, 6450 * 10 ** uint(decimals)); balances[0xf2119e50578b3dfa248652c4fbec76b9e415acb2] = 100 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xf2119e50578b3dfa248652c4fbec76b9e415acb2, 100 * 10 ** uint(decimals)); balances[0xd2470aacd96242207f06111819111d17ca055dfb] = 9450 * 10 ** uint(decimals); emit Transfer(address(0x0), 0xd2470aacd96242207f06111819111d17ca055dfb, 9450 * 10 ** uint(decimals)); // test lines //balances[msg.sender] = 1000 * 10 ** uint(decimals); //timer[msg.sender ] = ( now - ( 1 years)); } function mint(uint256 nonce, bytes32 challenge_digest) public returns (bool success) { bytes32 digest = keccak256(challengeNumber, msg.sender, nonce ); if (digest != challenge_digest) revert(); if(uint256(digest) > miningTarget) revert(); bytes32 solution = solutionForChallenge[challengeNumber]; solutionForChallenge[challengeNumber] = digest; if(solution != 0x0) revert(); //prevent the same answer from awarding twice _claimTokens(msg.sender); timer[msg.sender]=now; uint reward_amount = getMiningReward(); balances[msg.sender] = balances[msg.sender].add(reward_amount); tokensMinted = tokensMinted.add(reward_amount); assert(tokensMinted <= maxSupplyForEra); lastRewardTo = msg.sender; lastRewardAmount = reward_amount; lastRewardEthBlockNumber = block.number; _startNewMiningEpoch(); emit Mint(msg.sender, reward_amount, epochCount, challengeNumber ); emit Transfer(address(0x0), msg.sender, reward_amount); return true; } function _startNewMiningEpoch() internal { if( tokensMinted.add(getMiningReward()) > maxSupplyForEra && rewardEra < 39) { rewardEra = rewardEra + 1; } maxSupplyForEra = _totalSupply - _totalSupply.div( 2**(rewardEra + 1)); epochCount = epochCount.add(1); if(epochCount % _BLOCKS_PER_READJUSTMENT == 0) { _reAdjustDifficulty(); } challengeNumber = block.blockhash(block.number - 1); } function _reAdjustDifficulty() internal { uint ethBlocksSinceLastDifficultyPeriod = block.number - latestDifficultyPeriodStarted; uint epochsMined = _BLOCKS_PER_READJUSTMENT; uint targetEthBlocksPerDiffPeriod = epochsMined * 60; //should be 60 times slower than ethereum if( ethBlocksSinceLastDifficultyPeriod < targetEthBlocksPerDiffPeriod ) { uint excess_block_pct = (targetEthBlocksPerDiffPeriod.mul(100)).div( ethBlocksSinceLastDifficultyPeriod ); uint excess_block_pct_extra = excess_block_pct.sub(100).limitLessThan(1000); miningTarget = miningTarget.sub(miningTarget.div(2000).mul(excess_block_pct_extra)); //by up to 50 % }else{ uint shortage_block_pct = (ethBlocksSinceLastDifficultyPeriod.mul(100)).div( targetEthBlocksPerDiffPeriod ); uint shortage_block_pct_extra = shortage_block_pct.sub(100).limitLessThan(1000); //always between 0 and 1000 miningTarget = miningTarget.add(miningTarget.div(2000).mul(shortage_block_pct_extra)); //by up to 50 % } latestDifficultyPeriodStarted = block.number; if(miningTarget < _MINIMUM_TARGET) //very difficult { miningTarget = _MINIMUM_TARGET; } if(miningTarget > _MAXIMUM_TARGET) //very easy { miningTarget = _MAXIMUM_TARGET; } } function getChallengeNumber() public constant returns (bytes32) { return challengeNumber; } function getMiningDifficulty() public constant returns (uint) { return _MAXIMUM_TARGET.div(miningTarget); } function getMiningTarget() public constant returns (uint) { return miningTarget; } function getMiningReward() public constant returns (uint) { return (50 * 10**uint(decimals) ).div( 2**rewardEra ) ; } function getMintDigest(uint256 nonce, bytes32 challenge_digest, bytes32 challenge_number) public view returns (bytes32 digesttest) { bytes32 digest = keccak256(challenge_number,msg.sender,nonce); return digest; } function checkMintSolution(uint256 nonce, bytes32 challenge_digest, bytes32 challenge_number, uint testTarget) public view returns (bool success) { bytes32 digest = keccak256(challenge_number,msg.sender,nonce); if(uint256(digest) > testTarget) revert(); return (digest == challenge_digest); } function totalSupply() public constant returns (uint) { return _totalSupply; } function balanceOf(address tokenOwner) public constant returns (uint balance) { return balances[tokenOwner] + _getPoS(tokenOwner); // add unclaimed pos tokens } function transfer(address to, uint tokens) public returns (bool success) { _claimTokens(msg.sender); _claimTokens(to); timer[msg.sender] = now; timer[to] = now; balances[msg.sender] = balances[msg.sender].sub(tokens); balances[to] = balances[to].add(tokens); emit Transfer(msg.sender, to, tokens); return true; } function approve(address spender, uint tokens) public returns (bool success) { allowed[msg.sender][spender] = tokens; emit Approval(msg.sender, spender, tokens); return true; } function transferFrom(address from, address to, uint tokens) public returns (bool success) { _claimTokens(from); _claimTokens(to); timer[from] = now; timer[to] = now; balances[from] = balances[from].sub(tokens); allowed[from][msg.sender] = allowed[from][msg.sender].sub(tokens); balances[to] = balances[to].add(tokens); emit Transfer(from, to, tokens); return true; } function approveAndCall(address spender, uint tokens, bytes data) public returns (bool success) { allowed[msg.sender][spender] = tokens; emit Approval(msg.sender, spender, tokens); ApproveAndCallFallBack(spender).receiveApproval(msg.sender, tokens, this, data); return true; } function allowance(address tokenOwner, address spender) public constant returns (uint remaining) { return allowed[tokenOwner][spender]; } function () public payable { revert(); } function transferAnyERC20Token(address tokenAddress, uint tokens) public onlyOwner returns (bool success) { return ERC20Interface(tokenAddress).transfer(owner, tokens); } function claimTokens() public { _claimTokens(msg.sender); timer[msg.sender] = now; } function _claimTokens(address target) internal{ if (timer[target] == 0){ // russian hackers BTFO if (balances[target] > 0){ // timer is handled in _getPoS } else{ return; } } if (timer[target] == now){ // 0 seconds passed, 0 tokens gotten via PoS // return so no gas waste return; } uint256 totalTkn = _getPoS(target); if (totalTkn > 0){ balances[target] = balances[target].add(totalTkn); _totalSupply.add(totalTkn); emit PoS(target, totalTkn); } //timer[target] = now; every time you claim tokens this timer is set. this is to prevent people claiming 0 tokens and then setting their timer emit Transfer(address(0x0), target, totalTkn); } function _getPoS(address target) internal view returns (uint256){ int ONE_SECOND = 0x10000000000000000; uint TIME = timer[target]; if (TIME == 0){ TIME = GLOBAL_START_TIMER; } int PORTION_SCALED = (int(now - TIME) * ONE_SECOND) / int(doubleUnit); uint256 exp = fixedExp(PORTION_SCALED); return ((balances[target].mul(exp)) / uint(one)).sub(balances[target]); } int256 constant ln2 = 0x0b17217f7d1cf79ac; int256 constant ln2_64dot5= 0x2cb53f09f05cc627c8; int256 constant one = 0x10000000000000000; int256 constant c2 = 0x02aaaaaaaaa015db0; int256 constant c4 = -0x000b60b60808399d1; int256 constant c6 = 0x0000455956bccdd06; int256 constant c8 = -0x000001b893ad04b3a; function fixedExp(int256 a) public pure returns (uint256 exp) { int256 scale = (a + (ln2_64dot5)) / ln2 - 64; a -= scale*ln2; // The polynomial R = 2 + c2*x^2 + c4*x^4 + ... // approximates the function x*(exp(x)+1)/(exp(x)-1) // Hence exp(x) = (R(x)+x)/(R(x)-x) int256 z = (a*a) / one; int256 R = ((int256)(2) * one) + (z*(c2 + (z*(c4 + (z*(c6 + (z*c8/one))/one))/one))/one); exp = (uint256) (((R + a) * one) / (R - a)); if (scale >= 0) exp <<= scale; else exp >>= -scale; return exp; } }
Contract Security Audit
- No Contract Security Audit Submitted- Submit Audit Here
[{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"}],"name":"approve","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardEthBlockNumber","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningDifficulty","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"}],"name":"mint","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"from","type":"address"},{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"rewardEra","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getMiningTarget","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"claimTokens","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"getMiningReward","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"getChallengeNumber","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"maxSupplyForEra","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"tokensMinted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardTo","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"}],"name":"balanceOf","outputs":[{"name":"balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"acceptOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"},{"name":"challenge_number","type":"bytes32"},{"name":"testTarget","type":"uint256"}],"name":"checkMintSolution","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"epochCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"_MAXIMUM_TARGET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"miningTarget","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"challengeNumber","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"nonce","type":"uint256"},{"name":"challenge_digest","type":"bytes32"},{"name":"challenge_number","type":"bytes32"}],"name":"getMintDigest","outputs":[{"name":"digesttest","type":"bytes32"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"to","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transfer","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_BLOCKS_PER_READJUSTMENT","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"lastRewardAmount","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"spender","type":"address"},{"name":"tokens","type":"uint256"},{"name":"data","type":"bytes"}],"name":"approveAndCall","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"latestDifficultyPeriodStarted","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"newOwner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"tokenAddress","type":"address"},{"name":"tokens","type":"uint256"}],"name":"transferAnyERC20Token","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"_MINIMUM_TARGET","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"tokenOwner","type":"address"},{"name":"spender","type":"address"}],"name":"allowance","outputs":[{"name":"remaining","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"a","type":"int256"}],"name":"fixedExp","outputs":[{"name":"exp","type":"uint256"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":false,"inputs":[{"name":"_newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"inputs":[],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"reward_amount","type":"uint256"},{"indexed":false,"name":"epochCount","type":"uint256"},{"indexed":false,"name":"newChallengeNumber","type":"bytes32"}],"name":"Mint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":false,"name":"reward_amount","type":"uint256"}],"name":"PoS","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"from","type":"address"},{"indexed":true,"name":"to","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"tokenOwner","type":"address"},{"indexed":true,"name":"spender","type":"address"},{"indexed":false,"name":"tokens","type":"uint256"}],"name":"Approval","type":"event"}]
Contract Creation Code
6080604052610400600855620100006009557d040000000000000000000000000000000000000000000000000000000000600a556000601260006101000a81548160ff021916908315150217905550630729db906019553480156200006357600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156200010057600080fd5b6040805190810160405280600381526020017f534b4f0000000000000000000000000000000000000000000000000000000000815250600290805190602001906200014d92919062002fcd565b506040805190810160405280600c81526020017f536b6f72636820546f6b656e0000000000000000000000000000000000000000815250600390805190602001906200019b92919062002fcd565b506008600460006101000a81548160ff021916908360ff160217905550600460009054906101000a900460ff1660ff16600a0a6301406f4002600581905550601260009054906101000a900460ff1615620001f557600080fd5b6001601260006101000a81548160ff02191690831515021790555060006014819055506000600d8190555062000246600260055462002fa76401000000000262002205179091906401000000009004565b600e81905550600a54600b8190555043600681905550426015819055507f85d676fa25011d060e3c7405f6e55de1921372c788bfaaed75c00b63a63c510d600102600c81600019169055506118576007819055506000600d81905550620002cf6001600d540160020a60055462002fa76401000000000262002205179091906401000000009004565b60055403600e819055507c10000000000000000000000000000000000000000000000000000002d8600b81905550600460009054906101000a900460ff1660ff16600a0a6107d0026016600073bf45f4280cfbe7c2d2515a7d984b8c71c15e82b773ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073bf45f4280cfbe7c2d2515a7d984b8c71c15e82b7600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6107d0026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a614e52026016600073b38094d492af4fffff760707f36869713bfb225073ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073b38094d492af4fffff760707f36869713bfb2250600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a614e52026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a60c80260166000738f3dd21c9334980030ba95c37565ba25df9574cd73ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550738f3dd21c9334980030ba95c37565ba25df9574cd600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a60c8026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a61047e026016600073aa7a7c2decb180f68f11e975e6d92b5dc06083a673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073aa7a7c2decb180f68f11e975e6d92b5dc06083a6600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a61047e026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a6103e802601660007307a68bd44a526e09b8dbfc7085b265450362b61a73ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507307a68bd44a526e09b8dbfc7085b265450362b61a600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6103e8026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a61015e0260166000734e27a678c8dc883035c542c83124e7e3f39842b073ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550734e27a678c8dc883035c542c83124e7e3f39842b0600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a61015e026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a610af00260166000730102f6ca7278e7d96a6d649da30bfe07e87155a373ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550730102f6ca7278e7d96a6d649da30bfe07e87155a3600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a610af0026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a61076c026016600073fc313f77c2cbc6cd0dd82b9a0ed1620ba906e46d73ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073fc313f77c2cbc6cd0dd82b9a0ed1620ba906e46d600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a61076c026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a6064026016600073fec55e783595682141c4b5e6ad9ea605f168384473ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073fec55e783595682141c4b5e6ad9ea605f1683844600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6064026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a614ee8026016600073167e733de0861f0d61b179d3d1891e6b9058773273ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073167e733de0861f0d61b179d3d1891e6b90587732600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a614ee8026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a611de202601660007322dd964193df4de2e6954a2a9d9cbbd6f44f0b2873ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507322dd964193df4de2e6954a2a9d9cbbd6f44f0b28600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a611de2026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a610ea6026016600073d2b752bec2fe5c7e5cc600eb5ce465a210cb857a73ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073d2b752bec2fe5c7e5cc600eb5ce465a210cb857a600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a610ea6026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a6102bc026016600073e14cffadb6bbad8de69bd5ba214441a9582ec54873ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073e14cffadb6bbad8de69bd5ba214441a9582ec548600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6102bc026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a614e20026016600073fe5a94e5bab010f52ae8fd8589b7d0a7b0b433ae73ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073fe5a94e5bab010f52ae8fd8589b7d0a7b0b433ae600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a614e20026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a610226026016600073ae7c95f2192c739edfb16412a6112a54f896530573ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073ae7c95f2192c739edfb16412a6112a54f8965305600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a610226026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a603202601660007330385a99e66469a8c0bf172896758dd4595704a973ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507330385a99e66469a8c0bf172896758dd4595704a9600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6032026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a60c8026016600073219fdb55ea364fcaf29aaa87fb1c45ba7db8128e73ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073219fdb55ea364fcaf29aaa87fb1c45ba7db8128e600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a60c8026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a61044c026016600073ab4485ca338b91087a09ae8bc141648bb1c6e96773ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073ab4485ca338b91087a09ae8bc141648bb1c6e967600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a61044c026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a618aac026016600073afaf9a165408737e11191393fe695c1ebc7a542973ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073afaf9a165408737e11191393fe695c1ebc7a5429600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a618aac026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a610bea026016600073ebd76aa221968b8ba9cdd6e6b4dbb889140088a373ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073ebd76aa221968b8ba9cdd6e6b4dbb889140088a3600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a610bea026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a6110cc02601660007326b8c7606e828a509bbb208a0322cf960c17b22573ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507326b8c7606e828a509bbb208a0322cf960c17b225600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6110cc026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a61041a0260166000739b8957d1ac592bd388dcde346933ac1269b7c31473ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550739b8957d1ac592bd388dcde346933ac1269b7c314600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a61041a026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a6103e8026016600073ad9f11d1dd6d202243473a0cdae606308ab243b473ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073ad9f11d1dd6d202243473a0cdae606308ab243b4600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6103e8026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a60c80260166000732f0d5a1d6bb5d7eaa0eaad39518621911a4a1d9f73ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550732f0d5a1d6bb5d7eaa0eaad39518621911a4a1d9f600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a60c8026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a611770026016600073fbc2b315ac1fba765597a92ff100222425ce66fd73ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073fbc2b315ac1fba765597a92ff100222425ce66fd600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a611770026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a6113ec0260166000730a26d9674c2a1581ada4316e3f5960bb70fb0fb273ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550730a26d9674c2a1581ada4316e3f5960bb70fb0fb2600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6113ec026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a612616026016600073dc680cc11a535e45329f49566850668fef34054f73ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073dc680cc11a535e45329f49566850668fef34054f600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a612616026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a6101900260166000739fc5b0edc0309745c6974f1a6718029ea41a4d6e73ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550739fc5b0edc0309745c6974f1a6718029ea41a4d6e600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a610190026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a610708026016600073e0c059faabce16dd5ddb4817f427f5cf3b40f4c473ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073e0c059faabce16dd5ddb4817f427f5cf3b40f4c4600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a610708026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a61339002601660007385d66f3a8da35f47e03d6bb51f51c2d70a61e12e73ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507385d66f3a8da35f47e03d6bb51f51c2d70a61e12e600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a613390026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a611130026016600073a5b3725e37431dc6a103961749cb9c98954202cd73ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073a5b3725e37431dc6a103961749cb9c98954202cd600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a611130026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a6109c4026016600073f3552d4018fad9fcc390f5684a243f7318d8b57073ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073f3552d4018fad9fcc390f5684a243f7318d8b570600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6109c4026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a610abe0260166000731fca39ed4f19edd12eb274dc467c099eb5106a1373ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550731fca39ed4f19edd12eb274dc467c099eb5106a13600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a610abe026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a61015e026016600073f95f528d7c25904f15d4154e45eab8e5d4b6c16073ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073f95f528d7c25904f15d4154e45eab8e5d4b6c160600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a61015e026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a614f1a026016600073a62178f120cccba370d2d2d12ec6fb1ff276d70673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073a62178f120cccba370d2d2d12ec6fb1ff276d706600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a614f1a026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a614e52026016600073c446073e0c00a1138812b3a99a19df3cb8ace70d73ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073c446073e0c00a1138812b3a99a19df3cb8ace70d600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a614e52026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a61012c026016600073fcc6bf3369077e22a90e05ad567744bf5109e4d473ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073fcc6bf3369077e22a90e05ad567744bf5109e4d4600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a61012c026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a603202601660007325e5c43d5f53ee1a7dd5ad7560348e29baea304873ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507325e5c43d5f53ee1a7dd5ad7560348e29baea3048600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6032026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a6117a20260166000734d01d11697f00097064d7e05114ecd3843e8286773ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550734d01d11697f00097064d7e05114ecd3843e82867600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6117a2026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a610546026016600073e585ba86b84283f0f1118041837b06d03b96885e73ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073e585ba86b84283f0f1118041837b06d03b96885e600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a610546026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a61064002601660007321a6043877a0ac376b7ca91195521de88d440eba73ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507321a6043877a0ac376b7ca91195521de88d440eba600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a610640026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a6106d6026016600073e8a01b61f80130aefda985ee2e9c6899a57a17c873ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073e8a01b61f80130aefda985ee2e9c6899a57a17c8600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6106d6026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a61b6d00260166000738d12a197cb00d4747a1fe03395095ce2a5cc681973ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550738d12a197cb00d4747a1fe03395095ce2a5cc6819600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a61b6d0026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a611004026016600073a1a3e2fcc1e7c805994ca7309f9a829908a18b4c73ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073a1a3e2fcc1e7c805994ca7309f9a829908a18b4c600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a611004026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a603202601660007351138ab5497b2c3d85be94d23905f5ead9e533a773ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507351138ab5497b2c3d85be94d23905f5ead9e533a7600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6032026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a61028a026016600073559a922941f84ebe6b9f0ed58e3b96530614237e73ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073559a922941f84ebe6b9f0ed58e3b96530614237e600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a61028a026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a610258026016600073e539a7645d2f33103c89b5b03abb422a163b7c7373ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073e539a7645d2f33103c89b5b03abb422a163b7c73600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a610258026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a6110cc0260166000734ffe17a2a72bc7422cb176bc71c04ee6d87ce32973ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550734ffe17a2a72bc7422cb176bc71c04ee6d87ce329600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6110cc026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a6124ea02601660007388058d4d90cc9d9471509e5be819b2be361b51c673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507388058d4d90cc9d9471509e5be819b2be361b51c6600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6124ea026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a61047e026016600071bb50ee5f5df06be902d1f9cb774949c337ed73ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555071bb50ee5f5df06be902d1f9cb774949c337ed600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a61047e026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a611932026016600073d7dd80404d3d923c8a40c47c1f61aacbccb4191e73ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073d7dd80404d3d923c8a40c47c1f61aacbccb4191e600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a611932026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a6064026016600073f2119e50578b3dfa248652c4fbec76b9e415acb273ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073f2119e50578b3dfa248652c4fbec76b9e415acb2600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6064026040518082815260200191505060405180910390a3600460009054906101000a900460ff1660ff16600a0a6124ea026016600073d2470aacd96242207f06111819111d17ca055dfb73ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555073d2470aacd96242207f06111819111d17ca055dfb600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600460009054906101000a900460ff1660ff16600a0a6124ea026040518082815260200191505060405180910390a36200307c565b6000808211151562002fb857600080fd5b818381151562002fc457fe5b04905092915050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200301057805160ff191683800117855562003041565b8280016001018555821562003041579182015b828111156200304057825182559160200191906001019062003023565b5b50905062003050919062003054565b5090565b6200307991905b80821115620030755760008160009055506001016200305b565b5090565b90565b6128c7806200308c6000396000f3006080604052600436106101d8576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101dd578063095ea7b31461026d578063163aa00d146102d257806317da485f146102fd5780631801fbe51461032857806318160ddd1461037b57806323b872dd146103a65780632d38bf7a1461042b578063313ce5671461045657806332e99708146104875780633eaaf86b146104b257806348c54b9d146104dd578063490203a7146104f45780634ef376281461051f5780634fa972e1146105525780636de9f32b1461057d5780636fd396d6146105a857806370a08231146105ff57806379ba50971461065657806381269a561461066d578063829965cc146106d857806387a2a9d6146107035780638a769d351461072e5780638ae0368b146107595780638da5cb5b1461078c57806395d89b41146107e357806397566aa014610873578063a9059cbb146108d8578063b5ade81b1461093d578063bafedcaa14610968578063cae9ca5114610993578063cb9ae70714610a3e578063d4ee1d9014610a69578063dc39d06d14610ac0578063dc6e9cf914610b25578063dd62ed3e14610b50578063de43844b14610bc7578063f2fde38b14610c08575b600080fd5b3480156101e957600080fd5b506101f2610c4b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610232578082015181840152602081019050610217565b50505050905090810190601f16801561025f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027957600080fd5b506102b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ce9565b604051808215151515815260200191505060405180910390f35b3480156102de57600080fd5b506102e7610ddb565b6040518082815260200191505060405180910390f35b34801561030957600080fd5b50610312610de1565b6040518082815260200191505060405180910390f35b34801561033457600080fd5b50610361600480360381019080803590602001909291908035600019169060200190929190505050610dff565b604051808215151515815260200191505060405180910390f35b34801561038757600080fd5b50610390611142565b6040518082815260200191505060405180910390f35b3480156103b257600080fd5b50610411600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061114c565b604051808215151515815260200191505060405180910390f35b34801561043757600080fd5b50610440611491565b6040518082815260200191505060405180910390f35b34801561046257600080fd5b5061046b611497565b604051808260ff1660ff16815260200191505060405180910390f35b34801561049357600080fd5b5061049c6114aa565b6040518082815260200191505060405180910390f35b3480156104be57600080fd5b506104c76114b4565b6040518082815260200191505060405180910390f35b3480156104e957600080fd5b506104f26114ba565b005b34801561050057600080fd5b50610509611509565b6040518082815260200191505060405180910390f35b34801561052b57600080fd5b50610534611540565b60405180826000191660001916815260200191505060405180910390f35b34801561055e57600080fd5b5061056761154a565b6040518082815260200191505060405180910390f35b34801561058957600080fd5b50610592611550565b6040518082815260200191505060405180910390f35b3480156105b457600080fd5b506105bd611556565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060b57600080fd5b50610640600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061157c565b6040518082815260200191505060405180910390f35b34801561066257600080fd5b5061066b6115cf565b005b34801561067957600080fd5b506106be60048036038101908080359060200190929190803560001916906020019092919080356000191690602001909291908035906020019092919050505061176e565b604051808215151515815260200191505060405180910390f35b3480156106e457600080fd5b506106ed611803565b6040518082815260200191505060405180910390f35b34801561070f57600080fd5b50610718611809565b6040518082815260200191505060405180910390f35b34801561073a57600080fd5b5061074361180f565b6040518082815260200191505060405180910390f35b34801561076557600080fd5b5061076e611815565b60405180826000191660001916815260200191505060405180910390f35b34801561079857600080fd5b506107a161181b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107ef57600080fd5b506107f8611840565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561083857808201518184015260208101905061081d565b50505050905090810190601f1680156108655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561087f57600080fd5b506108ba60048036038101908080359060200190929190803560001916906020019092919080356000191690602001909291905050506118de565b60405180826000191660001916815260200191505060405180910390f35b3480156108e457600080fd5b50610923600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611957565b604051808215151515815260200191505060405180910390f35b34801561094957600080fd5b50610952611b8c565b6040518082815260200191505060405180910390f35b34801561097457600080fd5b5061097d611b92565b6040518082815260200191505060405180910390f35b34801561099f57600080fd5b50610a24600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611b98565b604051808215151515815260200191505060405180910390f35b348015610a4a57600080fd5b50610a53611de7565b6040518082815260200191505060405180910390f35b348015610a7557600080fd5b50610a7e611ded565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610acc57600080fd5b50610b0b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e13565b604051808215151515815260200191505060405180910390f35b348015610b3157600080fd5b50610b3a611f77565b6040518082815260200191505060405180910390f35b348015610b5c57600080fd5b50610bb1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f7d565b6040518082815260200191505060405180910390f35b348015610bd357600080fd5b50610bf260048036038101908080359060200190929190505050612004565b6040518082815260200191505060405180910390f35b348015610c1457600080fd5b50610c49600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612166565b005b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ce15780601f10610cb657610100808354040283529160200191610ce1565b820191906000526020600020905b815481529060010190602001808311610cc457829003601f168201915b505050505081565b600081601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60115481565b6000610dfa600b54600a5461220590919063ffffffff16565b905090565b600080600080600c5433876040518084600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200193505050506040518091039020925084600019168360001916141515610e8857600080fd5b600b5483600190041115610e9b57600080fd5b60136000600c54600019166000191681526020019081526020016000205491508260136000600c5460001916600019168152602001908152602001600020816000191690555060006001028260001916141515610ef757600080fd5b610f0033612229565b42601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f4c611509565b9050610fa081601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248a90919063ffffffff16565b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ff88160145461248a90919063ffffffff16565b601481905550600e546014541115151561100e57fe5b33600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601081905550436011819055506110656124a6565b3373ffffffffffffffffffffffffffffffffffffffff167fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d82600754600c54604051808481526020018381526020018260001916600019168152602001935050505060405180910390a23373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36001935050505092915050565b6000600554905090565b600061115784612229565b61116083612229565b42601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061123a82601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255b90919063ffffffff16565b601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061130c82601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255b90919063ffffffff16565b601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113de82601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248a90919063ffffffff16565b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600d5481565b600460009054906101000a900460ff1681565b6000600b54905090565b60055481565b6114c333612229565b42601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600061153b600d5460020a600460009054906101000a900460ff1660ff16600a0a60320261220590919063ffffffff16565b905090565b6000600c54905090565b600e5481565b60145481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061158782612577565b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054019050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561162b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000808333876040518084600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200193505050506040518091039020905082816001900411156117ed57600080fd5b8460001916816000191614915050949350505050565b60075481565b600a5481565b600b5481565b600c5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118d65780601f106118ab576101008083540402835291602001916118d6565b820191906000526020600020905b8154815290600101906020018083116118b957829003601f168201915b505050505081565b6000808233866040518084600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001935050505060405180910390209050809150509392505050565b600061196233612229565b61196b83612229565b42601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4582601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255b90919063ffffffff16565b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ada82601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248a90919063ffffffff16565b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60085481565b60105481565b600082601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611d75578082015181840152602081019050611d5a565b50505050905090810190601f168015611da25780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611dc457600080fd5b505af1158015611dd8573d6000803e3d6000fd5b50505050600190509392505050565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e7057600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b505050506040513d6020811015611f5e57600080fd5b8101908080519060200190929190505050905092915050565b60095481565b6000601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600080604067b17217f7d1cf79ac682cb53f09f05cc627c8870181151561202a57fe5b0503925067b17217f7d1cf79ac8302850394506801000000000000000085860281151561205357fe5b059150680100000000000000008068010000000000000000807fffffffffffffffffffffffffffffffffffffffffffffffffffffe476c52fb4c6860281151561209857fe5b05660455956bccdd060185028115156120ad57fe5b057fffffffffffffffffffffffffffffffffffffffffffffffffff49f49f7f7c662f0184028115156120db57fe5b05672aaaaaaaaa015db00183028115156120f157fe5b0568010000000000000000600202019050848103680100000000000000008683010281151561211c57fe5b059350600083121515612142578284600082121561213657fe5b9060020a02935061215b565b8260000384600082121561215257fe5b9060020a900493505b839350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121c157600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808211151561221557600080fd5b818381151561222057fe5b04905092915050565b600080601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156122c5576000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156122bf576122c4565b612486565b5b42601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561231157612486565b61231a82612577565b9050600081111561241f5761237781601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248a90919063ffffffff16565b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123cf8160055461248a90919063ffffffff16565b508173ffffffffffffffffffffffffffffffffffffffff167fb6ca79c9847e64c21032ebeea3266417e6a012de32b21df76a8ab204edcb9533826040518082815260200191505060405180910390a25b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b600081830190508281101515156124a057600080fd5b92915050565b600e546124c56124b4611509565b60145461248a90919063ffffffff16565b1180156124d457506027600d54105b156124e6576001600d5401600d819055505b6125036001600d540160020a60055461220590919063ffffffff16565b60055403600e81905550612523600160075461248a90919063ffffffff16565b600781905550600060085460075481151561253a57fe5b06141561254a576125496126bd565b5b6001430340600c8160001916905550565b600082821115151561256c57600080fd5b818303905092915050565b6000806000806000680100000000000000009350601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054925060008314156125dc5760155492505b60195484844203028115156125ed57fe5b0591506125f982612004565b90506126b2601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546801000000000000000061269a84601660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284e90919063ffffffff16565b8115156126a357fe5b0461255b90919063ffffffff16565b945050505050919050565b6000806000806000806000600654430396506008549550603c860294508487101561277c57612708876126fa60648861284e90919063ffffffff16565b61220590919063ffffffff16565b93506127326103e861272460648761255b90919063ffffffff16565b61287f90919063ffffffff16565b9250612771612760846127526107d0600b5461220590919063ffffffff16565b61284e90919063ffffffff16565b600b5461255b90919063ffffffff16565b600b81905550612812565b6127a28561279460648a61284e90919063ffffffff16565b61220590919063ffffffff16565b91506127cc6103e86127be60648561255b90919063ffffffff16565b61287f90919063ffffffff16565b905061280b6127fa826127ec6107d0600b5461220590919063ffffffff16565b61284e90919063ffffffff16565b600b5461248a90919063ffffffff16565b600b819055505b43600681905550600954600b54101561282f57600954600b819055505b600a54600b54111561284557600a54600b819055505b50505050505050565b60008183029050600083148061286e575081838281151561286b57fe5b04145b151561287957600080fd5b92915050565b60008183111561289157819050612895565b8290505b929150505600a165627a7a7230582004052a799504bd38a742bd399e5180a1fdfbe62e01b6c5dbc40464d7c1a2198d0029
Deployed Bytecode
0x6080604052600436106101d8576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306fdde03146101dd578063095ea7b31461026d578063163aa00d146102d257806317da485f146102fd5780631801fbe51461032857806318160ddd1461037b57806323b872dd146103a65780632d38bf7a1461042b578063313ce5671461045657806332e99708146104875780633eaaf86b146104b257806348c54b9d146104dd578063490203a7146104f45780634ef376281461051f5780634fa972e1146105525780636de9f32b1461057d5780636fd396d6146105a857806370a08231146105ff57806379ba50971461065657806381269a561461066d578063829965cc146106d857806387a2a9d6146107035780638a769d351461072e5780638ae0368b146107595780638da5cb5b1461078c57806395d89b41146107e357806397566aa014610873578063a9059cbb146108d8578063b5ade81b1461093d578063bafedcaa14610968578063cae9ca5114610993578063cb9ae70714610a3e578063d4ee1d9014610a69578063dc39d06d14610ac0578063dc6e9cf914610b25578063dd62ed3e14610b50578063de43844b14610bc7578063f2fde38b14610c08575b600080fd5b3480156101e957600080fd5b506101f2610c4b565b6040518080602001828103825283818151815260200191508051906020019080838360005b83811015610232578082015181840152602081019050610217565b50505050905090810190601f16801561025f5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561027957600080fd5b506102b8600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050610ce9565b604051808215151515815260200191505060405180910390f35b3480156102de57600080fd5b506102e7610ddb565b6040518082815260200191505060405180910390f35b34801561030957600080fd5b50610312610de1565b6040518082815260200191505060405180910390f35b34801561033457600080fd5b50610361600480360381019080803590602001909291908035600019169060200190929190505050610dff565b604051808215151515815260200191505060405180910390f35b34801561038757600080fd5b50610390611142565b6040518082815260200191505060405180910390f35b3480156103b257600080fd5b50610411600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061114c565b604051808215151515815260200191505060405180910390f35b34801561043757600080fd5b50610440611491565b6040518082815260200191505060405180910390f35b34801561046257600080fd5b5061046b611497565b604051808260ff1660ff16815260200191505060405180910390f35b34801561049357600080fd5b5061049c6114aa565b6040518082815260200191505060405180910390f35b3480156104be57600080fd5b506104c76114b4565b6040518082815260200191505060405180910390f35b3480156104e957600080fd5b506104f26114ba565b005b34801561050057600080fd5b50610509611509565b6040518082815260200191505060405180910390f35b34801561052b57600080fd5b50610534611540565b60405180826000191660001916815260200191505060405180910390f35b34801561055e57600080fd5b5061056761154a565b6040518082815260200191505060405180910390f35b34801561058957600080fd5b50610592611550565b6040518082815260200191505060405180910390f35b3480156105b457600080fd5b506105bd611556565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561060b57600080fd5b50610640600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061157c565b6040518082815260200191505060405180910390f35b34801561066257600080fd5b5061066b6115cf565b005b34801561067957600080fd5b506106be60048036038101908080359060200190929190803560001916906020019092919080356000191690602001909291908035906020019092919050505061176e565b604051808215151515815260200191505060405180910390f35b3480156106e457600080fd5b506106ed611803565b6040518082815260200191505060405180910390f35b34801561070f57600080fd5b50610718611809565b6040518082815260200191505060405180910390f35b34801561073a57600080fd5b5061074361180f565b6040518082815260200191505060405180910390f35b34801561076557600080fd5b5061076e611815565b60405180826000191660001916815260200191505060405180910390f35b34801561079857600080fd5b506107a161181b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156107ef57600080fd5b506107f8611840565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561083857808201518184015260208101905061081d565b50505050905090810190601f1680156108655780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561087f57600080fd5b506108ba60048036038101908080359060200190929190803560001916906020019092919080356000191690602001909291905050506118de565b60405180826000191660001916815260200191505060405180910390f35b3480156108e457600080fd5b50610923600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611957565b604051808215151515815260200191505060405180910390f35b34801561094957600080fd5b50610952611b8c565b6040518082815260200191505060405180910390f35b34801561097457600080fd5b5061097d611b92565b6040518082815260200191505060405180910390f35b34801561099f57600080fd5b50610a24600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190803590602001908201803590602001908080601f0160208091040260200160405190810160405280939291908181526020018383808284378201915050505050509192919290505050611b98565b604051808215151515815260200191505060405180910390f35b348015610a4a57600080fd5b50610a53611de7565b6040518082815260200191505060405180910390f35b348015610a7557600080fd5b50610a7e611ded565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b348015610acc57600080fd5b50610b0b600480360381019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611e13565b604051808215151515815260200191505060405180910390f35b348015610b3157600080fd5b50610b3a611f77565b6040518082815260200191505060405180910390f35b348015610b5c57600080fd5b50610bb1600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611f7d565b6040518082815260200191505060405180910390f35b348015610bd357600080fd5b50610bf260048036038101908080359060200190929190505050612004565b6040518082815260200191505060405180910390f35b348015610c1457600080fd5b50610c49600480360381019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050612166565b005b60038054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610ce15780601f10610cb657610100808354040283529160200191610ce1565b820191906000526020600020905b815481529060010190602001808311610cc457829003601f168201915b505050505081565b600081601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040518082815260200191505060405180910390a36001905092915050565b60115481565b6000610dfa600b54600a5461220590919063ffffffff16565b905090565b600080600080600c5433876040518084600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200193505050506040518091039020925084600019168360001916141515610e8857600080fd5b600b5483600190041115610e9b57600080fd5b60136000600c54600019166000191681526020019081526020016000205491508260136000600c5460001916600019168152602001908152602001600020816000191690555060006001028260001916141515610ef757600080fd5b610f0033612229565b42601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610f4c611509565b9050610fa081601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248a90919063ffffffff16565b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550610ff88160145461248a90919063ffffffff16565b601481905550600e546014541115151561100e57fe5b33600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080601081905550436011819055506110656124a6565b3373ffffffffffffffffffffffffffffffffffffffff167fcf6fbb9dcea7d07263ab4f5c3a92f53af33dffc421d9d121e1c74b307e68189d82600754600c54604051808481526020018381526020018260001916600019168152602001935050505060405180910390a23373ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a36001935050505092915050565b6000600554905090565b600061115784612229565b61116083612229565b42601860008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061123a82601660008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255b90919063ffffffff16565b601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061130c82601760008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255b90919063ffffffff16565b601760008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506113de82601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248a90919063ffffffff16565b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a3600190509392505050565b600d5481565b600460009054906101000a900460ff1681565b6000600b54905090565b60055481565b6114c333612229565b42601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b600061153b600d5460020a600460009054906101000a900460ff1660ff16600a0a60320261220590919063ffffffff16565b905090565b6000600c54905090565b600e5481565b60145481565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600061158782612577565b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054019050919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561162b57600080fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000808333876040518084600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c0100000000000000000000000002815260140182815260200193505050506040518091039020905082816001900411156117ed57600080fd5b8460001916816000191614915050949350505050565b60075481565b600a5481565b600b5481565b600c5481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60028054600181600116156101000203166002900480601f0160208091040260200160405190810160405280929190818152602001828054600181600116156101000203166002900480156118d65780601f106118ab576101008083540402835291602001916118d6565b820191906000526020600020905b8154815290600101906020018083116118b957829003601f168201915b505050505081565b6000808233866040518084600019166000191681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166c01000000000000000000000000028152601401828152602001935050505060405180910390209050809150509392505050565b600061196233612229565b61196b83612229565b42601860003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555042601860008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a4582601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461255b90919063ffffffff16565b601660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611ada82601660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248a90919063ffffffff16565b601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040518082815260200191505060405180910390a36001905092915050565b60085481565b60105481565b600082601760003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925856040518082815260200191505060405180910390a38373ffffffffffffffffffffffffffffffffffffffff16638f4ffcb1338530866040518563ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200180602001828103825283818151815260200191508051906020019080838360005b83811015611d75578082015181840152602081019050611d5a565b50505050905090810190601f168015611da25780820380516001836020036101000a031916815260200191505b5095505050505050600060405180830381600087803b158015611dc457600080fd5b505af1158015611dd8573d6000803e3d6000fd5b50505050600190509392505050565b60065481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141515611e7057600080fd5b8273ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015611f3457600080fd5b505af1158015611f48573d6000803e3d6000fd5b505050506040513d6020811015611f5e57600080fd5b8101908080519060200190929190505050905092915050565b60095481565b6000601760008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600080600080604067b17217f7d1cf79ac682cb53f09f05cc627c8870181151561202a57fe5b0503925067b17217f7d1cf79ac8302850394506801000000000000000085860281151561205357fe5b059150680100000000000000008068010000000000000000807fffffffffffffffffffffffffffffffffffffffffffffffffffffe476c52fb4c6860281151561209857fe5b05660455956bccdd060185028115156120ad57fe5b057fffffffffffffffffffffffffffffffffffffffffffffffffff49f49f7f7c662f0184028115156120db57fe5b05672aaaaaaaaa015db00183028115156120f157fe5b0568010000000000000000600202019050848103680100000000000000008683010281151561211c57fe5b059350600083121515612142578284600082121561213657fe5b9060020a02935061215b565b8260000384600082121561215257fe5b9060020a900493505b839350505050919050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156121c157600080fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000808211151561221557600080fd5b818381151561222057fe5b04905092915050565b600080601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414156122c5576000601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205411156122bf576122c4565b612486565b5b42601860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054141561231157612486565b61231a82612577565b9050600081111561241f5761237781601660008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461248a90919063ffffffff16565b601660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506123cf8160055461248a90919063ffffffff16565b508173ffffffffffffffffffffffffffffffffffffffff167fb6ca79c9847e64c21032ebeea3266417e6a012de32b21df76a8ab204edcb9533826040518082815260200191505060405180910390a25b8173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a35b5050565b600081830190508281101515156124a057600080fd5b92915050565b600e546124c56124b4611509565b60145461248a90919063ffffffff16565b1180156124d457506027600d54105b156124e6576001600d5401600d819055505b6125036001600d540160020a60055461220590919063ffffffff16565b60055403600e81905550612523600160075461248a90919063ffffffff16565b600781905550600060085460075481151561253a57fe5b06141561254a576125496126bd565b5b6001430340600c8160001916905550565b600082821115151561256c57600080fd5b818303905092915050565b6000806000806000680100000000000000009350601860008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054925060008314156125dc5760155492505b60195484844203028115156125ed57fe5b0591506125f982612004565b90506126b2601660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546801000000000000000061269a84601660008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461284e90919063ffffffff16565b8115156126a357fe5b0461255b90919063ffffffff16565b945050505050919050565b6000806000806000806000600654430396506008549550603c860294508487101561277c57612708876126fa60648861284e90919063ffffffff16565b61220590919063ffffffff16565b93506127326103e861272460648761255b90919063ffffffff16565b61287f90919063ffffffff16565b9250612771612760846127526107d0600b5461220590919063ffffffff16565b61284e90919063ffffffff16565b600b5461255b90919063ffffffff16565b600b81905550612812565b6127a28561279460648a61284e90919063ffffffff16565b61220590919063ffffffff16565b91506127cc6103e86127be60648561255b90919063ffffffff16565b61287f90919063ffffffff16565b905061280b6127fa826127ec6107d0600b5461220590919063ffffffff16565b61284e90919063ffffffff16565b600b5461248a90919063ffffffff16565b600b819055505b43600681905550600954600b54101561282f57600954600b819055505b600a54600b54111561284557600a54600b819055505b50505050505050565b60008183029050600083148061286e575081838281151561286b57fe5b04145b151561287957600080fd5b92915050565b60008183111561289157819050612895565b8290505b929150505600a165627a7a7230582004052a799504bd38a742bd399e5180a1fdfbe62e01b6c5dbc40464d7c1a2198d0029
Swarm Source
bzzr://04052a799504bd38a742bd399e5180a1fdfbe62e01b6c5dbc40464d7c1a2198d
Loading...
Loading
Loading...
Loading
[ Download: CSV Export ]
[ Download: CSV Export ]
A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.