ETH Price: $3,312.56 (+0.66%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Denied58683742018-06-28 9:35:442760 days ago1530178544IN
0xAA57e849...069251d19
0 ETH0.0001733710
Set Contract58682852018-06-28 9:13:102760 days ago1530177190IN
0xAA57e849...069251d19
0 ETH0.0003261610
Allow58682632018-06-28 9:08:082760 days ago1530176888IN
0xAA57e849...069251d19
0 ETH0.0004751610
Add Admin56994022018-05-29 22:42:312790 days ago1527633751IN
0xAA57e849...069251d19
0 ETH0.0006681315
Add Admin56984652018-05-29 18:44:152790 days ago1527619455IN
0xAA57e849...069251d19
0 ETH0.0009785122
Add Admin56984572018-05-29 18:42:302790 days ago1527619350IN
0xAA57e849...069251d19
0 ETH0.0006681315
Transfer Ownersh...56982182018-05-29 17:41:182790 days ago1527615678IN
0xAA57e849...069251d19
0 ETH0.0006093220
Add Admin56964962018-05-29 10:16:202790 days ago1527588980IN
0xAA57e849...069251d19
0 ETH0.0008908420
Set Developer56964942018-05-29 10:14:502790 days ago1527588890IN
0xAA57e849...069251d19
0 ETH0.000912420
Set Contract56964272018-05-29 9:57:422790 days ago1527587862IN
0xAA57e849...069251d19
0 ETH0.0009463820
Allow56964032018-05-29 9:52:042790 days ago1527587524IN
0xAA57e849...069251d19
0 ETH0.0009443820
Set Contract56963752018-05-29 9:44:222790 days ago1527587062IN
0xAA57e849...069251d19
0 ETH0.0007560816
Allow56963602018-05-29 9:39:532790 days ago1527586793IN
0xAA57e849...069251d19
0 ETH0.0010388122
Set Contract56963192018-05-29 9:29:262790 days ago1527586166IN
0xAA57e849...069251d19
0 ETH0.0005678212
Allow56962952018-05-29 9:22:442790 days ago1527585764IN
0xAA57e849...069251d19
0 ETH0.0006610614

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BitpaintingStorage

Compiler Version
v0.4.15+commit.bbb8e64f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion
/**
 *Submitted for verification at Etherscan.io on 2018-05-29
*/

pragma solidity ^0.4.15;

// File: contracts/libs/Ownable.sol

/**
* @title Ownable
* @dev Manages ownership of the contracts
*/
contract Ownable {

    address public owner;

    function Ownable() public {
        owner = msg.sender;
    }

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

    function isOwner(address _address) public constant returns (bool) {
        return _address == owner;
    }

    function transferOwnership(address newOwner) external onlyOwner {
        require(newOwner != address(0));
        owner = newOwner;
    }

}

// File: contracts/libs/Pausable.sol

/**
 * @title Pausable
 * @dev Base contract which allows children to implement an emergency stop mechanism.
 */
contract Pausable is Ownable {
    event Pause();
    event Unpause();

    bool public paused = false;

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

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

    /**
    * @dev called by the owner to pause, triggers stopped state
    */
    function _pause() internal whenNotPaused {
        paused = true;
        Pause();
    }

    /**
     * @dev called by the owner to unpause, returns to normal state
     */
    function _unpause() internal whenPaused {
        paused = false;
        Unpause();
    }
}

// File: contracts/libs/BaseStorage.sol

contract BaseStorage is Pausable {

    event AccessAllowed(address _address);
    event AccessDenied(address _address);

    mapping (address => bool) public allowed;
    address public developer;


    modifier canWrite() {
        require(allowed[msg.sender] || isOwner(msg.sender)
            || (msg.sender == developer));
        _;
    }

    function setDeveloper(address _address) public onlyOwner {
        require(_address != address(0));
        developer = _address;
    }

    function allow(address _address) external canWrite {
        require(_address != address(0));
        allowed[_address] = true;
        AccessAllowed(_address);
    }

    function denied(address _address) external canWrite {
        delete allowed[_address];
        AccessDenied(_address);
    }

    function isAllowed(address _address) external constant returns (bool) {
        return allowed[_address];
    }
}

// File: contracts/libs/AccessControlStorage.sol

contract AccessControlStorage is BaseStorage {


    mapping (address => bool) public admins;
    mapping (uint => address) public contracts;

    function addAdmin(address _address) public onlyOwner {
        require(_address != address(0));
        admins[_address] = true;
    }

    function isAdmin(address _address) public constant returns (bool) {
        return admins[_address];
    }

    function removeAdmin(address _address) public onlyOwner {
        require(_address != address(0));
        delete admins[_address];
    }

    function setContract(uint _signature, address _address) external canWrite {
        contracts[_signature] = _address;
    }
}

// File: contracts/libs/AuctionStorage.sol

contract AuctionStorage is BaseStorage {

    // Represents an auction on an NFT
    struct Auction {
        // Current owner of NFT
        address seller;
        // Price (in wei) at beginning of auction
        uint128 startingPrice;
        // Price (in wei) at end of auction
        uint128 endingPrice;
        // Duration (in seconds) of auction
        uint64 duration;
        // Time when auction started
        // NOTE: 0 if this auction has been concluded
        uint startedAt;
        // true = started by team, false = started by ordinary user
        bool byTeam;
    }

    // Map from token ID to their corresponding auction.
    mapping (uint => Auction) public tokenIdToAuction;
    uint auctionsCounter = 0;
    uint8 public secondarySaleCut = 4;

    function addAuction(
        uint _tokenId,
        uint _startingPrice,
        uint _endingPrice,
        uint _duration,
        address _seller) public canWrite {
        require(!_isOnAuction(_tokenId));
        tokenIdToAuction[_tokenId] = Auction({
            seller: _seller,
            startingPrice: uint128(_startingPrice),
            endingPrice: uint128(_endingPrice),
            duration: uint64(_duration),
            startedAt: now,
            byTeam: false
        });
        auctionsCounter++;
    }

    function initAuction(
        uint _tokenId,
        uint _startingPrice,
        uint _endingPrice,
        uint _startedAt,
        uint _duration,
        address _seller,
        bool _byTeam) public canWrite {
        require(!_isOnAuction(_tokenId));
        tokenIdToAuction[_tokenId] = Auction({
            seller: _seller,
            startingPrice: uint128(_startingPrice),
            endingPrice: uint128(_endingPrice),
            duration: uint64(_duration),
            startedAt: _startedAt,
            byTeam: _byTeam
        });
        auctionsCounter++;
    }

    function addReleaseAuction(
        uint _tokenId,
        uint _startingPrice,
        uint _endingPrice,
        uint _startedAt,
        uint _duration) public canWrite {
        bool _byTeam = true;
        address _seller = owner;
        initAuction(
            _tokenId,
            _startingPrice,
            _endingPrice,
            _startedAt,
            _duration,
            _seller,
            _byTeam
        );
    }

    function _isOnAuction(uint _tokenId)
        internal constant returns (bool) {
        return (tokenIdToAuction[_tokenId].startedAt > 0);
    }

    function isOnAuction(uint _tokenId)
        external constant returns (bool) {
        return _isOnAuction(_tokenId);
    }

    function removeAuction(uint _tokenId) public canWrite {
        require(_isOnAuction(_tokenId));
        delete tokenIdToAuction[_tokenId];
        auctionsCounter--;
    }

    /// @dev Returns auction info for an NFT on auction.
    /// @param _tokenId - ID of NFT on auction.
    function getAuction(uint256 _tokenId)
        external
        constant
        returns
    (
        address seller,
        uint256 startingPrice,
        uint256 endingPrice,
        uint256 duration,
        uint256 startedAt
    ) {
        Auction memory auction = tokenIdToAuction[_tokenId];
        require(_isOnAuction(_tokenId));
        return (
            auction.seller,
            auction.startingPrice,
            auction.endingPrice,
            auction.duration,
            auction.startedAt
        );
    }

    function getAuctionSeller(uint256 _tokenId)
        public constant returns (address) {
        return tokenIdToAuction[_tokenId].seller;
    }

    function getAuctionStartedAt(uint256 _tokenId)
        public constant returns (uint) {
        return tokenIdToAuction[_tokenId].startedAt;
    }

    function getAuctionEnd(uint _tokenId)
        public constant returns (uint) {
        Auction memory auction = tokenIdToAuction[_tokenId];
        return auction.startedAt + auction.duration;
    }

    function getAuctionsCount() public constant returns (uint) {
        return auctionsCounter;
    }

    function canBeCanceled(uint _tokenId) external constant returns (bool) {
        return getAuctionEnd(_tokenId) <= now;
    }

    function isSecondary(uint _tokenId) public constant returns (bool _is) {
        return (tokenIdToAuction[_tokenId].byTeam == false);
    }

}

// File: contracts/libs/EditionStorage.sol

contract EditionStorage is BaseStorage {

    uint public offset = 1000000;
    uint public offsetIndex = 1;
    uint8[3] public defaultEditionLimits = [10, 89, 200];
    mapping (uint => mapping (uint8 => uint8)) public editionCounts;
    mapping (uint => mapping (uint8 => uint8)) public editionLimits;
    mapping (uint => uint) public lastEditionOf;

    function setOffset(uint _offset) external onlyOwner {
        offset = _offset;
    }

    function getOffsetIndex() public constant returns (uint) {
        return offset + offsetIndex;
    }

    function nextOffsetIndex() public canWrite {
        offsetIndex++;
    }

    function canCreateEdition(uint _tokenId, uint8 _generation)
        public constant returns (bool) {
        uint8 actual = editionCounts[_tokenId][_generation - 1];
        uint limit = editionLimits[_tokenId][_generation - 1];
        return (actual < limit);
    }

    function isValidGeneration(uint8 _generation)
        public constant returns (bool) {
        return (_generation >= 1 && _generation <= 3);
    }

    function increaseGenerationCount(uint _tokenId, uint8 _generation)
        public canWrite {
        require(canCreateEdition(_tokenId, _generation));
        require(isValidGeneration(_generation));
        uint8 _generationIndex = _generation - 1;
        editionCounts[_tokenId][_generationIndex]++;
    }

    function getEditionsCount(uint _tokenId)
        external constant returns (uint8[3])  {
        return [
            editionCounts[_tokenId][0],
            editionCounts[_tokenId][1],
            editionCounts[_tokenId][2]
        ];
    }

    function setLastEditionOf(uint _tokenId, uint _editionId)
        public canWrite {
        lastEditionOf[_tokenId] = _editionId;
    }

    function getEditionLimits(uint _tokenId)
        external constant returns (uint8[3])  {
        return [
            editionLimits[_tokenId][0],
            editionLimits[_tokenId][1],
            editionLimits[_tokenId][2]
        ];
    }


}

// File: contracts/libs/PaintingInformationStorage.sol

contract PaintingInformationStorage {

    struct PaintingInformation {
        string name;
        string artist;
    }

    mapping (uint => PaintingInformation) public information;
}

// File: contracts/libs/PaintingStorage.sol

contract PaintingStorage is BaseStorage {

    struct Painting {
        uint parentId;
        uint originalId;
        uint createdAt;
        uint completedAt;
        uint8 generation;
        uint8 speedIndex;
        uint artistId;
        uint releasedAt;
        bool isFinal;
    }

    uint32[10] public speeds = [
        uint32(8760 hours), // 365 days
        uint32(6480 hours), // 270 days
        uint32(4320 hours), // 180 days
        uint32(2880 hours), // 120 days
        uint32(1920 hours), // 80 days
        uint32(960 hours), // 40 days
        uint32(480 hours), // 20 days
        uint32(240 hours), // 10 days
        uint32(120 hours), // 5 days
        uint32(24 hours) // 1 day
    ];

    uint32[10] public speedsTest = [
        uint32(8760 seconds),
        uint32(6480 seconds),
        uint32(4320 seconds),
        uint32(2880 seconds),
        uint32(1920 seconds),
        uint32(960 seconds),
        uint32(480 seconds),
        uint32(240 seconds),
        uint32(120 seconds),
        uint32(24 seconds)
    ];

    uint32[10] public speedsDev = [
        uint32(0 seconds),
        uint32(0 seconds),
        uint32(0 seconds),
        uint32(0 seconds),
        uint32(0 seconds),
        uint32(0 seconds),
        uint32(0 seconds),
        uint32(0 seconds),
        uint32(0 seconds),
        uint32(0 seconds)
    ];

    mapping (uint => address) public paintingIndexToOwner;
    mapping (uint => Painting) public paintings;
    mapping (uint => address) public paintingIndexToApproved;
    uint[] public paintingIds;
    mapping (uint => uint) public paintingIdToIndex;
    uint public paintingsCount;
    uint public totalPaintingsCount;
    mapping (uint => bool) public isCanceled;
    mapping (uint => bool) public isReleased;

    // @dev A mapping from owner address to count of tokens that address owns.
    // Used internally inside balanceOf() to resolve ownership count.
    mapping (address => uint256) public ownershipTokenCount;

    modifier isNew(uint _tokenId) {
        require(paintings[_tokenId].createdAt == 0);
        _;
    }

    function exists(uint _tokenId) external constant returns (bool) {
        return paintings[_tokenId].createdAt != 0;
    }

    function increaseOwnershipTokenCount(address _address) public canWrite {
        ownershipTokenCount[_address]++;
    }

    function decreaseOwnershipTokenCount(address _address) public canWrite {
        ownershipTokenCount[_address]--;
    }

    function setOwnership(uint _tokenId, address _address) public canWrite {
        paintingIndexToOwner[_tokenId] = _address;
    }

    function getPainting(uint _tokenId) external constant returns (
        address owner,
        uint parent,
        uint createdAt,
        uint completedAt,
        uint8 generation,
        uint8 speed) {
        return (
            paintingIndexToOwner[_tokenId],
            paintings[_tokenId].parentId,
            paintings[_tokenId].createdAt,
            paintings[_tokenId].completedAt,
            paintings[_tokenId].generation,
            paintings[_tokenId].speedIndex + 1
        );
    }

    function approve(uint _tokenId, address _claimant) external canWrite {
        paintingIndexToApproved[_tokenId] = _claimant;
    }

    function isApprovedFor(uint _tokenId, address _claimant) external constant returns (bool) {
        return paintingIndexToApproved[_tokenId] == _claimant;
    }

    function decreaseSpeed(uint _tokenId) public canWrite() {
        uint8 _speed = paintings[_tokenId].speedIndex;

        if (_speed > 0) {
            paintings[_tokenId].speedIndex--;
        }
    }

    function getPaintingOwner(uint _tokenId)
        external constant returns (address) {
        return paintingIndexToOwner[_tokenId];
    }

    function getPaintingGeneration(uint _tokenId)
        public constant returns (uint8) {
        return paintings[_tokenId].generation;
    }

    function getPaintingArtistId(uint _tokenId)
        public constant returns (uint artistId) {
        return paintings[_tokenId].artistId;
    }

    function getPaintingSpeed(uint _tokenId)
        external constant returns (uint8) {
        return paintings[_tokenId].speedIndex + 1;
    }

    function getPaintingOriginal(uint _tokenId)
        external constant returns (uint) {
        return paintings[_tokenId].originalId;
    }

    function getOwnershipTokenCount(address _address)
        external constant returns (uint) {
        return ownershipTokenCount[_address];
    }

    function isReady(uint _tokenId)
        public constant returns (bool) {
        return paintings[_tokenId].completedAt <= now;
    }

    function getPaintingIdAtIndex(uint _index)
        public constant returns (uint) {
        return paintingIds[_index];
    }

    function canBeChanged(uint _tokenId) public constant returns (bool _can) {
        return paintings[_tokenId].isFinal == false;
    }

    function sealForChanges(uint _tokenId) public canWrite {
        if (paintings[_tokenId].isFinal == false) {
            paintings[_tokenId].isFinal = true;
        }
    }

    function canBeBidden(uint _tokenId) public constant returns (bool _can) {
        return (paintings[_tokenId].releasedAt <= now);
    }

}

// File: contracts/BitpaintingStorage.sol

contract BitpaintingStorage is PaintingStorage, PaintingInformationStorage, AccessControlStorage, AuctionStorage, EditionStorage {

    /// 0 = production mode
    /// 1 = testing mode
    /// 2 = development mode
    uint8 mode;

    function BitpaintingStorage(uint8 _mode) public {
        require(_mode >= 0 && _mode <=2);
        mode = _mode;
    }

    function hasEditionInProgress(uint _tokenId)
        external constant returns (bool) {
        uint edition = lastEditionOf[_tokenId];
        if (edition == 0) {
            return false;
        }

        return !isReady(edition);
    }

    function hasEmptyEditionSlots(uint _tokenId)
        external constant returns (bool) {
        uint originalId = paintings[_tokenId].originalId;
        if (originalId == 0) {
            originalId = _tokenId;
        }
        uint8 generation = paintings[_tokenId].generation;
        uint8 limit = editionLimits[originalId][generation];
        uint8 current = editionCounts[originalId][generation];
        return (current < limit);
    }

    function resetPainting(uint _tokenId) public canWrite {
        require(canBeChanged(_tokenId));

        isCanceled[_tokenId] = true;
        paintingsCount--;
        delete paintings[_tokenId];
    }

    function createPainting(
        address _owner,
        uint _tokenId,
        uint _parentId,
        uint8 _generation,
        uint8 _speed,
        uint _artistId,
        uint _releasedAt
    ) public isNew(_tokenId) canWrite {
        require(now <= _releasedAt);
        require(_speed >= 1 && _speed <= 10);
        _speed--;

        uint _createdAt = now;
        uint _completedAt;
        if (_generation == 0) {
            _completedAt = now;
        } else {
            uint _parentSpeed = paintings[_parentId].speedIndex;
            if (mode == 2) {
                _completedAt = now + speedsDev[_parentSpeed];
            } else {
                if (mode == 1) {
                    _completedAt = now + speedsTest[_parentSpeed];
                } else {
                    _completedAt = now + speeds[_parentSpeed];
                }
            }
        }

        uint _originalId;
        if (_generation == 0) {
            _originalId = _tokenId;
        } else {
            if (_generation == 1) {
                _originalId = _parentId;
            } else {
                _originalId = paintings[_parentId].originalId;
            }
        }

        paintings[_tokenId] = Painting({
            parentId: _parentId,
            originalId: _originalId,
            createdAt: _createdAt,
            generation: _generation,
            speedIndex: _speed,
            completedAt: _completedAt,
            artistId: _artistId,
            releasedAt: _releasedAt,
            isFinal: (_generation != 0) // if generation == 1 or 2 or 3, so it cannot be changed
        });

        if (!isReleased[_tokenId]) {
            isReleased[_tokenId] = true;
            paintingIds.push(_tokenId);
            paintingIdToIndex[_tokenId] = totalPaintingsCount;
            increaseOwnershipTokenCount(_owner);
            totalPaintingsCount++;
        }
        isCanceled[_tokenId] = false;
        setOwnership(_tokenId, _owner);
        paintingsCount++;
    }

    function setEditionLimits(
        uint _tokenId,
        uint8 _gen1,
        uint8 _gen2,
        uint8 _gen3)
        public canWrite {
        require(canBeChanged(_tokenId));

        editionLimits[_tokenId][0] = _gen1;
        editionLimits[_tokenId][1] = _gen2;
        editionLimits[_tokenId][2] = _gen3;
    }

    function resetEditionLimits(uint _tokenId) public canWrite {
        setEditionLimits(_tokenId, 0, 0, 0);
    }

    function createEditionMeta(uint _tokenId) public canWrite {
        uint _originalId = paintings[_tokenId].originalId;
        nextOffsetIndex();
        uint editionId = getOffsetIndex();
        setLastEditionOf(_tokenId, editionId);

        uint8 _generation = getPaintingGeneration(_tokenId) + 1;
        increaseGenerationCount(_originalId, _generation);
    }

    function purgeInformation(uint _tokenId) public canWrite {
        require(canBeChanged(_tokenId));

        delete information[_tokenId];
    }

    function setPaintingName(uint _tokenId, string _name) public canWrite {
        information[_tokenId].name = _name;
    }

    function setPaintingArtist(uint _tokenId, string _name) public canWrite {
        information[_tokenId].artist = _name;
    }

    function getTokensOnAuction() public constant returns (uint[] tokens) {
        tokens = new uint[](auctionsCounter);
        uint pointer = 0;

        for(uint index = 0; index < totalPaintingsCount; index++) {
            uint tokenId = getPaintingIdAtIndex(index);

            if (isCanceled[tokenId]) {
                continue;
            }

            if (!_isOnAuction(tokenId)) {
                continue;
            }

            tokens[pointer] = tokenId;
            pointer++;
        }
    }

    function getPaintingName(uint _tokenId) public constant returns (string) {
        uint id = paintings[_tokenId].originalId;
        return information[id].name;
    }

    function getPaintingArtist(uint _tokenId)
        public constant returns (string) {
        uint id = paintings[_tokenId].originalId;
        return information[id].artist;
    }

    function signature() external constant returns (bytes4) {
        return bytes4(keccak256("storage"));
    }


}

Contract Security Audit

Contract ABI

API
[{"constant":false,"inputs":[{"name":"_offset","type":"uint256"}],"name":"setOffset","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getPaintingGeneration","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"canBeCanceled","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getPaintingOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint8"}],"name":"editionCounts","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"hasEmptyEditionSlots","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getPainting","outputs":[{"name":"owner","type":"address"},{"name":"parent","type":"uint256"},{"name":"createdAt","type":"uint256"},{"name":"completedAt","type":"uint256"},{"name":"generation","type":"uint8"},{"name":"speed","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"removeAdmin","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"paintingsCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"decreaseOwnershipTokenCount","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getPaintingArtist","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"sealForChanges","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isAdmin","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"},{"name":"","type":"uint8"}],"name":"editionLimits","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"defaultEditionLimits","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"removeAuction","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalPaintingsCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getPaintingName","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getAuctionStartedAt","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"isOnAuction","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getTokensOnAuction","outputs":[{"name":"tokens","type":"uint256[]"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_editionId","type":"uint256"}],"name":"setLastEditionOf","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"isCanceled","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"speedsTest","outputs":[{"name":"","type":"uint32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"admins","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"contracts","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"speeds","outputs":[{"name":"","type":"uint32"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"resetEditionLimits","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"exists","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"isReady","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"signature","outputs":[{"name":"","type":"bytes4"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_generation","type":"uint8"}],"name":"canCreateEdition","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"secondarySaleCut","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"paused","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getEditionsCount","outputs":[{"name":"","type":"uint8[3]"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"hasEditionInProgress","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_generation","type":"uint8"}],"name":"increaseGenerationCount","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_address","type":"address"}],"name":"setOwnership","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"increaseOwnershipTokenCount","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"addAdmin","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"createEditionMeta","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"isReleased","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_gen1","type":"uint8"},{"name":"_gen2","type":"uint8"},{"name":"_gen3","type":"uint8"}],"name":"setEditionLimits","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getAuction","outputs":[{"name":"seller","type":"address"},{"name":"startingPrice","type":"uint256"},{"name":"endingPrice","type":"uint256"},{"name":"duration","type":"uint256"},{"name":"startedAt","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"nextOffsetIndex","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"canBeChanged","outputs":[{"name":"_can","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"resetPainting","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_owner","type":"address"},{"name":"_tokenId","type":"uint256"},{"name":"_parentId","type":"uint256"},{"name":"_generation","type":"uint8"},{"name":"_speed","type":"uint8"},{"name":"_artistId","type":"uint256"},{"name":"_releasedAt","type":"uint256"}],"name":"createPainting","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_signature","type":"uint256"},{"name":"_address","type":"address"}],"name":"setContract","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"information","outputs":[{"name":"name","type":"string"},{"name":"artist","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"isSecondary","outputs":[{"name":"_is","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_startingPrice","type":"uint256"},{"name":"_endingPrice","type":"uint256"},{"name":"_startedAt","type":"uint256"},{"name":"_duration","type":"uint256"}],"name":"addReleaseAuction","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"paintingIds","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"paintingIndexToOwner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"decreaseSpeed","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getPaintingSpeed","outputs":[{"name":"","type":"uint8"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"paintingIdToIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_index","type":"uint256"}],"name":"getPaintingIdAtIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getPaintingOriginal","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"purgeInformation","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_startingPrice","type":"uint256"},{"name":"_endingPrice","type":"uint256"},{"name":"_startedAt","type":"uint256"},{"name":"_duration","type":"uint256"},{"name":"_seller","type":"address"},{"name":"_byTeam","type":"bool"}],"name":"initAuction","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"getOwnershipTokenCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_claimant","type":"address"}],"name":"isApprovedFor","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isAllowed","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"paintingIndexToApproved","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getAuctionSeller","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"paintings","outputs":[{"name":"parentId","type":"uint256"},{"name":"originalId","type":"uint256"},{"name":"createdAt","type":"uint256"},{"name":"completedAt","type":"uint256"},{"name":"generation","type":"uint8"},{"name":"speedIndex","type":"uint8"},{"name":"artistId","type":"uint256"},{"name":"releasedAt","type":"uint256"},{"name":"isFinal","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_startingPrice","type":"uint256"},{"name":"_endingPrice","type":"uint256"},{"name":"_duration","type":"uint256"},{"name":"_seller","type":"address"}],"name":"addAuction","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"developer","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getPaintingArtistId","outputs":[{"name":"artistId","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"ownershipTokenCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"offset","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_name","type":"string"}],"name":"setPaintingArtist","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"address"}],"name":"allowed","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"tokenIdToAuction","outputs":[{"name":"seller","type":"address"},{"name":"startingPrice","type":"uint128"},{"name":"endingPrice","type":"uint128"},{"name":"duration","type":"uint64"},{"name":"startedAt","type":"uint256"},{"name":"byTeam","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"speedsDev","outputs":[{"name":"","type":"uint32"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getAuctionsCount","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"canBeBidden","outputs":[{"name":"_can","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getAuctionEnd","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_generation","type":"uint8"}],"name":"isValidGeneration","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"","type":"uint256"}],"name":"lastEditionOf","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"getEditionLimits","outputs":[{"name":"","type":"uint8[3]"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_name","type":"string"}],"name":"setPaintingName","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"getOffsetIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"denied","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_claimant","type":"address"}],"name":"approve","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setDeveloper","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"allow","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"offsetIndex","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"inputs":[{"name":"_mode","type":"uint8"}],"payable":false,"type":"constructor"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_address","type":"address"}],"name":"AccessAllowed","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_address","type":"address"}],"name":"AccessDenied","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"}]

