ETH Price: $1,983.54 (-4.82%)

Contract

0xA5a96797e19FcDd27b55deE3871FBC03fF983391
 

Overview

ETH Balance

0.0006 ETH

Eth Value

$1.19 (@ $1,983.54/ETH)

More Info

Private Name Tags

TokenTracker

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Set Approval For...246006842026-03-06 20:04:116 hrs ago1772827451IN
0xA5a96797...3fF983391
0 ETH0.000007090.15230579
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000003360.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000003730.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000003730.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000003730.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
Safe Transfer Fr...245882772026-03-05 2:28:112 days ago1772677691IN
0xA5a96797...3fF983391
0 ETH0.000005070.07815826
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading
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:
Jacksons

Compiler Version
v0.8.33+commit.64118f21

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
// SPDX-License-Identifier: MIT
pragma solidity 0.8.33;

contract Jacksons {
    // Errors
    error NotOwner();
    error NoScripts();
    error SoldOut();
    error FreeMintSoldOut();
    error AlreadyFreeMinted();
    error InsufficientPayment();
    error ZeroQuantity();
    error NonexistentToken();
    error NotApproved();
    error InvalidTransfer();

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

    // Constants
    uint256 public constant MAX_SUPPLY = 9999;
    uint256 public constant COST = 0.00015 ether;
    string public constant NAME = "Jacksons";
    string public constant SYMBOL = "JACKSONS";

    // State - packed into fewer slots
    address private _owner;
    uint96 private _currentIndex;
    
    string private _baseURI = "bafybeibxpf32snennqu75vbknji3dogaj23jm77vfo4e5hk24kzgxs2coa";
    uint128 public MAX_FREE = 9999;
    uint128 public MAX_FREE_PER_WALLET = 1;
    
    // Gas burning mechanism - increases 4.5% per freemint call
    uint256 private _gasBurner;
    uint256 public gasMultiplier = 0;

    // ERC721A-style: only store ownership at batch start
    mapping(uint256 => address) private _owners;
    mapping(address => uint256) private _balances;
    mapping(uint256 => address) private _tokenApprovals;
    mapping(address => mapping(address => bool)) private _operatorApprovals;
    mapping(address => uint256) public minted;

    modifier onlyOwner() {
        if (msg.sender != _owner) revert NotOwner();
        _;
    }

    modifier noContracts() {
        if (tx.origin != msg.sender) revert NoScripts();
        _;
    }

    constructor() {
        _owner = msg.sender;
    }

    // ============ MINT FUNCTIONS ============

    function freemint() external noContracts {
        uint256 amount = MAX_FREE_PER_WALLET;
        uint256 current = _currentIndex;
        if (current + amount > MAX_FREE) revert FreeMintSoldOut();
        if (current + amount > MAX_SUPPLY) revert SoldOut();
        if (minted[msg.sender] != 0) revert AlreadyFreeMinted();

        // ========== GAS BURNING MECHANISM ==========
        // Perform storage writes proportional to current multiplier
        // Each subsequent freemint costs ~0.1% more gas
        uint256 iterations = gasMultiplier;
        for (uint256 i = 0; i < iterations;) {
            _gasBurner = i;
            unchecked { ++i; }
        }
        
        // Increase multiplier by 4.8% for next caller
        gasMultiplier = gasMultiplier + 1;
        // ============================================

        minted[msg.sender] = amount;
        _mint(msg.sender, amount);
    }

    function mint(uint256 amount) external payable {
        if (_currentIndex + amount > MAX_SUPPLY) revert SoldOut();
        if (msg.value < amount * COST) revert InsufficientPayment();
        _mint(msg.sender, amount);
    }

    function teamMint(uint256 amount) external onlyOwner {
        if (_currentIndex + amount > MAX_SUPPLY) revert SoldOut();
        _mint(msg.sender, amount);
    }

    /// @dev ERC721A-style: only write owner at start of batch
    function _mint(address to, uint256 quantity) internal {
        if (quantity == 0) revert ZeroQuantity();
        
        uint256 startId = _currentIndex;
        
        // Single SSTORE for ownership (ERC721A optimization)
        _owners[startId] = to;
        _balances[to] += quantity;
        
        // Emit events (required by ERC721 spec)
        for (uint256 i; i < quantity;) {
            emit Transfer(address(0), to, startId + i);
            unchecked { ++i; }
        }
        
        _currentIndex = uint96(startId + quantity);
    }

    // ============ VIEW FUNCTIONS ============

    function totalSupply() public view returns (uint256) {
        return _currentIndex;
    }

    function balanceOf(address account) public view returns (uint256) {
        return _balances[account];
    }

    /// @dev ERC721A-style: walk backwards to find owner
    function ownerOf(uint256 tokenId) public view returns (address) {
        if (tokenId >= _currentIndex) revert NonexistentToken();
        
        // Walk backwards to find the owner
        for (uint256 i = tokenId; ; ) {
            address tokenOwner = _owners[i];
            if (tokenOwner != address(0)) {
                return tokenOwner;
            }
            unchecked { --i; }
        }
    }

    function owner() public view returns (address) {
        return _owner;
    }

    function name() public pure returns (string memory) {
        return NAME;
    }

    function symbol() public pure returns (string memory) {
        return SYMBOL;
    }

    function tokenURI(uint256 tokenId) public view returns (string memory) {
        if (tokenId >= _currentIndex) revert NonexistentToken();
        return string(abi.encodePacked("ipfs://", _baseURI, "/", _toString(tokenId), ".json"));
    }

    // ============ APPROVALS ============

    function approve(address to, uint256 tokenId) public {
        address tokenOwner = ownerOf(tokenId);
        if (msg.sender != tokenOwner && !_operatorApprovals[tokenOwner][msg.sender]) 
            revert NotApproved();
        _tokenApprovals[tokenId] = to;
        emit Approval(tokenOwner, to, tokenId);
    }

    function setApprovalForAll(address operator, bool approved) public {
        _operatorApprovals[msg.sender][operator] = approved;
        emit ApprovalForAll(msg.sender, operator, approved);
    }

    function getApproved(uint256 tokenId) public view returns (address) {
        if (tokenId >= _currentIndex) revert NonexistentToken();
        return _tokenApprovals[tokenId];
    }

    function isApprovedForAll(address account, address operator) public view returns (bool) {
        return _operatorApprovals[account][operator];
    }

    // ============ TRANSFERS ============

    function transferFrom(address from, address to, uint256 tokenId) public {
        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(address from, address to, uint256 tokenId) public {
        _transfer(from, to, tokenId);
    }

    function safeTransferFrom(address from, address to, uint256 tokenId, bytes calldata) public {
        _transfer(from, to, tokenId);
    }

    function _transfer(address from, address to, uint256 tokenId) internal {
        if (ownerOf(tokenId) != from) revert InvalidTransfer();
        if (msg.sender != from && !_operatorApprovals[from][msg.sender] && _tokenApprovals[tokenId] != msg.sender)
            revert NotApproved();

        delete _tokenApprovals[tokenId];
        unchecked {
            --_balances[from];
            ++_balances[to];
        }
        
        // Write new owner
        _owners[tokenId] = to;
        
        // Initialize next slot if needed (ERC721A pattern)
        uint256 nextId = tokenId + 1;
        if (nextId < _currentIndex && _owners[nextId] == address(0)) {
            _owners[nextId] = from;
        }

        emit Transfer(from, to, tokenId);
    }

    // ============ ERC165 & ERC2981 ============

    function supportsInterface(bytes4 interfaceId) public pure returns (bool) {
        return interfaceId == 0x01ffc9a7 || // ERC165
               interfaceId == 0x80ac58cd || // ERC721
               interfaceId == 0x5b5e139f || // ERC721Metadata
               interfaceId == 0x2a55205a;   // ERC2981
    }

    function royaltyInfo(uint256, uint256 salePrice) external view returns (address, uint256) {
        return (_owner, (salePrice * 500) / 10000);
    }

    // ============ ADMIN ============

    function setData(string calldata base, uint128 maxFree, uint128 maxFreePerWallet) external onlyOwner {
        _baseURI = base;
        MAX_FREE = maxFree;
        MAX_FREE_PER_WALLET = maxFreePerWallet;
    }

    function withdraw() external onlyOwner {
        (bool success, ) = msg.sender.call{value: address(this).balance}("");
        require(success);
    }

    // ============ UTILS ============

    function _toString(uint256 value) internal pure returns (string memory) {
        if (value == 0) return "0";
        uint256 temp = value;
        uint256 digits;
        while (temp != 0) { digits++; temp /= 10; }
        bytes memory buffer = new bytes(digits);
        while (value != 0) {
            buffer[--digits] = bytes1(uint8(48 + value % 10));
            value /= 10;
        }
        return string(buffer);
    }
}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "remappings": []
}

