ETH Price: $3,323.88 (-4.42%)

Contract

0xCDa7177e6c4b9212F21BD07871A4649d016DE251
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer70458552019-01-11 3:11:302176 days ago1547176290IN
0xCDa7177e...d016DE251
0 ETH0.000299518
Transfer70458012019-01-11 2:59:492176 days ago1547175589IN
0xCDa7177e...d016DE251
0 ETH0.000420028
Transfer70456672019-01-11 2:23:542176 days ago1547173434IN
0xCDa7177e...d016DE251
0 ETH0.000157123
Transfer70377762019-01-09 16:32:022178 days ago1547051522IN
0xCDa7177e...d016DE251
0 ETH0.000053852.4
Transfer70375342019-01-09 15:31:142178 days ago1547047874IN
0xCDa7177e...d016DE251
0 ETH0.000080783.6
Transfer70375252019-01-09 15:29:112178 days ago1547047751IN
0xCDa7177e...d016DE251
0 ETH0.0003737510
Transfer70375232019-01-09 15:27:512178 days ago1547047671IN
0xCDa7177e...d016DE251
0 ETH0.0005243910
Transfer70372922019-01-09 14:31:342178 days ago1547044294IN
0xCDa7177e...d016DE251
0 ETH0.000053852.4
Transfer70372542019-01-09 14:23:302178 days ago1547043810IN
0xCDa7177e...d016DE251
0 ETH0.0003750310
Transfer70372432019-01-09 14:21:342178 days ago1547043694IN
0xCDa7177e...d016DE251
0 ETH0.0005243910
Transfer70372382019-01-09 14:19:372178 days ago1547043577IN
0xCDa7177e...d016DE251
0 ETH0.0005243910
Transfer70354022019-01-09 6:13:332178 days ago1547014413IN
0xCDa7177e...d016DE251
0 ETH0.000336379
Transfer70347522019-01-09 3:30:292178 days ago1547004629IN
0xCDa7177e...d016DE251
0 ETH0.000080783.6
Transfer70246402019-01-07 8:13:202180 days ago1546848800IN
0xCDa7177e...d016DE251
0 ETH0.000186875
Transfer70240122019-01-07 5:27:192180 days ago1546838839IN
0xCDa7177e...d016DE251
0 ETH0.000112313
Transfer70239952019-01-07 5:22:422180 days ago1546838562IN
0xCDa7177e...d016DE251
0 ETH0.000112123
Transfer70239372019-01-07 5:08:212180 days ago1546837701IN
0xCDa7177e...d016DE251
0 ETH0.000112313
Transfer70075352019-01-04 6:34:312183 days ago1546583671IN
0xCDa7177e...d016DE251
0 ETH0.0015697542
Transfer69495192018-12-25 9:37:592193 days ago1545730679IN
0xCDa7177e...d016DE251
0 ETH0.000943918
Transfer69495152018-12-25 9:36:352193 days ago1545730595IN
0xCDa7177e...d016DE251
0 ETH0.000187515
Transfer69408692018-12-23 22:41:492194 days ago1545604909IN
0xCDa7177e...d016DE251
0 ETH0.000083953.6
Transfer69383492018-12-23 12:30:052195 days ago1545568205IN
0xCDa7177e...d016DE251
0 ETH0.000186328.2800003
Transfer69383492018-12-23 12:30:052195 days ago1545568205IN
0xCDa7177e...d016DE251
0 ETH0.000185798.2800003
Transfer69381192018-12-23 11:30:582195 days ago1545564658IN
0xCDa7177e...d016DE251
0 ETH0.0004050310.8
Transfer69364392018-12-23 4:43:362195 days ago1545540216IN
0xCDa7177e...d016DE251
0 ETH0.000112313
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PTMT

Compiler Version
v0.4.25+commit.59dbf8f1

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2018-10-17
*/

pragma solidity ^0.4.25;

/*
*
*
*  ___ _      _                 _
*  | _ \ |__ _| |_ _ __  ___ _ _| |_
*  |  _/ / _` |  _| '  \/ -_) ' \  _|
*  |_| |_\__,_|\__|_|_|_\___|_||_\__|
*
*
*/

// SafeMath methods
library SafeMath {
    function add(uint256 _a, uint256 _b) internal pure returns (uint256) {
        uint256 c = _a + _b;
        assert(c >= _a);
        return c;
    }

    function sub(uint256 _a, uint256 _b) internal pure returns (uint256) {
        assert(_a >= _b);
        return _a - _b;
    }

    function mul(uint256 _a, uint256 _b) internal pure returns (uint256) {
        uint256 c = _a * _b;
        assert(_a == 0 || c / _a == _b);
        return c;
    }
}

// Contract must have an owner
contract Owned {
    address public owner;

    constructor() public {
        owner = msg.sender;
    }

    modifier onlyOwner() {
        require(msg.sender == owner);
        _;
    }

    function setOwner(address _owner) onlyOwner public {
        owner = _owner;
    }
}

// Standard ERC20 Token Interface
interface ERC20Token {
    function name() external view returns (string name_);
    function symbol() external view returns (string symbol_);
    function decimals() external view returns (uint8 decimals_);
    function totalSupply() external view returns (uint256 totalSupply_);
    function balanceOf(address _owner) external view returns (uint256 _balance);
    function transfer(address _to, uint256 _value) external returns (bool _success);
    function transferFrom(address _from, address _to, uint256 _value) external returns (bool _success);
    function approve(address _spender, uint256 _value) external returns (bool _success);
    function allowance(address _owner, address _spender) external view returns (uint256 _remaining);

    event Transfer(address indexed _from, address indexed _to, uint256 _value);
    event Approval(address indexed _owner, address indexed _spender, uint256 _value);
}

