ETH Price: $3,087.64 (-6.19%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Htlc97204792020-03-22 9:12:141777 days ago1584868334IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.0018888612
Htlc97193372020-03-22 4:51:021777 days ago1584852662IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.0015740510.00000123
Htlc97182082020-03-22 0:22:581778 days ago1584836578IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.000814956
Htlc95336812020-02-22 14:31:321806 days ago1582381892IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.0020148612.8
Htlc95319412020-02-22 8:01:191806 days ago1582358479IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.0015740510
Htlc95317302020-02-22 7:13:461806 days ago1582355626IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.000629714
Htlc95260542020-02-21 10:31:231807 days ago1582281083IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.001259558.0008
Htlc95260442020-02-21 10:28:541807 days ago1582280934IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.001416649
Htlc94869022020-02-15 9:41:121813 days ago1581759672IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.00188912.00000011
Htlc94865792020-02-15 8:34:111813 days ago1581755651IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.0017315811
Htlc94808242020-02-14 11:18:231814 days ago1581679103IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.003148120
Htlc94805422020-02-14 10:14:591814 days ago1581675299IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.000629664
Htlc94805122020-02-14 10:08:371814 days ago1581674917IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.000786995
Htlc94746792020-02-13 12:33:591815 days ago1581597239IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.0023612515
Htlc94746432020-02-13 12:27:141815 days ago1581596834IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.0023616115
Htlc94731832020-02-13 7:02:401815 days ago1581577360IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.0028337218
Htlc94731372020-02-13 6:51:171815 days ago1581576677IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.0017315211
Htlc94729622020-02-13 6:10:301815 days ago1581574230IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.0023612515
Htlc94729122020-02-13 5:56:131815 days ago1581573373IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.0023610715
Htlc94728832020-02-13 5:48:541815 days ago1581572934IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.0017315211
Htlc94726072020-02-13 4:49:041815 days ago1581569344IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.0023612515
Htlc94725302020-02-13 4:34:271815 days ago1581568467IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.00188912
Htlc94723702020-02-13 4:02:431815 days ago1581566563IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.0018887812
Htlc94689192020-02-12 15:21:031816 days ago1581520863IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.0017317111
Htlc94686652020-02-12 14:24:051816 days ago1581517445IN
0x2Dc6Af91...9f9dc84b6
0 ETH0.000787055
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
97204792020-03-22 9:12:141777 days ago1584868334
0x2Dc6Af91...9f9dc84b6
0 ETH
97204792020-03-22 9:12:141777 days ago1584868334
0x2Dc6Af91...9f9dc84b6
0 ETH
97193372020-03-22 4:51:021777 days ago1584852662
0x2Dc6Af91...9f9dc84b6
0 ETH
97193372020-03-22 4:51:021777 days ago1584852662
0x2Dc6Af91...9f9dc84b6
0 ETH
97182082020-03-22 0:22:581778 days ago1584836578
0x2Dc6Af91...9f9dc84b6
0 ETH
97182082020-03-22 0:22:581778 days ago1584836578
0x2Dc6Af91...9f9dc84b6
0 ETH
95336812020-02-22 14:31:321806 days ago1582381892
0x2Dc6Af91...9f9dc84b6
0 ETH
95336812020-02-22 14:31:321806 days ago1582381892
0x2Dc6Af91...9f9dc84b6
0 ETH
95319412020-02-22 8:01:191806 days ago1582358479
0x2Dc6Af91...9f9dc84b6
0 ETH
95319412020-02-22 8:01:191806 days ago1582358479
0x2Dc6Af91...9f9dc84b6
0 ETH
95317302020-02-22 7:13:461806 days ago1582355626
0x2Dc6Af91...9f9dc84b6
0 ETH
95317302020-02-22 7:13:461806 days ago1582355626
0x2Dc6Af91...9f9dc84b6
0 ETH
95260542020-02-21 10:31:231807 days ago1582281083
0x2Dc6Af91...9f9dc84b6
0 ETH
95260542020-02-21 10:31:231807 days ago1582281083
0x2Dc6Af91...9f9dc84b6
0 ETH
95260442020-02-21 10:28:541807 days ago1582280934
0x2Dc6Af91...9f9dc84b6
0 ETH
95260442020-02-21 10:28:541807 days ago1582280934
0x2Dc6Af91...9f9dc84b6
0 ETH
94869022020-02-15 9:41:121813 days ago1581759672
0x2Dc6Af91...9f9dc84b6
0 ETH
94869022020-02-15 9:41:121813 days ago1581759672
0x2Dc6Af91...9f9dc84b6
0 ETH
94865792020-02-15 8:34:111813 days ago1581755651
0x2Dc6Af91...9f9dc84b6
0 ETH
94865792020-02-15 8:34:111813 days ago1581755651
0x2Dc6Af91...9f9dc84b6
0 ETH
94808242020-02-14 11:18:231814 days ago1581679103
0x2Dc6Af91...9f9dc84b6
0 ETH
94808242020-02-14 11:18:231814 days ago1581679103
0x2Dc6Af91...9f9dc84b6
0 ETH
94805422020-02-14 10:14:591814 days ago1581675299
0x2Dc6Af91...9f9dc84b6
0 ETH
94805422020-02-14 10:14:591814 days ago1581675299
0x2Dc6Af91...9f9dc84b6
0 ETH
94805122020-02-14 10:08:371814 days ago1581674917
0x2Dc6Af91...9f9dc84b6
0 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ERC20HTLCLite

Compiler Version
v0.5.8+commit.23d335f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2020-02-07
*/

pragma solidity 0.5.8;

interface ERC20 {
	function totalSupply() external view returns (uint256);
	function balanceOf(address who) external view returns (uint256);
	function transfer(address to, uint256 value) external returns (bool);
	function allowance(address owner, address spender) external view returns (uint256);
	function transferFrom(address from, address to, uint256 value) external returns (bool);
	function approve(address spender, uint256 value) external returns (bool);
}

contract ERC20HTLCLite {
	struct Swap {
		uint256 outAmount; //The ERC20 Pra amount to swap out
		uint256 expireHeight; //The height of blocks to wait before the asset can be returned to sender
		bytes32 randomNumberHash;
		uint64 timestamp;
		address senderAddr; //The swap creator address
		uint256 senderChainType;
		uint256 receiverChainType;
		address recipientAddr; //The ethereum address to lock swapped assets, counter-party of senderAddr
		string receiverAddr; //The PRA address (DID) to swap out
	}

	enum States {INVALID, OPEN, COMPLETED, EXPIRED}

	enum ChainTypes {ETH, PRA}

	// Events
	event HTLC(
		address indexed _msgSender,
		address indexed _recipientAddr,
		bytes32 indexed _swapID,
		bytes32 _randomNumberHash,
		uint64 _timestamp,
		uint256 _expireHeight,
		uint256 _outAmount,
		uint256 _praAmount,
		string _receiverAddr
	);
	event Claimed(
		address indexed _msgSender,
		address indexed _recipientAddr,
		bytes32 indexed _swapID,
		bytes32 _randomNumber,
		string _receiverAddr
	);
	event Refunded(
		address indexed _msgSender,
		address indexed _recipientAddr,
		bytes32 indexed _swapID,
		bytes32 _randomNumberHash,
		string _receiverAddr
	);

	// Storage, key: swapID
	mapping(bytes32 => Swap) private swaps;
	mapping(bytes32 => States) private swapStates;

	address public praContractAddr;
	address public praRecipientAddr;
	address public owner;
	address public admin;

	// whether the contract is paused
    bool public paused = false;

	/// @param _praContract The PRA contract address
	constructor(address _praContract) public {
		praContractAddr = _praContract;
		owner = msg.sender;
	}

	/// @notice Throws if the msg.sender is not admin or owner.
	modifier onlyAdmin() {
		require(msg.sender == admin || msg.sender == owner);
		_;
	}

	/// @notice Modifier to allow actions only when the contract IS NOT paused
	modifier whenNotPaused() {
		require(!paused);
		_;
	}

	/// @notice Modifier to allow actions only when the contract IS paused
	modifier whenPaused {
		require(paused);
		_;
	}

	/// @notice to pause the contract.
	function pause() public onlyAdmin whenNotPaused returns (bool) {
		paused = true;
		return paused;
	}

	/// @notice to unpause the contract.
	function unpause() public onlyAdmin whenPaused returns (bool) {
		paused = false;
		return paused;
	}

	/// @notice setAdmin set new admin address.
	///
	/// @param _new_admin The new admin address.
	function setAdmin(address _new_admin) public onlyAdmin {
		require(_new_admin != address(0));
		admin = _new_admin;
	}

	/// @notice setPraAddress set new PRA-ERC20 contract address.
	///
	/// @param _praContract The new PRA-ERC20 contract address.
	function setPraAddress(address _praContract) public onlyAdmin {
		praContractAddr = _praContract;
	}

	/// @notice setRecipientAddr set new PRA-ERC20 recipient address.
	///
	/// @param _recipientAddr The new PRA-ERC20 recipient address.
	function setRecipientAddr(address _recipientAddr) public onlyAdmin {
		praRecipientAddr = _recipientAddr;
	}

	// swap may only be built through the htlc function
	function() external payable { revert();	}

	//TODO: init set recipientAddr

	/// @notice htlt locks asset to contract address and create an atomic swap.
	///
	/// @param _randomNumberHash The hash of the random number and timestamp
	/// @param _timestamp Counted by second
	/// @param _heightSpan The number of blocks to wait before the asset can be returned to sender
	/// @param _outAmount PRA ERC20 asset to swap out, precision is 18
	/// @param _praAmount PRA asset to swap in, precision is 18
	/// @param _receiverAddr PRA DID to swap in.
	function htlc(
		bytes32 _randomNumberHash,
		uint64 _timestamp,
		uint256 _heightSpan,
		uint256 _outAmount,
		uint256 _praAmount,
		string memory _receiverAddr
	) public whenNotPaused returns (bool) {
		bytes32 swapID = calSwapID(_randomNumberHash, _receiverAddr);
		require(swapStates[swapID] == States.INVALID, "swap is opened previously");
		// Assume average eth block time interval is 15 second
		// The heightSpan period should be more than 15 minutes
		require(_heightSpan >= 60 && _heightSpan <= 60480, "_heightSpan should be in [60, 60480]");
		require(_outAmount >= 100000000000000000, "_outAmount must be more than 0.1");
		require(
			_timestamp > now - 1800 && _timestamp < now + 1800,
			"Timestamp must be 30 minutes between current time"
		);
		require(_outAmount == _praAmount, "_outAmount must be equal _praAmount");

		// Store the details of the swap.
		Swap memory swap = Swap({
			outAmount: _outAmount,
			expireHeight: _heightSpan + block.number,
			randomNumberHash: _randomNumberHash,
			timestamp: _timestamp,
			senderAddr: msg.sender,
			senderChainType: uint256(ChainTypes.ETH),
			receiverAddr: _receiverAddr,
			receiverChainType: uint256(ChainTypes.PRA),
			recipientAddr: praRecipientAddr
		});

		//step 1: Init
		swaps[swapID] = swap;
		swapStates[swapID] = States.OPEN;

		// Transfer pra token to the swap contract
		require(
			ERC20(praContractAddr).transferFrom(msg.sender, address(this), _outAmount),
			"failed to transfer client asset to swap contract"
		);

		// Emit initialization event
		emit HTLC(
			msg.sender,
			praRecipientAddr,
			swapID,
			_randomNumberHash,
			_timestamp,
			swap.expireHeight,
			_outAmount,
			_praAmount,
			_receiverAddr
		);

		//step 2: Claim
		// Complete the swap.
		swapStates[swapID] = States.COMPLETED;

		// Pay erc20 token to recipient
		require(
			ERC20(praContractAddr).transfer(praRecipientAddr, _outAmount),
			"Failed to transfer locked asset to recipient"
		);

		// delete closed swap
		delete swaps[swapID];

		// Emit completion event
		emit Claimed(msg.sender, praRecipientAddr, swapID, _randomNumberHash, _receiverAddr);

		return true;
	}

	/// @notice query an atomic swap by randomNumberHash
	///
	/// @param _swapID The hash of randomNumberHash, swap creator and swap recipient
	function queryOpenSwap(bytes32 _swapID)
		external
		view
		returns (
			bytes32 _randomNumberHash,
			uint64 _timestamp,
			uint256 _expireHeight,
			uint256 _outAmount,
			address _sender,
			address _recipient
		)
	{
		Swap memory swap = swaps[_swapID];
		return (
			swap.randomNumberHash,
			swap.timestamp,
			swap.expireHeight,
			swap.outAmount,
			swap.senderAddr,
			swap.recipientAddr
		);
	}

	/// @notice Checks whether a swap with specified swapID exist
	///
	/// @param _swapID The hash of randomNumberHash, swap creator and swap recipient
	function isSwapExist(bytes32 _swapID) external view returns (bool) {
		return (swapStates[_swapID] != States.INVALID);
	}

	/// @notice Calculate the swapID from randomNumberHash and swapCreator
	///
	/// @param _randomNumberHash The hash of random number and timestamp.
	/// @param receiverAddr The PRA address (DID) to swap out
	function calSwapID(bytes32 _randomNumberHash, string memory receiverAddr) public pure returns (bytes32) {
		return sha256(abi.encodePacked(_randomNumberHash, receiverAddr));
	}
}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[],"name":"praContractAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"praRecipientAddr","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_swapID","type":"bytes32"}],"name":"isSwapExist","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_recipientAddr","type":"address"}],"name":"setRecipientAddr","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_new_admin","type":"address"}],"name":"setAdmin","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_swapID","type":"bytes32"}],"name":"queryOpenSwap","outputs":[{"name":"_randomNumberHash","type":"bytes32"},{"name":"_timestamp","type":"uint64"},{"name":"_expireHeight","type":"uint256"},{"name":"_outAmount","type":"uint256"},{"name":"_sender","type":"address"},{"name":"_recipient","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_praContract","type":"address"}],"name":"setPraAddress","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_randomNumberHash","type":"bytes32"},{"name":"_timestamp","type":"uint64"},{"name":"_heightSpan","type":"uint256"},{"name":"_outAmount","type":"uint256"},{"name":"_praAmount","type":"uint256"},{"name":"_receiverAddr","type":"string"}],"name":"htlc","outputs":[{"name":"","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_randomNumberHash","type":"bytes32"},{"name":"receiverAddr","type":"string"}],"name":"calSwapID","outputs":[{"name":"","type":"bytes32"}],"payable":false,"stateMutability":"pure","type":"function"},{"constant":true,"inputs":[],"name":"admin","outputs":[{"name":"","type":"address"}],"payable":false,"stateMutability":"view","type":"function"},{"inputs":[{"name":"_praContract","type":"address"}],"payable":false,"stateMutability":"nonpayable","type":"constructor"},{"payable":true,"stateMutability":"payable","type":"fallback"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_msgSender","type":"address"},{"indexed":true,"name":"_recipientAddr","type":"address"},{"indexed":true,"name":"_swapID","type":"bytes32"},{"indexed":false,"name":"_randomNumberHash","type":"bytes32"},{"indexed":false,"name":"_timestamp","type":"uint64"},{"indexed":false,"name":"_expireHeight","type":"uint256"},{"indexed":false,"name":"_outAmount","type":"uint256"},{"indexed":false,"name":"_praAmount","type":"uint256"},{"indexed":false,"name":"_receiverAddr","type":"string"}],"name":"HTLC","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_msgSender","type":"address"},{"indexed":true,"name":"_recipientAddr","type":"address"},{"indexed":true,"name":"_swapID","type":"bytes32"},{"indexed":false,"name":"_randomNumber","type":"bytes32"},{"indexed":false,"name":"_receiverAddr","type":"string"}],"name":"Claimed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_msgSender","type":"address"},{"indexed":true,"name":"_recipientAddr","type":"address"},{"indexed":true,"name":"_swapID","type":"bytes32"},{"indexed":false,"name":"_randomNumberHash","type":"bytes32"},{"indexed":false,"name":"_receiverAddr","type":"string"}],"name":"Refunded","type":"event"}]