606060409081526000805460a060020a60ff0219169055610140905190810160409081526301e133808252630163f500602083015262ed4e0090820152629e340060608201526269780060808201526234bc0060a0820152621a5e0060c0820152620d2f0060e082015262069780610100820152620151806101208201526200008d90600390600a62000224565b506101406040519081016040908152612238825261195060208301526110e090820152610b40606082015261078060808201526103c060a08201526101e060c082015260f060e082015260786101008201526018610120820152620000f790600590600a62000224565b506101406040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a0820181905260c0820181905260e0820181905261010082018190526101208201526200015990600790600a62000224565b5060006017556018805460ff19166004179055620f42406019556001601a5560606040519081016040908152600a82526059602083015260c890820152620001a690601b906003620002c7565b503415620001b357600080fd5b60405160208062003b9e833981016040528080519150505b5b60008054600160a060020a03191633600160a060020a03161790555b60008160ff161015801562000201575060028160ff1611155b15156200020d57600080fd5b601f805460ff191660ff83161790555b50620003b4565b600283019183908215620002b55791602002820160005b838211156200028157835183826101000a81548163ffffffff021916908363ffffffff16021790555092602001926004016020816003010492830192600103026200023b565b8015620002b35782816101000a81549063ffffffff021916905560040160208160030104928301926001030262000281565b505b50620002c392915062000361565b5090565b6001830191839082156200034f5791602002820160005b838211156200031e57835183826101000a81548160ff021916908360ff1602179055509260200192600101602081600001049283019260010302620002de565b80156200034d5782816101000a81549060ff02191690556001016020816000010492830192600103026200031e565b505b50620002c39291506200038c565b5090565b6200038991905b80821115620002c357805463ffffffff1916815560010162000368565b5090565b90565b6200038991905b80821115620002c357805460ff1916815560010162000393565b5090565b90565b6137da80620003c46000396000f300606060405236156104275763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301e343db811461042c5780630af9d89c146104445780630cdc92ea146104705780630d66343c1461049a5780630ec45dc0146104cc578063108a101b146104fe578063145f8ba2146105285780631785f53c14610587578063197b9454146105a85780631be6ce57146105cd5780631dea157f146105ee5780631e801c8c1461067c57806324d7806c14610694578063275510d0146106c757806328dca7a3146106f95780632dd7030b146107255780632efd08df1461073d5780632f54bf6e1461076257806332cb93d91461079557806337016a5f1461082357806337e246ad1461084b5780633804ab8d146108755780633953f4a1146108dc57806339e3af9b146108f75780633e6d4fb914610921578063429b62e514610950578063474da79a1461098357806348a357bc146109b55780634a61f347146109e45780634f558e79146109fc57806350df8f7114610a2657806351ff484714610a50578063579599bd14610a98578063590731b714610ac85780635c975abb14610af15780635de8153414610b185780635f4eab6514610b6757806364d0bbc414610b91578063687c4fa714610baf5780636bfaa90314610bd35780637048027514610bf457806370d1383d14610c1557806373962b2614610c2d578063783370b514610c5757806378bd793514610c815780637a9e19de14610cd25780637d6979e714610ce75780638635b52714610d115780638754b1d114610d2957806389e865a914610d625780638da5cb5b14610d865780638f86f25514610db55780638ff6e97114610ece578063902a83cd14610ef85780639434e2fe14610f1c5780639e5cc10b14610f445780639e6afbda14610f765780639ed5736014610f8e578063a072fd2a14610fba578063a3e7061d14610fe2578063a42455271461100a578063a61bd76d14611032578063ab6680f31461104a578063b4f6eae41461107f578063b5b12e75146110b0578063babcc539146110e6578063c25de16b14611119578063c50c44cf1461114b578063c7ca6daa1461117d578063c9a6b2a8146111e4578063ca4b208b14611211578063cd0fdc2414611240578063cec21acb14611268578063d555654414611299578063d59f4e68146112be578063d63a8e1114611316578063e3b1475714611349578063e4267295146113b9578063e45c1879146113e8578063eabc8b8e1461140d578063eda8927914611437578063f195995c1461145f578063f2fde38b1461148c578063f50b769e146114ad578063f79098f4146114d5578063fabb795214611524578063fafb76dd1461157c578063fc9d96ba146115a1578063febe4909146115c2578063ff70fa49146115e6578063ff9913e814611607578063ffe90ba614611628575b600080fd5b341561043757600080fd5b61044260043561164d565b005b341561044f57600080fd5b61045a600435611672565b60405160ff909116815260200160405180910390f35b341561047b57600080fd5b61048660043561168d565b604051901515815260200160405180910390f35b34156104a557600080fd5b6104b06004356116a3565b604051600160a060020a03909116815260200160405180910390f35b34156104d757600080fd5b61045a60043560ff602435166116c1565b60405160ff909116815260200160405180910390f35b341561050957600080fd5b6104866004356116e1565b604051901515815260200160405180910390f35b341561053357600080fd5b61053e60043561175d565b604051600160a060020a0390961686526020860194909452604080860193909352606085019190915260ff90811660808501529190911660a083015260c0909101905180910390f35b341561059257600080fd5b610442600160a060020a03600435166117b2565b005b34156105b357600080fd5b6105bb611807565b60405190815260200160405180910390f35b34156105d857600080fd5b610442600160a060020a036004351661180d565b005b34156105f957600080fd5b610604600435611882565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156106415780820151818401525b602001610628565b50505050905090810190601f16801561066e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561068757600080fd5b61044260043561195d565b005b341561069f57600080fd5b610486600160a060020a03600435166119ea565b604051901515815260200160405180910390f35b34156106d257600080fd5b61045a60043560ff60243516611a0c565b60405160ff909116815260200160405180910390f35b341561070457600080fd5b61045a600435611a2c565b60405160ff909116815260200160405180910390f35b341561073057600080fd5b610442600435611a54565b005b341561074857600080fd5b6105bb611b10565b60405190815260200160405180910390f35b341561076d57600080fd5b610486600160a060020a0360043516611b16565b604051901515815260200160405180910390f35b34156107a057600080fd5b610604600435611b2d565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156106415780820151818401525b602001610628565b50505050905090810190601f16801561066e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561082e57600080fd5b6105bb600435611c08565b60405190815260200160405180910390f35b341561085657600080fd5b610486600435611c20565b604051901515815260200160405180910390f35b341561088057600080fd5b610888611c33565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156108c85780820151818401525b6020016108af565b505050509050019250505060405180910390f35b34156108e757600080fd5b610442600435602435611ce3565b005b341561090257600080fd5b610486600435611d4a565b604051901515815260200160405180910390f35b341561092c57600080fd5b610937600435611d5f565b60405163ffffffff909116815260200160405180910390f35b341561095b57600080fd5b610486600160a060020a0360043516611d8d565b604051901515815260200160405180910390f35b341561098e57600080fd5b6104b0600435611da2565b604051600160a060020a03909116815260200160405180910390f35b34156109c057600080fd5b610937600435611dbd565b60405163ffffffff909116815260200160405180910390f35b34156109ef57600080fd5b610442600435611deb565b005b3415610a0757600080fd5b610486600435611e4e565b604051901515815260200160405180910390f35b3415610a3157600080fd5b610486600435611e68565b604051901515815260200160405180910390f35b3415610a5b57600080fd5b610a63611e84565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200160405180910390f35b3415610aa357600080fd5b61048660043560ff60243516611ebd565b604051901515815260200160405180910390f35b3415610ad357600080fd5b61045a611f06565b60405160ff909116815260200160405180910390f35b3415610afc57600080fd5b610486611f0f565b604051901515815260200160405180910390f35b3415610b2357600080fd5b610b2e600435611f30565b6040518082606080838360005b83811015610b545780820151818401525b602001610b3b565b5050505090500191505060405180910390f35b3415610b7257600080fd5b610486600435611f8e565b604051901515815260200160405180910390f35b3415610b9c57600080fd5b61044260043560ff60243516611fc0565b005b3415610bba57600080fd5b610442600435600160a060020a036024351661207b565b005b3415610bde57600080fd5b610442600160a060020a03600435166120f8565b005b3415610bff57600080fd5b610442600160a060020a036004351661216c565b005b3415610c2057600080fd5b6104426004356121c4565b005b3415610c3857600080fd5b610486600435612268565b604051901515815260200160405180910390f35b3415610c6257600080fd5b61044260043560ff6024358116906044358116906064351661227d565b005b3415610c8c57600080fd5b610c9760043561233d565b604051600160a060020a03909516855260208501939093526040808501929092526060840152608083019190915260a0909101905180910390f35b3415610cdd57600080fd5b610442612420565b005b3415610cf257600080fd5b61048660043561247d565b604051901515815260200160405180910390f35b3415610d1c57600080fd5b610442600435612499565b005b3415610d3457600080fd5b610442600160a060020a036004351660243560443560ff6064358116906084351660a43560c435612573565b005b3415610d6d57600080fd5b610442600435600160a060020a03602435166128f3565b005b3415610d9157600080fd5b6104b0612970565b604051600160a060020a03909116815260200160405180910390f35b3415610dc057600080fd5b610dcb60043561297f565b604051604080825283546002600019610100600184161502019091160490820181905281906020820190606083019086908015610e495780601f10610e1e57610100808354040283529160200191610e49565b820191906000526020600020905b815481529060010190602001808311610e2c57829003601f168201915b5050838103825284546002600019610100600184161502019091160480825260209091019085908015610ebd5780601f10610e9257610100808354040283529160200191610ebd565b820191906000526020600020905b815481529060010190602001808311610ea057829003601f168201915b505094505050505060405180910390f35b3415610ed957600080fd5b610486600435612994565b604051901515815260200160405180910390f35b3415610f0357600080fd5b6104426004356024356044356064356084356129b0565b005b3415610f2757600080fd5b6105bb600435612a2d565b60405190815260200160405180910390f35b3415610f4f57600080fd5b6104b0600435612a50565b604051600160a060020a03909116815260200160405180910390f35b3415610f8157600080fd5b610442600435612a6b565b005b3415610f9957600080fd5b61045a600435612b15565b60405160ff909116815260200160405180910390f35b3415610fc557600080fd5b6105bb600435612b39565b60405190815260200160405180910390f35b3415610fed57600080fd5b6105bb600435612b4b565b60405190815260200160405180910390f35b341561101557600080fd5b6105bb600435612b74565b60405190815260200160405180910390f35b341561103d57600080fd5b610442600435612b8c565b005b341561105557600080fd5b610442600435602435604435606435608435600160a060020a0360a4351660c4351515612c1e565b005b341561108a57600080fd5b6105bb600160a060020a0360043516612db2565b60405190815260200160405180910390f35b34156110bb57600080fd5b610486600435600160a060020a0360243516612dd1565b604051901515815260200160405180910390f35b34156110f157600080fd5b610486600160a060020a0360043516612df5565b604051901515815260200160405180910390f35b341561112457600080fd5b6104b0600435612e17565b604051600160a060020a03909116815260200160405180910390f35b341561115657600080fd5b6104b0600435612e32565b604051600160a060020a03909116815260200160405180910390f35b341561118857600080fd5b611193600435612e50565b6040519889526020890197909752604080890196909652606088019490945260ff9283166080880152911660a086015260c085015260e0840152901515610100830152610120909101905180910390f35b34156111ef57600080fd5b610442600435602435604435606435600160a060020a0360843516612ea0565b005b341561121c57600080fd5b6104b0613030565b604051600160a060020a03909116815260200160405180910390f35b341561124b57600080fd5b6105bb60043561303f565b60405190815260200160405180910390f35b341561127357600080fd5b6105bb600160a060020a0360043516613057565b60405190815260200160405180910390f35b34156112a457600080fd5b6105bb613069565b60405190815260200160405180910390f35b34156112c957600080fd5b610442600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061306f95505050505050565b005b341561132157600080fd5b610486600160a060020a03600435166130e8565b604051901515815260200160405180910390f35b341561135457600080fd5b61135f6004356130fd565b604051600160a060020a0390961686526001608060020a0394851660208701529290931660408086019190915267ffffffffffffffff90911660608501526080840192909252151560a083015260c0909101905180910390f35b34156113c457600080fd5b610937600435613157565b60405163ffffffff909116815260200160405180910390f35b34156113f357600080fd5b6105bb613185565b60405190815260200160405180910390f35b341561141857600080fd5b61048660043561318c565b604051901515815260200160405180910390f35b341561144257600080fd5b6105bb6004356131a8565b60405190815260200160405180910390f35b341561146a57600080fd5b61048660ff6004351661324a565b604051901515815260200160405180910390f35b341561149757600080fd5b610442600160a060020a036004351661326c565b005b34156114b857600080fd5b6105bb6004356132bc565b60405190815260200160405180910390f35b34156114e057600080fd5b610b2e6004356132ce565b6040518082606080838360005b83811015610b545780820151818401525b602001610b3b565b5050505090500191505060405180910390f35b341561152f57600080fd5b610442600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061332c95505050505050565b005b341561158757600080fd5b6105bb6133a2565b60405190815260200160405180910390f35b34156115ac57600080fd5b610442600160a060020a03600435166133ad565b005b34156115cd57600080fd5b610442600435600160a060020a0360243516613461565b005b34156115f157600080fd5b610442600160a060020a03600435166134de565b005b341561161257600080fd5b610442600160a060020a036004351661352e565b005b341561163357600080fd5b6105bb6135fc565b60405190815260200160405180910390f35b60005433600160a060020a0390811691161461166857600080fd5b60198190555b5b50565b6000818152600a602052604090206004015460ff165b919050565b600042611699836131a8565b111590505b919050565b600081815260096020526040902054600160a060020a03165b919050565b601c60209081526000928352604080842090915290825290205460ff1681565b6000818152600a6020526040812060010154818080831515611701578593505b5050506000838152600a6020908152604080832060040154848452601d835281842060ff91821680865290845282852054868652601c855283862082875290945291909320549183169190921681811094505b50505050919050565b600081815260096020908152604080832054600a909252909120805460028201546003830154600490930154600160a060020a03909416939192909160ff808216916101009004166001015b91939550919395565b60005433600160a060020a039081169116146117cd57600080fd5b600160a060020a03811615156117e257600080fd5b600160a060020a0381166000908152601460205260409020805460ff191690555b5b50565b600e5481565b600160a060020a03331660009081526001602052604090205460ff1680611838575061183833611b16565b5b80611852575060025433600160a060020a039081169116145b151561185d57600080fd5b600160a060020a038116600090815260126020526040902080546000190190555b5b50565b61188a61361b565b6000600a6000848152602001908152602001600020600101549050601360008281526020019081526020016000206001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561194f5780601f106119245761010080835404028352916020019161194f565b820191906000526020600020905b81548152906001019060200180831161193257829003601f168201915b505050505091505b50919050565b600160a060020a03331660009081526001602052604090205460ff1680611988575061198833611b16565b5b806119a2575060025433600160a060020a039081169116145b15156119ad57600080fd5b6000818152600a602052604090206007015460ff16151561166e576000818152600a60205260409020600701805460ff191660011790555b5b5b50565b600160a060020a03811660009081526014602052604090205460ff165b919050565b601d60209081526000928352604080842090915290825290205460ff1681565b601b8160038110611a3957fe5b602091828204019190065b915054906101000a900460ff1681565b600160a060020a03331660009081526001602052604090205460ff1680611a7f5750611a7f33611b16565b5b80611a99575060025433600160a060020a039081169116145b1515611aa457600080fd5b611aad81613602565b1515611ab857600080fd5b60008181526016602052604081208054600160a060020a03191681556001810182905560028101805467ffffffffffffffff191690556003810191909155600401805460ff19169055601780546000190190555b5b50565b600f5481565b600054600160a060020a038281169116145b919050565b611b3561361b565b6000600a6000848152602001908152602001600020600101549050601360008281526020019081526020016000206000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561194f5780601f106119245761010080835404028352916020019161194f565b820191906000526020600020905b81548152906001019060200180831161193257829003601f168201915b505050505091505b50919050565b6000818152601660205260409020600301545b919050565b6000611c2b82613602565b90505b919050565b611c3b61361b565b6000806000601754604051805910611c505750595b908082528060200260200182016040525b50935060009250600091505b600f54821015611cdc57611c8082612b4b565b60008181526010602052604090205490915060ff1615611c9f57611cd1565b611ca881613602565b1515611cb357611cd1565b80848481518110611cc057fe5b602090810290910101526001909201915b600190910190611c6d565b5b50505090565b600160a060020a03331660009081526001602052604090205460ff1680611d0e5750611d0e33611b16565b5b80611d28575060025433600160a060020a039081169116145b1515611d3357600080fd5b6000828152601e602052604090208190555b5b5050565b60106020526000908152604090205460ff1681565b600581600a8110611d6c57fe5b600891828204019190066004025b915054906101000a900463ffffffff1681565b60146020526000908152604090205460ff1681565b601560205260009081526040902054600160a060020a031681565b600381600a8110611d6c57fe5b600891828204019190066004025b915054906101000a900463ffffffff1681565b600160a060020a03331660009081526001602052604090205460ff1680611e165750611e1633611b16565b5b80611e30575060025433600160a060020a039081169116145b1515611e3b57600080fd5b61166e81600080600061227d565b5b5b50565b6000818152600a602052604090206002015415155b919050565b6000818152600a6020526040902060030154429011155b919050565b60006040517f73746f72616765000000000000000000000000000000000000000000000000008152600701604051809103902090505b90565b6000828152601c6020908152604080832060ff6000198601811680865291845282852054878652601d85528386209286529190935292205481169116818110915b505092915050565b60185460ff1681565b60005474010000000000000000000000000000000000000000900460ff1681565b611f3861363f565b606060405190810160409081526000848152601c60209081528282208280528082528383205460ff908116865260018452818352848420548116838701526002845291529082902054169082015290505b919050565b6000818152601e6020526040812054801515611fad5760009150611957565b611fb681611e68565b1591505b50919050565b600160a060020a03331660009081526001602052604081205460ff1680611feb5750611feb33611b16565b5b80612005575060025433600160a060020a039081169116145b151561201057600080fd5b61201a8383611ebd565b151561202557600080fd5b61202e8261324a565b151561203957600080fd5b506000828152601c6020908152604080832060ff60001986018181168652919093529220805480831660010190921660ff199092169190911790555b5b505050565b600160a060020a03331660009081526001602052604090205460ff16806120a657506120a633611b16565b5b806120c0575060025433600160a060020a039081169116145b15156120cb57600080fd5b60008281526009602052604090208054600160a060020a031916600160a060020a0383161790555b5b5050565b600160a060020a03331660009081526001602052604090205460ff1680612123575061212333611b16565b5b8061213d575060025433600160a060020a039081169116145b151561214857600080fd5b600160a060020a0381166000908152601260205260409020805460010190555b5b50565b60005433600160a060020a0390811691161461218757600080fd5b600160a060020a038116151561219c57600080fd5b600160a060020a0381166000908152601460205260409020805460ff191660011790555b5b50565b600160a060020a0333166000908152600160205260408120548190819060ff16806121f357506121f333611b16565b5b8061220d575060025433600160a060020a039081169116145b151561221857600080fd5b6000848152600a60205260409020600101549250612234612420565b61223c6133a2565b91506122488483611ce3565b61225184611672565b60010190506122608382611fc0565b5b5b50505050565b60116020526000908152604090205460ff1681565b600160a060020a03331660009081526001602052604090205460ff16806122a857506122a833611b16565b5b806122c2575060025433600160a060020a039081169116145b15156122cd57600080fd5b6122d68461247d565b15156122e157600080fd5b6000848152601d60209081526040808320838052909152808220805460ff87811660ff199283161790925560018452828420805487841690831617905560028452919092208054928416929091169190911790555b5b50505050565b600080600080600061234d613667565b600087815260166020526040908190209060c0905190810160409081528254600160a060020a0316825260018301546001608060020a038082166020850152608060020a9091041690820152600282015467ffffffffffffffff1660608201526003820154608082015260049091015460ff16151560a082015290506123d287613602565b15156123dd57600080fd5b805181602001518260400151836060015184608001519399506001608060020a0392831698509116955067ffffffffffffffff16935091505b5091939590929450565b600160a060020a03331660009081526001602052604090205460ff168061244b575061244b33611b16565b5b80612465575060025433600160a060020a039081169116145b151561247057600080fd5b601a805460010190555b5b565b6000818152600a602052604090206007015460ff16155b919050565b600160a060020a03331660009081526001602052604090205460ff16806124c457506124c433611b16565b5b806124de575060025433600160a060020a039081169116145b15156124e957600080fd5b6124f28161247d565b15156124fd57600080fd5b60008181526010602090815260408083208054600160ff199182168117909255600e8054600019019055600a909352908320838155908101839055600281018390556003810183905560048101805461ffff191690556005810183905560068101929092556007909101805490911690555b5b50565b6000868152600a60205260408120600201548190819081908a901561259757600080fd5b600160a060020a03331660009081526001602052604090205460ff16806125c257506125c233611b16565b5b806125dc575060025433600160a060020a039081169116145b15156125e757600080fd5b42869011156125f557600080fd5b60018860ff161015801561260d5750600a8860ff1611155b151561261857600080fd5b6000199097019642945060ff8916151561263457429350612714565b60008a8152600a6020526040902060040154601f5460ff6101009092048216945060029116141561269857600783600a811061266c57fe5b600891828204019190066004025b9054906101000a900463ffffffff1663ffffffff1642019350612714565b601f5460ff16600114156126df57600583600a811061266c57fe5b600891828204019190066004025b9054906101000a900463ffffffff1663ffffffff1642019350612714565b600383600a81106126ec57fe5b600891828204019190066004025b9054906101000a900463ffffffff1663ffffffff16420193505b5b5b60ff89161515612728578a9150612751565b8860ff166001141561273c57899150612751565b60008a8152600a602052604090206001015491505b5b61012060405190810160409081528b825260208083018590528183018890526060830187905260ff808d1660808501819052908c1660a085015260c084018b905260e084018a9052151561010084015260008e8152600a9091522081518155602082015181600101556040820151816002015560608201518160030155608082015160048201805460ff191660ff9290921691909117905560a08201518160040160016101000a81548160ff021916908360ff16021790555060c0820151816005015560e08201518160060155610100820151600791909101805460ff19169115159190911790555060008b81526011602052604090205460ff1615156128b95760008b8152601160205260409020805460ff19166001908117909155600c805490918101612881838261369c565b916000526020600020900160005b508c905550600f5460008c8152600d60205260409020556128af8c6120f8565b600f805460010190555b60008b8152601060205260409020805460ff191690556128d98b8d61207b565b600e805460010190555b5b5b505050505050505050505050565b600160a060020a03331660009081526001602052604090205460ff168061291e575061291e33611b16565b5b80612938575060025433600160a060020a039081169116145b151561294357600080fd5b60008281526015602052604090208054600160a060020a031916600160a060020a0383161790555b5b5050565b600054600160a060020a031681565b60136020526000908152604090206001810182565b60008181526016602052604090206004015460ff16155b919050565b600160a060020a033316600090815260016020526040812054819060ff16806129dd57506129dd33611b16565b5b806129f7575060025433600160a060020a039081169116145b1515612a0257600080fd5b5050600054600190600160a060020a0316612a2287878787878688612c1e565b5b5b50505050505050565b600c805482908110612a3b57fe5b906000526020600020900160005b5054905081565b600960205260009081526040902054600160a060020a031681565b600160a060020a03331660009081526001602052604081205460ff1680612a965750612a9633611b16565b5b80612ab0575060025433600160a060020a039081169116145b1515612abb57600080fd5b506000818152600a6020526040812060040154610100900460ff1690811115611d45576000828152600a60205260409020600401805460001960ff610100808404821692909201160261ff00199091161790555b5b5b5050565b6000818152600a602052604090206004015460ff610100909104166001015b919050565b600d6020526000908152604090205481565b6000600c82815481101515612b5c57fe5b906000526020600020900160005b505490505b919050565b6000818152600a60205260409020600101545b919050565b600160a060020a03331660009081526001602052604090205460ff1680612bb75750612bb733611b16565b5b80612bd1575060025433600160a060020a039081169116145b1515612bdc57600080fd5b612be58161247d565b1515612bf057600080fd5b600081815260136020526040812090612c0982826136c6565b6120756001830160006136c6565b50505b5b50565b600160a060020a03331660009081526001602052604090205460ff1680612c495750612c4933611b16565b5b80612c63575060025433600160a060020a039081169116145b1515612c6e57600080fd5b612c7787613602565b15612c8157600080fd5b60c06040519081016040908152600160a060020a03841682526001608060020a038089166020808501919091529088168284015267ffffffffffffffff861660608401526080830187905283151560a084015260008a815260169091522081518154600160a060020a031916600160a060020a039190911617815560208201516001820180546fffffffffffffffffffffffffffffffff19166001608060020a039290921691909117905560408201516001820180546001608060020a03928316608060020a029216919091179055606082015160028201805467ffffffffffffffff191667ffffffffffffffff929092169190911790556080820151816003015560a0820151600491909101805460ff1916911515919091179055506017805460010190555b5b50505050505050565b600160a060020a0381166000908152601260205260409020545b919050565b6000828152600b6020526040902054600160a060020a038281169116145b92915050565b600160a060020a03811660009081526001602052604090205460ff165b919050565b600b60205260009081526040902054600160a060020a031681565b600081815260166020526040902054600160a060020a03165b919050565b600a6020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600790970154959694959394929360ff80841694610100909404811693911689565b600160a060020a03331660009081526001602052604090205460ff1680612ecb5750612ecb33611b16565b5b80612ee5575060025433600160a060020a039081169116145b1515612ef057600080fd5b612ef985613602565b15612f0357600080fd5b60c06040519081016040908152600160a060020a03831682526001608060020a038087166020808501919091529086168284015267ffffffffffffffff85166060840152426080840152600060a0840181905288815260169091522081518154600160a060020a031916600160a060020a039190911617815560208201516001820180546fffffffffffffffffffffffffffffffff19166001608060020a039290921691909117905560408201516001820180546001608060020a03928316608060020a029216919091179055606082015160028201805467ffffffffffffffff191667ffffffffffffffff929092169190911790556080820151816003015560a0820151600491909101805460ff1916911515919091179055506017805460010190555b5b5050505050565b600254600160a060020a031681565b6000818152600a60205260409020600501545b919050565b60126020526000908152604090205481565b60195481565b600160a060020a03331660009081526001602052604090205460ff168061309a575061309a33611b16565b5b806130b4575060025433600160a060020a039081169116145b15156130bf57600080fd5b600082815260136020526040902060010181805161207592916020019061370e565b505b5b5050565b60016020526000908152604090205460ff1681565b60166020526000908152604090208054600182015460028301546003840154600490940154600160a060020a03909316936001608060020a0380841694608060020a909404169267ffffffffffffffff9092169160ff1686565b600781600a8110611d6c57fe5b600891828204019190066004025b915054906101000a900463ffffffff1681565b6017545b90565b6000818152600a6020526040902060060154429011155b919050565b60006131b2613667565b600083815260166020526040908190209060c0905190810160409081528254600160a060020a0316825260018301546001608060020a038082166020850152608060020a9091041690820152600282015467ffffffffffffffff16606082019081526003830154608083015260049092015460ff16151560a082015291505167ffffffffffffffff1681608001510191505b50919050565b600060018260ff1610158015611c2b575060038260ff1611155b90505b919050565b60005433600160a060020a0390811691161461328757600080fd5b600160a060020a038116151561329c57600080fd5b60008054600160a060020a031916600160a060020a0383161790555b5b50565b601e6020526000908152604090205481565b6132d661363f565b606060405190810160409081526000848152601d60209081528282208280528082528383205460ff908116865260018452818352848420548116838701526002845291529082902054169082015290505b919050565b600160a060020a03331660009081526001602052604090205460ff1680613357575061335733611b16565b5b80613371575060025433600160a060020a039081169116145b151561337c57600080fd5b600082815260136020526040902081805161207592916020019061370e565b505b5b5050565b601a54601954015b90565b600160a060020a03331660009081526001602052604090205460ff16806133d857506133d833611b16565b5b806133f2575060025433600160a060020a039081169116145b15156133fd57600080fd5b600160a060020a03811660009081526001602052604090819020805460ff191690557f0504a20df814c93c7ddd7f77490f6e926f33d1094b561451e480448195c3a91790829051600160a060020a03909116815260200160405180910390a15b5b50565b600160a060020a03331660009081526001602052604090205460ff168061348c575061348c33611b16565b5b806134a6575060025433600160a060020a039081169116145b15156134b157600080fd5b6000828152600b602052604090208054600160a060020a031916600160a060020a0383161790555b5b5050565b60005433600160a060020a039081169116146134f957600080fd5b600160a060020a038116151561350e57600080fd5b60028054600160a060020a031916600160a060020a0383161790555b5b50565b600160a060020a03331660009081526001602052604090205460ff1680613559575061355933611b16565b5b80613573575060025433600160a060020a039081169116145b151561357e57600080fd5b600160a060020a038116151561359357600080fd5b600160a060020a038116600090815260016020819052604091829020805460ff191690911790557fd95d4cef34c7f4a986a0964e74c4a112f7afe024b8bcafb75b2eab45e7c5738890829051600160a060020a03909116815260200160405180910390a15b5b50565b601a5481565b600081815260166020526040812060030154115b919050565b60206040519081016040526000815290565b60206040519081016040526000815290565b60606040519081016040526003815b60008152600019909101906020018161364e5790505090565b60c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a082015290565b8154818355818115116120755760008381526020902061207591810190830161378d565b5b505050565b50805460018160011615610100020316600290046000825580601f106136ec575061166e565b601f01602090049060005260206000209081019061166e919061378d565b5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061374f57805160ff191683800117855561377c565b8280016001018555821561377c579182015b8281111561377c578251825591602001919060010190613761565b5b5061378992915061378d565b5090565b611eba91905b808211156137895760008155600101613793565b5090565b905600a165627a7a723058205b1bf9cb59ba4dcb73a87c418d178af2527641ea44bf44f311b170f7d242ab9e00290000000000000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x606060405236156104275763ffffffff7c010000000000000000000000000000000000000000000000000000000060003504166301e343db811461042c5780630af9d89c146104445780630cdc92ea146104705780630d66343c1461049a5780630ec45dc0146104cc578063108a101b146104fe578063145f8ba2146105285780631785f53c14610587578063197b9454146105a85780631be6ce57146105cd5780631dea157f146105ee5780631e801c8c1461067c57806324d7806c14610694578063275510d0146106c757806328dca7a3146106f95780632dd7030b146107255780632efd08df1461073d5780632f54bf6e1461076257806332cb93d91461079557806337016a5f1461082357806337e246ad1461084b5780633804ab8d146108755780633953f4a1146108dc57806339e3af9b146108f75780633e6d4fb914610921578063429b62e514610950578063474da79a1461098357806348a357bc146109b55780634a61f347146109e45780634f558e79146109fc57806350df8f7114610a2657806351ff484714610a50578063579599bd14610a98578063590731b714610ac85780635c975abb14610af15780635de8153414610b185780635f4eab6514610b6757806364d0bbc414610b91578063687c4fa714610baf5780636bfaa90314610bd35780637048027514610bf457806370d1383d14610c1557806373962b2614610c2d578063783370b514610c5757806378bd793514610c815780637a9e19de14610cd25780637d6979e714610ce75780638635b52714610d115780638754b1d114610d2957806389e865a914610d625780638da5cb5b14610d865780638f86f25514610db55780638ff6e97114610ece578063902a83cd14610ef85780639434e2fe14610f1c5780639e5cc10b14610f445780639e6afbda14610f765780639ed5736014610f8e578063a072fd2a14610fba578063a3e7061d14610fe2578063a42455271461100a578063a61bd76d14611032578063ab6680f31461104a578063b4f6eae41461107f578063b5b12e75146110b0578063babcc539146110e6578063c25de16b14611119578063c50c44cf1461114b578063c7ca6daa1461117d578063c9a6b2a8146111e4578063ca4b208b14611211578063cd0fdc2414611240578063cec21acb14611268578063d555654414611299578063d59f4e68146112be578063d63a8e1114611316578063e3b1475714611349578063e4267295146113b9578063e45c1879146113e8578063eabc8b8e1461140d578063eda8927914611437578063f195995c1461145f578063f2fde38b1461148c578063f50b769e146114ad578063f79098f4146114d5578063fabb795214611524578063fafb76dd1461157c578063fc9d96ba146115a1578063febe4909146115c2578063ff70fa49146115e6578063ff9913e814611607578063ffe90ba614611628575b600080fd5b341561043757600080fd5b61044260043561164d565b005b341561044f57600080fd5b61045a600435611672565b60405160ff909116815260200160405180910390f35b341561047b57600080fd5b61048660043561168d565b604051901515815260200160405180910390f35b34156104a557600080fd5b6104b06004356116a3565b604051600160a060020a03909116815260200160405180910390f35b34156104d757600080fd5b61045a60043560ff602435166116c1565b60405160ff909116815260200160405180910390f35b341561050957600080fd5b6104866004356116e1565b604051901515815260200160405180910390f35b341561053357600080fd5b61053e60043561175d565b604051600160a060020a0390961686526020860194909452604080860193909352606085019190915260ff90811660808501529190911660a083015260c0909101905180910390f35b341561059257600080fd5b610442600160a060020a03600435166117b2565b005b34156105b357600080fd5b6105bb611807565b60405190815260200160405180910390f35b34156105d857600080fd5b610442600160a060020a036004351661180d565b005b34156105f957600080fd5b610604600435611882565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156106415780820151818401525b602001610628565b50505050905090810190601f16801561066e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561068757600080fd5b61044260043561195d565b005b341561069f57600080fd5b610486600160a060020a03600435166119ea565b604051901515815260200160405180910390f35b34156106d257600080fd5b61045a60043560ff60243516611a0c565b60405160ff909116815260200160405180910390f35b341561070457600080fd5b61045a600435611a2c565b60405160ff909116815260200160405180910390f35b341561073057600080fd5b610442600435611a54565b005b341561074857600080fd5b6105bb611b10565b60405190815260200160405180910390f35b341561076d57600080fd5b610486600160a060020a0360043516611b16565b604051901515815260200160405180910390f35b34156107a057600080fd5b610604600435611b2d565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156106415780820151818401525b602001610628565b50505050905090810190601f16801561066e5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561082e57600080fd5b6105bb600435611c08565b60405190815260200160405180910390f35b341561085657600080fd5b610486600435611c20565b604051901515815260200160405180910390f35b341561088057600080fd5b610888611c33565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156108c85780820151818401525b6020016108af565b505050509050019250505060405180910390f35b34156108e757600080fd5b610442600435602435611ce3565b005b341561090257600080fd5b610486600435611d4a565b604051901515815260200160405180910390f35b341561092c57600080fd5b610937600435611d5f565b60405163ffffffff909116815260200160405180910390f35b341561095b57600080fd5b610486600160a060020a0360043516611d8d565b604051901515815260200160405180910390f35b341561098e57600080fd5b6104b0600435611da2565b604051600160a060020a03909116815260200160405180910390f35b34156109c057600080fd5b610937600435611dbd565b60405163ffffffff909116815260200160405180910390f35b34156109ef57600080fd5b610442600435611deb565b005b3415610a0757600080fd5b610486600435611e4e565b604051901515815260200160405180910390f35b3415610a3157600080fd5b610486600435611e68565b604051901515815260200160405180910390f35b3415610a5b57600080fd5b610a63611e84565b6040517fffffffff00000000000000000000000000000000000000000000000000000000909116815260200160405180910390f35b3415610aa357600080fd5b61048660043560ff60243516611ebd565b604051901515815260200160405180910390f35b3415610ad357600080fd5b61045a611f06565b60405160ff909116815260200160405180910390f35b3415610afc57600080fd5b610486611f0f565b604051901515815260200160405180910390f35b3415610b2357600080fd5b610b2e600435611f30565b6040518082606080838360005b83811015610b545780820151818401525b602001610b3b565b5050505090500191505060405180910390f35b3415610b7257600080fd5b610486600435611f8e565b604051901515815260200160405180910390f35b3415610b9c57600080fd5b61044260043560ff60243516611fc0565b005b3415610bba57600080fd5b610442600435600160a060020a036024351661207b565b005b3415610bde57600080fd5b610442600160a060020a03600435166120f8565b005b3415610bff57600080fd5b610442600160a060020a036004351661216c565b005b3415610c2057600080fd5b6104426004356121c4565b005b3415610c3857600080fd5b610486600435612268565b604051901515815260200160405180910390f35b3415610c6257600080fd5b61044260043560ff6024358116906044358116906064351661227d565b005b3415610c8c57600080fd5b610c9760043561233d565b604051600160a060020a03909516855260208501939093526040808501929092526060840152608083019190915260a0909101905180910390f35b3415610cdd57600080fd5b610442612420565b005b3415610cf257600080fd5b61048660043561247d565b604051901515815260200160405180910390f35b3415610d1c57600080fd5b610442600435612499565b005b3415610d3457600080fd5b610442600160a060020a036004351660243560443560ff6064358116906084351660a43560c435612573565b005b3415610d6d57600080fd5b610442600435600160a060020a03602435166128f3565b005b3415610d9157600080fd5b6104b0612970565b604051600160a060020a03909116815260200160405180910390f35b3415610dc057600080fd5b610dcb60043561297f565b604051604080825283546002600019610100600184161502019091160490820181905281906020820190606083019086908015610e495780601f10610e1e57610100808354040283529160200191610e49565b820191906000526020600020905b815481529060010190602001808311610e2c57829003601f168201915b5050838103825284546002600019610100600184161502019091160480825260209091019085908015610ebd5780601f10610e9257610100808354040283529160200191610ebd565b820191906000526020600020905b815481529060010190602001808311610ea057829003601f168201915b505094505050505060405180910390f35b3415610ed957600080fd5b610486600435612994565b604051901515815260200160405180910390f35b3415610f0357600080fd5b6104426004356024356044356064356084356129b0565b005b3415610f2757600080fd5b6105bb600435612a2d565b60405190815260200160405180910390f35b3415610f4f57600080fd5b6104b0600435612a50565b604051600160a060020a03909116815260200160405180910390f35b3415610f8157600080fd5b610442600435612a6b565b005b3415610f9957600080fd5b61045a600435612b15565b60405160ff909116815260200160405180910390f35b3415610fc557600080fd5b6105bb600435612b39565b60405190815260200160405180910390f35b3415610fed57600080fd5b6105bb600435612b4b565b60405190815260200160405180910390f35b341561101557600080fd5b6105bb600435612b74565b60405190815260200160405180910390f35b341561103d57600080fd5b610442600435612b8c565b005b341561105557600080fd5b610442600435602435604435606435608435600160a060020a0360a4351660c4351515612c1e565b005b341561108a57600080fd5b6105bb600160a060020a0360043516612db2565b60405190815260200160405180910390f35b34156110bb57600080fd5b610486600435600160a060020a0360243516612dd1565b604051901515815260200160405180910390f35b34156110f157600080fd5b610486600160a060020a0360043516612df5565b604051901515815260200160405180910390f35b341561112457600080fd5b6104b0600435612e17565b604051600160a060020a03909116815260200160405180910390f35b341561115657600080fd5b6104b0600435612e32565b604051600160a060020a03909116815260200160405180910390f35b341561118857600080fd5b611193600435612e50565b6040519889526020890197909752604080890196909652606088019490945260ff9283166080880152911660a086015260c085015260e0840152901515610100830152610120909101905180910390f35b34156111ef57600080fd5b610442600435602435604435606435600160a060020a0360843516612ea0565b005b341561121c57600080fd5b6104b0613030565b604051600160a060020a03909116815260200160405180910390f35b341561124b57600080fd5b6105bb60043561303f565b60405190815260200160405180910390f35b341561127357600080fd5b6105bb600160a060020a0360043516613057565b60405190815260200160405180910390f35b34156112a457600080fd5b6105bb613069565b60405190815260200160405180910390f35b34156112c957600080fd5b610442600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061306f95505050505050565b005b341561132157600080fd5b610486600160a060020a03600435166130e8565b604051901515815260200160405180910390f35b341561135457600080fd5b61135f6004356130fd565b604051600160a060020a0390961686526001608060020a0394851660208701529290931660408086019190915267ffffffffffffffff90911660608501526080840192909252151560a083015260c0909101905180910390f35b34156113c457600080fd5b610937600435613157565b60405163ffffffff909116815260200160405180910390f35b34156113f357600080fd5b6105bb613185565b60405190815260200160405180910390f35b341561141857600080fd5b61048660043561318c565b604051901515815260200160405180910390f35b341561144257600080fd5b6105bb6004356131a8565b60405190815260200160405180910390f35b341561146a57600080fd5b61048660ff6004351661324a565b604051901515815260200160405180910390f35b341561149757600080fd5b610442600160a060020a036004351661326c565b005b34156114b857600080fd5b6105bb6004356132bc565b60405190815260200160405180910390f35b34156114e057600080fd5b610b2e6004356132ce565b6040518082606080838360005b83811015610b545780820151818401525b602001610b3b565b5050505090500191505060405180910390f35b341561152f57600080fd5b610442600480359060446024803590810190830135806020601f8201819004810201604051908101604052818152929190602084018383808284375094965061332c95505050505050565b005b341561158757600080fd5b6105bb6133a2565b60405190815260200160405180910390f35b34156115ac57600080fd5b610442600160a060020a03600435166133ad565b005b34156115cd57600080fd5b610442600435600160a060020a0360243516613461565b005b34156115f157600080fd5b610442600160a060020a03600435166134de565b005b341561161257600080fd5b610442600160a060020a036004351661352e565b005b341561163357600080fd5b6105bb6135fc565b60405190815260200160405180910390f35b60005433600160a060020a0390811691161461166857600080fd5b60198190555b5b50565b6000818152600a602052604090206004015460ff165b919050565b600042611699836131a8565b111590505b919050565b600081815260096020526040902054600160a060020a03165b919050565b601c60209081526000928352604080842090915290825290205460ff1681565b6000818152600a6020526040812060010154818080831515611701578593505b5050506000838152600a6020908152604080832060040154848452601d835281842060ff91821680865290845282852054868652601c855283862082875290945291909320549183169190921681811094505b50505050919050565b600081815260096020908152604080832054600a909252909120805460028201546003830154600490930154600160a060020a03909416939192909160ff808216916101009004166001015b91939550919395565b60005433600160a060020a039081169116146117cd57600080fd5b600160a060020a03811615156117e257600080fd5b600160a060020a0381166000908152601460205260409020805460ff191690555b5b50565b600e5481565b600160a060020a03331660009081526001602052604090205460ff1680611838575061183833611b16565b5b80611852575060025433600160a060020a039081169116145b151561185d57600080fd5b600160a060020a038116600090815260126020526040902080546000190190555b5b50565b61188a61361b565b6000600a6000848152602001908152602001600020600101549050601360008281526020019081526020016000206001018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561194f5780601f106119245761010080835404028352916020019161194f565b820191906000526020600020905b81548152906001019060200180831161193257829003601f168201915b505050505091505b50919050565b600160a060020a03331660009081526001602052604090205460ff1680611988575061198833611b16565b5b806119a2575060025433600160a060020a039081169116145b15156119ad57600080fd5b6000818152600a602052604090206007015460ff16151561166e576000818152600a60205260409020600701805460ff191660011790555b5b5b50565b600160a060020a03811660009081526014602052604090205460ff165b919050565b601d60209081526000928352604080842090915290825290205460ff1681565b601b8160038110611a3957fe5b602091828204019190065b915054906101000a900460ff1681565b600160a060020a03331660009081526001602052604090205460ff1680611a7f5750611a7f33611b16565b5b80611a99575060025433600160a060020a039081169116145b1515611aa457600080fd5b611aad81613602565b1515611ab857600080fd5b60008181526016602052604081208054600160a060020a03191681556001810182905560028101805467ffffffffffffffff191690556003810191909155600401805460ff19169055601780546000190190555b5b50565b600f5481565b600054600160a060020a038281169116145b919050565b611b3561361b565b6000600a6000848152602001908152602001600020600101549050601360008281526020019081526020016000206000018054600181600116156101000203166002900480601f01602080910402602001604051908101604052809291908181526020018280546001816001161561010002031660029004801561194f5780601f106119245761010080835404028352916020019161194f565b820191906000526020600020905b81548152906001019060200180831161193257829003601f168201915b505050505091505b50919050565b6000818152601660205260409020600301545b919050565b6000611c2b82613602565b90505b919050565b611c3b61361b565b6000806000601754604051805910611c505750595b908082528060200260200182016040525b50935060009250600091505b600f54821015611cdc57611c8082612b4b565b60008181526010602052604090205490915060ff1615611c9f57611cd1565b611ca881613602565b1515611cb357611cd1565b80848481518110611cc057fe5b602090810290910101526001909201915b600190910190611c6d565b5b50505090565b600160a060020a03331660009081526001602052604090205460ff1680611d0e5750611d0e33611b16565b5b80611d28575060025433600160a060020a039081169116145b1515611d3357600080fd5b6000828152601e602052604090208190555b5b5050565b60106020526000908152604090205460ff1681565b600581600a8110611d6c57fe5b600891828204019190066004025b915054906101000a900463ffffffff1681565b60146020526000908152604090205460ff1681565b601560205260009081526040902054600160a060020a031681565b600381600a8110611d6c57fe5b600891828204019190066004025b915054906101000a900463ffffffff1681565b600160a060020a03331660009081526001602052604090205460ff1680611e165750611e1633611b16565b5b80611e30575060025433600160a060020a039081169116145b1515611e3b57600080fd5b61166e81600080600061227d565b5b5b50565b6000818152600a602052604090206002015415155b919050565b6000818152600a6020526040902060030154429011155b919050565b60006040517f73746f72616765000000000000000000000000000000000000000000000000008152600701604051809103902090505b90565b6000828152601c6020908152604080832060ff6000198601811680865291845282852054878652601d85528386209286529190935292205481169116818110915b505092915050565b60185460ff1681565b60005474010000000000000000000000000000000000000000900460ff1681565b611f3861363f565b606060405190810160409081526000848152601c60209081528282208280528082528383205460ff908116865260018452818352848420548116838701526002845291529082902054169082015290505b919050565b6000818152601e6020526040812054801515611fad5760009150611957565b611fb681611e68565b1591505b50919050565b600160a060020a03331660009081526001602052604081205460ff1680611feb5750611feb33611b16565b5b80612005575060025433600160a060020a039081169116145b151561201057600080fd5b61201a8383611ebd565b151561202557600080fd5b61202e8261324a565b151561203957600080fd5b506000828152601c6020908152604080832060ff60001986018181168652919093529220805480831660010190921660ff199092169190911790555b5b505050565b600160a060020a03331660009081526001602052604090205460ff16806120a657506120a633611b16565b5b806120c0575060025433600160a060020a039081169116145b15156120cb57600080fd5b60008281526009602052604090208054600160a060020a031916600160a060020a0383161790555b5b5050565b600160a060020a03331660009081526001602052604090205460ff1680612123575061212333611b16565b5b8061213d575060025433600160a060020a039081169116145b151561214857600080fd5b600160a060020a0381166000908152601260205260409020805460010190555b5b50565b60005433600160a060020a0390811691161461218757600080fd5b600160a060020a038116151561219c57600080fd5b600160a060020a0381166000908152601460205260409020805460ff191660011790555b5b50565b600160a060020a0333166000908152600160205260408120548190819060ff16806121f357506121f333611b16565b5b8061220d575060025433600160a060020a039081169116145b151561221857600080fd5b6000848152600a60205260409020600101549250612234612420565b61223c6133a2565b91506122488483611ce3565b61225184611672565b60010190506122608382611fc0565b5b5b50505050565b60116020526000908152604090205460ff1681565b600160a060020a03331660009081526001602052604090205460ff16806122a857506122a833611b16565b5b806122c2575060025433600160a060020a039081169116145b15156122cd57600080fd5b6122d68461247d565b15156122e157600080fd5b6000848152601d60209081526040808320838052909152808220805460ff87811660ff199283161790925560018452828420805487841690831617905560028452919092208054928416929091169190911790555b5b50505050565b600080600080600061234d613667565b600087815260166020526040908190209060c0905190810160409081528254600160a060020a0316825260018301546001608060020a038082166020850152608060020a9091041690820152600282015467ffffffffffffffff1660608201526003820154608082015260049091015460ff16151560a082015290506123d287613602565b15156123dd57600080fd5b805181602001518260400151836060015184608001519399506001608060020a0392831698509116955067ffffffffffffffff16935091505b5091939590929450565b600160a060020a03331660009081526001602052604090205460ff168061244b575061244b33611b16565b5b80612465575060025433600160a060020a039081169116145b151561247057600080fd5b601a805460010190555b5b565b6000818152600a602052604090206007015460ff16155b919050565b600160a060020a03331660009081526001602052604090205460ff16806124c457506124c433611b16565b5b806124de575060025433600160a060020a039081169116145b15156124e957600080fd5b6124f28161247d565b15156124fd57600080fd5b60008181526010602090815260408083208054600160ff199182168117909255600e8054600019019055600a909352908320838155908101839055600281018390556003810183905560048101805461ffff191690556005810183905560068101929092556007909101805490911690555b5b50565b6000868152600a60205260408120600201548190819081908a901561259757600080fd5b600160a060020a03331660009081526001602052604090205460ff16806125c257506125c233611b16565b5b806125dc575060025433600160a060020a039081169116145b15156125e757600080fd5b42869011156125f557600080fd5b60018860ff161015801561260d5750600a8860ff1611155b151561261857600080fd5b6000199097019642945060ff8916151561263457429350612714565b60008a8152600a6020526040902060040154601f5460ff6101009092048216945060029116141561269857600783600a811061266c57fe5b600891828204019190066004025b9054906101000a900463ffffffff1663ffffffff1642019350612714565b601f5460ff16600114156126df57600583600a811061266c57fe5b600891828204019190066004025b9054906101000a900463ffffffff1663ffffffff1642019350612714565b600383600a81106126ec57fe5b600891828204019190066004025b9054906101000a900463ffffffff1663ffffffff16420193505b5b5b60ff89161515612728578a9150612751565b8860ff166001141561273c57899150612751565b60008a8152600a602052604090206001015491505b5b61012060405190810160409081528b825260208083018590528183018890526060830187905260ff808d1660808501819052908c1660a085015260c084018b905260e084018a9052151561010084015260008e8152600a9091522081518155602082015181600101556040820151816002015560608201518160030155608082015160048201805460ff191660ff9290921691909117905560a08201518160040160016101000a81548160ff021916908360ff16021790555060c0820151816005015560e08201518160060155610100820151600791909101805460ff19169115159190911790555060008b81526011602052604090205460ff1615156128b95760008b8152601160205260409020805460ff19166001908117909155600c805490918101612881838261369c565b916000526020600020900160005b508c905550600f5460008c8152600d60205260409020556128af8c6120f8565b600f805460010190555b60008b8152601060205260409020805460ff191690556128d98b8d61207b565b600e805460010190555b5b5b505050505050505050505050565b600160a060020a03331660009081526001602052604090205460ff168061291e575061291e33611b16565b5b80612938575060025433600160a060020a039081169116145b151561294357600080fd5b60008281526015602052604090208054600160a060020a031916600160a060020a0383161790555b5b5050565b600054600160a060020a031681565b60136020526000908152604090206001810182565b60008181526016602052604090206004015460ff16155b919050565b600160a060020a033316600090815260016020526040812054819060ff16806129dd57506129dd33611b16565b5b806129f7575060025433600160a060020a039081169116145b1515612a0257600080fd5b5050600054600190600160a060020a0316612a2287878787878688612c1e565b5b5b50505050505050565b600c805482908110612a3b57fe5b906000526020600020900160005b5054905081565b600960205260009081526040902054600160a060020a031681565b600160a060020a03331660009081526001602052604081205460ff1680612a965750612a9633611b16565b5b80612ab0575060025433600160a060020a039081169116145b1515612abb57600080fd5b506000818152600a6020526040812060040154610100900460ff1690811115611d45576000828152600a60205260409020600401805460001960ff610100808404821692909201160261ff00199091161790555b5b5b5050565b6000818152600a602052604090206004015460ff610100909104166001015b919050565b600d6020526000908152604090205481565b6000600c82815481101515612b5c57fe5b906000526020600020900160005b505490505b919050565b6000818152600a60205260409020600101545b919050565b600160a060020a03331660009081526001602052604090205460ff1680612bb75750612bb733611b16565b5b80612bd1575060025433600160a060020a039081169116145b1515612bdc57600080fd5b612be58161247d565b1515612bf057600080fd5b600081815260136020526040812090612c0982826136c6565b6120756001830160006136c6565b50505b5b50565b600160a060020a03331660009081526001602052604090205460ff1680612c495750612c4933611b16565b5b80612c63575060025433600160a060020a039081169116145b1515612c6e57600080fd5b612c7787613602565b15612c8157600080fd5b60c06040519081016040908152600160a060020a03841682526001608060020a038089166020808501919091529088168284015267ffffffffffffffff861660608401526080830187905283151560a084015260008a815260169091522081518154600160a060020a031916600160a060020a039190911617815560208201516001820180546fffffffffffffffffffffffffffffffff19166001608060020a039290921691909117905560408201516001820180546001608060020a03928316608060020a029216919091179055606082015160028201805467ffffffffffffffff191667ffffffffffffffff929092169190911790556080820151816003015560a0820151600491909101805460ff1916911515919091179055506017805460010190555b5b50505050505050565b600160a060020a0381166000908152601260205260409020545b919050565b6000828152600b6020526040902054600160a060020a038281169116145b92915050565b600160a060020a03811660009081526001602052604090205460ff165b919050565b600b60205260009081526040902054600160a060020a031681565b600081815260166020526040902054600160a060020a03165b919050565b600a6020526000908152604090208054600182015460028301546003840154600485015460058601546006870154600790970154959694959394929360ff80841694610100909404811693911689565b600160a060020a03331660009081526001602052604090205460ff1680612ecb5750612ecb33611b16565b5b80612ee5575060025433600160a060020a039081169116145b1515612ef057600080fd5b612ef985613602565b15612f0357600080fd5b60c06040519081016040908152600160a060020a03831682526001608060020a038087166020808501919091529086168284015267ffffffffffffffff85166060840152426080840152600060a0840181905288815260169091522081518154600160a060020a031916600160a060020a039190911617815560208201516001820180546fffffffffffffffffffffffffffffffff19166001608060020a039290921691909117905560408201516001820180546001608060020a03928316608060020a029216919091179055606082015160028201805467ffffffffffffffff191667ffffffffffffffff929092169190911790556080820151816003015560a0820151600491909101805460ff1916911515919091179055506017805460010190555b5b5050505050565b600254600160a060020a031681565b6000818152600a60205260409020600501545b919050565b60126020526000908152604090205481565b60195481565b600160a060020a03331660009081526001602052604090205460ff168061309a575061309a33611b16565b5b806130b4575060025433600160a060020a039081169116145b15156130bf57600080fd5b600082815260136020526040902060010181805161207592916020019061370e565b505b5b5050565b60016020526000908152604090205460ff1681565b60166020526000908152604090208054600182015460028301546003840154600490940154600160a060020a03909316936001608060020a0380841694608060020a909404169267ffffffffffffffff9092169160ff1686565b600781600a8110611d6c57fe5b600891828204019190066004025b915054906101000a900463ffffffff1681565b6017545b90565b6000818152600a6020526040902060060154429011155b919050565b60006131b2613667565b600083815260166020526040908190209060c0905190810160409081528254600160a060020a0316825260018301546001608060020a038082166020850152608060020a9091041690820152600282015467ffffffffffffffff16606082019081526003830154608083015260049092015460ff16151560a082015291505167ffffffffffffffff1681608001510191505b50919050565b600060018260ff1610158015611c2b575060038260ff1611155b90505b919050565b60005433600160a060020a0390811691161461328757600080fd5b600160a060020a038116151561329c57600080fd5b60008054600160a060020a031916600160a060020a0383161790555b5b50565b601e6020526000908152604090205481565b6132d661363f565b606060405190810160409081526000848152601d60209081528282208280528082528383205460ff908116865260018452818352848420548116838701526002845291529082902054169082015290505b919050565b600160a060020a03331660009081526001602052604090205460ff1680613357575061335733611b16565b5b80613371575060025433600160a060020a039081169116145b151561337c57600080fd5b600082815260136020526040902081805161207592916020019061370e565b505b5b5050565b601a54601954015b90565b600160a060020a03331660009081526001602052604090205460ff16806133d857506133d833611b16565b5b806133f2575060025433600160a060020a039081169116145b15156133fd57600080fd5b600160a060020a03811660009081526001602052604090819020805460ff191690557f0504a20df814c93c7ddd7f77490f6e926f33d1094b561451e480448195c3a91790829051600160a060020a03909116815260200160405180910390a15b5b50565b600160a060020a03331660009081526001602052604090205460ff168061348c575061348c33611b16565b5b806134a6575060025433600160a060020a039081169116145b15156134b157600080fd5b6000828152600b602052604090208054600160a060020a031916600160a060020a0383161790555b5b5050565b60005433600160a060020a039081169116146134f957600080fd5b600160a060020a038116151561350e57600080fd5b60028054600160a060020a031916600160a060020a0383161790555b5b50565b600160a060020a03331660009081526001602052604090205460ff1680613559575061355933611b16565b5b80613573575060025433600160a060020a039081169116145b151561357e57600080fd5b600160a060020a038116151561359357600080fd5b600160a060020a038116600090815260016020819052604091829020805460ff191690911790557fd95d4cef34c7f4a986a0964e74c4a112f7afe024b8bcafb75b2eab45e7c5738890829051600160a060020a03909116815260200160405180910390a15b5b50565b601a5481565b600081815260166020526040812060030154115b919050565b60206040519081016040526000815290565b60206040519081016040526000815290565b60606040519081016040526003815b60008152600019909101906020018161364e5790505090565b60c06040519081016040908152600080835260208301819052908201819052606082018190526080820181905260a082015290565b8154818355818115116120755760008381526020902061207591810190830161378d565b5b505050565b50805460018160011615610100020316600290046000825580601f106136ec575061166e565b601f01602090049060005260206000209081019061166e919061378d565b5b50565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f1061374f57805160ff191683800117855561377c565b8280016001018555821561377c579182015b8281111561377c578251825591602001919060010190613761565b5b5061378992915061378d565b5090565b611eba91905b808211156137895760008155600101613793565b5090565b905600a165627a7a723058205b1bf9cb59ba4dcb73a87c418d178af2527641ea44bf44f311b170f7d242ab9e0029

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

0000000000000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _mode (uint8): 0

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


Swarm Source

bzzr://5b1bf9cb59ba4dcb73a87c418d178af2527641ea44bf44f311b170f7d242ab9e

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
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.