Sponsored:   VC, TLDR and CoinBene Funded "TEMCO: Bitcoin Network (RSK) Suppy Chain! Whitelist KYC Starts Now!!"
Contract Overview
Balance: 0.01360830912 Ether
Ether Value: $1.30 (@ $95.47/ETH)
Transactions: 120 txns
Token Tracker: BitPaintings (BP)
Misc:
Address Watch: Add To Watch List
Contract Creator: 0x184d7e44440963d7e8ca8c04f0c6234ffb98db40at txn 0x653f9516bd4e01ef22d4d3b9e486d7f92ee9830409871ee2766e462ea2fc2960
 Latest 25 transactions from a total of 120 transactions

TxHash Age From To Value [TxFee]
0xd747a30af952b66a9efe1716cbdf1dcea03df26c1356d6e3d8345233bab1204d67 days 18 hrs ago0x07b3f86e1024b6367e045c600c880a9554642932  IN   0xb818acc3307fd45a461df55df75f3aa4356829770 Ether0.000150046
0x6ceb51a489eb4f7408542092819e92d4442565c235f335678e3a360e373add7972 days 23 hrs ago0x07b3f86e1024b6367e045c600c880a9554642932  IN   0xb818acc3307fd45a461df55df75f3aa4356829770 Ether0.000300844
0x117d3eb9836efc2733901f1304891556c521ef306d79948dd1fe865c0685378e72 days 23 hrs ago0x07b3f86e1024b6367e045c600c880a9554642932  IN   0xb818acc3307fd45a461df55df75f3aa4356829770 Ether0.000065216
0x5ea0845d1abd46d5625a5edd52779944bb2495be3f9f524b4079e7bc5720eb1b83 days 13 hrs ago0x8033562521fedecdcc05487303522375597f9094  IN   0xb818acc3307fd45a461df55df75f3aa4356829770.02 Ether0.000668944
0x8fcf8af8544c2aaa7eb7d7cd7d97f3a42f2045fd2c3498ce1617ede129882c7598 days 23 hrs ago0x07b3f86e1024b6367e045c600c880a9554642932  IN   0xb818acc3307fd45a461df55df75f3aa4356829770 Ether0.00082555
0x12d72ec4b73c497b21f47437b82e1f9325fc69276e7e5430c9d9c5acc28edb20118 days 18 mins ago0x07b3f86e1024b6367e045c600c880a9554642932  IN   0xb818acc3307fd45a461df55df75f3aa4356829770.01 Ether0.000137236
0x5222884fde72de1dd7a2db6472df88fc125274d907f3c58a29abaa56a156b8b4118 days 18 hrs ago0x07b3f86e1024b6367e045c600c880a9554642932  IN   0xb818acc3307fd45a461df55df75f3aa4356829770.01 Ether0.000042162
0xf4c2726c16323f307a6f63ace1283e421c90e6a8d6d3ac4db6aa9fb27c70d263118 days 18 hrs ago0x07b3f86e1024b6367e045c600c880a9554642932  IN   0xb818acc3307fd45a461df55df75f3aa4356829770.01 Ether0.00010368
0xc9cfb0d7f7e69e077d69450cce63eec35735bc9b5001a74e603885017cb1f715118 days 18 hrs ago0x07b3f86e1024b6367e045c600c880a9554642932  IN   0xb818acc3307fd45a461df55df75f3aa4356829770.060207728 Ether0.0001148928
0x34ee108791f4b119b22f3fb783fecb2ae4519fecf47486dfc6d65e786a32dc4d124 days 57 mins ago0x959ea444e0fabb1eea4de9944ff8754f16aac731  IN   0xb818acc3307fd45a461df55df75f3aa4356829770 Ether0.000090492
0x26a6d0eca753c00e6cab734a438487b485f42ffd87bb721001ed1ee8c2e66c9f124 days 1 hr ago0xd6f9b8c39bb89f9854f572b7e362de4d72563a4c  IN   0xb818acc3307fd45a461df55df75f3aa4356829770 Ether0.00010991
0xdf39d1795acb2ac3ac76a2fb2c3f7758d12e248a62e55d5099a50cb2ead16618168 days 1 hr ago0x530cf036ed4fa58f7301a9c788c9806624cefd19  IN   0xb818acc3307fd45a461df55df75f3aa4356829770.01 Ether0.00625912
0xa33368bfd40b3142a4f105e9d393128be67aff598c2f1e38b6a39b10cc86f169168 days 22 hrs ago0x00668305a5dabe522f7340842e318a8b5c5609ff  IN   0xb818acc3307fd45a461df55df75f3aa4356829770 Ether0.00329964
0x1f3e11a02784296982a41651bdd5f5baff9b93d63683cbc2c690fcae2bf65c96170 days 16 hrs ago0x06117dbdb9a31d7db28b7a193218db580435a7bb  IN   0xb818acc3307fd45a461df55df75f3aa4356829770 Ether0.001648394
0x50170d4b653627be60621d67b63d79aa457464c89f0364fd4fce1fcc8aacdb7c170 days 16 hrs ago0x06117dbdb9a31d7db28b7a193218db580435a7bb  IN   0xb818acc3307fd45a461df55df75f3aa4356829770 Ether0.00032544
0x117f13369507e678aaf6cb6af1fea7fa18fbd39daa3f869eed983ff219dfa0ae173 days 3 hrs ago0x00668305a5dabe522f7340842e318a8b5c5609ff  IN   0xb818acc3307fd45a461df55df75f3aa4356829770.01 Ether0.00156478
0x108090e613c5065085072b7b6e8b0ebfbc468b122670285f3f32b6b7ff86fb62173 days 23 hrs ago0xe317eb46da9d27aa3493b03ea0468ffd37ccc2e1  IN   0xb818acc3307fd45a461df55df75f3aa4356829770 Ether0.000025527
0xaffba4df1bfbea73b673771a7a159ed16b75567840ef4c76c9cec241ac82cc39173 days 23 hrs ago0xe317eb46da9d27aa3493b03ea0468ffd37ccc2e1  IN   0xb818acc3307fd45a461df55df75f3aa4356829770 Ether0.000032608
0xbf730f308d187b101b4dc0c39b49a3e13a0ea7bcec789e931d47ae5c49820f9b174 days 3 hrs ago0xcdb100434095e0ec0cbbd8d0d77f114b8eece541  IN   0xb818acc3307fd45a461df55df75f3aa4356829770 Ether0.000330092
0xedd1fcbbda24a8b97216d270a243eddcd2ef21fc0059449fafcf8952a096cf6e175 days 3 hrs ago0xcdb100434095e0ec0cbbd8d0d77f114b8eece541  IN   0xb818acc3307fd45a461df55df75f3aa4356829770.01 Ether0.00013824
0xcabf88d58ebc0134581fbac934f14c1a0a9a5c78179c763717746fbaffdfc559177 days 17 hrs ago0x06117dbdb9a31d7db28b7a193218db580435a7bb  IN   0xb818acc3307fd45a461df55df75f3aa4356829770 Ether0.000149918
0xba9e7b4e3233458e11c9e0d80737c72a43320e89a6f3a3f98f9a4e39f850784f177 days 17 hrs ago0x06117dbdb9a31d7db28b7a193218db580435a7bb  IN   0xb818acc3307fd45a461df55df75f3aa4356829770 Ether0.000025399
0x6fff71d0e4c8c3af73a6481d405973eca467899558b47b2799cb315642ec44cd177 days 17 hrs ago0x06117dbdb9a31d7db28b7a193218db580435a7bb  IN   0xb818acc3307fd45a461df55df75f3aa4356829770 Ether0.000032544
0x2aa58bbc4e9410438487e42d097f35a0b519b3841a0130a8136872f966b8331a181 days 17 hrs ago0x6286ba5e54efd90b3a32aa7bb3a5a0bdb4b48981  IN   0xb818acc3307fd45a461df55df75f3aa4356829770.01 Ether0.0000295134
0x1bc906eb2816ed82f458897fd230265708ed6e6f105b3e1bf77b2f1131af5b31181 days 17 hrs ago0x6286ba5e54efd90b3a32aa7bb3a5a0bdb4b48981  IN   0xb818acc3307fd45a461df55df75f3aa4356829770.01 Ether0.000028108
[ Download CSV Export  ] 
 Internal Transactions as a result of Contract Execution
 Latest 12 Internal Transactions