// the main ERC20-compliant multi-timelock enabled contract
contract PTMT is Owned, ERC20Token {
    using SafeMath for uint256;

    string private constant standard = "201810ef30de";
    string private constant version = "5.01c6c57";
    string private name_ = "platment";
    string private symbol_ = "PTMT";
    uint8 private decimals_ = 18;
    uint256 private totalSupply_ = uint256(10)**uint256(10) * uint256(10)**uint256(decimals_);
    mapping (address => uint256) private balanceP;
    mapping (address => mapping (address => uint256)) private allowed;

    mapping (address => uint256[]) private lockTime;
    mapping (address => uint256[]) private lockValue;
    mapping (address => uint256) private lockNum;
    uint256 private later = 0;
    uint256 private earlier = 0;

    // burn token event
    event Burn(address indexed _from, uint256 _value);

    // timelock-related events
    event TransferLocked(address indexed _from, address indexed _to, uint256 _time, uint256 _value);
    event TokenUnlocked(address indexed _address, uint256 _value);

    // safety method-related events
    event WrongTokenEmptied(address indexed _token, address indexed _addr, uint256 _amount);
    event WrongEtherEmptied(address indexed _addr, uint256 _amount);

    // constructor for the ERC20 Token
    constructor() public {
        balanceP[msg.sender] = totalSupply_;
    }

    modifier validAddress(address _address) {
        require(_address != 0x0);
        _;
    }

    // fast-forward the timelocks for all accounts
    function setUnlockEarlier(uint256 _earlier) public onlyOwner {
        earlier = earlier.add(_earlier);
    }

    // delay the timelocks for all accounts
    function setUnlockLater(uint256 _later) public onlyOwner {
        later = later.add(_later);
    }

    // standard ERC20 name function
    function name() public view returns (string) {
        return name_;
    }

    // standard ERC20 symbol function
    function symbol() public view returns (string) {
        return symbol_;
    }

    // standard ERC20 decimals function
    function decimals() public view returns (uint8) {
        return decimals_;
    }

    // standard ERC20 totalSupply function
    function totalSupply() public view returns (uint256) {
        return totalSupply_;
    }

    // standard ERC20 allowance function
    function allowance(address _owner, address _spender) external view returns (uint256) {
        return allowed[_owner][_spender];
    }

    // show unlocked balance of an account
    function balanceUnlocked(address _address) public view returns (uint256 _balance) {
        _balance = balanceP[_address];
        uint256 i = 0;
        while (i < lockNum[_address]) {
            if (now.add(earlier) >= lockTime[_address][i].add(later)) _balance = _balance.add(lockValue[_address][i]);
            i++;
        }
        return _balance;
    }

    // show timelocked balance of an account
    function balanceLocked(address _address) public view returns (uint256 _balance) {
        _balance = 0;
        uint256 i = 0;
        while (i < lockNum[_address]) {
            if (now.add(earlier) < lockTime[_address][i].add(later)) _balance = _balance.add(lockValue[_address][i]);
            i++;
        }
        return  _balance;
    }

    // standard ERC20 balanceOf with timelock added
    function balanceOf(address _address) public view returns (uint256 _balance) {
        _balance = balanceP[_address];
        uint256 i = 0;
        while (i < lockNum[_address]) {
            _balance = _balance.add(lockValue[_address][i]);
            i++;
        }
        return _balance;
    }

    // show timelocks in an account
    function showLockTimes(address _address) public view validAddress(_address) returns (uint256[] _times) {
        uint i = 0;
        uint256[] memory tempLockTime = new uint256[](lockNum[_address]);
        while (i < lockNum[_address]) {
            tempLockTime[i] = lockTime[_address][i].add(later).sub(earlier);
            i++;
        }
        return tempLockTime;
    }

    // show values locked in an account's timelocks
    function showLockValues(address _address) public view validAddress(_address) returns (uint256[] _values) {
        return lockValue[_address];
    }

    function showLockNum(address _address) public view validAddress(_address) returns (uint256 _lockNum) {
        return lockNum[_address];
    }

    // Calculate and process the timelock states of an account
    function calcUnlock(address _address) private {
        uint256 i = 0;
        uint256 j = 0;
        uint256[] memory currentLockTime;
        uint256[] memory currentLockValue;
        uint256[] memory newLockTime = new uint256[](lockNum[_address]);
        uint256[] memory newLockValue = new uint256[](lockNum[_address]);
        currentLockTime = lockTime[_address];
        currentLockValue = lockValue[_address];
        while (i < lockNum[_address]) {
            if (now.add(earlier) >= currentLockTime[i].add(later)) {
                balanceP[_address] = balanceP[_address].add(currentLockValue[i]);
                emit TokenUnlocked(_address, currentLockValue[i]);
            } else {
                newLockTime[j] = currentLockTime[i];
                newLockValue[j] = currentLockValue[i];
                j++;
            }
            i++;
        }
        uint256[] memory trimLockTime = new uint256[](j);
        uint256[] memory trimLockValue = new uint256[](j);
        i = 0;
        while (i < j) {
            trimLockTime[i] = newLockTime[i];
            trimLockValue[i] = newLockValue[i];
            i++;
        }
        lockTime[_address] = trimLockTime;
        lockValue[_address] = trimLockValue;
        lockNum[_address] = j;
    }

    // standard ERC20 transfer
    function transfer(address _to, uint256 _value) public validAddress(_to) returns (bool _success) {
        if (lockNum[msg.sender] > 0) calcUnlock(msg.sender);
        require(balanceP[msg.sender] >= _value && _value >= 0);
        balanceP[msg.sender] = balanceP[msg.sender].sub(_value);
        balanceP[_to] = balanceP[_to].add(_value);
        emit Transfer(msg.sender, _to, _value);
        return true;
    }

    // transfer Token with timelocks
    function transferLocked(address _to, uint256[] _time, uint256[] _value) public validAddress(_to) returns (bool _success) {
        require(_value.length == _time.length);

        if (lockNum[msg.sender] > 0) calcUnlock(msg.sender);
        uint256 i = 0;
        uint256 totalValue = 0;
        while (i < _value.length) {
            totalValue = totalValue.add(_value[i]);
            i++;
        }
        require(balanceP[msg.sender] >= totalValue && totalValue >= 0);
        require(lockNum[_to].add(_time.length) <= 42);
        i = 0;
        while (i < _time.length) {
            if (_value[i] > 0) {
                balanceP[msg.sender] = balanceP[msg.sender].sub(_value[i]);
                lockTime[_to].length = lockNum[_to]+1;
                lockValue[_to].length = lockNum[_to]+1;
                lockTime[_to][lockNum[_to]] = now.add(_time[i]).add(earlier).sub(later);
                lockValue[_to][lockNum[_to]] = _value[i];
                lockNum[_to]++;
            }

            // emit custom TransferLocked event
            emit TransferLocked(msg.sender, _to, _time[i], _value[i]);

            // emit standard Transfer event for wallets
            emit Transfer(msg.sender, _to, _value[i]);

            i++;
        }
        return true;
    }

    // TransferFrom Token with timelocks
    function transferLockedFrom(address _from, address _to, uint256[] _time, uint256[] _value) public
	    validAddress(_from) validAddress(_to) returns (bool success) {
        require(_value.length == _time.length);

        if (lockNum[_from] > 0) calcUnlock(_from);
        uint256 i = 0;
        uint256 totalValue = 0;
        while (i < _value.length) {
            totalValue = totalValue.add(_value[i]);
            i++;
        }
        require(balanceP[_from] >= totalValue && totalValue >= 0 && allowed[_from][msg.sender] >= totalValue);
        require(lockNum[_to].add(_time.length) <= 42);
        i = 0;
        while (i < _time.length) {
            if (_value[i] > 0) {
                balanceP[_from] = balanceP[_from].sub(_value[i]);
                allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value[i]);
                lockTime[_to].length = lockNum[_to]+1;
                lockValue[_to].length = lockNum[_to]+1;
                lockTime[_to][lockNum[_to]] = now.add(_time[i]).add(earlier).sub(later);
                lockValue[_to][lockNum[_to]] = _value[i];
                lockNum[_to]++;
            }

            // emit custom TransferLocked event
            emit TransferLocked(_from, _to, _time[i], _value[i]);

            // emit standard Transfer event for wallets
            emit Transfer(_from, _to, _value[i]);

            i++;
        }
        return true;
    }

    // standard ERC20 transferFrom
    function transferFrom(address _from, address _to, uint256 _value) public validAddress(_from) validAddress(_to) returns (bool _success) {
        if (lockNum[_from] > 0) calcUnlock(_from);
        require(balanceP[_from] >= _value && _value >= 0 && allowed[_from][msg.sender] >= _value);
        allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);
        balanceP[_from] = balanceP[_from].sub(_value);
        balanceP[_to] = balanceP[_to].add(_value);
        emit Transfer(_from, _to, _value);
        return true;
    }

    // should only be called when first setting an allowed
    function approve(address _spender, uint256 _value) public validAddress(_spender) returns (bool _success) {
        if (lockNum[msg.sender] > 0) calcUnlock(msg.sender);
        allowed[msg.sender][_spender] = _value;
        emit Approval(msg.sender, _spender, _value);
        return true;
    }

    // increase or decrease allowed
    function increaseApproval(address _spender, uint _value) public validAddress(_spender) returns (bool _success) {
        allowed[msg.sender][_spender] = allowed[msg.sender][_spender].add(_value);
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    function decreaseApproval(address _spender, uint _value) public validAddress(_spender) returns (bool _success) {
        if(_value >= allowed[msg.sender][_spender]) {
            allowed[msg.sender][_spender] = 0;
        } else {
            allowed[msg.sender][_spender] = allowed[msg.sender][_spender].sub(_value);
        }
        emit Approval(msg.sender, _spender, allowed[msg.sender][_spender]);
        return true;
    }

    // owner may burn own token
    function burn(uint256 _value) public onlyOwner returns (bool _success) {
        if (lockNum[msg.sender] > 0) calcUnlock(msg.sender);
        require(balanceP[msg.sender] >= _value && _value >= 0);
        balanceP[msg.sender] = balanceP[msg.sender].sub(_value);
        totalSupply_ = totalSupply_.sub(_value);
        emit Burn(msg.sender, _value);
        return true;
    }

    // safety methods
    function () public payable {
        revert();
    }

    function emptyWrongToken(address _addr) onlyOwner public {
        ERC20Token wrongToken = ERC20Token(_addr);
        uint256 amount = wrongToken.balanceOf(address(this));
        require(amount > 0);
        require(wrongToken.transfer(msg.sender, amount));

        emit WrongTokenEmptied(_addr, msg.sender, amount);
    }

    // shouldn't happen, just in case
    function emptyWrongEther() onlyOwner public {
        uint256 amount = address(this).balance;
        require(amount > 0);
        msg.sender.transfer(amount);

        emit WrongEtherEmptied(msg.sender, amount);
    }

}