Contract Security Audit

Contract ABI

API
[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"AlreadyFreeMinted","type":"error"},{"inputs":[],"name":"FreeMintSoldOut","type":"error"},{"inputs":[],"name":"InsufficientPayment","type":"error"},{"inputs":[],"name":"InvalidTransfer","type":"error"},{"inputs":[],"name":"NoScripts","type":"error"},{"inputs":[],"name":"NonexistentToken","type":"error"},{"inputs":[],"name":"NotApproved","type":"error"},{"inputs":[],"name":"NotOwner","type":"error"},{"inputs":[],"name":"SoldOut","type":"error"},{"inputs":[],"name":"ZeroQuantity","type":"error"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"approved","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"operator","type":"address"},{"indexed":false,"internalType":"bool","name":"approved","type":"bool"}],"name":"ApprovalForAll","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":true,"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"COST","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_FREE","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_FREE_PER_WALLET","outputs":[{"internalType":"uint128","name":"","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MAX_SUPPLY","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"NAME","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"SYMBOL","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"approve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"freemint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"gasMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"getApproved","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"address","name":"operator","type":"address"}],"name":"isApprovedForAll","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"minted","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"ownerOf","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"salePrice","type":"uint256"}],"name":"royaltyInfo","outputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"safeTransferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"operator","type":"address"},{"internalType":"bool","name":"approved","type":"bool"}],"name":"setApprovalForAll","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"base","type":"string"},{"internalType":"uint128","name":"maxFree","type":"uint128"},{"internalType":"uint128","name":"maxFreePerWallet","type":"uint128"}],"name":"setData","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bytes4","name":"interfaceId","type":"bytes4"}],"name":"supportsInterface","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"teamMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"tokenURI","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address","name":"to","type":"address"},{"internalType":"uint256","name":"tokenId","type":"uint256"}],"name":"transferFrom","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60806040526040518060600160405280603b8152602001612e6a603b91396001908161002b9190610342565b5061270f60025f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055506001600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff1602179055505f6004553480156100af575f5ffd5b50335f5f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610411565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f600282049050600182168061016f57607f821691505b6020821081036101825761018161012b565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f600883026101e47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff826101a9565b6101ee86836101a9565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f61023261022d61022884610206565b61020f565b610206565b9050919050565b5f819050919050565b61024b83610218565b61025f61025782610239565b8484546101b5565b825550505050565b5f5f905090565b610276610267565b610281818484610242565b505050565b5f5b828110156102a75761029c5f82840161026e565b600181019050610288565b505050565b601f8211156102fa57828211156102f9576102c681610188565b6102cf8361019a565b6102d88561019a565b60208610156102e5575f90505b8083016102f482840382610286565b505050505b5b505050565b5f82821c905092915050565b5f61031a5f19846008026102ff565b1980831691505092915050565b5f610332838361030b565b9150826002028217905092915050565b61034b826100f4565b67ffffffffffffffff811115610364576103636100fe565b5b61036e8254610158565b6103798282856102ac565b5f60209050601f8311600181146103aa575f8415610398578287015190505b6103a28582610327565b865550610409565b601f1984166103b886610188565b5f5b828110156103df578489015182556001820191506020850194506020810190506103ba565b868310156103fc57848901516103f8601f89168261030b565b8355505b6001600288020188555050505b505050505050565b612a4c8061041e5f395ff3fe6080604052600436106101c1575f3560e01c80638da5cb5b116100f6578063b88d4fde11610094578063ea3c2b9c11610063578063ea3c2b9c14610640578063ed6661c21461066a578063f76f8d7814610694578063f9cb63ac146106be576101c1565b8063b88d4fde14610576578063bf8fbbd21461059e578063c87b56dd146105c8578063e985e9c514610604576101c1565b8063a0712d68116100d0578063a0712d68146104e0578063a22cb465146104fc578063a3f4df7e14610524578063abd0a5521461054e576101c1565b80638da5cb5b1461046257806395d89b411461048c57806398710d1e146104b6576101c1565b80632a55205a116101635780633ccfd60b1161013d5780633ccfd60b146103ac57806342842e0e146103c25780636352211e146103ea57806370a0823114610426576101c1565b80632a55205a1461031d5780632fbba1151461035a57806332cb6b0c14610382576101c1565b8063095ea7b31161019f578063095ea7b31461026757806318160ddd1461028f5780631e7269c5146102b957806323b872dd146102f5576101c1565b806301ffc9a7146101c557806306fdde0314610201578063081812fc1461022b575b5f5ffd5b3480156101d0575f5ffd5b506101eb60048036038101906101e69190611d4c565b6106d4565b6040516101f89190611d91565b60405180910390f35b34801561020c575f5ffd5b50610215610795565b6040516102229190611e1a565b60405180910390f35b348015610236575f5ffd5b50610251600480360381019061024c9190611e6d565b6107d2565b60405161025e9190611ed7565b60405180910390f35b348015610272575f5ffd5b5061028d60048036038101906102889190611f1a565b61086b565b005b34801561029a575f5ffd5b506102a3610a1b565b6040516102b09190611f67565b60405180910390f35b3480156102c4575f5ffd5b506102df60048036038101906102da9190611f80565b610a49565b6040516102ec9190611f67565b60405180910390f35b348015610300575f5ffd5b5061031b60048036038101906103169190611fab565b610a5e565b005b348015610328575f5ffd5b50610343600480360381019061033e9190611ffb565b610a6e565b604051610351929190612039565b60405180910390f35b348015610365575f5ffd5b50610380600480360381019061037b9190611e6d565b610ab7565b005b34801561038d575f5ffd5b50610396610bb7565b6040516103a39190611f67565b60405180910390f35b3480156103b7575f5ffd5b506103c0610bbd565b005b3480156103cd575f5ffd5b506103e860048036038101906103e39190611fab565b610cb6565b005b3480156103f5575f5ffd5b50610410600480360381019061040b9190611e6d565b610cc6565b60405161041d9190611ed7565b60405180910390f35b348015610431575f5ffd5b5061044c60048036038101906104479190611f80565b610daf565b6040516104599190611f67565b60405180910390f35b34801561046d575f5ffd5b50610476610df5565b6040516104839190611ed7565b60405180910390f35b348015610497575f5ffd5b506104a0610e1c565b6040516104ad9190611e1a565b60405180910390f35b3480156104c1575f5ffd5b506104ca610e59565b6040516104d7919061208a565b60405180910390f35b6104fa60048036038101906104f59190611e6d565b610e7b565b005b348015610507575f5ffd5b50610522600480360381019061051d91906120cd565b610f41565b005b34801561052f575f5ffd5b50610538611039565b6040516105459190611e1a565b60405180910390f35b348015610559575f5ffd5b50610574600480360381019061056f9190612196565b611072565b005b348015610581575f5ffd5b5061059c6004803603810190610597919061225c565b611180565b005b3480156105a9575f5ffd5b506105b2611192565b6040516105bf9190611f67565b60405180910390f35b3480156105d3575f5ffd5b506105ee60048036038101906105e99190611e6d565b61119c565b6040516105fb9190611e1a565b60405180910390f35b34801561060f575f5ffd5b5061062a600480360381019061062591906122e0565b611230565b6040516106379190611d91565b60405180910390f35b34801561064b575f5ffd5b506106546112be565b6040516106619190611f67565b60405180910390f35b348015610675575f5ffd5b5061067e6112c4565b60405161068b919061208a565b60405180910390f35b34801561069f575f5ffd5b506106a86112e5565b6040516106b59190611e1a565b60405180910390f35b3480156106c9575f5ffd5b506106d261131e565b005b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061072e57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061075e5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061078e5750632a55205a60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606040518060400160405280600881526020017f4a61636b736f6e73000000000000000000000000000000000000000000000000815250905090565b5f5f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff168210610833576040517fb1d04f0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f61087582610cc6565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610935575060085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561096c576040517fc19f17a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260075f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b5f5f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905090565b6009602052805f5260405f205f915090505481565b610a6983838361159f565b505050565b5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166127106101f485610aa2919061234b565b610aac91906123b9565b915091509250929050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b3c576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61270f815f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16610b7291906123e9565b1115610baa576040517f52df9fe500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bb433826119d7565b50565b61270f81565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c42576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff1647604051610c6790612449565b5f6040518083038185875af1925050503d805f8114610ca1576040519150601f19603f3d011682016040523d82523d5f602084013e610ca6565b606091505b5050905080610cb3575f5ffd5b50565b610cc183838361159f565b505050565b5f5f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff168210610d27576040517fb1d04f0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8290505b5f60055f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d9d578092505050610daa565b8160019003915050610d2c565b919050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f4a41434b534f4e53000000000000000000000000000000000000000000000000815250905090565b600260109054906101000a90046fffffffffffffffffffffffffffffffff1681565b61270f815f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16610eb191906123e9565b1115610ee9576040517f52df9fe500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b65886c98b7600081610efb919061234b565b341015610f34576040517fcd1c886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f3e33826119d7565b50565b8060085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161102d9190611d91565b60405180910390a35050565b6040518060400160405280600881526020017f4a61636b736f6e7300000000000000000000000000000000000000000000000081525081565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110f7576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8383600191826111089291906126a2565b508160025f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050505050565b61118b85858561159f565b5050505050565b65886c98b7600081565b60605f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1682106111fe576040517fb1d04f0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600161120983611b99565b60405160200161121a929190612907565b6040516020818303038152906040529050919050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b60045481565b60025f9054906101000a90046fffffffffffffffffffffffffffffffff1681565b6040518060400160405280600881526020017f4a41434b534f4e5300000000000000000000000000000000000000000000000081525081565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611383576040517f6ee803b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600260109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1690505f5f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905060025f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16828261141e91906123e9565b1115611456576040517f3f984f8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61270f828261146591906123e9565b111561149d576040517f52df9fe500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414611513576040517f98bdb27b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60045490505f5f90505b81811015611538578060038190555080600101905061151e565b50600160045461154891906123e9565b6004819055508260095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061159a33846119d7565b505050565b8273ffffffffffffffffffffffffffffffffffffffff166115bf82610cc6565b73ffffffffffffffffffffffffffffffffffffffff161461160c576040517f2f35253100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156116ca575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561173257503373ffffffffffffffffffffffffffffffffffffffff1660075f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611769576040517fc19f17a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600101919050819055508160055f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60018261188e91906123e9565b90505f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff168110801561192157505f73ffffffffffffffffffffffffffffffffffffffff1660055f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15611976578360055f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b5f8103611a10576040517ff4f5b73300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1690508260055f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611ad691906123e9565b925050819055505f5b82811015611b58578082611af391906123e9565b8473ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4806001019050611adf565b508181611b6591906123e9565b5f60146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505050565b60605f8203611bdf576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611cea565b5f8290505f5b5f8214611c0e578080611bf79061294b565b915050600a82611c0791906123b9565b9150611be5565b5f8167ffffffffffffffff811115611c2957611c28612467565b5b6040519080825280601f01601f191660200182016040528015611c5b5781602001600182028036833780820191505090505b5090505b5f8514611ce357600a85611c739190612992565b6030611c7f91906123e9565b60f81b8183611c8d906129c2565b93508381518110611ca157611ca06129e9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a85611cdc91906123b9565b9450611c5f565b8093505050505b919050565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611d2b81611cf7565b8114611d35575f5ffd5b50565b5f81359050611d4681611d22565b92915050565b5f60208284031215611d6157611d60611cef565b5b5f611d6e84828501611d38565b91505092915050565b5f8115159050919050565b611d8b81611d77565b82525050565b5f602082019050611da45f830184611d82565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611dec82611daa565b611df68185611db4565b9350611e06818560208601611dc4565b611e0f81611dd2565b840191505092915050565b5f6020820190508181035f830152611e328184611de2565b905092915050565b5f819050919050565b611e4c81611e3a565b8114611e56575f5ffd5b50565b5f81359050611e6781611e43565b92915050565b5f60208284031215611e8257611e81611cef565b5b5f611e8f84828501611e59565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611ec182611e98565b9050919050565b611ed181611eb7565b82525050565b5f602082019050611eea5f830184611ec8565b92915050565b611ef981611eb7565b8114611f03575f5ffd5b50565b5f81359050611f1481611ef0565b92915050565b5f5f60408385031215611f3057611f2f611cef565b5b5f611f3d85828601611f06565b9250506020611f4e85828601611e59565b9150509250929050565b611f6181611e3a565b82525050565b5f602082019050611f7a5f830184611f58565b92915050565b5f60208284031215611f9557611f94611cef565b5b5f611fa284828501611f06565b91505092915050565b5f5f5f60608486031215611fc257611fc1611cef565b5b5f611fcf86828701611f06565b9350506020611fe086828701611f06565b9250506040611ff186828701611e59565b9150509250925092565b5f5f6040838503121561201157612010611cef565b5b5f61201e85828601611e59565b925050602061202f85828601611e59565b9150509250929050565b5f60408201905061204c5f830185611ec8565b6120596020830184611f58565b9392505050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b61208481612060565b82525050565b5f60208201905061209d5f83018461207b565b92915050565b6120ac81611d77565b81146120b6575f5ffd5b50565b5f813590506120c7816120a3565b92915050565b5f5f604083850312156120e3576120e2611cef565b5b5f6120f085828601611f06565b9250506020612101858286016120b9565b9150509250929050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261212c5761212b61210b565b5b8235905067ffffffffffffffff8111156121495761214861210f565b5b60208301915083600182028301111561216557612164612113565b5b9250929050565b61217581612060565b811461217f575f5ffd5b50565b5f813590506121908161216c565b92915050565b5f5f5f5f606085870312156121ae576121ad611cef565b5b5f85013567ffffffffffffffff8111156121cb576121ca611cf3565b5b6121d787828801612117565b945094505060206121ea87828801612182565b92505060406121fb87828801612182565b91505092959194509250565b5f5f83601f84011261221c5761221b61210b565b5b8235905067ffffffffffffffff8111156122395761223861210f565b5b60208301915083600182028301111561225557612254612113565b5b9250929050565b5f5f5f5f5f6080868803121561227557612274611cef565b5b5f61228288828901611f06565b955050602061229388828901611f06565b94505060406122a488828901611e59565b935050606086013567ffffffffffffffff8111156122c5576122c4611cf3565b5b6122d188828901612207565b92509250509295509295909350565b5f5f604083850312156122f6576122f5611cef565b5b5f61230385828601611f06565b925050602061231485828601611f06565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61235582611e3a565b915061236083611e3a565b925082820261236e81611e3a565b915082820484148315176123855761238461231e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6123c382611e3a565b91506123ce83611e3a565b9250826123de576123dd61238c565b5b828204905092915050565b5f6123f382611e3a565b91506123fe83611e3a565b92508282019050808211156124165761241561231e565b5b92915050565b5f81905092915050565b50565b5f6124345f8361241c565b915061243f82612426565b5f82019050919050565b5f61245382612429565b9150819050919050565b5f82905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806124d857607f821691505b6020821081036124eb576124ea612494565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261254d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612512565b6125578683612512565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61259261258d61258884611e3a565b61256f565b611e3a565b9050919050565b5f819050919050565b6125ab83612578565b6125bf6125b782612599565b84845461251e565b825550505050565b5f5f905090565b6125d66125c7565b6125e18184846125a2565b505050565b5f5b82811015612607576125fc5f8284016125ce565b6001810190506125e8565b505050565b601f82111561265a578282111561265957612626816124f1565b61262f83612503565b61263885612503565b6020861015612645575f90505b808301612654828403826125e6565b505050505b5b505050565b5f82821c905092915050565b5f61267a5f198460080261265f565b1980831691505092915050565b5f612692838361266b565b9150826002028217905092915050565b6126ac838361245d565b67ffffffffffffffff8111156126c5576126c4612467565b5b6126cf82546124c1565b6126da82828561260c565b5f601f831160018114612707575f84156126f5578287013590505b6126ff8582612687565b865550612766565b601f198416612715866124f1565b5f5b8281101561273c57848901358255600182019150602085019450602081019050612717565b868310156127595784890135612755601f89168261266b565b8355505b6001600288020188555050505b50505050505050565b5f81905092915050565b7f697066733a2f2f000000000000000000000000000000000000000000000000005f82015250565b5f6127ad60078361276f565b91506127b882612779565b600782019050919050565b5f81546127cf816124c1565b6127d9818661276f565b9450600182165f81146127f357600181146128085761283a565b60ff198316865281151582028601935061283a565b612811856124f1565b5f5b8381101561283257815481890152600182019150602081019050612813565b838801955050505b50505092915050565b7f2f000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61287760018361276f565b915061288282612843565b600182019050919050565b5f61289782611daa565b6128a1818561276f565b93506128b1818560208601611dc4565b80840191505092915050565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000005f82015250565b5f6128f160058361276f565b91506128fc826128bd565b600582019050919050565b5f612911826127a1565b915061291d82856127c3565b91506129288261286b565b9150612934828461288d565b915061293f826128e5565b91508190509392505050565b5f61295582611e3a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129875761298661231e565b5b600182019050919050565b5f61299c82611e3a565b91506129a783611e3a565b9250826129b7576129b661238c565b5b828206905092915050565b5f6129cc82611e3a565b91505f82036129de576129dd61231e565b5b600182039050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220d9292f970f95125efb8cf44403604cac2cae6c49b1e5a92180e5c5c1bf4a1f3f64736f6c6343000821003362616679626569627870663332736e656e6e7175373576626b6e6a6933646f67616a32336a6d373776666f346535686b32346b7a67787332636f61