ParentTxHash Block Age From To Value
0x5ea0845d1abd46d5625a5edd52779944bb2495be3f9f524b4079e7bc5720eb1b640089383 days 13 hrs ago0xb818acc3307fd45a461df55df75f3aa4356829770xcdb100434095e0ec0cbbd8d0d77f114b8eece5410.0192 Ether
0x12d72ec4b73c497b21f47437b82e1f9325fc69276e7e5430c9d9c5acc28edb206194585118 days 18 mins ago0xb818acc3307fd45a461df55df75f3aa4356829770x00668305a5dabe522f7340842e318a8b5c5609ff0.0096 Ether
0xc9cfb0d7f7e69e077d69450cce63eec35735bc9b5001a74e603885017cb1f7156190009118 days 18 hrs ago0xb818acc3307fd45a461df55df75f3aa4356829770x06117dbdb9a31d7db28b7a193218db580435a7bb0.05779941888 Ether
0x34ee108791f4b119b22f3fb783fecb2ae4519fecf47486dfc6d65e786a32dc4d6158891124 days 57 mins ago0xb818acc3307fd45a461df55df75f3aa4356829770x959ea444e0fabb1eea4de9944ff8754f16aac7310.07997715924 Ether
0xa054d7534833dd0485c217af0348bb7c6dfa8a3de7e68cc3d2602534cca64b975794104186 days 1 hr ago0xb818acc3307fd45a461df55df75f3aa4356829770x06117dbdb9a31d7db28b7a193218db580435a7bb0.23945182176 Ether
0x302a28ae02607982eb0f585779b457b8335ddcb2403aa322c4e2489422feebb45788896186 days 23 hrs ago0xb818acc3307fd45a461df55df75f3aa4356829770x959ea444e0fabb1eea4de9944ff8754f16aac7312.01079915044 Ether
0x95690234e590d58d5f27d72431ba6b763eea13f18a89488670592a691358279e5745137194 days 16 hrs ago0xb818acc3307fd45a461df55df75f3aa4356829770xb70d6d091ad3b48efcb979c774259d76f0cbe0cd0.01917961056 Ether
0x848605e11b25c94f08ca5074add1370a69096882c8be3531709f5ab8e9ffc35e5744317194 days 19 hrs ago0xb818acc3307fd45a461df55df75f3aa4356829770x959ea444e0fabb1eea4de9944ff8754f16aac7317.45734966492 Ether
0x0601a2fcfab374dcb262ae605da600d9a6f046b38228dd0de0e8dd25aacce9e45743765194 days 22 hrs ago0xb818acc3307fd45a461df55df75f3aa4356829770xb70d6d091ad3b48efcb979c774259d76f0cbe0cd0.02866581408 Ether
0xbf18708638cf06f5d8361f45c18272535ba94353fe5d8e8482b2b9b19ee246df5726273198 days 34 mins ago0xb818acc3307fd45a461df55df75f3aa4356829770xb70d6d091ad3b48efcb979c774259d76f0cbe0cd0.2124 Ether
0x766ce194f336b013a114ba8e5fd61299ec23f82e5878566796e91ba71f6865445699107202 days 20 hrs ago0xb818acc3307fd45a461df55df75f3aa4356829770x959ea444e0fabb1eea4de9944ff8754f16aac7310.009941087 Ether
0xf1a251e6dba1b025387e5a10990392089baaac6bf33bab647a84f727142744715698181203 days 25 mins ago0xb818acc3307fd45a461df55df75f3aa4356829770x184d7e44440963d7e8ca8c04f0c6234ffb98db400.199864583 Ether
[ Download CSV Export  ] 
Warning: The Compiled Contract might be susceptible to ExpExponentCleanup (medium/high-severity), NestedArrayFunctionCallDecoder (medium-severity), ZeroFunctionSelector (very low-severity) SolidityCompiler Bugs.

Contract Source Code Verified (Exact Match)
Contract Name: BitpaintingAuctions
Compiler Text: v0.4.15+commit.bbb8e64f
Optimization Enabled: Yes
Runs (Optimiser):  200



  Contract Source Code   Find Similiar Contracts

pragma solidity ^0.4.15;

// File: contracts/interfaces/IAuctions.sol

contract IAuctions {

    function currentPrice(uint _tokenId) public constant returns (uint256);
    function createAuction(
        uint256 _tokenId,
        uint256 _startingPrice,
        uint256 _endingPrice,
        uint256 _duration) public;
    function createReleaseAuction(
        uint _tokenId,
        uint _startingPrice,
        uint _endingPrice,
        uint _startedAt,
        uint _duration) public;
    function cancelAuction(uint256 _tokenId) external;
    function cancelAuctionWhenPaused(uint256 _tokenId) external;
    function bid(uint256 _tokenId, address _owner) external payable;
    function market() public constant returns (
        uint[] tokens,
        address[] sellers,
        uint8[] generations,
        uint8[] speeds,
        uint[] prices
    );
    function auctionsOf(address _of) public constant returns (
        uint[] tokens,
        uint[] prices
    );
    function signature() external constant returns (uint _signature);
}

// File: contracts/interfaces/IStorage.sol

contract IStorage {
    function isOwner(address _address) public constant returns (bool);

    function isAllowed(address _address) external constant returns (bool);
    function developer() public constant returns (address);
    function setDeveloper(address _address) public;
    function addAdmin(address _address) public;
    function isAdmin(address _address) public constant returns (bool);
    function removeAdmin(address _address) public;
    function contracts(uint _signature) public returns (address _address);

    function exists(uint _tokenId) external constant returns (bool);
    function paintingsCount() public constant returns (uint);
    function increaseOwnershipTokenCount(address _address) public;
    function decreaseOwnershipTokenCount(address _address) public;
    function setOwnership(uint _tokenId, address _address) public;
    function getPainting(uint _tokenId)
        external constant returns (address, uint, uint, uint, uint8, uint8);
    function createPainting(
        address _owner,
        uint _tokenId,
        uint _parentId,
        uint8 _generation,
        uint8 _speed,
        uint _artistId,
        uint _releasedAt) public;
    function approve(uint _tokenId, address _claimant) external;
    function isApprovedFor(uint _tokenId, address _claimant)
        external constant returns (bool);
    function createEditionMeta(uint _tokenId) public;
    function getPaintingOwner(uint _tokenId)
        external constant returns (address);
    function getPaintingGeneration(uint _tokenId)
        public constant returns (uint8);
    function getPaintingSpeed(uint _tokenId)
        external constant returns (uint8);
    function getPaintingArtistId(uint _tokenId)
        public constant returns (uint artistId);
    function getOwnershipTokenCount(address _address)
        external constant returns (uint);
    function isReady(uint _tokenId) public constant returns (bool);
    function getPaintingIdAtIndex(uint _index) public constant returns (uint);
    function lastEditionOf(uint _index) public constant returns (uint);
    function getPaintingOriginal(uint _tokenId)
        external constant returns (uint);
    function canBeBidden(uint _tokenId) public constant returns (bool _can);

    function addAuction(
        uint _tokenId,
        uint _startingPrice,
        uint _endingPrice,
        uint _duration,
        address _seller) public;
    function addReleaseAuction(
        uint _tokenId,
        uint _startingPrice,
        uint _endingPrice,
        uint _startedAt,
        uint _duration) public;
    function initAuction(
        uint _tokenId,
        uint _startingPrice,
        uint _endingPrice,
        uint _startedAt,
        uint _duration,
        address _seller,
        bool _byTeam) public;
    function _isOnAuction(uint _tokenId) internal constant returns (bool);
    function isOnAuction(uint _tokenId) external constant returns (bool);
    function removeAuction(uint _tokenId) public;
    function getAuction(uint256 _tokenId)
        external constant returns (
        address seller,
        uint256 startingPrice,
        uint256 endingPrice,
        uint256 duration,
        uint256 startedAt);
    function getAuctionSeller(uint256 _tokenId)
        public constant returns (address);
    function getAuctionEnd(uint _tokenId)
        public constant returns (uint);
    function canBeCanceled(uint _tokenId) external constant returns (bool);
    function getAuctionsCount() public constant returns (uint);
    function getTokensOnAuction() public constant returns (uint[]);
    function getTokenIdAtIndex(uint _index) public constant returns (uint);
    function getAuctionStartedAt(uint256 _tokenId) public constant returns (uint);

    function getOffsetIndex() public constant returns (uint);
    function nextOffsetIndex() public returns (uint);
    function canCreateEdition(uint _tokenId, uint8 _generation)
        public constant returns (bool);
    function isValidGeneration(uint8 _generation)
        public constant returns (bool);
    function increaseGenerationCount(uint _tokenId, uint8 _generation) public;
    function getEditionsCount(uint _tokenId) external constant returns (uint8[3]);
    function setLastEditionOf(uint _tokenId, uint _editionId) public;
    function setEditionLimits(uint _tokenId, uint8 _gen1, uint8 _gen2, uint8 _gen3) public;
    function getEditionLimits(uint _tokenId) external constant returns (uint8[3]);

    function hasEditionInProgress(uint _tokenId) external constant returns (bool);
    function hasEmptyEditionSlots(uint _tokenId) external constant returns (bool);

    function setPaintingName(uint _tokenId, string _name) public;
    function setPaintingArtist(uint _tokenId, string _name) public;
    function purgeInformation(uint _tokenId) public;
    function resetEditionLimits(uint _tokenId) public;
    function resetPainting(uint _tokenId) public;
    function decreaseSpeed(uint _tokenId) public;
    function isCanceled(uint _tokenId) public constant returns (bool _is);
    function totalPaintingsCount() public constant returns (uint _total);
    function isSecondary(uint _tokenId) public constant returns (bool _is);
    function secondarySaleCut() public constant returns (uint8 _cut);
    function sealForChanges(uint _tokenId) public;
    function canBeChanged(uint _tokenId) public constant returns (bool _can);

    function getPaintingName(uint _tokenId) public constant returns (string);
    function getPaintingArtist(uint _tokenId) public constant returns (string);

    function signature() external constant returns (bytes4);
}