60806040526000600560146101000a81548160ff02191690831515021790555034801561002b57600080fd5b50604051602080611e118339810180604052602081101561004b57600080fd5b810190808051906020019092919050505080600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555033600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050611d23806100ee6000396000f3fe6080604052600436106100dd5760003560e01c80638456cb591161007f578063c1f20d2211610059578063c1f20d2214610447578063ce4bb45214610498578063d2034061146105b4578063f851a4401461069a576100dd565b80638456cb59146102e35780638da5cb5b14610312578063b48017b114610369576100dd565b806350f7a03b116100bb57806350f7a03b146101bf5780635c0919bd146102125780635c975abb14610263578063704b6c0214610292576100dd565b806304abb303146100e257806321baf402146101395780633f4ba83a14610190575b600080fd5b3480156100ee57600080fd5b506100f76106f1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014557600080fd5b5061014e610717565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019c57600080fd5b506101a561073d565b604051808215151515815260200191505060405180910390f35b3480156101cb57600080fd5b506101f8600480360360208110156101e257600080fd5b810190808035906020019092919050505061083a565b604051808215151515815260200191505060405180910390f35b34801561021e57600080fd5b506102616004803603602081101561023557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061087d565b005b34801561026f57600080fd5b50610278610973565b604051808215151515815260200191505060405180910390f35b34801561029e57600080fd5b506102e1600480360360208110156102b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610986565b005b3480156102ef57600080fd5b506102f8610ab6565b604051808215151515815260200191505060405180910390f35b34801561031e57600080fd5b50610327610bb4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561037557600080fd5b506103a26004803603602081101561038c57600080fd5b8101908080359060200190929190505050610bda565b604051808781526020018667ffffffffffffffff1667ffffffffffffffff1681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390f35b34801561045357600080fd5b506104966004803603602081101561046a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610df1565b005b3480156104a457600080fd5b5061059a600480360360c08110156104bb57600080fd5b8101908080359060200190929190803567ffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561051457600080fd5b82018360208201111561052657600080fd5b8035906020019184600183028401116401000000008311171561054857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ee7565b604051808215151515815260200191505060405180910390f35b3480156105c057600080fd5b50610684600480360360408110156105d757600080fd5b8101908080359060200190929190803590602001906401000000008111156105fe57600080fd5b82018360208201111561061057600080fd5b8035906020019184600183028401116401000000008311171561063257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611971565b6040518082815260200191505060405180910390f35b3480156106a657600080fd5b506106af611a8b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107e85750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6107f157600080fd5b600560149054906101000a900460ff1661080a57600080fd5b6000600560146101000a81548160ff021916908315150217905550600560149054906101000a900460ff16905090565b600080600381111561084857fe5b6001600084815260200190815260200160002060009054906101000a900460ff16600381111561087457fe5b14159050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109265750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61092f57600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560149054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a2f5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a3857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a7257600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610b615750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610b6a57600080fd5b600560149054906101000a900460ff1615610b8457600080fd5b6001600560146101000a81548160ff021916908315150217905550600560149054906101000a900460ff16905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080610beb611ab1565b600080898152602001908152602001600020604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016003820160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160048201548152602001600582015481526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600782018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610db25780601f10610d8757610100808354040283529160200191610db2565b820191906000526020600020905b815481529060010190602001808311610d9557829003601f168201915b5050505050815250509050806040015181606001518260200151836000015184608001518560e001519650965096509650965096505091939550919395565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e9a5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610ea357600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560149054906101000a900460ff1615610f0357600080fd5b6000610f0f8884611971565b905060006003811115610f1e57fe5b6001600083815260200190815260200160002060009054906101000a900460ff166003811115610f4a57fe5b14610fbd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f73776170206973206f70656e65642070726576696f75736c790000000000000081525060200191505060405180910390fd5b603c8610158015610fd0575061ec408611155b611025576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611ca46024913960400191505060405180910390fd5b67016345785d8a00008510156110a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5f6f7574416d6f756e74206d757374206265206d6f7265207468616e20302e3181525060200191505060405180910390fd5b61070842038767ffffffffffffffff161180156110cd575061070842018767ffffffffffffffff16105b611122576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611c476031913960400191505060405180910390fd5b83851461117a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611c246023913960400191505060405180910390fd5b611182611ab1565b60405180610120016040528087815260200143890181526020018a81526020018967ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600060018111156111db57fe5b81526020016001808111156111ec57fe5b8152602001600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581525090508060008084815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160030160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a0820151816004015560c0820151816005015560e08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610100820151816007019080519060200190611354929190611b36565b50905050600180600084815260200190815260200160002060006101000a81548160ff0219169083600381111561138757fe5b0217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561146957600080fd5b505af115801561147d573d6000803e3d6000fd5b505050506040513d602081101561149357600080fd5b81019080805190602001909291905050506114f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611cc86030913960400191505060405180910390fd5b81600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5a0cc384a12a55445d4625db5d24f6a72177fd330644e2d4b3ea0ebd6f78c54d8c8c86602001518c8c8c604051808781526020018667ffffffffffffffff1667ffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156115e75780820151818401526020810190506115cc565b50505050905090810190601f1680156116145780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a460026001600084815260200190815260200160002060006101000a81548160ff0219169083600381111561165657fe5b0217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561172657600080fd5b505af115801561173a573d6000803e3d6000fd5b505050506040513d602081101561175057600080fd5b81019080805190602001909291905050506117b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611c78602c913960400191505060405180910390fd5b600080838152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549067ffffffffffffffff02191690556003820160086101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600482016000905560058201600090556006820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560078201600061186a9190611bb6565b505081600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f07a9dd1ef03da239626dc5c5bac1995991043d2b6e0e23ca789bbc0a16eb911f8c886040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561192657808201518184015260208101905061190b565b50505050905090810190601f1680156119535780820380516001836020036101000a031916815260200191505b50935050505060405180910390a46001925050509695505050505050565b6000600283836040516020018083815260200182805190602001908083835b602083106119b35780518252602082019150602081019050602083039250611990565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b60208310611a1b57805182526020820191506020810190506020830392506119f8565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa158015611a5d573d6000803e3d6000fd5b5050506040513d6020811015611a7257600080fd5b8101908080519060200190929190505050905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b604051806101200160405280600081526020016000815260200160008019168152602001600067ffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611b7757805160ff1916838001178555611ba5565b82800160010185558215611ba5579182015b82811115611ba4578251825591602001919060010190611b89565b5b509050611bb29190611bfe565b5090565b50805460018160011615610100020316600290046000825580601f10611bdc5750611bfb565b601f016020900490600052602060002090810190611bfa9190611bfe565b5b50565b611c2091905b80821115611c1c576000816000905550600101611c04565b5090565b9056fe5f6f7574416d6f756e74206d75737420626520657175616c205f707261416d6f756e7454696d657374616d70206d757374206265203330206d696e75746573206265747765656e2063757272656e742074696d654661696c656420746f207472616e73666572206c6f636b656420617373657420746f20726563697069656e745f6865696768745370616e2073686f756c6420626520696e205b36302c2036303438305d6661696c656420746f207472616e7366657220636c69656e7420617373657420746f207377617020636f6e7472616374a165627a7a723058209dcc0c2f2ccd73b472ed05a17ac8f62cac9f9b0177ebb759f27a845a86add07500290000000000000000000000009041fe5b3fdea0f5e4afdc17e75180738d877a01