Contract Security Audit

Contract ABI

[{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"balanceUnlocked","outputs":[{"name":"_balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"approve","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_time","type":"uint256[]"},{"name":"_value","type":"uint256[]"}],"name":"transferLockedFrom","outputs":[{"name":"success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"}],"name":"setOwner","outputs":[],"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":"_value","type":"uint256"}],"name":"transferFrom","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[],"name":"decimals","outputs":[{"name":"","type":"uint8"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_value","type":"uint256"}],"name":"burn","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"balanceLocked","outputs":[{"name":"_balance","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"decreaseApproval","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"balanceOf","outputs":[{"name":"_balance","type":"uint256"}],"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":false,"inputs":[{"name":"_to","type":"address"},{"name":"_value","type":"uint256"}],"name":"transfer","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_time","type":"uint256[]"},{"name":"_value","type":"uint256[]"}],"name":"transferLocked","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"showLockTimes","outputs":[{"name":"_times","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"showLockValues","outputs":[{"name":"_values","type":"uint256[]"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_later","type":"uint256"}],"name":"setUnlockLater","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_addr","type":"address"}],"name":"emptyWrongToken","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[{"name":"_spender","type":"address"},{"name":"_value","type":"uint256"}],"name":"increaseApproval","outputs":[{"name":"_success","type":"bool"}],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":false,"inputs":[],"name":"emptyWrongEther","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"},{"name":"_spender","type":"address"}],"name":"allowance","outputs":[{"name":"","type":"uint256"}],"payable":false,"stateMutability":"view","type":"function"},{"constant":false,"inputs":[{"name":"_earlier","type":"uint256"}],"name":"setUnlockEarlier","outputs":[],"payable":false,"stateMutability":"nonpayable","type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"showLockNum","outputs":[{"name":"_lockNum","type":"uint256"}],"payable":false,"stateMutability":"view","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":"_value","type":"uint256"}],"name":"Burn","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_time","type":"uint256"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"TransferLocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_address","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"TokenUnlocked","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_token","type":"address"},{"indexed":true,"name":"_addr","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"WrongTokenEmptied","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_addr","type":"address"},{"indexed":false,"name":"_amount","type":"uint256"}],"name":"WrongEtherEmptied","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_from","type":"address"},{"indexed":true,"name":"_to","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"name":"_owner","type":"address"},{"indexed":true,"name":"_spender","type":"address"},{"indexed":false,"name":"_value","type":"uint256"}],"name":"Approval","type":"event"}]

60c0604052600860808190527f706c61746d656e7400000000000000000000000000000000000000000000000060a0908152620000409160019190620000ed565b506040805180820190915260048082527f50544d540000000000000000000000000000000000000000000000000000000060209092019182526200008791600291620000ed565b5060038054601260ff19909116179081905560ff16600a90810a6402540be40002600455600090819055600b55348015620000c157600080fd5b5060008054600160a060020a031916339081178255600454908252600560205260409091205562000192565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200013057805160ff191683800117855562000160565b8280016001018555821562000160579182015b828111156200016057825182559160200191906001019062000143565b506200016e92915062000172565b5090565b6200018f91905b808211156200016e576000815560010162000179565b90565b61212880620001a26000396000f3006080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630451f520811461014d57806306fdde0314610180578063095ea7b31461020a5780630fce887b1461024257806313af4035146102e657806318160ddd1461030957806323b872dd1461031e578063313ce5671461034857806342966c68146103735780635fc3a3121461038b57806366188463146103ac57806370a08231146103d05780638da5cb5b146103f157806395d89b4114610422578063a9059cbb14610437578063b91aedab1461045b578063b9c5416d146104f7578063c9e6bd3414610568578063ca0cd7c014610589578063d7290181146105a1578063d73dd623146105c2578063d80b2056146105e6578063dd62ed3e146105fb578063df51d46b14610622578063fb276fcf1461063a575b600080fd5b34801561015957600080fd5b5061016e600160a060020a036004351661065b565b60408051918252519081900360200190f35b34801561018c57600080fd5b50610195610749565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101cf5781810151838201526020016101b7565b50505050905090810190601f1680156101fc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021657600080fd5b5061022e600160a060020a03600435166024356107df565b604080519115158252519081900360200190f35b34801561024e57600080fd5b50604080516020600460443581810135838102808601850190965280855261022e958335600160a060020a039081169660248035909216963696956064959294930192829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375094975061087e9650505050505050565b3480156102f257600080fd5b50610307600160a060020a0360043516610cfe565b005b34801561031557600080fd5b5061016e610d44565b34801561032a57600080fd5b5061022e600160a060020a0360043581169060243516604435610d4a565b34801561035457600080fd5b5061035d610efe565b6040805160ff9092168252519081900360200190f35b34801561037f57600080fd5b5061022e600435610f07565b34801561039757600080fd5b5061016e600160a060020a0360043516610fed565b3480156103b857600080fd5b5061022e600160a060020a036004351660243561108c565b3480156103dc57600080fd5b5061016e600160a060020a03600435166111b6565b3480156103fd57600080fd5b50610406611224565b60408051600160a060020a039092168252519081900360200190f35b34801561042e57600080fd5b50610195611233565b34801561044357600080fd5b5061022e600160a060020a0360043516602435611291565b34801561046757600080fd5b5060408051602060046024803582810135848102808701860190975280865261022e968435600160a060020a031696369660449591949091019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506113929650505050505050565b34801561050357600080fd5b50610518600160a060020a0360043516611710565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561055457818101518382015260200161053c565b505050509050019250505060405180910390f35b34801561057457600080fd5b50610518600160a060020a0360043516611802565b34801561059557600080fd5b50610307600435611885565b3480156105ad57600080fd5b50610307600160a060020a03600435166118b5565b3480156105ce57600080fd5b5061022e600160a060020a0360043516602435611a52565b3480156105f257600080fd5b50610307611a9e565b34801561060757600080fd5b5061016e600160a060020a0360043581169060243516611b2d565b34801561062e57600080fd5b50610307600435611b58565b34801561064657600080fd5b5061016e600160a060020a0360043516611b88565b600160a060020a038116600090815260056020526040812054905b600160a060020a03831660009081526009602052604090205481101561074357600a54600160a060020a038416600090815260076020526040902080546106dc929190849081106106c357fe5b9060005260206000200154611bbd90919063ffffffff16565b600b546106f090429063ffffffff611bbd16565b1061073b57600160a060020a0383166000908152600860205260409020805461073891908390811061071e57fe5b906000526020600020015483611bbd90919063ffffffff16565b91505b600101610676565b50919050565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156107d45780601f106107a9576101008083540402835291602001916107d4565b820191906000526020600020905b8154815290600101906020018083116107b757829003601f168201915b505050505090505b90565b600082600160a060020a03811615156107f757600080fd5b3360009081526009602052604081205411156108165761081633611bd3565b336000818152600660209081526040808320600160a060020a03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000808086600160a060020a038116151561089857600080fd5b86600160a060020a03811615156108ae57600080fd5b86518651146108bc57600080fd5b600160a060020a03891660009081526009602052604081205411156108e4576108e489611bd3565b60009350600092505b855184101561092b5761091e868581518110151561090757fe5b60209081029091010151849063ffffffff611bbd16565b60019094019392506108ed565b600160a060020a0389166000908152600560205260409020548311801590610954575060008310155b80156109835750600160a060020a03891660009081526006602090815260408083203384529091529020548311155b151561098e57600080fd5b8651600160a060020a038916600090815260096020526040902054602a916109bc919063ffffffff611bbd16565b11156109c757600080fd5b600093505b8651841015610cef57600086858151811015156109e557fe5b906020019060200201511115610c1a57610a378685815181101515610a0657fe5b6020908102909101810151600160a060020a038c16600090815260059092526040909120549063ffffffff61203c16565b600160a060020a038a166000908152600560205260409020558551610a9c90879086908110610a6257fe5b6020908102909101810151600160a060020a038c16600090815260068352604080822033835290935291909120549063ffffffff61203c16565b600160a060020a03808b166000908152600660209081526040808320338452825280832094909455918b1681526009825282812054600790925291909120600190910190610aea908261204e565b50600160a060020a0388166000908152600960209081526040808320546008909252909120600190910190610b1f908261204e565b50610b6c600a54610b60600b54610b548b89815181101515610b3d57fe5b60209081029091010151429063ffffffff611bbd16565b9063ffffffff611bbd16565b9063ffffffff61203c16565b600160a060020a038916600090815260076020908152604080832060099092529091205481548110610b9a57fe5b6000918252602090912001558551869085908110610bb457fe5b6020908102909101810151600160a060020a038a166000908152600883526040808220600990945290205482549192918110610bec57fe5b6000918252602080832090910192909255600160a060020a038a168152600990915260409020805460010190555b87600160a060020a031689600160a060020a03167f34c966766e471b87b7ce8d0d0358378cf20008a30bbb36246a3413c8a286834e8987815181101515610c5d57fe5b906020019060200201518988815181101515610c7557fe5b602090810290910181015160408051938452918301528051918290030190a387600160a060020a031689600160a060020a03166000805160206120dd8339815191528887815181101515610cc557fe5b906020019060200201516040518082815260200191505060405180910390a36001909301926109cc565b50600198975050505050505050565b600054600160a060020a03163314610d1557600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60045490565b600083600160a060020a0381161515610d6257600080fd5b83600160a060020a0381161515610d7857600080fd5b600160a060020a0386166000908152600960205260408120541115610da057610da086611bd3565b600160a060020a0386166000908152600560205260409020548411801590610dc9575060008410155b8015610df85750600160a060020a03861660009081526006602090815260408083203384529091529020548411155b1515610e0357600080fd5b600160a060020a0386166000908152600660209081526040808320338452909152902054610e37908563ffffffff61203c16565b600160a060020a038716600081815260066020908152604080832033845282528083209490945591815260059091522054610e78908563ffffffff61203c16565b600160a060020a038088166000908152600560205260408082209390935590871681522054610ead908563ffffffff611bbd16565b600160a060020a0380871660008181526005602090815260409182902094909455805188815290519193928a16926000805160206120dd83398151915292918290030190a350600195945050505050565b60035460ff1690565b60008054600160a060020a03163314610f1f57600080fd5b336000908152600960205260408120541115610f3e57610f3e33611bd3565b336000908152600560205260409020548211801590610f5e575060008210155b1515610f6957600080fd5b33600090815260056020526040902054610f89908363ffffffff61203c16565b33600090815260056020526040902055600454610fac908363ffffffff61203c16565b60045560408051838152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2506001919050565b6000805b600160a060020a03831660009081526009602052604090205481101561074357600a54600160a060020a0384166000908152600760205260409020805461103e929190849081106106c357fe5b600b5461105290429063ffffffff611bbd16565b101561108457600160a060020a0383166000908152600860205260409020805461108191908390811061071e57fe5b91505b600101610ff1565b600082600160a060020a03811615156110a457600080fd5b336000908152600660209081526040808320600160a060020a038816845290915290205483106110f757336000908152600660209081526040808320600160a060020a0388168452909152812055611150565b336000908152600660209081526040808320600160a060020a038816845290915290205461112b908463ffffffff61203c16565b336000908152600660209081526040808320600160a060020a03891684529091529020555b336000818152600660209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a038116600090815260056020526040812054905b600160a060020a03831660009081526009602052604090205481101561074357600160a060020a0383166000908152600860205260409020805461121a91908390811061071e57fe5b91506001016111d1565b600054600160a060020a031681565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156107d45780601f106107a9576101008083540402835291602001916107d4565b600082600160a060020a03811615156112a957600080fd5b3360009081526009602052604081205411156112c8576112c833611bd3565b3360009081526005602052604090205483118015906112e8575060008310155b15156112f357600080fd5b33600090815260056020526040902054611313908463ffffffff61203c16565b3360009081526005602052604080822092909255600160a060020a03861681522054611345908463ffffffff611bbd16565b600160a060020a0385166000818152600560209081526040918290209390935580518681529051919233926000805160206120dd8339815191529281900390910190a35060019392505050565b6000808085600160a060020a03811615156113ac57600080fd5b85518551146113ba57600080fd5b3360009081526009602052604081205411156113d9576113d933611bd3565b60009250600091505b84518310156114205761141385848151811015156113fc57fe5b60209081029091010151839063ffffffff611bbd16565b60019093019291506113e2565b336000908152600560205260409020548211801590611440575060008210155b151561144b57600080fd5b8551600160a060020a038816600090815260096020526040902054602a91611479919063ffffffff611bbd16565b111561148457600080fd5b600092505b855183101561170357600085848151811015156114a257fe5b90602001906020020151111561162e576114eb85848151811015156114c357fe5b602090810290910181015133600090815260059092526040909120549063ffffffff61203c16565b33600090815260056020908152604080832093909355600160a060020a038a1682526009815282822054600790915291902060019091019061152d908261204e565b50600160a060020a0387166000908152600960209081526040808320546008909252909120600190910190611562908261204e565b50611580600a54610b60600b54610b548a88815181101515610b3d57fe5b600160a060020a0388166000908152600760209081526040808320600990925290912054815481106115ae57fe5b60009182526020909120015584518590849081106115c857fe5b6020908102909101810151600160a060020a038916600090815260088352604080822060099094529020548254919291811061160057fe5b6000918252602080832090910192909255600160a060020a0389168152600990915260409020805460010190555b86600160a060020a031633600160a060020a03167f34c966766e471b87b7ce8d0d0358378cf20008a30bbb36246a3413c8a286834e888681518110151561167157fe5b90602001906020020151888781518110151561168957fe5b602090810290910181015160408051938452918301528051918290030190a386600160a060020a031633600160a060020a03166000805160206120dd83398151915287868151811015156116d957fe5b906020019060200201516040518082815260200191505060405180910390a3600190920191611489565b5060019695505050505050565b606060008183600160a060020a038116151561172b57600080fd5b600092506009600086600160a060020a0316600160a060020a031681526020019081526020016000205460405190808252806020026020018201604052801561177e578160200160208202803883390190505b5091505b600160a060020a0385166000908152600960205260409020548310156117fa57600b54600a54600160a060020a038716600090815260076020526040902080546117d79392610b60929091889081106106c357fe5b82848151811015156117e557fe5b60209081029091010152600190920191611782565b509392505050565b606081600160a060020a038116151561181a57600080fd5b600160a060020a0383166000908152600860209081526040918290208054835181840281018401909452808452909183018282801561187857602002820191906000526020600020905b815481526020019060010190808311611864575b5050505050915050919050565b600054600160a060020a0316331461189c57600080fd5b600a546118af908263ffffffff611bbd16565b600a5550565b600080548190600160a060020a031633146118cf57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561193357600080fd5b505af1158015611947573d6000803e3d6000fd5b505050506040513d602081101561195d57600080fd5b505190506000811161196e57600080fd5b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051600160a060020a0384169163a9059cbb9160448083019260209291908290030181600087803b1580156119d657600080fd5b505af11580156119ea573d6000803e3d6000fd5b505050506040513d6020811015611a0057600080fd5b50511515611a0d57600080fd5b6040805182815290513391600160a060020a038616917f5d8daa04d680e083e2ab17a35494ba9f290f554edf76a78f0103a8a599b5c4249181900360200190a3505050565b600082600160a060020a0381161515611a6a57600080fd5b336000908152600660209081526040808320600160a060020a038816845290915290205461112b908463ffffffff611bbd16565b60008054600160a060020a03163314611ab657600080fd5b50303160008111611ac657600080fd5b604051339082156108fc029083906000818181858888f19350505050158015611af3573d6000803e3d6000fd5b5060408051828152905133917faea7a96dc17068a25e51e08f8ed45b86bd34b10af65af8e757af57b7e7b9e55d919081900360200190a250565b600160a060020a03918216600090815260066020908152604080832093909416825291909152205490565b600054600160a060020a03163314611b6f57600080fd5b600b54611b82908263ffffffff611bbd16565b600b5550565b600081600160a060020a0381161515611ba057600080fd5b5050600160a060020a031660009081526009602052604090205490565b600082820183811015611bcc57fe5b9392505050565b6000806060806060806060806000975060009650600960008a600160a060020a0316600160a060020a0316815260200190815260200160002054604051908082528060200260200182016040528015611c36578160200160208202803883390190505b509350600960008a600160a060020a0316600160a060020a0316815260200190815260200160002054604051908082528060200260200182016040528015611c88578160200160208202803883390190505b50600160a060020a038a166000908152600760209081526040918290208054835181840281018401909452808452939650919290830182828015611ceb57602002820191906000526020600020905b815481526020019060010190808311611cd7575b50505050509550600860008a600160a060020a0316600160a060020a03168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015611d6157602002820191906000526020600020905b815481526020019060010190808311611d4d575b505050505094505b600160a060020a038916600090815260096020526040902054881015611ef057611db3600a54878a815181101515611d9d57fe5b602090810290910101519063ffffffff611bbd16565b600b54611dc790429063ffffffff611bbd16565b10611e7e57611e0e8589815181101515611ddd57fe5b6020908102909101810151600160a060020a038c16600090815260059092526040909120549063ffffffff611bbd16565b600160a060020a038a1660008181526005602052604090209190915585517f613edbda9d1e6bda8af8e869a973f88cccf93854a11f351589038de07e1ab4e39087908b908110611e5a57fe5b906020019060200201516040518082815260200191505060405180910390a2611ee5565b8588815181101515611e8c57fe5b906020019060200201518488815181101515611ea457fe5b602090810290910101528451859089908110611ebc57fe5b906020019060200201518388815181101515611ed457fe5b602090810290910101526001909601955b600190970196611d69565b86604051908082528060200260200182016040528015611f1a578160200160208202803883390190505b50915086604051908082528060200260200182016040528015611f47578160200160208202803883390190505b509050600097505b86881015611fc2578388815181101515611f6557fe5b906020019060200201518289815181101515611f7d57fe5b602090810290910101528251839089908110611f9557fe5b906020019060200201518189815181101515611fad57fe5b60209081029091010152600190970196611f4f565b600160a060020a03891660009081526007602090815260409091208351611feb92850190612077565b50600160a060020a0389166000908152600860209081526040909120825161201592840190612077565b505050600160a060020a039096166000908152600960205260409020939093555050505050565b60008183101561204857fe5b50900390565b815481835581811115612072576000838152602090206120729181019083016120c2565b505050565b8280548282559060005260206000209081019282156120b2579160200282015b828111156120b2578251825591602001919060010190612097565b506120be9291506120c2565b5090565b6107dc91905b808211156120be57600081556001016120c85600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582073a6adeaaed803604fe0b7616bd211b0caec9c90f7f6bedf795fd79a3807ed920029

Deployed Bytecode

0x6080604052600436106101485763ffffffff7c01000000000000000000000000000000000000000000000000000000006000350416630451f520811461014d57806306fdde0314610180578063095ea7b31461020a5780630fce887b1461024257806313af4035146102e657806318160ddd1461030957806323b872dd1461031e578063313ce5671461034857806342966c68146103735780635fc3a3121461038b57806366188463146103ac57806370a08231146103d05780638da5cb5b146103f157806395d89b4114610422578063a9059cbb14610437578063b91aedab1461045b578063b9c5416d146104f7578063c9e6bd3414610568578063ca0cd7c014610589578063d7290181146105a1578063d73dd623146105c2578063d80b2056146105e6578063dd62ed3e146105fb578063df51d46b14610622578063fb276fcf1461063a575b600080fd5b34801561015957600080fd5b5061016e600160a060020a036004351661065b565b60408051918252519081900360200190f35b34801561018c57600080fd5b50610195610749565b6040805160208082528351818301528351919283929083019185019080838360005b838110156101cf5781810151838201526020016101b7565b50505050905090810190601f1680156101fc5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561021657600080fd5b5061022e600160a060020a03600435166024356107df565b604080519115158252519081900360200190f35b34801561024e57600080fd5b50604080516020600460443581810135838102808601850190965280855261022e958335600160a060020a039081169660248035909216963696956064959294930192829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a99890198929750908201955093508392508501908490808284375094975061087e9650505050505050565b3480156102f257600080fd5b50610307600160a060020a0360043516610cfe565b005b34801561031557600080fd5b5061016e610d44565b34801561032a57600080fd5b5061022e600160a060020a0360043581169060243516604435610d4a565b34801561035457600080fd5b5061035d610efe565b6040805160ff9092168252519081900360200190f35b34801561037f57600080fd5b5061022e600435610f07565b34801561039757600080fd5b5061016e600160a060020a0360043516610fed565b3480156103b857600080fd5b5061022e600160a060020a036004351660243561108c565b3480156103dc57600080fd5b5061016e600160a060020a03600435166111b6565b3480156103fd57600080fd5b50610406611224565b60408051600160a060020a039092168252519081900360200190f35b34801561042e57600080fd5b50610195611233565b34801561044357600080fd5b5061022e600160a060020a0360043516602435611291565b34801561046757600080fd5b5060408051602060046024803582810135848102808701860190975280865261022e968435600160a060020a031696369660449591949091019291829185019084908082843750506040805187358901803560208181028481018201909552818452989b9a9989019892975090820195509350839250850190849080828437509497506113929650505050505050565b34801561050357600080fd5b50610518600160a060020a0360043516611710565b60408051602080825283518183015283519192839290830191858101910280838360005b8381101561055457818101518382015260200161053c565b505050509050019250505060405180910390f35b34801561057457600080fd5b50610518600160a060020a0360043516611802565b34801561059557600080fd5b50610307600435611885565b3480156105ad57600080fd5b50610307600160a060020a03600435166118b5565b3480156105ce57600080fd5b5061022e600160a060020a0360043516602435611a52565b3480156105f257600080fd5b50610307611a9e565b34801561060757600080fd5b5061016e600160a060020a0360043581169060243516611b2d565b34801561062e57600080fd5b50610307600435611b58565b34801561064657600080fd5b5061016e600160a060020a0360043516611b88565b600160a060020a038116600090815260056020526040812054905b600160a060020a03831660009081526009602052604090205481101561074357600a54600160a060020a038416600090815260076020526040902080546106dc929190849081106106c357fe5b9060005260206000200154611bbd90919063ffffffff16565b600b546106f090429063ffffffff611bbd16565b1061073b57600160a060020a0383166000908152600860205260409020805461073891908390811061071e57fe5b906000526020600020015483611bbd90919063ffffffff16565b91505b600101610676565b50919050565b60018054604080516020601f600260001961010087891615020190951694909404938401819004810282018101909252828152606093909290918301828280156107d45780601f106107a9576101008083540402835291602001916107d4565b820191906000526020600020905b8154815290600101906020018083116107b757829003601f168201915b505050505090505b90565b600082600160a060020a03811615156107f757600080fd5b3360009081526009602052604081205411156108165761081633611bd3565b336000818152600660209081526040808320600160a060020a03891680855290835292819020879055805187815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b6000808086600160a060020a038116151561089857600080fd5b86600160a060020a03811615156108ae57600080fd5b86518651146108bc57600080fd5b600160a060020a03891660009081526009602052604081205411156108e4576108e489611bd3565b60009350600092505b855184101561092b5761091e868581518110151561090757fe5b60209081029091010151849063ffffffff611bbd16565b60019094019392506108ed565b600160a060020a0389166000908152600560205260409020548311801590610954575060008310155b80156109835750600160a060020a03891660009081526006602090815260408083203384529091529020548311155b151561098e57600080fd5b8651600160a060020a038916600090815260096020526040902054602a916109bc919063ffffffff611bbd16565b11156109c757600080fd5b600093505b8651841015610cef57600086858151811015156109e557fe5b906020019060200201511115610c1a57610a378685815181101515610a0657fe5b6020908102909101810151600160a060020a038c16600090815260059092526040909120549063ffffffff61203c16565b600160a060020a038a166000908152600560205260409020558551610a9c90879086908110610a6257fe5b6020908102909101810151600160a060020a038c16600090815260068352604080822033835290935291909120549063ffffffff61203c16565b600160a060020a03808b166000908152600660209081526040808320338452825280832094909455918b1681526009825282812054600790925291909120600190910190610aea908261204e565b50600160a060020a0388166000908152600960209081526040808320546008909252909120600190910190610b1f908261204e565b50610b6c600a54610b60600b54610b548b89815181101515610b3d57fe5b60209081029091010151429063ffffffff611bbd16565b9063ffffffff611bbd16565b9063ffffffff61203c16565b600160a060020a038916600090815260076020908152604080832060099092529091205481548110610b9a57fe5b6000918252602090912001558551869085908110610bb457fe5b6020908102909101810151600160a060020a038a166000908152600883526040808220600990945290205482549192918110610bec57fe5b6000918252602080832090910192909255600160a060020a038a168152600990915260409020805460010190555b87600160a060020a031689600160a060020a03167f34c966766e471b87b7ce8d0d0358378cf20008a30bbb36246a3413c8a286834e8987815181101515610c5d57fe5b906020019060200201518988815181101515610c7557fe5b602090810290910181015160408051938452918301528051918290030190a387600160a060020a031689600160a060020a03166000805160206120dd8339815191528887815181101515610cc557fe5b906020019060200201516040518082815260200191505060405180910390a36001909301926109cc565b50600198975050505050505050565b600054600160a060020a03163314610d1557600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0392909216919091179055565b60045490565b600083600160a060020a0381161515610d6257600080fd5b83600160a060020a0381161515610d7857600080fd5b600160a060020a0386166000908152600960205260408120541115610da057610da086611bd3565b600160a060020a0386166000908152600560205260409020548411801590610dc9575060008410155b8015610df85750600160a060020a03861660009081526006602090815260408083203384529091529020548411155b1515610e0357600080fd5b600160a060020a0386166000908152600660209081526040808320338452909152902054610e37908563ffffffff61203c16565b600160a060020a038716600081815260066020908152604080832033845282528083209490945591815260059091522054610e78908563ffffffff61203c16565b600160a060020a038088166000908152600560205260408082209390935590871681522054610ead908563ffffffff611bbd16565b600160a060020a0380871660008181526005602090815260409182902094909455805188815290519193928a16926000805160206120dd83398151915292918290030190a350600195945050505050565b60035460ff1690565b60008054600160a060020a03163314610f1f57600080fd5b336000908152600960205260408120541115610f3e57610f3e33611bd3565b336000908152600560205260409020548211801590610f5e575060008210155b1515610f6957600080fd5b33600090815260056020526040902054610f89908363ffffffff61203c16565b33600090815260056020526040902055600454610fac908363ffffffff61203c16565b60045560408051838152905133917fcc16f5dbb4873280815c1ee09dbd06736cffcc184412cf7a71a0fdb75d397ca5919081900360200190a2506001919050565b6000805b600160a060020a03831660009081526009602052604090205481101561074357600a54600160a060020a0384166000908152600760205260409020805461103e929190849081106106c357fe5b600b5461105290429063ffffffff611bbd16565b101561108457600160a060020a0383166000908152600860205260409020805461108191908390811061071e57fe5b91505b600101610ff1565b600082600160a060020a03811615156110a457600080fd5b336000908152600660209081526040808320600160a060020a038816845290915290205483106110f757336000908152600660209081526040808320600160a060020a0388168452909152812055611150565b336000908152600660209081526040808320600160a060020a038816845290915290205461112b908463ffffffff61203c16565b336000908152600660209081526040808320600160a060020a03891684529091529020555b336000818152600660209081526040808320600160a060020a0389168085529083529281902054815190815290519293927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925929181900390910190a35060019392505050565b600160a060020a038116600090815260056020526040812054905b600160a060020a03831660009081526009602052604090205481101561074357600160a060020a0383166000908152600860205260409020805461121a91908390811061071e57fe5b91506001016111d1565b600054600160a060020a031681565b60028054604080516020601f60001961010060018716150201909416859004938401819004810282018101909252828152606093909290918301828280156107d45780601f106107a9576101008083540402835291602001916107d4565b600082600160a060020a03811615156112a957600080fd5b3360009081526009602052604081205411156112c8576112c833611bd3565b3360009081526005602052604090205483118015906112e8575060008310155b15156112f357600080fd5b33600090815260056020526040902054611313908463ffffffff61203c16565b3360009081526005602052604080822092909255600160a060020a03861681522054611345908463ffffffff611bbd16565b600160a060020a0385166000818152600560209081526040918290209390935580518681529051919233926000805160206120dd8339815191529281900390910190a35060019392505050565b6000808085600160a060020a03811615156113ac57600080fd5b85518551146113ba57600080fd5b3360009081526009602052604081205411156113d9576113d933611bd3565b60009250600091505b84518310156114205761141385848151811015156113fc57fe5b60209081029091010151839063ffffffff611bbd16565b60019093019291506113e2565b336000908152600560205260409020548211801590611440575060008210155b151561144b57600080fd5b8551600160a060020a038816600090815260096020526040902054602a91611479919063ffffffff611bbd16565b111561148457600080fd5b600092505b855183101561170357600085848151811015156114a257fe5b90602001906020020151111561162e576114eb85848151811015156114c357fe5b602090810290910181015133600090815260059092526040909120549063ffffffff61203c16565b33600090815260056020908152604080832093909355600160a060020a038a1682526009815282822054600790915291902060019091019061152d908261204e565b50600160a060020a0387166000908152600960209081526040808320546008909252909120600190910190611562908261204e565b50611580600a54610b60600b54610b548a88815181101515610b3d57fe5b600160a060020a0388166000908152600760209081526040808320600990925290912054815481106115ae57fe5b60009182526020909120015584518590849081106115c857fe5b6020908102909101810151600160a060020a038916600090815260088352604080822060099094529020548254919291811061160057fe5b6000918252602080832090910192909255600160a060020a0389168152600990915260409020805460010190555b86600160a060020a031633600160a060020a03167f34c966766e471b87b7ce8d0d0358378cf20008a30bbb36246a3413c8a286834e888681518110151561167157fe5b90602001906020020151888781518110151561168957fe5b602090810290910181015160408051938452918301528051918290030190a386600160a060020a031633600160a060020a03166000805160206120dd83398151915287868151811015156116d957fe5b906020019060200201516040518082815260200191505060405180910390a3600190920191611489565b5060019695505050505050565b606060008183600160a060020a038116151561172b57600080fd5b600092506009600086600160a060020a0316600160a060020a031681526020019081526020016000205460405190808252806020026020018201604052801561177e578160200160208202803883390190505b5091505b600160a060020a0385166000908152600960205260409020548310156117fa57600b54600a54600160a060020a038716600090815260076020526040902080546117d79392610b60929091889081106106c357fe5b82848151811015156117e557fe5b60209081029091010152600190920191611782565b509392505050565b606081600160a060020a038116151561181a57600080fd5b600160a060020a0383166000908152600860209081526040918290208054835181840281018401909452808452909183018282801561187857602002820191906000526020600020905b815481526020019060010190808311611864575b5050505050915050919050565b600054600160a060020a0316331461189c57600080fd5b600a546118af908263ffffffff611bbd16565b600a5550565b600080548190600160a060020a031633146118cf57600080fd5b604080517f70a082310000000000000000000000000000000000000000000000000000000081523060048201529051849350600160a060020a038416916370a082319160248083019260209291908290030181600087803b15801561193357600080fd5b505af1158015611947573d6000803e3d6000fd5b505050506040513d602081101561195d57600080fd5b505190506000811161196e57600080fd5b604080517fa9059cbb000000000000000000000000000000000000000000000000000000008152336004820152602481018390529051600160a060020a0384169163a9059cbb9160448083019260209291908290030181600087803b1580156119d657600080fd5b505af11580156119ea573d6000803e3d6000fd5b505050506040513d6020811015611a0057600080fd5b50511515611a0d57600080fd5b6040805182815290513391600160a060020a038616917f5d8daa04d680e083e2ab17a35494ba9f290f554edf76a78f0103a8a599b5c4249181900360200190a3505050565b600082600160a060020a0381161515611a6a57600080fd5b336000908152600660209081526040808320600160a060020a038816845290915290205461112b908463ffffffff611bbd16565b60008054600160a060020a03163314611ab657600080fd5b50303160008111611ac657600080fd5b604051339082156108fc029083906000818181858888f19350505050158015611af3573d6000803e3d6000fd5b5060408051828152905133917faea7a96dc17068a25e51e08f8ed45b86bd34b10af65af8e757af57b7e7b9e55d919081900360200190a250565b600160a060020a03918216600090815260066020908152604080832093909416825291909152205490565b600054600160a060020a03163314611b6f57600080fd5b600b54611b82908263ffffffff611bbd16565b600b5550565b600081600160a060020a0381161515611ba057600080fd5b5050600160a060020a031660009081526009602052604090205490565b600082820183811015611bcc57fe5b9392505050565b6000806060806060806060806000975060009650600960008a600160a060020a0316600160a060020a0316815260200190815260200160002054604051908082528060200260200182016040528015611c36578160200160208202803883390190505b509350600960008a600160a060020a0316600160a060020a0316815260200190815260200160002054604051908082528060200260200182016040528015611c88578160200160208202803883390190505b50600160a060020a038a166000908152600760209081526040918290208054835181840281018401909452808452939650919290830182828015611ceb57602002820191906000526020600020905b815481526020019060010190808311611cd7575b50505050509550600860008a600160a060020a0316600160a060020a03168152602001908152602001600020805480602002602001604051908101604052809291908181526020018280548015611d6157602002820191906000526020600020905b815481526020019060010190808311611d4d575b505050505094505b600160a060020a038916600090815260096020526040902054881015611ef057611db3600a54878a815181101515611d9d57fe5b602090810290910101519063ffffffff611bbd16565b600b54611dc790429063ffffffff611bbd16565b10611e7e57611e0e8589815181101515611ddd57fe5b6020908102909101810151600160a060020a038c16600090815260059092526040909120549063ffffffff611bbd16565b600160a060020a038a1660008181526005602052604090209190915585517f613edbda9d1e6bda8af8e869a973f88cccf93854a11f351589038de07e1ab4e39087908b908110611e5a57fe5b906020019060200201516040518082815260200191505060405180910390a2611ee5565b8588815181101515611e8c57fe5b906020019060200201518488815181101515611ea457fe5b602090810290910101528451859089908110611ebc57fe5b906020019060200201518388815181101515611ed457fe5b602090810290910101526001909601955b600190970196611d69565b86604051908082528060200260200182016040528015611f1a578160200160208202803883390190505b50915086604051908082528060200260200182016040528015611f47578160200160208202803883390190505b509050600097505b86881015611fc2578388815181101515611f6557fe5b906020019060200201518289815181101515611f7d57fe5b602090810290910101528251839089908110611f9557fe5b906020019060200201518189815181101515611fad57fe5b60209081029091010152600190970196611f4f565b600160a060020a03891660009081526007602090815260409091208351611feb92850190612077565b50600160a060020a0389166000908152600860209081526040909120825161201592840190612077565b505050600160a060020a039096166000908152600960205260409020939093555050505050565b60008183101561204857fe5b50900390565b815481835581811115612072576000838152602090206120729181019083016120c2565b505050565b8280548282559060005260206000209081019282156120b2579160200282015b828111156120b2578251825591602001919060010190612097565b506120be9291506120c2565b5090565b6107dc91905b808211156120be57600081556001016120c85600ddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa165627a7a7230582073a6adeaaed803604fe0b7616bd211b0caec9c90f7f6bedf795fd79a3807ed920029

Swarm Source

bzzr://73a6adeaaed803604fe0b7616bd211b0caec9c90f7f6bedf795fd79a3807ed92

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.