// 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/BitpaintingBase.sol

contract BitpaintingBase is Pausable {
    /*** EVENTS ***/
    event Create(uint _tokenId,
        address _owner,
        uint _parentId,
        uint8 _generation,
        uint _createdAt,
        uint _completedAt);

    event Transfer(address from, address to, uint256 tokenId);

    IStorage public bitpaintingStorage;

    modifier canPauseUnpause() {
        require(msg.sender == owner || msg.sender == bitpaintingStorage.developer());
        _;
    }

    function setBitpaintingStorage(address _address) public onlyOwner {
        require(_address != address(0));
        bitpaintingStorage = IStorage(_address);
    }

    /**
    * @dev called by the owner to pause, triggers stopped state
    */
    function pause() public canPauseUnpause whenNotPaused {
        super._pause();
    }

    /**
     * @dev called by the owner to unpause, returns to normal state
     */
    function unpause() external canPauseUnpause whenPaused {
        super._unpause();
    }

    function canUserReleaseArtwork(address _address)
        public constant returns (bool _can) {
        return (bitpaintingStorage.isOwner(_address)
            || bitpaintingStorage.isAdmin(_address)
            || bitpaintingStorage.isAllowed(_address));
    }

    function canUserCancelArtwork(address _address)
        public constant returns (bool _can) {
        return (bitpaintingStorage.isOwner(_address)
            || bitpaintingStorage.isAdmin(_address));
    }

    modifier canReleaseArtwork() {
        require(canUserReleaseArtwork(msg.sender));
        _;
    }

    modifier canCancelArtwork() {
        require(canUserCancelArtwork(msg.sender));
        _;
    }

    /// @dev Assigns ownership of a specific Painting to an address.
    function _transfer(address _from, address _to, uint256 _tokenId)
        internal {
        bitpaintingStorage.setOwnership(_tokenId, _to);
        Transfer(_from, _to, _tokenId);
    }

    function _createOriginalPainting(uint _tokenId, uint _artistId, uint _releasedAt) internal {
        address _owner = owner;
        uint _parentId = 0;
        uint8 _generation = 0;
        uint8 _speed = 10;
        _createPainting(_owner, _tokenId, _parentId, _generation, _speed, _artistId, _releasedAt);
    }

    function _createPainting(
        address _owner,
        uint _tokenId,
        uint _parentId,
        uint8 _generation,
        uint8 _speed,
        uint _artistId,
        uint _releasedAt
    )
        internal
    {
        require(_tokenId == uint256(uint32(_tokenId)));
        require(_parentId == uint256(uint32(_parentId)));
        require(_generation == uint256(uint8(_generation)));

        bitpaintingStorage.createPainting(
            _owner, _tokenId, _parentId, _generation, _speed, _artistId, _releasedAt);

        uint _createdAt;
        uint _completedAt;
        (,,_createdAt, _completedAt,,) = bitpaintingStorage.getPainting(_tokenId);

        // emit the create event
        Create(
            _tokenId,
            _owner,
            _parentId,
            _generation,
            _createdAt,
            _completedAt
        );

        // This will assign ownership, and also emit the Transfer event as
        // per ERC721 draft
        _transfer(0, _owner, _tokenId);
    }

}

// File: contracts/libs/ERC721.sol

/// @title Interface for contracts conforming to ERC-721: Non-Fungible Tokens
/// @author Dieter Shirley <[email protected]> (https://github.com/dete)
contract ERC721 {
    // Required methods
    function totalSupply() public constant returns (uint256 total);
    function balanceOf(address _owner) public constant returns (uint256 balance);
    function ownerOf(uint256 _tokenId) external constant returns (address owner);
    function approve(address _to, uint256 _tokenId) external;
    function transfer(address _to, uint256 _tokenId) external;
    function transferFrom(address _from, address _to, uint256 _tokenId) external;

    // Events
    event Transfer(address from, address to, uint256 tokenId);
    event Approval(address owner, address approved, uint256 tokenId);

    // Optional
    // function name() public view returns (string name);
    // function symbol() public view returns (string symbol);
    // function tokensOfOwner(address _owner) external view returns (uint256[] tokenIds);
    // function tokenMetadata(uint256 _tokenId, string _preferredTransport) public view returns (string infoUrl);

    // ERC-165 Compatibility (https://github.com/ethereum/EIPs/issues/165)
    function supportsInterface(bytes4 _interfaceID) external constant returns (bool);
}

// File: contracts/libs/ERC721Metadata.sol

/// @title The external contract that is responsible for generating metadata for the kitties,
///  it has one function that will return the data as bytes.
contract ERC721Metadata {
    /// @dev Given a token Id, returns a byte array that is supposed to be converted into string.
    function getMetadata(uint256 _tokenId, string) public constant returns (bytes32[4] buffer, uint256 count) {
        if (_tokenId == 1) {
            buffer[0] = "Hello World! :D";
            count = 15;
        } else if (_tokenId == 2) {
            buffer[0] = "I would definitely choose a medi";
            buffer[1] = "um length string.";
            count = 49;
        } else if (_tokenId == 3) {
            buffer[0] = "Lorem ipsum dolor sit amet, mi e";
            buffer[1] = "st accumsan dapibus augue lorem,";
            buffer[2] = " tristique vestibulum id, libero";
            buffer[3] = " suscipit varius sapien aliquam.";
            count = 128;
        }
    }
}

// File: contracts/libs/PaintingOwnership.sol