Deployed Bytecode

0x6080604052600436106101c1575f3560e01c80638da5cb5b116100f6578063b88d4fde11610094578063ea3c2b9c11610063578063ea3c2b9c14610640578063ed6661c21461066a578063f76f8d7814610694578063f9cb63ac146106be576101c1565b8063b88d4fde14610576578063bf8fbbd21461059e578063c87b56dd146105c8578063e985e9c514610604576101c1565b8063a0712d68116100d0578063a0712d68146104e0578063a22cb465146104fc578063a3f4df7e14610524578063abd0a5521461054e576101c1565b80638da5cb5b1461046257806395d89b411461048c57806398710d1e146104b6576101c1565b80632a55205a116101635780633ccfd60b1161013d5780633ccfd60b146103ac57806342842e0e146103c25780636352211e146103ea57806370a0823114610426576101c1565b80632a55205a1461031d5780632fbba1151461035a57806332cb6b0c14610382576101c1565b8063095ea7b31161019f578063095ea7b31461026757806318160ddd1461028f5780631e7269c5146102b957806323b872dd146102f5576101c1565b806301ffc9a7146101c557806306fdde0314610201578063081812fc1461022b575b5f5ffd5b3480156101d0575f5ffd5b506101eb60048036038101906101e69190611d4c565b6106d4565b6040516101f89190611d91565b60405180910390f35b34801561020c575f5ffd5b50610215610795565b6040516102229190611e1a565b60405180910390f35b348015610236575f5ffd5b50610251600480360381019061024c9190611e6d565b6107d2565b60405161025e9190611ed7565b60405180910390f35b348015610272575f5ffd5b5061028d60048036038101906102889190611f1a565b61086b565b005b34801561029a575f5ffd5b506102a3610a1b565b6040516102b09190611f67565b60405180910390f35b3480156102c4575f5ffd5b506102df60048036038101906102da9190611f80565b610a49565b6040516102ec9190611f67565b60405180910390f35b348015610300575f5ffd5b5061031b60048036038101906103169190611fab565b610a5e565b005b348015610328575f5ffd5b50610343600480360381019061033e9190611ffb565b610a6e565b604051610351929190612039565b60405180910390f35b348015610365575f5ffd5b50610380600480360381019061037b9190611e6d565b610ab7565b005b34801561038d575f5ffd5b50610396610bb7565b6040516103a39190611f67565b60405180910390f35b3480156103b7575f5ffd5b506103c0610bbd565b005b3480156103cd575f5ffd5b506103e860048036038101906103e39190611fab565b610cb6565b005b3480156103f5575f5ffd5b50610410600480360381019061040b9190611e6d565b610cc6565b60405161041d9190611ed7565b60405180910390f35b348015610431575f5ffd5b5061044c60048036038101906104479190611f80565b610daf565b6040516104599190611f67565b60405180910390f35b34801561046d575f5ffd5b50610476610df5565b6040516104839190611ed7565b60405180910390f35b348015610497575f5ffd5b506104a0610e1c565b6040516104ad9190611e1a565b60405180910390f35b3480156104c1575f5ffd5b506104ca610e59565b6040516104d7919061208a565b60405180910390f35b6104fa60048036038101906104f59190611e6d565b610e7b565b005b348015610507575f5ffd5b50610522600480360381019061051d91906120cd565b610f41565b005b34801561052f575f5ffd5b50610538611039565b6040516105459190611e1a565b60405180910390f35b348015610559575f5ffd5b50610574600480360381019061056f9190612196565b611072565b005b348015610581575f5ffd5b5061059c6004803603810190610597919061225c565b611180565b005b3480156105a9575f5ffd5b506105b2611192565b6040516105bf9190611f67565b60405180910390f35b3480156105d3575f5ffd5b506105ee60048036038101906105e99190611e6d565b61119c565b6040516105fb9190611e1a565b60405180910390f35b34801561060f575f5ffd5b5061062a600480360381019061062591906122e0565b611230565b6040516106379190611d91565b60405180910390f35b34801561064b575f5ffd5b506106546112be565b6040516106619190611f67565b60405180910390f35b348015610675575f5ffd5b5061067e6112c4565b60405161068b919061208a565b60405180910390f35b34801561069f575f5ffd5b506106a86112e5565b6040516106b59190611e1a565b60405180910390f35b3480156106c9575f5ffd5b506106d261131e565b005b5f6301ffc9a760e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916148061072e57506380ac58cd60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061075e5750635b5e139f60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b8061078e5750632a55205a60e01b827bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1916145b9050919050565b60606040518060400160405280600881526020017f4a61636b736f6e73000000000000000000000000000000000000000000000000815250905090565b5f5f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff168210610833576040517fb1d04f0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050919050565b5f61087582610cc6565b90508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015610935575060085f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b1561096c576040517fc19f17a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8260075f8481526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550818373ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560405160405180910390a4505050565b5f5f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905090565b6009602052805f5260405f205f915090505481565b610a6983838361159f565b505050565b5f5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff166127106101f485610aa2919061234b565b610aac91906123b9565b915091509250929050565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b3c576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61270f815f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16610b7291906123e9565b1115610baa576040517f52df9fe500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610bb433826119d7565b50565b61270f81565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c42576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f3373ffffffffffffffffffffffffffffffffffffffff1647604051610c6790612449565b5f6040518083038185875af1925050503d805f8114610ca1576040519150601f19603f3d011682016040523d82523d5f602084013e610ca6565b606091505b5050905080610cb3575f5ffd5b50565b610cc183838361159f565b505050565b5f5f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff168210610d27576040517fb1d04f0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8290505b5f60055f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610d9d578092505050610daa565b8160019003915050610d2c565b919050565b5f60065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600881526020017f4a41434b534f4e53000000000000000000000000000000000000000000000000815250905090565b600260109054906101000a90046fffffffffffffffffffffffffffffffff1681565b61270f815f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16610eb191906123e9565b1115610ee9576040517f52df9fe500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b65886c98b7600081610efb919061234b565b341015610f34576040517fcd1c886700000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b610f3e33826119d7565b50565b8060085f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f17307eab39ab6107e8899845ad3d59bd9653f200f220920489ca2b5937696c318360405161102d9190611d91565b60405180910390a35050565b6040518060400160405280600881526020017f4a61636b736f6e7300000000000000000000000000000000000000000000000081525081565b5f5f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146110f7576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8383600191826111089291906126a2565b508160025f6101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555080600260106101000a8154816fffffffffffffffffffffffffffffffff02191690836fffffffffffffffffffffffffffffffff16021790555050505050565b61118b85858561159f565b5050505050565b65886c98b7600081565b60605f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1682106111fe576040517fb1d04f0800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b600161120983611b99565b60405160200161121a929190612907565b6040516020818303038152906040529050919050565b5f60085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16905092915050565b60045481565b60025f9054906101000a90046fffffffffffffffffffffffffffffffff1681565b6040518060400160405280600881526020017f4a41434b534f4e5300000000000000000000000000000000000000000000000081525081565b3373ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614611383576040517f6ee803b600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f600260109054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff1690505f5f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff16905060025f9054906101000a90046fffffffffffffffffffffffffffffffff166fffffffffffffffffffffffffffffffff16828261141e91906123e9565b1115611456576040517f3f984f8600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b61270f828261146591906123e9565b111561149d576040517f52df9fe500000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414611513576040517f98bdb27b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60045490505f5f90505b81811015611538578060038190555080600101905061151e565b50600160045461154891906123e9565b6004819055508260095f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061159a33846119d7565b505050565b8273ffffffffffffffffffffffffffffffffffffffff166115bf82610cc6565b73ffffffffffffffffffffffffffffffffffffffff161461160c576040517f2f35253100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16141580156116ca575060085f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b801561173257503373ffffffffffffffffffffffffffffffffffffffff1660075f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614155b15611769576040517fc19f17a900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60075f8281526020019081526020015f205f6101000a81549073ffffffffffffffffffffffffffffffffffffffff021916905560065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600190039190508190555060065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8154600101919050819055508160055f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505f60018261188e91906123e9565b90505f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff168110801561192157505f73ffffffffffffffffffffffffffffffffffffffff1660055f8381526020019081526020015f205f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16145b15611976578360055f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b818373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a450505050565b5f8103611a10576040517ff4f5b73300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f5f60149054906101000a90046bffffffffffffffffffffffff166bffffffffffffffffffffffff1690508260055f8381526020019081526020015f205f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508160065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254611ad691906123e9565b925050819055505f5b82811015611b58578082611af391906123e9565b8473ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60405160405180910390a4806001019050611adf565b508181611b6591906123e9565b5f60146101000a8154816bffffffffffffffffffffffff02191690836bffffffffffffffffffffffff160217905550505050565b60605f8203611bdf576040518060400160405280600181526020017f30000000000000000000000000000000000000000000000000000000000000008152509050611cea565b5f8290505f5b5f8214611c0e578080611bf79061294b565b915050600a82611c0791906123b9565b9150611be5565b5f8167ffffffffffffffff811115611c2957611c28612467565b5b6040519080825280601f01601f191660200182016040528015611c5b5781602001600182028036833780820191505090505b5090505b5f8514611ce357600a85611c739190612992565b6030611c7f91906123e9565b60f81b8183611c8d906129c2565b93508381518110611ca157611ca06129e9565b5b60200101907effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff191690815f1a905350600a85611cdc91906123b9565b9450611c5f565b8093505050505b919050565b5f5ffd5b5f5ffd5b5f7fffffffff0000000000000000000000000000000000000000000000000000000082169050919050565b611d2b81611cf7565b8114611d35575f5ffd5b50565b5f81359050611d4681611d22565b92915050565b5f60208284031215611d6157611d60611cef565b5b5f611d6e84828501611d38565b91505092915050565b5f8115159050919050565b611d8b81611d77565b82525050565b5f602082019050611da45f830184611d82565b92915050565b5f81519050919050565b5f82825260208201905092915050565b8281835e5f83830152505050565b5f601f19601f8301169050919050565b5f611dec82611daa565b611df68185611db4565b9350611e06818560208601611dc4565b611e0f81611dd2565b840191505092915050565b5f6020820190508181035f830152611e328184611de2565b905092915050565b5f819050919050565b611e4c81611e3a565b8114611e56575f5ffd5b50565b5f81359050611e6781611e43565b92915050565b5f60208284031215611e8257611e81611cef565b5b5f611e8f84828501611e59565b91505092915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f611ec182611e98565b9050919050565b611ed181611eb7565b82525050565b5f602082019050611eea5f830184611ec8565b92915050565b611ef981611eb7565b8114611f03575f5ffd5b50565b5f81359050611f1481611ef0565b92915050565b5f5f60408385031215611f3057611f2f611cef565b5b5f611f3d85828601611f06565b9250506020611f4e85828601611e59565b9150509250929050565b611f6181611e3a565b82525050565b5f602082019050611f7a5f830184611f58565b92915050565b5f60208284031215611f9557611f94611cef565b5b5f611fa284828501611f06565b91505092915050565b5f5f5f60608486031215611fc257611fc1611cef565b5b5f611fcf86828701611f06565b9350506020611fe086828701611f06565b9250506040611ff186828701611e59565b9150509250925092565b5f5f6040838503121561201157612010611cef565b5b5f61201e85828601611e59565b925050602061202f85828601611e59565b9150509250929050565b5f60408201905061204c5f830185611ec8565b6120596020830184611f58565b9392505050565b5f6fffffffffffffffffffffffffffffffff82169050919050565b61208481612060565b82525050565b5f60208201905061209d5f83018461207b565b92915050565b6120ac81611d77565b81146120b6575f5ffd5b50565b5f813590506120c7816120a3565b92915050565b5f5f604083850312156120e3576120e2611cef565b5b5f6120f085828601611f06565b9250506020612101858286016120b9565b9150509250929050565b5f5ffd5b5f5ffd5b5f5ffd5b5f5f83601f84011261212c5761212b61210b565b5b8235905067ffffffffffffffff8111156121495761214861210f565b5b60208301915083600182028301111561216557612164612113565b5b9250929050565b61217581612060565b811461217f575f5ffd5b50565b5f813590506121908161216c565b92915050565b5f5f5f5f606085870312156121ae576121ad611cef565b5b5f85013567ffffffffffffffff8111156121cb576121ca611cf3565b5b6121d787828801612117565b945094505060206121ea87828801612182565b92505060406121fb87828801612182565b91505092959194509250565b5f5f83601f84011261221c5761221b61210b565b5b8235905067ffffffffffffffff8111156122395761223861210f565b5b60208301915083600182028301111561225557612254612113565b5b9250929050565b5f5f5f5f5f6080868803121561227557612274611cef565b5b5f61228288828901611f06565b955050602061229388828901611f06565b94505060406122a488828901611e59565b935050606086013567ffffffffffffffff8111156122c5576122c4611cf3565b5b6122d188828901612207565b92509250509295509295909350565b5f5f604083850312156122f6576122f5611cef565b5b5f61230385828601611f06565b925050602061231485828601611f06565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61235582611e3a565b915061236083611e3a565b925082820261236e81611e3a565b915082820484148315176123855761238461231e565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6123c382611e3a565b91506123ce83611e3a565b9250826123de576123dd61238c565b5b828204905092915050565b5f6123f382611e3a565b91506123fe83611e3a565b92508282019050808211156124165761241561231e565b5b92915050565b5f81905092915050565b50565b5f6124345f8361241c565b915061243f82612426565b5f82019050919050565b5f61245382612429565b9150819050919050565b5f82905092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806124d857607f821691505b6020821081036124eb576124ea612494565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f6008830261254d7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82612512565b6125578683612512565b95508019841693508086168417925050509392505050565b5f819050919050565b5f61259261258d61258884611e3a565b61256f565b611e3a565b9050919050565b5f819050919050565b6125ab83612578565b6125bf6125b782612599565b84845461251e565b825550505050565b5f5f905090565b6125d66125c7565b6125e18184846125a2565b505050565b5f5b82811015612607576125fc5f8284016125ce565b6001810190506125e8565b505050565b601f82111561265a578282111561265957612626816124f1565b61262f83612503565b61263885612503565b6020861015612645575f90505b808301612654828403826125e6565b505050505b5b505050565b5f82821c905092915050565b5f61267a5f198460080261265f565b1980831691505092915050565b5f612692838361266b565b9150826002028217905092915050565b6126ac838361245d565b67ffffffffffffffff8111156126c5576126c4612467565b5b6126cf82546124c1565b6126da82828561260c565b5f601f831160018114612707575f84156126f5578287013590505b6126ff8582612687565b865550612766565b601f198416612715866124f1565b5f5b8281101561273c57848901358255600182019150602085019450602081019050612717565b868310156127595784890135612755601f89168261266b565b8355505b6001600288020188555050505b50505050505050565b5f81905092915050565b7f697066733a2f2f000000000000000000000000000000000000000000000000005f82015250565b5f6127ad60078361276f565b91506127b882612779565b600782019050919050565b5f81546127cf816124c1565b6127d9818661276f565b9450600182165f81146127f357600181146128085761283a565b60ff198316865281151582028601935061283a565b612811856124f1565b5f5b8381101561283257815481890152600182019150602081019050612813565b838801955050505b50505092915050565b7f2f000000000000000000000000000000000000000000000000000000000000005f82015250565b5f61287760018361276f565b915061288282612843565b600182019050919050565b5f61289782611daa565b6128a1818561276f565b93506128b1818560208601611dc4565b80840191505092915050565b7f2e6a736f6e0000000000000000000000000000000000000000000000000000005f82015250565b5f6128f160058361276f565b91506128fc826128bd565b600582019050919050565b5f612911826127a1565b915061291d82856127c3565b91506129288261286b565b9150612934828461288d565b915061293f826128e5565b91508190509392505050565b5f61295582611e3a565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82036129875761298661231e565b5b600182019050919050565b5f61299c82611e3a565b91506129a783611e3a565b9250826129b7576129b661238c565b5b828206905092915050565b5f6129cc82611e3a565b91505f82036129de576129dd61231e565b5b600182039050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffdfea2646970667358221220d9292f970f95125efb8cf44403604cac2cae6c49b1e5a92180e5c5c1bf4a1f3f64736f6c63430008210033

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.