Deployed Bytecode

0x6080604052600436106100dd5760003560e01c80638456cb591161007f578063c1f20d2211610059578063c1f20d2214610447578063ce4bb45214610498578063d2034061146105b4578063f851a4401461069a576100dd565b80638456cb59146102e35780638da5cb5b14610312578063b48017b114610369576100dd565b806350f7a03b116100bb57806350f7a03b146101bf5780635c0919bd146102125780635c975abb14610263578063704b6c0214610292576100dd565b806304abb303146100e257806321baf402146101395780633f4ba83a14610190575b600080fd5b3480156100ee57600080fd5b506100f76106f1565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561014557600080fd5b5061014e610717565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561019c57600080fd5b506101a561073d565b604051808215151515815260200191505060405180910390f35b3480156101cb57600080fd5b506101f8600480360360208110156101e257600080fd5b810190808035906020019092919050505061083a565b604051808215151515815260200191505060405180910390f35b34801561021e57600080fd5b506102616004803603602081101561023557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061087d565b005b34801561026f57600080fd5b50610278610973565b604051808215151515815260200191505060405180910390f35b34801561029e57600080fd5b506102e1600480360360208110156102b557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610986565b005b3480156102ef57600080fd5b506102f8610ab6565b604051808215151515815260200191505060405180910390f35b34801561031e57600080fd5b50610327610bb4565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561037557600080fd5b506103a26004803603602081101561038c57600080fd5b8101908080359060200190929190505050610bda565b604051808781526020018667ffffffffffffffff1667ffffffffffffffff1681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001965050505050505060405180910390f35b34801561045357600080fd5b506104966004803603602081101561046a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610df1565b005b3480156104a457600080fd5b5061059a600480360360c08110156104bb57600080fd5b8101908080359060200190929190803567ffffffffffffffff1690602001909291908035906020019092919080359060200190929190803590602001909291908035906020019064010000000081111561051457600080fd5b82018360208201111561052657600080fd5b8035906020019184600183028401116401000000008311171561054857600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050610ee7565b604051808215151515815260200191505060405180910390f35b3480156105c057600080fd5b50610684600480360360408110156105d757600080fd5b8101908080359060200190929190803590602001906401000000008111156105fe57600080fd5b82018360208201111561061057600080fd5b8035906020019184600183028401116401000000008311171561063257600080fd5b91908080601f016020809104026020016040519081016040528093929190818152602001838380828437600081840152601f19601f820116905080830192505050505050509192919290505050611971565b6040518082815260200191505060405180910390f35b3480156106a657600080fd5b506106af611a8b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806107e85750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b6107f157600080fd5b600560149054906101000a900460ff1661080a57600080fd5b6000600560146101000a81548160ff021916908315150217905550600560149054906101000a900460ff16905090565b600080600381111561084857fe5b6001600084815260200190815260200160002060009054906101000a900460ff16600381111561087457fe5b14159050919050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614806109265750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b61092f57600080fd5b80600360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600560149054906101000a900460ff1681565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610a2f5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610a3857600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415610a7257600080fd5b80600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610b615750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610b6a57600080fd5b600560149054906101000a900460ff1615610b8457600080fd5b6001600560146101000a81548160ff021916908315150217905550600560149054906101000a900460ff16905090565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600080600080600080610beb611ab1565b600080898152602001908152602001600020604051806101200160405290816000820154815260200160018201548152602001600282015481526020016003820160009054906101000a900467ffffffffffffffff1667ffffffffffffffff1667ffffffffffffffff1681526020016003820160089054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200160048201548152602001600582015481526020016006820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600782018054600181600116156101000203166002900480601f016020809104026020016040519081016040528092919081815260200182805460018160011615610100020316600290048015610db25780601f10610d8757610100808354040283529160200191610db2565b820191906000526020600020905b815481529060010190602001808311610d9557829003601f168201915b5050505050815250509050806040015181606001518260200151836000015184608001518560e001519650965096509650965096505091939550919395565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161480610e9a5750600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16145b610ea357600080fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000600560149054906101000a900460ff1615610f0357600080fd5b6000610f0f8884611971565b905060006003811115610f1e57fe5b6001600083815260200190815260200160002060009054906101000a900460ff166003811115610f4a57fe5b14610fbd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260198152602001807f73776170206973206f70656e65642070726576696f75736c790000000000000081525060200191505060405180910390fd5b603c8610158015610fd0575061ec408611155b611025576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526024815260200180611ca46024913960400191505060405180910390fd5b67016345785d8a00008510156110a3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f5f6f7574416d6f756e74206d757374206265206d6f7265207468616e20302e3181525060200191505060405180910390fd5b61070842038767ffffffffffffffff161180156110cd575061070842018767ffffffffffffffff16105b611122576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526031815260200180611c476031913960400191505060405180910390fd5b83851461117a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180611c246023913960400191505060405180910390fd5b611182611ab1565b60405180610120016040528087815260200143890181526020018a81526020018967ffffffffffffffff1681526020013373ffffffffffffffffffffffffffffffffffffffff168152602001600060018111156111db57fe5b81526020016001808111156111ec57fe5b8152602001600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018581525090508060008084815260200190815260200160002060008201518160000155602082015181600101556040820151816002015560608201518160030160006101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555060808201518160030160086101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060a0820151816004015560c0820151816005015560e08201518160060160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610100820151816007019080519060200190611354929190611b36565b50905050600180600084815260200190815260200160002060006101000a81548160ff0219169083600381111561138757fe5b0217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330896040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b15801561146957600080fd5b505af115801561147d573d6000803e3d6000fd5b505050506040513d602081101561149357600080fd5b81019080805190602001909291905050506114f9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526030815260200180611cc86030913960400191505060405180910390fd5b81600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f5a0cc384a12a55445d4625db5d24f6a72177fd330644e2d4b3ea0ebd6f78c54d8c8c86602001518c8c8c604051808781526020018667ffffffffffffffff1667ffffffffffffffff16815260200185815260200184815260200183815260200180602001828103825283818151815260200191508051906020019080838360005b838110156115e75780820151818401526020810190506115cc565b50505050905090810190601f1680156116145780820380516001836020036101000a031916815260200191505b5097505050505050505060405180910390a460026001600084815260200190815260200160002060006101000a81548160ff0219169083600381111561165657fe5b0217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16886040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561172657600080fd5b505af115801561173a573d6000803e3d6000fd5b505050506040513d602081101561175057600080fd5b81019080805190602001909291905050506117b6576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602c815260200180611c78602c913960400191505060405180910390fd5b600080838152602001908152602001600020600080820160009055600182016000905560028201600090556003820160006101000a81549067ffffffffffffffff02191690556003820160086101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600482016000905560058201600090556006820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560078201600061186a9190611bb6565b505081600360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f07a9dd1ef03da239626dc5c5bac1995991043d2b6e0e23ca789bbc0a16eb911f8c886040518083815260200180602001828103825283818151815260200191508051906020019080838360005b8381101561192657808201518184015260208101905061190b565b50505050905090810190601f1680156119535780820380516001836020036101000a031916815260200191505b50935050505060405180910390a46001925050509695505050505050565b6000600283836040516020018083815260200182805190602001908083835b602083106119b35780518252602082019150602081019050602083039250611990565b6001836020036101000a038019825116818451168082178552505050505050905001925050506040516020818303038152906040526040518082805190602001908083835b60208310611a1b57805182526020820191506020810190506020830392506119f8565b6001836020036101000a038019825116818451168082178552505050505050905001915050602060405180830381855afa158015611a5d573d6000803e3d6000fd5b5050506040513d6020811015611a7257600080fd5b8101908080519060200190929190505050905092915050565b600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b604051806101200160405280600081526020016000815260200160008019168152602001600067ffffffffffffffff168152602001600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152602001600073ffffffffffffffffffffffffffffffffffffffff168152602001606081525090565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f10611b7757805160ff1916838001178555611ba5565b82800160010185558215611ba5579182015b82811115611ba4578251825591602001919060010190611b89565b5b509050611bb29190611bfe565b5090565b50805460018160011615610100020316600290046000825580601f10611bdc5750611bfb565b601f016020900490600052602060002090810190611bfa9190611bfe565b5b50565b611c2091905b80821115611c1c576000816000905550600101611c04565b5090565b9056fe5f6f7574416d6f756e74206d75737420626520657175616c205f707261416d6f756e7454696d657374616d70206d757374206265203330206d696e75746573206265747765656e2063757272656e742074696d654661696c656420746f207472616e73666572206c6f636b656420617373657420746f20726563697069656e745f6865696768745370616e2073686f756c6420626520696e205b36302c2036303438305d6661696c656420746f207472616e7366657220636c69656e7420617373657420746f207377617020636f6e7472616374a165627a7a723058209dcc0c2f2ccd73b472ed05a17ac8f62cac9f9b0177ebb759f27a845a86add0750029

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