contract PaintingOwnership is BitpaintingBase, ERC721 {

    /// @notice Name and symbol of the non fungible token, as defined in ERC721.
    string public constant name = "BitPaintings";
    string public constant symbol = "BP";

    ERC721Metadata public erc721Metadata;

    bytes4 constant InterfaceSignature_ERC165 =
        bytes4(keccak256('supportsInterface(bytes4)'));

    bytes4 constant InterfaceSignature_ERC721 =
        bytes4(keccak256('name()')) ^
        bytes4(keccak256('symbol()')) ^
        bytes4(keccak256('totalSupply()')) ^
        bytes4(keccak256('balanceOf(address)')) ^
        bytes4(keccak256('ownerOf(uint256)')) ^
        bytes4(keccak256('approve(address,uint256)')) ^
        bytes4(keccak256('transfer(address,uint256)')) ^
        bytes4(keccak256('transferFrom(address,address,uint256)')) ^
        bytes4(keccak256('tokensOfOwner(address)')) ^
        bytes4(keccak256('tokenMetadata(uint256,string)'));

    /// @notice Introspection interface as per ERC-165 (https://github.com/ethereum/EIPs/issues/165).
    ///  Returns true for any standardized interfaces implemented by this contract. We implement
    ///  ERC-165 (obviously!) and ERC-721.
    function supportsInterface(bytes4 _interfaceID) external constant returns (bool)
    {
        // DEBUG ONLY
        //require((InterfaceSignature_ERC165 == 0x01ffc9a7) && (InterfaceSignature_ERC721 == 0x9a20483d));

        return ((_interfaceID == InterfaceSignature_ERC165) || (_interfaceID == InterfaceSignature_ERC721));
    }

    /// @dev Set the address of the sibling contract that tracks metadata.
    ///  CEO only.
    function setMetadataAddress(address _contractAddress) public onlyOwner {
        erc721Metadata = ERC721Metadata(_contractAddress);
    }

    function _owns(address _claimant, uint256 _tokenId) internal constant returns (bool) {
        return bitpaintingStorage.getPaintingOwner(_tokenId) == _claimant;
    }

    function balanceOf(address _owner) public constant returns (uint256 count) {
        return bitpaintingStorage.getOwnershipTokenCount(_owner);
    }

    function _approve(uint256 _tokenId, address _approved) internal {
        bitpaintingStorage.approve(_tokenId, _approved);
    }

    function _approvedFor(address _claimant, uint256 _tokenId)
        internal constant returns (bool) {
        return bitpaintingStorage.isApprovedFor(_tokenId, _claimant);
    }

    function transfer(
        address _to,
        uint256 _tokenId
    )
        external
        whenNotPaused
    {
        require(_to != address(0));
        require(_to != address(this));
        require(_owns(msg.sender, _tokenId));

        _transfer(msg.sender, _to, _tokenId);
    }

    function approve(
      address _to,
      uint256 _tokenId
    )
      external
      whenNotPaused
    {
      require(_owns(msg.sender, _tokenId));
      _approve(_tokenId, _to);

      Approval(msg.sender, _to, _tokenId);
    }

    function transferFrom(
      address _from,
      address _to,
      uint256 _tokenId
    )
        external whenNotPaused {
        _transferFrom(_from, _to, _tokenId);
    }

    function _transferFrom(
      address _from,
      address _to,
      uint256 _tokenId
    )
        internal
        whenNotPaused
    {
        require(_to != address(0));
        require(_to != address(this));
        require(_approvedFor(msg.sender, _tokenId));
        require(_owns(_from, _tokenId));

        _transfer(_from, _to, _tokenId);
    }

    function totalSupply() public constant returns (uint) {
      return bitpaintingStorage.paintingsCount();
    }

    function ownerOf(uint256 _tokenId)
        external constant returns (address) {
        return _ownerOf(_tokenId);
    }

    function _ownerOf(uint256 _tokenId)
        internal constant returns (address) {
        return bitpaintingStorage.getPaintingOwner(_tokenId);
    }

    function tokensOfOwner(address _owner)
        external constant returns(uint256[]) {
        uint256 tokenCount = balanceOf(_owner);

        if (tokenCount == 0) {
          return new uint256[](0);
        }

        uint256[] memory result = new uint256[](tokenCount);
        uint256 totalCats = totalSupply();
        uint256 resultIndex = 0;

        uint256 paintingId;

        for (paintingId = 1; paintingId <= totalCats; paintingId++) {
            if (bitpaintingStorage.getPaintingOwner(paintingId) == _owner) {
                result[resultIndex] = paintingId;
                resultIndex++;
            }
        }

        return result;
    }

    /// @dev Adapted from memcpy() by @arachnid (Nick Johnson <[email protected]>)
    ///  This method is licenced under the Apache License.
    ///  Ref: https://github.com/Arachnid/solidity-stringutils/blob/2f6ca9accb48ae14c66f1437ec50ed19a0616f78/strings.sol
    function _memcpy(uint _dest, uint _src, uint _len) private constant {
      // Copy word-length chunks while possible
      for(; _len >= 32; _len -= 32) {
          assembly {
              mstore(_dest, mload(_src))
          }
          _dest += 32;
          _src += 32;
      }

      // Copy remaining bytes
      uint256 mask = 256 ** (32 - _len) - 1;
      assembly {
          let srcpart := and(mload(_src), not(mask))
          let destpart := and(mload(_dest), mask)
          mstore(_dest, or(destpart, srcpart))
      }
    }

    /// @dev Adapted from toString(slice) by @arachnid (Nick Johnson <[email protected]>)
    ///  This method is licenced under the Apache License.
    ///  Ref: https://github.com/Arachnid/solidity-stringutils/blob/2f6ca9accb48ae14c66f1437ec50ed19a0616f78/strings.sol
    function _toString(bytes32[4] _rawBytes, uint256 _stringLength) private constant returns (string) {
      var outputString = new string(_stringLength);
      uint256 outputPtr;
      uint256 bytesPtr;

      assembly {
          outputPtr := add(outputString, 32)
          bytesPtr := _rawBytes
      }

      _memcpy(outputPtr, bytesPtr, _stringLength);

      return outputString;
    }

    /// @notice Returns a URI pointing to a metadata package for this token conforming to
    ///  ERC-721 (https://github.com/ethereum/EIPs/issues/721)
    /// @param _tokenId The ID number of the Kitty whose metadata should be returned.
    function tokenMetadata(uint256 _tokenId, string _preferredTransport) external constant returns (string infoUrl) {
      require(erc721Metadata != address(0));
      bytes32[4] memory buffer;
      uint256 count;
      (buffer, count) = erc721Metadata.getMetadata(_tokenId, _preferredTransport);

      return _toString(buffer, count);
    }

    function withdraw() external onlyOwner {
        owner.transfer(this.balance);
    }
}

// File: contracts/BitpaintingAuctions.sol