0000000000000000000000009041fe5b3fdea0f5e4afdc17e75180738d877a01

-----Decoded View---------------
Arg [0] : _praContract (address): 0x9041Fe5B3FDEA0f5e4afDC17e75180738D877A01

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 0000000000000000000000009041fe5b3fdea0f5e4afdc17e75180738d877a01


Deployed Bytecode Sourcemap

499:7199:0:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3706:8;;;1837:30;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1837:30:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1871:31;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1871:31:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;2795:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2795:104:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7178:123;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7178:123:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7178:123:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3507:110;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3507:110:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3507:110:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;1995:26;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1995:26:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;3003:121;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3003:121:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3003:121:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;2647:104;;8:9:-1;5:2;;;30:1;27;20:12;5:2;2647:104:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1906:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1906:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;6596:424;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6596:424:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6596:424:0;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;3261:102;;8:9:-1;5:2;;;30:1;27;20:12;5:2;3261:102:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;3261:102:0;;;;;;;;;;;;;;;;;;;:::i;:::-;;4233:2214;;8:9:-1;5:2;;;30:1;27;20:12;5:2;4233:2214:0;;;;;;13:3:-1;8;5:12;2:2;;;30:1;27;20:12;2:2;4233:2214:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;4233:2214:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;4233:2214:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;4233:2214:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;4233:2214:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;7517:178;;8:9:-1;5:2;;;30:1;27;20:12;5:2;7517:178:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7517:178:0;;;;;;;;;;;;;;;;;;;21:11:-1;8;5:28;2:2;;;46:1;43;36:12;2:2;7517:178:0;;35:9:-1;28:4;12:14;8:25;5:40;2:2;;;58:1;55;48:12;2:2;7517:178:0;;;;;;100:9:-1;95:1;81:12;77:20;67:8;63:35;60:50;39:11;25:12;22:29;11:107;8:2;;;131:1;128;121:12;8:2;7517:178:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30:3:-1;22:6;14;1:33;99:1;93:3;85:6;81:16;74:27;137:4;133:9;126:4;121:3;117:14;113:30;106:37;;169:3;161:6;157:16;147:26;;7517:178:0;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;1930:20;;8:9:-1;5:2;;;30:1;27;20:12;5:2;1930:20:0;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;1837:30;;;;;;;;;;;;;:::o;1871:31::-;;;;;;;;;;;;;:::o;2795:104::-;2851:4;2297:5;;;;;;;;;;;2283:19;;:10;:19;;;:42;;;;2320:5;;;;;;;;;;;2306:19;;:10;:19;;;2283:42;2275:51;;;;;;2587:6;;;;;;;;;;;2579:15;;;;;;2871:5;2862:6;;:14;;;;;;;;;;;;;;;;;;2888:6;;;;;;;;;;;2881:13;;2795:104;:::o;7178:123::-;7239:4;7281:14;7258:37;;;;;;;;:10;:19;7269:7;7258:19;;;;;;;;;;;;;;;;;;;;;:37;;;;;;;;;;7250:46;;7178:123;;;:::o;3507:110::-;2297:5;;;;;;;;;;;2283:19;;:10;:19;;;:42;;;;2320:5;;;;;;;;;;;2306:19;;:10;:19;;;2283:42;2275:51;;;;;;3598:14;3579:16;;:33;;;;;;;;;;;;;;;;;;3507:110;:::o;1995:26::-;;;;;;;;;;;;;:::o;3003:121::-;2297:5;;;;;;;;;;;2283:19;;:10;:19;;;:42;;;;2320:5;;;;;;;;;;;2306:19;;:10;:19;;;2283:42;2275:51;;;;;;3093:1;3071:24;;:10;:24;;;;3063:33;;;;;;3109:10;3101:5;;:18;;;;;;;;;;;;;;;;;;3003:121;:::o;2647:104::-;2704:4;2297:5;;;;;;;;;;;2283:19;;:10;:19;;;:42;;;;2320:5;;;;;;;;;;;2306:19;;:10;:19;;;2283:42;2275:51;;;;;;2458:6;;;;;;;;;;;2457:7;2449:16;;;;;;2724:4;2715:6;;:13;;;;;;;;;;;;;;;;;;2740:6;;;;;;;;;;;2733:13;;2647:104;:::o;1906:20::-;;;;;;;;;;;;;:::o;6596:424::-;6673:25;6704:17;6727:21;6754:18;6778:15;6799:18;6830:16;;:::i;:::-;6849:5;:14;6855:7;6849:14;;;;;;;;;;;6830:33;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6881:4;:21;;;6908:4;:14;;;6928:4;:17;;;6951:4;:14;;;6971:4;:15;;;6992:4;:18;;;6868:147;;;;;;;;;;;;;6596:424;;;;;;;:::o;3261:102::-;2297:5;;;;;;;;;;;2283:19;;:10;:19;;;:42;;;;2320:5;;;;;;;;;;;2306:19;;:10;:19;;;2283:42;2275:51;;;;;;3346:12;3328:15;;:30;;;;;;;;;;;;;;;;;;3261:102;:::o;4233:2214::-;4435:4;2458:6;;;;;;;;;;;2457:7;2449:16;;;;;;4446:14;4463:43;4473:17;4492:13;4463:9;:43::i;:::-;4446:60;;4541:14;4519:36;;;;;;;;:10;:18;4530:6;4519:18;;;;;;;;;;;;;;;;;;;;;:36;;;;;;;;;4511:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4730:2;4715:11;:17;;:41;;;;;4751:5;4736:11;:20;;4715:41;4707:90;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4824:18;4810:10;:32;;4802:77;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4916:4;4910:3;:10;4897;:23;;;:50;;;;;4943:4;4937:3;:10;4924;:23;;;4897:50;4884:125;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5036:10;5022;:24;5014:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5130:16;;:::i;:::-;5149:344;;;;;;;;5171:10;5149:344;;;;5215:12;5201:11;:26;5149:344;;;;5251:17;5149:344;;;;5285:10;5149:344;;;;;;5313:10;5149:344;;;;;;5354:14;5346:23;;;;;;;;5149:344;;;;5435:14;5427:23;;;;;;;;5149:344;;;;5471:16;;;;;;;;;;;5149:344;;;;;;5389:13;5149:344;;;5130:363;;5534:4;5518:5;:13;5524:6;5518:13;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;5564:11;5543:10;:18;5554:6;5543:18;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;;;;;;;5647:15;;;;;;;;;;;5641:35;;;5677:10;5697:4;5704:10;5641:74;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;5641:74:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;5641:74:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;5641:74:0;;;;;;;;;;;;;;;;5628:148;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5868:6;5846:16;;;;;;;;;;;5820:172;;5830:10;5820:172;;;5880:17;5903:10;5919:4;:17;;;5942:10;5958;5974:13;5820:172;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;5820:172:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6064:16;6043:10;:18;6054:6;6043:18;;;;;;;;;;;;:37;;;;;;;;;;;;;;;;;;;;;;;;6141:15;;;;;;;;;;;6135:31;;;6167:16;;;;;;;;;;;6185:10;6135:61;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;30:1;27;20:12;5:2;6135:61:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;6135:61:0;;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;6135:61:0;;;;;;;;;;;;;;;;6122:131;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6292:5;:13;6298:6;6292:13;;;;;;;;;;;;6285:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;6383:6;6365:16;;;;;;;;;;;6345:79;;6353:10;6345:79;;;6391:17;6410:13;6345:79;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23:1:-1;8:100;33:3;30:1;27:10;8:100;;;99:1;94:3;90:11;84:18;80:1;75:3;71:11;64:39;52:2;49:1;45:10;40:15;;8:100;;;12:14;6345:79:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6438:4;6431:11;;;;4233:2214;;;;;;;;:::o;7517:178::-;7612:7;7633:57;7657:17;7676:12;7640:49;;;;;;;;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7640:49:0;;;;;;;;;;;;49:4:-1;39:7;30;26:21;22:32;13:7;6:49;7640::0;;;7633:57;;;;;;;;;;;;;36:153:-1;66:2;61:3;58:11;36:153;;182:3;176:10;171:3;164:23;98:2;93:3;89:12;82:19;;123:2;118:3;114:12;107:19;;148:2;143:3;139:12;132:19;;36:153;;;274:1;267:3;263:2;259:12;254:3;250:22;246:30;315:4;311:9;305:3;299:10;295:26;356:4;350:3;344:10;340:21;389:7;380;377:20;372:3;365:33;3:399;;;7633:57:0;;;;;;;;;;;;;;;;;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;7633:57:0;;;;;;13:2:-1;8:3;5:11;2:2;;;29:1;26;19:12;2:2;7633:57:0;;;;;;;;;;;;;;;;7626:64;;7517:178;;;;:::o;1930:20::-;;;;;;;;;;;;;:::o;499:7199::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;:::o;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o

Swarm Source

bzzr://9dcc0c2f2ccd73b472ed05a17ac8f62cac9f9b0177ebb759f27a845a86add075

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.