contract BitpaintingAuctions is PaintingOwnership, IAuctions {

    event AuctionCreated(
        uint tokenId,
        address seller,
        uint startingPrice,
        uint endingPrice,
        uint duration);
    event AuctionCancelled(uint tokenId, address seller);
    event AuctionSuccessful(uint tokenId, uint totalPrice, address winner);

    function currentPrice(uint _tokenId)
        public
        constant
        returns (uint)
    {
        require(bitpaintingStorage.isOnAuction(_tokenId));
        uint secondsPassed = 0;
        address seller;
        uint startingPrice;
        uint endingPrice;
        uint duration;
        uint startedAt;
        (seller, startingPrice, endingPrice, duration, startedAt)
            = bitpaintingStorage.getAuction(_tokenId);

        // move that as class/contract member
        uint weis_in_gwei = 1000000000;
        if (now < startedAt) {
            return (startingPrice / weis_in_gwei);
        }

        if (now > startedAt) {
            secondsPassed = now - startedAt;
        }

        return _computeCurrentPrice(
            startingPrice,
            endingPrice,
            duration,
            secondsPassed
        );
    }

    /// returns the price in gwei instead of wei
    function _computeCurrentPrice(
        uint _startingPrice,
        uint _endingPrice,
        uint _duration,
        uint _secondsPassed
    )
        internal
        constant
        returns (uint)
    {
        uint weis_in_gwei = 1000000000;
        if (_secondsPassed >= _duration) {
            return _endingPrice / weis_in_gwei;
        }

        int256 totalPriceChange = int256(_endingPrice) - int256(_startingPrice);
        int256 currentPriceChange = totalPriceChange * int256(_secondsPassed) / int256(_duration);
        int256 _currentPrice = int256(_startingPrice) + currentPriceChange;

        return uint(_currentPrice) / weis_in_gwei;
    }

    function _bid(uint _tokenId, uint _amount) private {
        require(bitpaintingStorage.isOnAuction(_tokenId));
        require(bitpaintingStorage.canBeBidden(_tokenId));

        uint weis_in_gwei = 1000000000;
        address seller = bitpaintingStorage.getAuctionSeller(_tokenId);
        uint price = currentPrice(_tokenId) * weis_in_gwei;
        require(_amount >= price);

        if (bitpaintingStorage.isSecondary(_tokenId)) {
            uint8 cut = bitpaintingStorage.secondarySaleCut();
            uint forSeller = ((100 - cut) * _amount) / 100;
            seller.transfer(forSeller);
        }
        bitpaintingStorage.removeAuction(_tokenId);
        bitpaintingStorage.increaseOwnershipTokenCount(msg.sender);
        bitpaintingStorage.decreaseOwnershipTokenCount(seller);
        bitpaintingStorage.sealForChanges(_tokenId);

        AuctionSuccessful(_tokenId, price, msg.sender);
    }

    function _escrow(address _owner, uint _tokenId) internal {
        _transferFrom(_owner, this, _tokenId);
    }

    /// @dev Cancels an auction unconditionally.
    function _cancelAuction(uint _tokenId) internal {
        bitpaintingStorage.removeAuction(_tokenId);
        AuctionCancelled(_tokenId, msg.sender);
    }

    /// @dev Creates and begins a new auction.
    /// @param _tokenId - ID of token to auction, sender must be owner.
    /// @param _startingPrice - Price of item (in wei) at beginning of auction.
    /// @param _endingPrice - Price of item (in wei) at end of auction.
    /// @param _duration - Length of time to move between starting
    ///  price and ending price (in seconds).
    /// @param _seller - Seller, if not the message sender
    function _createAuction(
        uint _tokenId,
        uint _startingPrice,
        uint _endingPrice,
        uint _duration,
        address _seller
    )
        public
        whenNotPaused
    {
        // Sanity check that no inputs overflow how many bits we've allocated
        // to store them in the auction struct.
        require(_startingPrice == uint(uint128(_startingPrice)));
        require(_endingPrice == uint(uint128(_endingPrice)));
        require(_duration == uint(uint64(_duration)));

        bitpaintingStorage.addAuction(_tokenId, _startingPrice, _endingPrice, _duration, _seller);

        AuctionCreated(
            uint(_tokenId),
            _seller,
            uint(_startingPrice),
            uint(_endingPrice),
            uint(_duration)
        );
    }

    function _createReleaseAuction(
        uint _tokenId,
        uint _startingPrice,
        uint _endingPrice,
        uint _startedAt,
        uint _duration
    ) internal {
        // Sanity check that no inputs overflow how many bits we've allocated
        // to store them in the auction struct.
        require(_startingPrice == uint(uint128(_startingPrice)));
        require(_endingPrice == uint(uint128(_endingPrice)));
        require(_duration == uint(uint64(_duration)));

        bitpaintingStorage.addReleaseAuction(
            _tokenId,
            _startingPrice,
            _endingPrice,
            _startedAt,
            _duration);
    }

    /// @dev Put a painting up for auction.
    ///  Does some ownership trickery to create auctions in one tx.
    function createReleaseAuction(
        uint _tokenId,
        uint _startingPrice,
        uint _endingPrice,
        uint _startedAt,
        uint _duration
    ) public whenNotPaused canReleaseArtwork {
        require(_startingPrice > _endingPrice);
        _createReleaseAuction(
            _tokenId,
            _startingPrice,
            _endingPrice,
            _startedAt,
            _duration
        );
    }

    /// @dev Put a painting up for auction.
    ///  Does some ownership trickery to create auctions in one tx.
    function createAuction(
        uint _tokenId,
        uint _startingPrice,
        uint _endingPrice,
        uint _duration
    )
        public
        whenNotPaused
    {
        require(bitpaintingStorage.getPaintingOwner(_tokenId) == msg.sender);
        require(!bitpaintingStorage.hasEditionInProgress(_tokenId));
        require(bitpaintingStorage.isReady(_tokenId));
        require(!bitpaintingStorage.isOnAuction(_tokenId));
        require(_startingPrice > _endingPrice);

        _approve(_tokenId, msg.sender);
        _createAuction(
            _tokenId,
            _startingPrice,
            _endingPrice,
            _duration,
            msg.sender
        );
    }

    function cancelAuction(uint _tokenId) external whenNotPaused {
        require(bitpaintingStorage.isOnAuction(_tokenId));
        address seller = bitpaintingStorage.getAuctionSeller(_tokenId);
        require(msg.sender == seller);
        _cancelAuction(_tokenId);
    }

    function cancelAuctionWhenPaused(uint _tokenId)
        external whenPaused onlyOwner {
        require(bitpaintingStorage.isOnAuction(_tokenId));
        address seller = bitpaintingStorage.getAuctionSeller(_tokenId);
        require(msg.sender == seller);
        _cancelAuction(_tokenId);
    }

    function bid(uint _tokenId, address _owner) external payable whenNotPaused {
        address seller = bitpaintingStorage.getAuctionSeller(_tokenId);
        require(seller == _owner);
        _bid(_tokenId, msg.value);
        _transfer(seller, msg.sender, _tokenId);
    }

    function market() public constant returns (
        uint[] tokens,
        address[] sellers,
        uint8[] generations,
        uint8[] speeds,
        uint[] prices
        ) {
        uint length = bitpaintingStorage.totalPaintingsCount();
        uint count = bitpaintingStorage.getAuctionsCount();
        tokens = new uint[](count);
        generations = new uint8[](count);
        sellers = new address[](count);
        speeds = new uint8[](count);
        prices = new uint[](count);
        uint pointer = 0;

        for(uint index = 0; index < length; index++) {
            uint tokenId = bitpaintingStorage.getPaintingIdAtIndex(index);

            if (bitpaintingStorage.isCanceled(tokenId)) {
                continue;
            }

            if (!bitpaintingStorage.isOnAuction(tokenId)) {
                continue;
            }

            tokens[pointer] = tokenId;
            generations[pointer] = bitpaintingStorage.getPaintingGeneration(tokenId);
            sellers[pointer] = _ownerOf(tokenId);
            speeds[pointer] = bitpaintingStorage.getPaintingSpeed(tokenId);
            prices[pointer] = currentPrice(tokenId);
            pointer++;
        }
    }

    function auctionsOf(address _of) public constant returns (
            uint[] tokens,
            uint[] prices
        ) {

        uint tokenCount = totalSupply();
        uint length = balanceOf(_of);
        uint pointer;

        tokens = new uint[](length);
        prices = new uint[](length);

        for(uint index = 0; index < tokenCount; index++) {
            uint tokenId = bitpaintingStorage.getPaintingIdAtIndex(index);

            if (_ownerOf(tokenId) != _of) {
                continue;
            }

            if (!bitpaintingStorage.isReady(tokenId)) {
                continue;
            }

            if (!bitpaintingStorage.isOnAuction(tokenId)) {
                continue;
            }

            tokens[pointer] = tokenId;
            prices[pointer] = currentPrice(tokenId);
            pointer++;
        }
    }

    function signature() external constant returns (uint _signature) {
        return uint(keccak256("auctions"));
    }
}

    Contract ABI  
[{"constant":true,"inputs":[{"name":"_interfaceID","type":"bytes4"}],"name":"supportsInterface","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_preferredTransport","type":"string"}],"name":"tokenMetadata","outputs":[{"name":"infoUrl","type":"string"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"name","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"approve","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"bitpaintingStorage","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"totalSupply","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_from","type":"address"},{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"canUserCancelArtwork","outputs":[{"name":"_can","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"isOwner","outputs":[{"name":"","type":"bool"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_address","type":"address"}],"name":"setBitpaintingStorage","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"withdraw","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"unpause","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_startingPrice","type":"uint256"},{"name":"_endingPrice","type":"uint256"},{"name":"_duration","type":"uint256"}],"name":"createAuction","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"signature","outputs":[{"name":"_signature","type":"uint256"}],"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":"_createAuction","outputs":[],"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":"ownerOf","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"balanceOf","outputs":[{"name":"count","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"currentPrice","outputs":[{"name":"","type":"uint256"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"market","outputs":[{"name":"tokens","type":"uint256[]"},{"name":"sellers","type":"address[]"},{"name":"generations","type":"uint8[]"},{"name":"speeds","type":"uint8[]"},{"name":"prices","type":"uint256[]"}],"payable":false,"type":"function"},{"constant":false,"inputs":[],"name":"pause","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_owner","type":"address"}],"name":"tokensOfOwner","outputs":[{"name":"","type":"uint256[]"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"cancelAuctionWhenPaused","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"owner","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"symbol","outputs":[{"name":"","type":"string"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"}],"name":"cancelAuction","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_tokenId","type":"uint256"},{"name":"_owner","type":"address"}],"name":"bid","outputs":[],"payable":true,"type":"function"},{"constant":false,"inputs":[{"name":"_to","type":"address"},{"name":"_tokenId","type":"uint256"}],"name":"transfer","outputs":[],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_address","type":"address"}],"name":"canUserReleaseArtwork","outputs":[{"name":"_can","type":"bool"}],"payable":false,"type":"function"},{"constant":true,"inputs":[],"name":"erc721Metadata","outputs":[{"name":"","type":"address"}],"payable":false,"type":"function"},{"constant":true,"inputs":[{"name":"_of","type":"address"}],"name":"auctionsOf","outputs":[{"name":"tokens","type":"uint256[]"},{"name":"prices","type":"uint256[]"}],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"_contractAddress","type":"address"}],"name":"setMetadataAddress","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":"createReleaseAuction","outputs":[],"payable":false,"type":"function"},{"constant":false,"inputs":[{"name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"payable":false,"type":"function"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"seller","type":"address"},{"indexed":false,"name":"startingPrice","type":"uint256"},{"indexed":false,"name":"endingPrice","type":"uint256"},{"indexed":false,"name":"duration","type":"uint256"}],"name":"AuctionCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"seller","type":"address"}],"name":"AuctionCancelled","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"tokenId","type":"uint256"},{"indexed":false,"name":"totalPrice","type":"uint256"},{"indexed":false,"name":"winner","type":"address"}],"name":"AuctionSuccessful","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"from","type":"address"},{"indexed":false,"name":"to","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"owner","type":"address"},{"indexed":false,"name":"approved","type":"address"},{"indexed":false,"name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"name":"_tokenId","type":"uint256"},{"indexed":false,"name":"_owner","type":"address"},{"indexed":false,"name":"_parentId","type":"uint256"},{"indexed":false,"name":"_generation","type":"uint8"},{"indexed":false,"name":"_createdAt","type":"uint256"},{"indexed":false,"name":"_completedAt","type":"uint256"}],"name":"Create","type":"event"},{"anonymous":false,"inputs":[],"name":"Pause","type":"event"},{"anonymous":false,"inputs":[],"name":"Unpause","type":"event"}]

  Contract Creation Code Switch To Opcodes View
60606040526000805460a060020a60ff02191690555b60008054600160a060020a03191633600160a060020a03161790555b5b613205806100416000396000f300606060405236156101905763ffffffff60e060020a60003504166301ffc9a781146101955780630560ff44146101e157806306fdde031461027b578063095ea7b314610306578063179047431461032a57806318160ddd1461035957806323b872dd1461037e578063290b3cb7146103a85780632f54bf6e146103db578063362f29c91461040e5780633ccfd60b1461042f5780633f4ba83a14610444578063431f21da1461045957806351ff48471461047a57806357fc990f1461049f5780635c975abb146104cc5780636352211e146104f357806370a08231146105255780637a3c4c171461055657806380f556051461057e5780638456cb59146106fe5780638462151c14610713578063878eb368146107865780638da5cb5b1461079e57806395d89b41146107cd57806396b5a755146108585780639f04996d14610870578063a9059cbb14610889578063aad9973f146108ad578063bc4006f5146108e0578063c824a2221461090f578063e17b25af146109c9578063f2653966146109ea578063f2fde38b14610a0e575b600080fd5b34156101a057600080fd5b6101cd7fffffffff0000000000000000000000000000000000000000000000000000000060043516610a2f565b604051901515815260200160405180910390f35b34156101ec57600080fd5b610203600480359060248035908101910135610cb6565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102405780820151818401525b602001610227565b50505050905090810190601f16801561026d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561028657600080fd5b610203610d95565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102405780820151818401525b602001610227565b50505050905090810190601f16801561026d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561031157600080fd5b610328600160a060020a0360043516602435610dcc565b005b341561033557600080fd5b61033d610e58565b604051600160a060020a03909116815260200160405180910390f35b341561036457600080fd5b61036c610e67565b60405190815260200160405180910390f35b341561038957600080fd5b610328600160a060020a0360043581169060243516604435610ed1565b005b34156103b357600080fd5b6101cd600160a060020a0360043516610efa565b604051901515815260200160405180910390f35b34156103e657600080fd5b6101cd600160a060020a0360043516610ff3565b604051901515815260200160405180910390f35b341561041957600080fd5b610328600160a060020a036004351661100a565b005b341561043a57600080fd5b610328611067565b005b341561044f57600080fd5b6103286110bf565b005b341561046457600080fd5b61032860043560243560443560643561117f565b005b341561048557600080fd5b61036c6113a9565b60405190815260200160405180910390f35b34156104aa57600080fd5b610328600435602435604435606435600160a060020a03608435166113e3565b005b34156104d757600080fd5b6101cd611536565b604051901515815260200160405180910390f35b34156104fe57600080fd5b61033d600435611546565b604051600160a060020a03909116815260200160405180910390f35b341561053057600080fd5b61036c600160a060020a0360043516611559565b60405190815260200160405180910390f35b341561056157600080fd5b61036c6004356115d6565b60405190815260200160405180910390f35b341561058957600080fd5b61059161173d565b60405180806020018060200180602001806020018060200186810386528b818151815260200191508051906020019060200280838360005b838110156105e25780820151818401525b6020016105c9565b5050505090500186810385528a818151815260200191508051906020019060200280838360005b838110156106225780820151818401525b602001610609565b50505050905001868103845289818151815260200191508051906020019060200280838360005b838110156106625780820151818401525b602001610649565b50505050905001868103835288818151815260200191508051906020019060200280838360005b838110156106a25780820151818401525b602001610689565b50505050905001868103825287818151815260200191508051906020019060200280838360005b838110156106e25780820151818401525b6020016106c9565b505050509050019a505050505050505050505060405180910390f35b341561070957600080fd5b610328611bda565b005b341561071e57600080fd5b610732600160a060020a0360043516611c99565b60405160208082528190810183818151815260200191508051906020019060200280838360005b838110156107725780820151818401525b602001610759565b505050509050019250505060405180910390f35b341561079157600080fd5b610328600435611dda565b005b34156107a957600080fd5b61033d611f1b565b604051600160a060020a03909116815260200160405180910390f35b34156107d857600080fd5b610203611f2a565b60405160208082528190810183818151815260200191508051906020019080838360005b838110156102405780820151818401525b602001610227565b50505050905090810190601f16801561026d5780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b341561086357600080fd5b610328600435611f61565b005b610328600435600160a060020a0360243516612085565b005b341561089457600080fd5b610328600160a060020a036004351660243561213e565b005b34156108b857600080fd5b6101cd600160a060020a03600435166121b1565b604051901515815260200160405180910390f35b34156108eb57600080fd5b61033d612325565b604051600160a060020a03909116815260200160405180910390f35b341561091a57600080fd5b61092e600160a060020a0360043516612334565b604051808060200180602001838103835285818151815260200191508051906020019060200280838360005b838110156109735780820151818401525b60200161095a565b50505050905001838103825284818151815260200191508051906020019060200280838360005b838110156109b35780820151818401525b60200161099a565b5050505090500194505050505060405180910390f35b34156109d457600080fd5b610328600160a060020a0360043516612586565b005b34156109f557600080fd5b6103286004356024356044356064356084356125ce565b005b3415610a1957600080fd5b610328600160a060020a036004351661261c565b005b60006040517f737570706f727473496e7465726661636528627974657334290000000000000081526019016040518091039020600160e060020a03191682600160e060020a0319161480610cae57506040517f746f6b656e4d657461646174612875696e743235362c737472696e67290000008152601d0160405180910390206040517f746f6b656e734f664f776e657228616464726573732900000000000000000000815260160160405180910390206040517f7472616e7366657246726f6d28616464726573732c616464726573732c75696e81527f7432353629000000000000000000000000000000000000000000000000000000602082015260250160405180910390206040517f7472616e7366657228616464726573732c75696e743235362900000000000000815260190160405180910390206040517f617070726f766528616464726573732c75696e74323536290000000000000000815260180160405180910390206040517f6f776e65724f662875696e743235362900000000000000000000000000000000815260100160405180910390206040517f62616c616e63654f662861646472657373290000000000000000000000000000815260120160405180910390206040517f746f74616c537570706c792829000000000000000000000000000000000000008152600d0160405180910390206040517f73796d626f6c2829000000000000000000000000000000000000000000000000815260080160405180910390206040517f6e616d652829000000000000000000000000000000000000000000000000000081526006016040518091039020181818181818181818600160e060020a03191682600160e060020a031916145b90505b919050565b610cbe613168565b610cc661317a565b600254600090600160a060020a03161515610ce057600080fd5b600254600160a060020a031663cb4799f2878787600060405160a0015260405160e060020a63ffffffff861602815260048101848152604060248301908152604483018490529091606401848480828437820191505094505050505060a060405180830381600087803b1515610d5557600080fd5b6102c65a03f11515610d6657600080fd5b50505060405180608001805160209091016040529092509050610d898282612679565b92505b50509392505050565b60408051908101604052600c81527f4269745061696e74696e67730000000000000000000000000000000000000000602082015281565b60005460a060020a900460ff1615610de357600080fd5b610ded33826126ce565b1515610df857600080fd5b610e028183612753565b7f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925338383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15b5b5050565b600154600160a060020a031681565b600154600090600160a060020a031663197b945482604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515610eb157600080fd5b6102c65a03f11515610ec257600080fd5b50505060405180519150505b90565b60005460a060020a900460ff1615610ee857600080fd5b610ef38383836127c3565b5b5b505050565b600154600090600160a060020a0316632f54bf6e83836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610f5557600080fd5b6102c65a03f11515610f6657600080fd5b5050506040518051905080610cae5750600154600160a060020a03166324d7806c8360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610fcf57600080fd5b6102c65a03f11515610fe057600080fd5b505050604051805190505b90505b919050565b600054600160a060020a038281169116145b919050565b60005433600160a060020a0390811691161461102557600080fd5b600160a060020a038116151561103a57600080fd5b6001805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60005433600160a060020a0390811691161461108257600080fd5b600054600160a060020a039081169030163180156108fc0290604051600060405180830381858888f1935050505015156110bb57600080fd5b5b5b565b60005433600160a060020a039081169116148061114f5750600154600160a060020a031663ca4b208b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561111f57600080fd5b6102c65a03f1151561113057600080fd5b50505060405180519050600160a060020a031633600160a060020a0316145b151561115a57600080fd5b60005460a060020a900460ff16151561117257600080fd5b6110bb61284c565b5b5b5b565b60005460a060020a900460ff161561119657600080fd5b600154600160a060020a033381169116630d66343c8660006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156111eb57600080fd5b6102c65a03f115156111fc57600080fd5b50505060405180519050600160a060020a031614151561121b57600080fd5b600154600160a060020a0316635f4eab658560006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561126c57600080fd5b6102c65a03f1151561127d57600080fd5b505050604051805115905061129157600080fd5b600154600160a060020a03166350df8f718560006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156112e257600080fd5b6102c65a03f115156112f357600080fd5b50505060405180519050151561130857600080fd5b600154600160a060020a03166337e246ad8560006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561135957600080fd5b6102c65a03f1151561136a57600080fd5b505050604051805115905061137e57600080fd5b81831161138a57600080fd5b6113948433612753565b6113a184848484336113e3565b5b5b50505050565b60006040517f61756374696f6e73000000000000000000000000000000000000000000000000815260080160405190819003902090505b90565b60005460a060020a900460ff16156113fa57600080fd5b6fffffffffffffffffffffffffffffffff8416841461141857600080fd5b6fffffffffffffffffffffffffffffffff8316831461143657600080fd5b67ffffffffffffffff8216821461144c57600080fd5b600154600160a060020a031663c9a6b2a8868686868660405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152600160a060020a0316608482015260a401600060405180830381600087803b15156114bb57600080fd5b6102c65a03f115156114cc57600080fd5b5050507f05f9bf100dd0ca9f37f08e0526690286d357ed7d6c5a4ac29730440b6e2dfd628582868686604051948552600160a060020a0390931660208501526040808501929092526060840152608083019190915260a0909101905180910390a15b5b5050505050565b60005460a060020a900460ff1681565b6000610cae826128b2565b90505b919050565b600154600090600160a060020a031663b4f6eae483836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610fcf57600080fd5b6102c65a03f11515610fe057600080fd5b50505060405180519150505b919050565b6001546000908190819081908190819081908190600160a060020a03166337e246ad8a836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561163757600080fd5b6102c65a03f1151561164857600080fd5b50505060405180519050151561165d57600080fd5b60015460009750600160a060020a03166378bd79358a8960405160a0015260405160e060020a63ffffffff8416028152600481019190915260240160a060405180830381600087803b15156116b157600080fd5b6102c65a03f115156116c257600080fd5b5050506040518051906020018051906020018051906020018051906020018051949a509298509096509450909250633b9aca00915050428290101561171457808581151561170c57fe5b049750611731565b814211156117225781420396505b61172e8585858a612927565b97505b50505050505050919050565b611745613168565b61174d613168565b611755613168565b61175d613168565b611765613168565b6001546000908190819081908190600160a060020a0316632efd08df82604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b15156117b757600080fd5b6102c65a03f115156117c857600080fd5b5050506040518051600154909650600160a060020a0316905063e45c18796000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b151561181d57600080fd5b6102c65a03f1151561182e57600080fd5b505050604051805190509350836040518059106118485750595b908082528060200260200182016040525b5099508360405180591061186a5750595b908082528060200260200182016040525b5097508360405180591061188c5750595b908082528060200260200182016040525b509850836040518059106118ae5750595b908082528060200260200182016040525b509650836040518059106118d05750595b908082528060200260200182016040525b50955060009250600091505b84821015611bcd57600154600160a060020a031663a3e7061d8360006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561194657600080fd5b6102c65a03f1151561195757600080fd5b5050506040518051600154909250600160a060020a031690506339e3af9b8260006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156119b557600080fd5b6102c65a03f115156119c657600080fd5b50505060405180519050156119da57611bc2565b600154600160a060020a03166337e246ad8260006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611a2b57600080fd5b6102c65a03f11515611a3c57600080fd5b505050604051805190501515611a5157611bc2565b808a8481518110611a5e57fe5b60209081029091010152600154600160a060020a0316630af9d89c8260006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611ab957600080fd5b6102c65a03f11515611aca57600080fd5b50505060405180519050888481518110611ae057fe5b60ff909216602092830290910190910152611afa816128b2565b898481518110611b0657fe5b600160a060020a039283166020918202909201015260015416639ed573608260006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611b6457600080fd5b6102c65a03f11515611b7557600080fd5b50505060405180519050878481518110611b8b57fe5b60ff909216602092830290910190910152611ba5816115d6565b868481518110611bb157fe5b602090810290910101526001909201915b6001909101906118ed565b5b50505050509091929394565b60005433600160a060020a0390811691161480611c6a5750600154600160a060020a031663ca4b208b6000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515611c3a57600080fd5b6102c65a03f11515611c4b57600080fd5b50505060405180519050600160a060020a031633600160a060020a0316145b1515611c7557600080fd5b60005460a060020a900460ff1615611c8c57600080fd5b6110bb61297f565b5b5b5b565b611ca1613168565b6000611cab613168565b6000806000611cb987611559565b9450841515611cea576000604051805910611cd15750595b908082528060200260200182016040525b509550611dd0565b84604051805910611cf85750595b908082528060200260200182016040525b509350611d14610e67565b925060009150600190505b828111611dcc57600154600160a060020a038089169116630d66343c8360006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611d7b57600080fd5b6102c65a03f11515611d8c57600080fd5b50505060405180519050600160a060020a03161415611dc35780848381518110611db257fe5b602090810290910101526001909101905b5b600101611d1f565b8395505b5050505050919050565b6000805460a060020a900460ff161515611df357600080fd5b60005433600160a060020a03908116911614611e0e57600080fd5b600154600160a060020a03166337e246ad8360006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611e5f57600080fd5b6102c65a03f11515611e7057600080fd5b505050604051805190501515611e8557600080fd5b600154600160a060020a031663c50c44cf8360006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611ed657600080fd5b6102c65a03f11515611ee757600080fd5b505050604051805191505033600160a060020a0390811690821614611f0b57600080fd5b610e53826129ea565b5b5b5b5050565b600054600160a060020a031681565b60408051908101604052600281527f4250000000000000000000000000000000000000000000000000000000000000602082015281565b6000805460a060020a900460ff1615611e0e57600080fd5b600154600160a060020a03166337e246ad8360006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611e5f57600080fd5b6102c65a03f11515611e7057600080fd5b505050604051805190501515611e8557600080fd5b600154600160a060020a031663c50c44cf8360006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515611ed657600080fd5b6102c65a03f11515611ee757600080fd5b505050604051805191505033600160a060020a0390811690821614611f0b57600080fd5b610e53826129ea565b5b5b5050565b6000805460a060020a900460ff161561209d57600080fd5b600154600160a060020a031663c50c44cf8460006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b15156120ee57600080fd5b6102c65a03f115156120ff57600080fd5b5050506040518051915050600160a060020a038082169083161461212257600080fd5b61212c8334612a8d565b610ef3813385612f07565b5b5b505050565b60005460a060020a900460ff161561215557600080fd5b600160a060020a038216151561216a57600080fd5b30600160a060020a031682600160a060020a03161415151561218b57600080fd5b61219533826126ce565b15156121a057600080fd5b610e53338383612f07565b5b5b5050565b600154600090600160a060020a0316632f54bf6e83836040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561220c57600080fd5b6102c65a03f1151561221d57600080fd5b50505060405180519050806122a25750600154600160a060020a03166324d7806c8360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b151561228657600080fd5b6102c65a03f1151561229757600080fd5b505050604051805190505b80610cae5750600154600160a060020a031663babcc5398360006040516020015260405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401602060405180830381600087803b1515610fcf57600080fd5b6102c65a03f11515610fe057600080fd5b505050604051805190505b90505b919050565b600254600160a060020a031681565b61233c613168565b612344613168565b6000806000806000612354610e67565b945061235f88611559565b93508360405180591061236f5750595b908082528060200260200182016040525b509650836040518059106123915750595b908082528060200260200182016040525b509550600091505b8482101561257b57600154600160a060020a031663a3e7061d8360006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561240357600080fd5b6102c65a03f1151561241457600080fd5b5050506040518051915050600160a060020a038816612432826128b2565b600160a060020a03161461244557612570565b600154600160a060020a03166350df8f718260006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561249657600080fd5b6102c65a03f115156124a757600080fd5b5050506040518051905015156124bc57612570565b600154600160a060020a03166337e246ad8260006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561250d57600080fd5b6102c65a03f1151561251e57600080fd5b50505060405180519050151561253357612570565b8087848151811061254057fe5b60209081029091010152612553816115d6565b86848151811061255f57fe5b602090810290910101526001909201915b6001909101906123aa565b5b5050505050915091565b60005433600160a060020a039081169116146125a157600080fd5b6002805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b60005460a060020a900460ff16156125e557600080fd5b6125ee336121b1565b15156125f957600080fd5b82841161260557600080fd5b61152e8585858585612fc8565b5b5b5b5050505050565b60005433600160a060020a0390811691161461263757600080fd5b600160a060020a038116151561264c57600080fd5b6000805473ffffffffffffffffffffffffffffffffffffffff1916600160a060020a0383161790555b5b50565b612681613168565b612689613168565b6000808460405180591061269a5750595b908082528060200260200182016040525b50925050602082019050846126c182828761309c565b8293505b50505092915050565b600154600090600160a060020a038085169116630d66343c84846040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b151561272557600080fd5b6102c65a03f1151561273657600080fd5b50505060405180519050600160a060020a03161490505b92915050565b600154600160a060020a031663febe4909838360405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401600060405180830381600087803b15156127aa57600080fd5b6102c65a03f1151561152e57600080fd5b5050505b5050565b60005460a060020a900460ff16156127da57600080fd5b600160a060020a03821615156127ef57600080fd5b30600160a060020a031682600160a060020a03161415151561281057600080fd5b61281a33826130e3565b151561282557600080fd5b61282f83826126ce565b151561283a57600080fd5b610ef3838383612f07565b5b5b505050565b60005460a060020a900460ff16151561286457600080fd5b6000805474ff0000000000000000000000000000000000000000191690557f7805862f689e2f13df9f062ff482ad3ad112aca9e0847911ed832e158c525b3360405160405180910390a15b5b565b600154600090600160a060020a0316630d66343c83836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515610fcf57600080fd5b6102c65a03f11515610fe057600080fd5b50505060405180519150505b919050565b6000633b9aca0081808086861061294b57838881151561294357fe5b049450612973565b88880392508686840281151561295d57fe5b05915050878101838181151561296f57fe5b0494505b50505050949350505050565b60005460a060020a900460ff161561299657600080fd5b6000805474ff0000000000000000000000000000000000000000191660a060020a1790557f6985a02210a168e66602d3235cb6db0e70f92b3ba4d376a33c0f3d9434bff62560405160405180910390a15b5b565b600154600160a060020a0316632dd7030b8260405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515612a3257600080fd5b6102c65a03f11515612a4357600080fd5b5050507f10ac9f0bb365b5d22d7bec500408692f23fdf83eadfec71615ef88b4c1134f0e8133604051918252600160a060020a031660208201526040908101905180910390a15b50565b6001546000908190819081908190600160a060020a03166337e246ad88836040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612ae857600080fd5b6102c65a03f11515612af957600080fd5b505050604051805190501515612b0e57600080fd5b600154600160a060020a031663eabc8b8e8860006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612b5f57600080fd5b6102c65a03f11515612b7057600080fd5b505050604051805190501515612b8557600080fd5b600154633b9aca009550600160a060020a031663c50c44cf8860006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612bdd57600080fd5b6102c65a03f11515612bee57600080fd5b50505060405180519050935084612c04886115d6565b02925082861015612c1457600080fd5b600154600160a060020a0316638ff6e9718860006040516020015260405160e060020a63ffffffff84160281526004810191909152602401602060405180830381600087803b1515612c6557600080fd5b6102c65a03f11515612c7657600080fd5b5050506040518051905015612d2957600154600160a060020a031663590731b76000604051602001526040518163ffffffff1660e060020a028152600401602060405180830381600087803b1515612ccd57600080fd5b6102c65a03f11515612cde57600080fd5b505050604051805192506064905060ff8382031687025b049050600160a060020a03841681156108fc0282604051600060405180830381858888f193505050501515612d2957600080fd5b5b600154600160a060020a0316632dd7030b8860405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515612d7257600080fd5b6102c65a03f11515612d8357600080fd5b5050600154600160a060020a03169050636bfaa9033360405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515612dd757600080fd5b6102c65a03f11515612de857600080fd5b5050600154600160a060020a03169050631be6ce578560405160e060020a63ffffffff8416028152600160a060020a039091166004820152602401600060405180830381600087803b1515612e3c57600080fd5b6102c65a03f11515612e4d57600080fd5b5050600154600160a060020a03169050631e801c8c8860405160e060020a63ffffffff84160281526004810191909152602401600060405180830381600087803b1515612e9957600080fd5b6102c65a03f11515612eaa57600080fd5b5050507f4fcc30d90a842164dd58501ab874a101a3749c3d4747139cefe7c876f4ccebd28784336040519283526020830191909152600160a060020a03166040808301919091526060909101905180910390a15b50505050505050565b600154600160a060020a031663687c4fa7828460405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401600060405180830381600087803b1515612f5e57600080fd5b6102c65a03f11515612f6f57600080fd5b5050507fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef838383604051600160a060020a039384168152919092166020820152604080820192909252606001905180910390a15b505050565b6fffffffffffffffffffffffffffffffff84168414612fe657600080fd5b6fffffffffffffffffffffffffffffffff8316831461300457600080fd5b67ffffffffffffffff8116811461301a57600080fd5b600154600160a060020a031663902a83cd868686868660405160e060020a63ffffffff88160281526004810195909552602485019390935260448401919091526064830152608482015260a401600060405180830381600087803b151561308057600080fd5b6102c65a03f1151561309157600080fd5b5050505b5050505050565b60005b602082106130c357825184526020840193506020830192505b60208203915061309f565b6001826020036101000a0390508019835116818551161784525b50505050565b600154600090600160a060020a031663b5b12e758385846040516020015260405160e060020a63ffffffff85160281526004810192909252600160a060020a03166024820152604401602060405180830381600087803b151561314557600080fd5b6102c65a03f1151561315657600080fd5b50505060405180519150505b92915050565b60206040519081016040526000815290565b60806040519081016040526004815b600081526000199190910190602001816131895790505090565b60206040519081016040526000815290565b60206040519081016040526000815290565b602060405190810160405260008152905600a165627a7a72305820824a11c55ad5b1bf19e88544dbb48543ff2dd8cecf8e395235e9ebe0073caa000029

   Swarm Source:
bzzr://824a11c55ad5b1bf19e88544dbb48543ff2dd8cecf8e395235e9ebe0073caa00

 

View All
Block Age transaction Difficulty GasUsed Reward
View All
Block Age UncleNumber Difficulty GasUsed Reward
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.