ETH Price: $2,039.64 (-1.71%)
 

Overview

ETH Balance

0.000868 ETH

Eth Value

$1.77 (@ $2,039.64/ETH)

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Apes Are Accumul...234129262025-09-21 17:30:23158 days ago1758475823IN
0x812d6843...79d1Bf7Cb
0 ETH0.000004180.19692151
Apes Are Accumul...233997292025-09-19 21:12:59160 days ago1758316379IN
0x812d6843...79d1Bf7Cb
0 ETH0.00000860.40485734
Apes Are Accumul...233877622025-09-18 5:05:47162 days ago1758171947IN
0x812d6843...79d1Bf7Cb
0 ETH0.000024871.1705795
Transfer233876652025-09-18 4:46:23162 days ago1758170783IN
0x812d6843...79d1Bf7Cb
0.000868 ETH0.00002671.26852071

Latest 1 internal transaction

Advanced mode:
Parent Transaction Hash Method Block
From
To
0x60e06040233871912025-09-18 3:11:23162 days ago1758165083  Contract Creation0 ETH
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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0x660641E2...46c86e691
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
BoredStrategyHook

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2025-09-18
*/

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.24;

/* ---------- Strategy fee intake interface (unchanged) ---------- */
interface IBoredStrategy {
    function addFees() external payable;
}

/* ---------- Minimal ETH transfer helper ---------- */
library SafeTransferLib {
    function forceSafeTransferETH(address to, uint256 amount) internal {
        (bool success, ) = to.call{value: amount, gas: 30_000}("");
        require(success, "ETH_TRANSFER_FAILED");
    }
}

/* ---------- Minimal v4 types (same as your earlier hook) ---------- */

type PoolId is bytes32;

struct PoolKey {
    address currency0;
    address currency1;
    uint24 fee;
    int24 tickSpacing;
    IHooks hooks;
}

struct SwapParams {
    bool zeroForOne;
    int256 amountSpecified;
    uint160 sqrtPriceLimitX96;
}

type BalanceDelta is int256;
type BeforeSwapDelta is int256;

library BeforeSwapDeltaLibrary {
    BeforeSwapDelta public constant ZERO_DELTA = BeforeSwapDelta.wrap(0);
}

interface IHooks {
    function beforeSwap(
        address sender, PoolKey calldata key, SwapParams calldata params, bytes calldata hookData
    ) external returns (bytes4, BeforeSwapDelta, uint24);

    function afterSwap(
        address sender, PoolKey calldata key, SwapParams calldata params, BalanceDelta delta, bytes calldata hookData
    ) external returns (bytes4, int128);
}

interface IPoolManager {}

abstract contract BaseHook is IHooks {
    IPoolManager public immutable poolManager;
    constructor(IPoolManager _poolManager) { poolManager = _poolManager; }
    modifier onlyPoolManager() {
        require(msg.sender == address(poolManager), "InvalidCaller");
        _;
    }
}

library PoolIdLibrary {
    function toId(PoolKey memory poolKey) internal pure returns (PoolId poolId) {
        assembly ("memory-safe") {
            // keccak256 over 0xa0 bytes: (currency0, currency1, fee, tickSpacing, hooks)
            poolId := keccak256(poolKey, 0xa0)
        }
    }
}

library Hooks {
    struct Permissions {
        bool beforeSwap;
        bool afterSwap;
        bool beforeInitialize;
        bool afterInitialize;
        bool beforeAddLiquidity;
        bool afterAddLiquidity;
        bool beforeRemoveLiquidity;
        bool afterRemoveLiquidity;
        bool beforeDonate;
        bool afterDonate;
        bool beforeSwapReturnsDelta;
        bool afterSwapReturnsDelta;
        bool afterAddLiquidityReturnsDelta;
        bool afterRemoveLiquidityReturnsDelta;
    }
}

/* ================================================================
 *                   BoredStrategyHook (adjustable Team/Spotlight)
 *                   Strategy share fixed at 80% by invariant
 * ================================================================ */
contract BoredStrategyHook is BaseHook {
    using PoolIdLibrary for PoolKey;

    /* --- Monitoring (optional) --- */
    mapping(PoolId => uint256) public beforeSwapCount;
    mapping(PoolId => uint256) public afterSwapCount;

    /* --- Uniswap v4 dynamic swap fee (1,000,000-denom) --- */
    uint24 public constant swapFeeBips = 100_000; // 10%

    /* --- Allocation denominator (BPS) & fixed strategy share --- */
    uint16 private constant ALLOC_DENOM_BPS = 10_000; // 100%
    uint16 private constant STRATEGY_FIXED_BPS = 8_000; // 80% (unchangeable)

    /* --- Mutable allocation for Team & Spotlight (must sum to 2,000) --- */
    uint16 public teamAllocBps;       // e.g., 1_000 = 10%
    uint16 public spotlightAllocBps;  // e.g., 1_000 = 10%

    /* --- Wallets & roles --- */
    address public teamWallet;              // Team destination
    address public spotlightWallet;         // Spotlight destination
    address public immutable boredStrategy; // Strategy contract (receives addFees)
    address public immutable owner;         // <- FIX: set explicitly via constructor arg

    /* --- Events --- */
    event TeamWalletUpdated(address indexed oldWallet, address indexed newWallet);
    event SpotlightWalletUpdated(address indexed oldWallet, address indexed newWallet);
    event AllocationBpsUpdated(uint16 oldTeamBps, uint16 oldSpotBps, uint16 newTeamBps, uint16 newSpotBps);

    /* --- Errors --- */
    error OnlyOwner();
    error BadAllocationSum(); // team+spotlight must be 2,000 to keep Strategy at 8,000

    /* --- Modifiers --- */
    modifier onlyOwner() {
        if (msg.sender != owner) revert OnlyOwner();
        _;
    }

    /* ---------------- Constructor (5 args; explicit owner) ----------------
       Args (in order):
         - IPoolManager _poolManager
         - address _boredStrategy
         - address _teamWallet
         - address _spotlightWallet
         - address _owner            // <- FIX: explicit owner
    ----------------------------------------------------------------------*/
    constructor(
        IPoolManager _poolManager,
        address _boredStrategy,
        address _teamWallet,
        address _spotlightWallet,
        address _owner
    ) BaseHook(_poolManager) {
        owner = _owner;                     // <- FIX
        boredStrategy = _boredStrategy;
        teamWallet = _teamWallet;
        spotlightWallet = _spotlightWallet;

        // default: 10% / 10% / 80%
        teamAllocBps = 1_000;
        spotlightAllocBps = 1_000;
    }

    /* ---------------- Admin ---------------- */
    function setTeamWallet(address _teamWallet) external onlyOwner {
        emit TeamWalletUpdated(teamWallet, _teamWallet);
        teamWallet = _teamWallet;
    }

    function setSpotlightWallet(address _spotlightWallet) external onlyOwner {
        emit SpotlightWalletUpdated(spotlightWallet, _spotlightWallet);
        spotlightWallet = _spotlightWallet;
    }

    /// @notice Adjust Team/Spotlight allocations. Strategy stays fixed at 80%.
    /// @dev Enforces team + spotlight == 2,000 bps so Strategy remains 8,000 bps.
    function setAllocationBps(uint16 _teamBps, uint16 _spotBps) external onlyOwner {
        if (uint256(_teamBps) + uint256(_spotBps) != (ALLOC_DENOM_BPS - STRATEGY_FIXED_BPS)) {
            revert BadAllocationSum();
        }
        emit AllocationBpsUpdated(teamAllocBps, spotlightAllocBps, _teamBps, _spotBps);
        teamAllocBps = _teamBps;
        spotlightAllocBps = _spotBps;
    }

    /* ---------------- Hook permissions ---------------- */
    function getHookPermissions() public pure returns (Hooks.Permissions memory) {
        return Hooks.Permissions({
            beforeSwap: true,
            afterSwap: true,
            beforeInitialize: false,
            afterInitialize: false,
            beforeAddLiquidity: false,
            afterAddLiquidity: false,
            beforeRemoveLiquidity: false,
            afterRemoveLiquidity: false,
            beforeDonate: false,
            afterDonate: false,
            beforeSwapReturnsDelta: false,
            afterSwapReturnsDelta: false,
            afterAddLiquidityReturnsDelta: false,
            afterRemoveLiquidityReturnsDelta: false
        });
    }

    /* --------- Signals the strategy may ping (must not revert) -------- */
    function feeCooldown() external { /* no-op */ }
    function apesAreAccumulating() external { /* no-op */ }

    /* ---------------- Core hooks ---------------- */
    function beforeSwap(
        address,
        PoolKey calldata key,
        SwapParams calldata,
        bytes calldata
    ) external override onlyPoolManager returns (bytes4, BeforeSwapDelta, uint24) {
        beforeSwapCount[key.toId()]++;
        return (IHooks.beforeSwap.selector, BeforeSwapDeltaLibrary.ZERO_DELTA, swapFeeBips);
    }

    function afterSwap(
        address,
        PoolKey calldata key,
        SwapParams calldata,
        BalanceDelta,
        bytes calldata
    ) external override onlyPoolManager returns (bytes4, int128) {
        afterSwapCount[key.toId()]++;

        uint256 bal = address(this).balance;
        if (bal > 0) {
            // Base cuts from current BPS settings
            uint256 teamCutBase = (bal * teamAllocBps) / ALLOC_DENOM_BPS;
            uint256 spotCutBase = (bal * spotlightAllocBps) / ALLOC_DENOM_BPS;

            // Strategy gets the remainder (ensures 100% distributed, absorbs rounding)
            uint256 stratCut = bal - teamCutBase - spotCutBase;

            // If either wallet is unset, fold that share into Strategy
            if (teamWallet == address(0)) {
                stratCut += teamCutBase;
                teamCutBase = 0;
            }
            if (spotlightWallet == address(0)) {
                stratCut += spotCutBase;
                spotCutBase = 0;
            }

            // Payouts
            if (teamCutBase > 0) {
                SafeTransferLib.forceSafeTransferETH(teamWallet, teamCutBase);
            }
            if (spotlightWallet != address(0) && spotCutBase > 0) {
                SafeTransferLib.forceSafeTransferETH(spotlightWallet, spotCutBase);
            }
            if (stratCut > 0) {
                IBoredStrategy(boredStrategy).addFees{value: stratCut}();
            }
        }

        return (IHooks.afterSwap.selector, 0);
    }

    receive() external payable {}
}

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"contract IPoolManager","name":"_poolManager","type":"address"},{"internalType":"address","name":"_boredStrategy","type":"address"},{"internalType":"address","name":"_teamWallet","type":"address"},{"internalType":"address","name":"_spotlightWallet","type":"address"},{"internalType":"address","name":"_owner","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"inputs":[],"name":"BadAllocationSum","type":"error"},{"inputs":[],"name":"OnlyOwner","type":"error"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint16","name":"oldTeamBps","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"oldSpotBps","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"newTeamBps","type":"uint16"},{"indexed":false,"internalType":"uint16","name":"newSpotBps","type":"uint16"}],"name":"AllocationBpsUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"},{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"SpotlightWalletUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldWallet","type":"address"},{"indexed":true,"internalType":"address","name":"newWallet","type":"address"}],"name":"TeamWalletUpdated","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"components":[{"internalType":"address","name":"currency0","type":"address"},{"internalType":"address","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct SwapParams","name":"","type":"tuple"},{"internalType":"BalanceDelta","name":"","type":"int256"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"afterSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"int128","name":"","type":"int128"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"PoolId","name":"","type":"bytes32"}],"name":"afterSwapCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"apesAreAccumulating","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"components":[{"internalType":"address","name":"currency0","type":"address"},{"internalType":"address","name":"currency1","type":"address"},{"internalType":"uint24","name":"fee","type":"uint24"},{"internalType":"int24","name":"tickSpacing","type":"int24"},{"internalType":"contract IHooks","name":"hooks","type":"address"}],"internalType":"struct PoolKey","name":"key","type":"tuple"},{"components":[{"internalType":"bool","name":"zeroForOne","type":"bool"},{"internalType":"int256","name":"amountSpecified","type":"int256"},{"internalType":"uint160","name":"sqrtPriceLimitX96","type":"uint160"}],"internalType":"struct SwapParams","name":"","type":"tuple"},{"internalType":"bytes","name":"","type":"bytes"}],"name":"beforeSwap","outputs":[{"internalType":"bytes4","name":"","type":"bytes4"},{"internalType":"BeforeSwapDelta","name":"","type":"int256"},{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"PoolId","name":"","type":"bytes32"}],"name":"beforeSwapCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"boredStrategy","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeCooldown","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getHookPermissions","outputs":[{"components":[{"internalType":"bool","name":"beforeSwap","type":"bool"},{"internalType":"bool","name":"afterSwap","type":"bool"},{"internalType":"bool","name":"beforeInitialize","type":"bool"},{"internalType":"bool","name":"afterInitialize","type":"bool"},{"internalType":"bool","name":"beforeAddLiquidity","type":"bool"},{"internalType":"bool","name":"afterAddLiquidity","type":"bool"},{"internalType":"bool","name":"beforeRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"afterRemoveLiquidity","type":"bool"},{"internalType":"bool","name":"beforeDonate","type":"bool"},{"internalType":"bool","name":"afterDonate","type":"bool"},{"internalType":"bool","name":"beforeSwapReturnsDelta","type":"bool"},{"internalType":"bool","name":"afterSwapReturnsDelta","type":"bool"},{"internalType":"bool","name":"afterAddLiquidityReturnsDelta","type":"bool"},{"internalType":"bool","name":"afterRemoveLiquidityReturnsDelta","type":"bool"}],"internalType":"struct Hooks.Permissions","name":"","type":"tuple"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolManager","outputs":[{"internalType":"contract IPoolManager","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_teamBps","type":"uint16"},{"internalType":"uint16","name":"_spotBps","type":"uint16"}],"name":"setAllocationBps","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_spotlightWallet","type":"address"}],"name":"setSpotlightWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_teamWallet","type":"address"}],"name":"setTeamWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"spotlightAllocBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"spotlightWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapFeeBips","outputs":[{"internalType":"uint24","name":"","type":"uint24"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamAllocBps","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"teamWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

0x60e060405234801561000f575f80fd5b506040516111fd3803806111fd83398101604081905261002e916100b8565b6001600160a01b03948516608052841660c05291831660a05260028054600380546001600160a01b031916948616949094179093556103e863ffff0001600160c01b0319909316640100000000929094169190910261ffff1916929092171763ffff000019166303e80000179055610129565b6001600160a01b03811681146100b5575f80fd5b50565b5f805f805f60a086880312156100cc575f80fd5b85516100d7816100a1565b60208701519095506100e8816100a1565b60408701519094506100f9816100a1565b606087015190935061010a816100a1565b608087015190925061011b816100a1565b809150509295509295909350565b60805160a05160c05161108061017d5f395f81816102b501528181610539015281816105f501526107a201525f81816103610152610a7301525f81816104ec015281816106c401526108c901526110805ff3fe608060405260043610610126575f3560e01c80639eed191d116100a1578063c7dc13be11610071578063dc4c90d311610057578063dc4c90d3146104db578063e0fce8e814610171578063f1092f411461050e575f80fd5b8063c7dc13be14610483578063dacdbe77146104b0575f80fd5b80639eed191d146102d7578063b47b2fb1146102f6578063bb3162c014610350578063c4e833ce14610383575f80fd5b8063575e24b4116100f65780635b090886116100dc5780635b090886146102415780635c338d321461026b5780638da5cb5b146102a4575f80fd5b8063575e24b4146101b8578063599270441461021a575f80fd5b80630b982232146101315780631525ff7d1461015257806324fd7a6d1461017157806330ef9c1d1461017c575f80fd5b3661012d57005b5f80fd5b34801561013c575f80fd5b5061015061014b366004610be6565b61052e565b005b34801561015d575f80fd5b5061015061016c366004610be6565b6105ea565b348015610150575f80fd5b348015610187575f80fd5b5060035461019b906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101c3575f80fd5b506101d76101d2366004610c73565b6106b6565b604080517fffffffff000000000000000000000000000000000000000000000000000000009094168452602084019290925262ffffff16908201526060016101af565b348015610225575f80fd5b5060025461019b9064010000000090046001600160a01b031681565b34801561024c575f80fd5b50610257620186a081565b60405162ffffff90911681526020016101af565b348015610276575f80fd5b50610296610285366004610cea565b5f6020819052908152604090205481565b6040519081526020016101af565b3480156102af575f80fd5b5061019b7f000000000000000000000000000000000000000000000000000000000000000081565b3480156102e2575f80fd5b506101506102f1366004610d12565b610797565b348015610301575f80fd5b50610315610310366004610d43565b6108bc565b604080517fffffffff000000000000000000000000000000000000000000000000000000009093168352600f9190910b6020830152016101af565b34801561035b575f80fd5b5061019b7f000000000000000000000000000000000000000000000000000000000000000081565b34801561038e575f80fd5b50610476604080516101c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915250604080516101c081018252600180825260208201525f918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915290565b6040516101af9190610dc4565b34801561048e575f80fd5b5060025461049d9061ffff1681565b60405161ffff90911681526020016101af565b3480156104bb575f80fd5b506102966104ca366004610cea565b60016020525f908152604090205481565b3480156104e6575f80fd5b5061019b7f000000000000000000000000000000000000000000000000000000000000000081565b348015610519575f80fd5b5060025461049d9062010000900461ffff1681565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461057757604051635fc483c560e01b815260040160405180910390fd5b6003546040516001600160a01b038084169216907ff7df2f3bb10d0d6fc0e204dd3254c760c53c844ac652bff9644fccb177af6121905f90a3600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b336001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000161461063357604051635fc483c560e01b815260040160405180910390fd5b6002546040516001600160a01b0380841692640100000000900416907fd9a2a08302ed3220f4e646ff99d6780d87e27baddf1af05679dc930ce8113095905f90a3600280546001600160a01b03909216640100000000027fffffffffffffffff0000000000000000000000000000000000000000ffffffff909216919091179055565b5f8080336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107265760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b221b0b63632b960991b60448201526064015b60405180910390fd5b5f8061074161073a368b90038b018b610f08565b60a0902090565b81526020019081526020015f205f81548092919061075e90610fb6565b909155507f575e24b400000000000000000000000000000000000000000000000000000000995f9950620186a098509650505050505050565b336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146107e057604051635fc483c560e01b815260040160405180910390fd5b6107ee611f40612710610fce565b61ffff168161ffff168361ffff166108069190610fee565b1461083d576040517f96eb3ed800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040805161ffff80841682526201000090930483166020820152848316818301529183166060830152517f7955efbd2a3e0dbea152eabc536a03e3cab1da1cebb46480c5526998a0251f5d9181900360800190a16002805461ffff928316620100000263ffffffff199091169290931691909117919091179055565b5f80336001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016146109265760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b221b0b63632b960991b604482015260640161071d565b60015f61093b61073a368b90038b018b610f08565b81526020019081526020015f205f81548092919061095890610fb6565b909155504790508015610ae6576002545f906127109061097c9061ffff1684611001565b6109869190611018565b6002549091505f90612710906109a69062010000900461ffff1685611001565b6109b09190611018565b90505f816109be8486611037565b6109c89190611037565b60025490915064010000000090046001600160a01b03166109f3576109ed8382610fee565b90505f92505b6003546001600160a01b0316610a1357610a0d8282610fee565b90505f91505b8215610a3757600254610a379064010000000090046001600160a01b031684610b16565b6003546001600160a01b031615801590610a5057505f82115b15610a6b57600354610a6b906001600160a01b031683610b16565b8015610ae2577f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166319d6150d826040518263ffffffff1660e01b81526004015f604051808303818588803b158015610aca575f80fd5b505af1158015610adc573d5f803e3d5ffd5b50505050505b5050505b507fb47b2fb100000000000000000000000000000000000000000000000000000000985f98509650505050505050565b5f826001600160a01b031682617530906040515f60405180830381858888f193505050503d805f8114610b64576040519150601f19603f3d011682016040523d82523d5f602084013e610b69565b606091505b5050905080610bba5760405162461bcd60e51b815260206004820152601360248201527f4554485f5452414e534645525f4641494c454400000000000000000000000000604482015260640161071d565b505050565b6001600160a01b0381168114610bd3575f80fd5b50565b8035610be181610bbf565b919050565b5f60208284031215610bf6575f80fd5b8135610c0181610bbf565b9392505050565b5f60a08284031215610c18575f80fd5b50919050565b5f60608284031215610c18575f80fd5b5f8083601f840112610c3e575f80fd5b50813567ffffffffffffffff811115610c55575f80fd5b602083019150836020828501011115610c6c575f80fd5b9250929050565b5f805f805f6101408688031215610c88575f80fd5b8535610c9381610bbf565b9450610ca28760208801610c08565b9350610cb18760c08801610c1e565b925061012086013567ffffffffffffffff811115610ccd575f80fd5b610cd988828901610c2e565b969995985093965092949392505050565b5f60208284031215610cfa575f80fd5b5035919050565b803561ffff81168114610be1575f80fd5b5f8060408385031215610d23575f80fd5b610d2c83610d01565b9150610d3a60208401610d01565b90509250929050565b5f805f805f806101608789031215610d59575f80fd5b8635610d6481610bbf565b9550610d738860208901610c08565b9450610d828860c08901610c1e565b9350610120870135925061014087013567ffffffffffffffff811115610da6575f80fd5b610db289828a01610c2e565b979a9699509497509295939492505050565b8151151581526101c081016020830151610de2602084018215159052565b506040830151610df6604084018215159052565b506060830151610e0a606084018215159052565b506080830151610e1e608084018215159052565b5060a0830151610e3260a084018215159052565b5060c0830151610e4660c084018215159052565b5060e0830151610e5a60e084018215159052565b50610100830151610e7061010084018215159052565b50610120830151610e8661012084018215159052565b50610140830151610e9c61014084018215159052565b50610160830151610eb261016084018215159052565b50610180830151610ec861018084018215159052565b506101a0830151610ede6101a084018215159052565b5092915050565b803562ffffff81168114610be1575f80fd5b8035600281900b8114610be1575f80fd5b5f60a0828403128015610f19575f80fd5b5060405160a0810167ffffffffffffffff81118282101715610f4957634e487b7160e01b5f52604160045260245ffd5b604052610f5583610bd6565b8152610f6360208401610bd6565b6020820152610f7460408401610ee5565b6040820152610f8560608401610ef7565b6060820152610f9660808401610bd6565b60808201529392505050565b634e487b7160e01b5f52601160045260245ffd5b5f60018201610fc757610fc7610fa2565b5060010190565b61ffff8281168282160390811115610fe857610fe8610fa2565b92915050565b80820180821115610fe857610fe8610fa2565b8082028115828204841417610fe857610fe8610fa2565b5f8261103257634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610fe857610fe8610fa256fea26469706673582212201ea146124706c70f4e49e2972f037a8a5e6e30aabccc90b5823661efcd562ad864736f6c634300081a0033000000000000000000000000000000000004444c5dc75cb358380d2e3de08a900000000000000000000000000b291dd62c58dcaa04358057da30d2bc067d679d000000000000000000000000cf097b9f91a6051e7f9f01cb9a571f42041ba08f000000000000000000000000ab219d39fc115db5450ad6ed469c11d13e2cf819000000000000000000000000cf097b9f91a6051e7f9f01cb9a571f42041ba08f

Deployed Bytecode

0x608060405260043610610126575f3560e01c80639eed191d116100a1578063c7dc13be11610071578063dc4c90d311610057578063dc4c90d3146104db578063e0fce8e814610171578063f1092f411461050e575f80fd5b8063c7dc13be14610483578063dacdbe77146104b0575f80fd5b80639eed191d146102d7578063b47b2fb1146102f6578063bb3162c014610350578063c4e833ce14610383575f80fd5b8063575e24b4116100f65780635b090886116100dc5780635b090886146102415780635c338d321461026b5780638da5cb5b146102a4575f80fd5b8063575e24b4146101b8578063599270441461021a575f80fd5b80630b982232146101315780631525ff7d1461015257806324fd7a6d1461017157806330ef9c1d1461017c575f80fd5b3661012d57005b5f80fd5b34801561013c575f80fd5b5061015061014b366004610be6565b61052e565b005b34801561015d575f80fd5b5061015061016c366004610be6565b6105ea565b348015610150575f80fd5b348015610187575f80fd5b5060035461019b906001600160a01b031681565b6040516001600160a01b0390911681526020015b60405180910390f35b3480156101c3575f80fd5b506101d76101d2366004610c73565b6106b6565b604080517fffffffff000000000000000000000000000000000000000000000000000000009094168452602084019290925262ffffff16908201526060016101af565b348015610225575f80fd5b5060025461019b9064010000000090046001600160a01b031681565b34801561024c575f80fd5b50610257620186a081565b60405162ffffff90911681526020016101af565b348015610276575f80fd5b50610296610285366004610cea565b5f6020819052908152604090205481565b6040519081526020016101af565b3480156102af575f80fd5b5061019b7f000000000000000000000000cf097b9f91a6051e7f9f01cb9a571f42041ba08f81565b3480156102e2575f80fd5b506101506102f1366004610d12565b610797565b348015610301575f80fd5b50610315610310366004610d43565b6108bc565b604080517fffffffff000000000000000000000000000000000000000000000000000000009093168352600f9190910b6020830152016101af565b34801561035b575f80fd5b5061019b7f0000000000000000000000000b291dd62c58dcaa04358057da30d2bc067d679d81565b34801561038e575f80fd5b50610476604080516101c0810182525f80825260208201819052918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915250604080516101c081018252600180825260208201525f918101829052606081018290526080810182905260a0810182905260c0810182905260e08101829052610100810182905261012081018290526101408101829052610160810182905261018081018290526101a081019190915290565b6040516101af9190610dc4565b34801561048e575f80fd5b5060025461049d9061ffff1681565b60405161ffff90911681526020016101af565b3480156104bb575f80fd5b506102966104ca366004610cea565b60016020525f908152604090205481565b3480156104e6575f80fd5b5061019b7f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a9081565b348015610519575f80fd5b5060025461049d9062010000900461ffff1681565b336001600160a01b037f000000000000000000000000cf097b9f91a6051e7f9f01cb9a571f42041ba08f161461057757604051635fc483c560e01b815260040160405180910390fd5b6003546040516001600160a01b038084169216907ff7df2f3bb10d0d6fc0e204dd3254c760c53c844ac652bff9644fccb177af6121905f90a3600380547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b0392909216919091179055565b336001600160a01b037f000000000000000000000000cf097b9f91a6051e7f9f01cb9a571f42041ba08f161461063357604051635fc483c560e01b815260040160405180910390fd5b6002546040516001600160a01b0380841692640100000000900416907fd9a2a08302ed3220f4e646ff99d6780d87e27baddf1af05679dc930ce8113095905f90a3600280546001600160a01b03909216640100000000027fffffffffffffffff0000000000000000000000000000000000000000ffffffff909216919091179055565b5f8080336001600160a01b037f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a9016146107265760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b221b0b63632b960991b60448201526064015b60405180910390fd5b5f8061074161073a368b90038b018b610f08565b60a0902090565b81526020019081526020015f205f81548092919061075e90610fb6565b909155507f575e24b400000000000000000000000000000000000000000000000000000000995f9950620186a098509650505050505050565b336001600160a01b037f000000000000000000000000cf097b9f91a6051e7f9f01cb9a571f42041ba08f16146107e057604051635fc483c560e01b815260040160405180910390fd5b6107ee611f40612710610fce565b61ffff168161ffff168361ffff166108069190610fee565b1461083d576040517f96eb3ed800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6002546040805161ffff80841682526201000090930483166020820152848316818301529183166060830152517f7955efbd2a3e0dbea152eabc536a03e3cab1da1cebb46480c5526998a0251f5d9181900360800190a16002805461ffff928316620100000263ffffffff199091169290931691909117919091179055565b5f80336001600160a01b037f000000000000000000000000000000000004444c5dc75cb358380d2e3de08a9016146109265760405162461bcd60e51b815260206004820152600d60248201526c24b73b30b634b221b0b63632b960991b604482015260640161071d565b60015f61093b61073a368b90038b018b610f08565b81526020019081526020015f205f81548092919061095890610fb6565b909155504790508015610ae6576002545f906127109061097c9061ffff1684611001565b6109869190611018565b6002549091505f90612710906109a69062010000900461ffff1685611001565b6109b09190611018565b90505f816109be8486611037565b6109c89190611037565b60025490915064010000000090046001600160a01b03166109f3576109ed8382610fee565b90505f92505b6003546001600160a01b0316610a1357610a0d8282610fee565b90505f91505b8215610a3757600254610a379064010000000090046001600160a01b031684610b16565b6003546001600160a01b031615801590610a5057505f82115b15610a6b57600354610a6b906001600160a01b031683610b16565b8015610ae2577f0000000000000000000000000b291dd62c58dcaa04358057da30d2bc067d679d6001600160a01b03166319d6150d826040518263ffffffff1660e01b81526004015f604051808303818588803b158015610aca575f80fd5b505af1158015610adc573d5f803e3d5ffd5b50505050505b5050505b507fb47b2fb100000000000000000000000000000000000000000000000000000000985f98509650505050505050565b5f826001600160a01b031682617530906040515f60405180830381858888f193505050503d805f8114610b64576040519150601f19603f3d011682016040523d82523d5f602084013e610b69565b606091505b5050905080610bba5760405162461bcd60e51b815260206004820152601360248201527f4554485f5452414e534645525f4641494c454400000000000000000000000000604482015260640161071d565b505050565b6001600160a01b0381168114610bd3575f80fd5b50565b8035610be181610bbf565b919050565b5f60208284031215610bf6575f80fd5b8135610c0181610bbf565b9392505050565b5f60a08284031215610c18575f80fd5b50919050565b5f60608284031215610c18575f80fd5b5f8083601f840112610c3e575f80fd5b50813567ffffffffffffffff811115610c55575f80fd5b602083019150836020828501011115610c6c575f80fd5b9250929050565b5f805f805f6101408688031215610c88575f80fd5b8535610c9381610bbf565b9450610ca28760208801610c08565b9350610cb18760c08801610c1e565b925061012086013567ffffffffffffffff811115610ccd575f80fd5b610cd988828901610c2e565b969995985093965092949392505050565b5f60208284031215610cfa575f80fd5b5035919050565b803561ffff81168114610be1575f80fd5b5f8060408385031215610d23575f80fd5b610d2c83610d01565b9150610d3a60208401610d01565b90509250929050565b5f805f805f806101608789031215610d59575f80fd5b8635610d6481610bbf565b9550610d738860208901610c08565b9450610d828860c08901610c1e565b9350610120870135925061014087013567ffffffffffffffff811115610da6575f80fd5b610db289828a01610c2e565b979a9699509497509295939492505050565b8151151581526101c081016020830151610de2602084018215159052565b506040830151610df6604084018215159052565b506060830151610e0a606084018215159052565b506080830151610e1e608084018215159052565b5060a0830151610e3260a084018215159052565b5060c0830151610e4660c084018215159052565b5060e0830151610e5a60e084018215159052565b50610100830151610e7061010084018215159052565b50610120830151610e8661012084018215159052565b50610140830151610e9c61014084018215159052565b50610160830151610eb261016084018215159052565b50610180830151610ec861018084018215159052565b506101a0830151610ede6101a084018215159052565b5092915050565b803562ffffff81168114610be1575f80fd5b8035600281900b8114610be1575f80fd5b5f60a0828403128015610f19575f80fd5b5060405160a0810167ffffffffffffffff81118282101715610f4957634e487b7160e01b5f52604160045260245ffd5b604052610f5583610bd6565b8152610f6360208401610bd6565b6020820152610f7460408401610ee5565b6040820152610f8560608401610ef7565b6060820152610f9660808401610bd6565b60808201529392505050565b634e487b7160e01b5f52601160045260245ffd5b5f60018201610fc757610fc7610fa2565b5060010190565b61ffff8281168282160390811115610fe857610fe8610fa2565b92915050565b80820180821115610fe857610fe8610fa2565b8082028115828204841417610fe857610fe8610fa2565b5f8261103257634e487b7160e01b5f52601260045260245ffd5b500490565b81810381811115610fe857610fe8610fa256fea26469706673582212201ea146124706c70f4e49e2972f037a8a5e6e30aabccc90b5823661efcd562ad864736f6c634300081a0033

Deployed Bytecode Sourcemap

2847:6563:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5669:199;;;;;;;;;;-1:-1:-1;5669:199:0;;;;;:::i;:::-;;:::i;:::-;;5497:164;;;;;;;;;;-1:-1:-1;5497:164:0;;;;;:::i;:::-;;:::i;7285:47::-;;;;;;;;;3728:30;;;;;;;;;;-1:-1:-1;3728:30:0;;;;-1:-1:-1;;;;;3728:30:0;;;;;;-1:-1:-1;;;;;728:55:1;;;710:74;;698:2;683:18;3728:30:0;;;;;;;;7457:349;;;;;;;;;;-1:-1:-1;7457:349:0;;;;;:::i;:::-;;:::i;:::-;;;;2538:66:1;2526:79;;;2508:98;;2637:2;2622:18;;2615:34;;;;2697:8;2685:21;2665:18;;;2658:49;2496:2;2481:18;7457:349:0;2277:436:1;3663:25:0;;;;;;;;;;-1:-1:-1;3663:25:0;;;;;;;-1:-1:-1;;;;;3663:25:0;;;3152:44;;;;;;;;;;;;3189:7;3152:44;;;;;2892:8:1;2880:21;;;2862:40;;2850:2;2835:18;3152:44:0;2718:190:1;2974:49:0;;;;;;;;;;-1:-1:-1;2974:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;3269:25:1;;;3257:2;3242:18;2974:49:0;3123:177:1;3883:30:0;;;;;;;;;;;;;;;6041:396;;;;;;;;;;-1:-1:-1;6041:396:0;;;;;:::i;:::-;;:::i;7814:1556::-;;;;;;;;;;-1:-1:-1;7814:1556:0;;;;;:::i;:::-;;:::i;:::-;;;;4836:66:1;4824:79;;;4806:98;;4951:2;4940:22;;;;4935:2;4920:18;;4913:50;4779:18;7814:1556:0;4636:333:1;3798:38:0;;;;;;;;;;;;;;;6507:692;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6602:589:0;;;;;;;;6647:4;6602:589;;;;;;;-1:-1:-1;6602:589:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6507:692;;;;;;;;:::i;3506:26::-;;;;;;;;;;-1:-1:-1;3506:26:0;;;;;;;;;;;7046:6:1;7034:19;;;7016:38;;7004:2;6989:18;3506:26:0;6872:188:1;3030:48:0;;;;;;;;;;-1:-1:-1;3030:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;1488:41;;;;;;;;;;;;;;;3566:31;;;;;;;;;;-1:-1:-1;3566:31:0;;;;;;;;;;;5669:199;4492:10;-1:-1:-1;;;;;4506:5:0;4492:19;;4488:43;;4520:11;;-1:-1:-1;;;4520:11:0;;;;;;;;;;;4488:43;5781:15:::1;::::0;5758:57:::1;::::0;-1:-1:-1;;;;;5758:57:0;;::::1;::::0;5781:15:::1;::::0;5758:57:::1;::::0;5781:15:::1;::::0;5758:57:::1;5826:15;:34:::0;;;::::1;-1:-1:-1::0;;;;;5826:34:0;;;::::1;::::0;;;::::1;::::0;;5669:199::o;5497:164::-;4492:10;-1:-1:-1;;;;;4506:5:0;4492:19;;4488:43;;4520:11;;-1:-1:-1;;;4520:11:0;;;;;;;;;;;4488:43;5594:10:::1;::::0;5576:42:::1;::::0;-1:-1:-1;;;;;5576:42:0;;::::1;::::0;5594:10;;::::1;;::::0;5576:42:::1;::::0;;;::::1;5629:10;:24:::0;;-1:-1:-1;;;;;5629:24:0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;5497:164::o;7457:349::-;7631:6;;;1658:10;-1:-1:-1;;;;;1680:11:0;1658:34;;1650:60;;;;-1:-1:-1;;;1650:60:0;;7518:2:1;1650:60:0;;;7500:21:1;7557:2;7537:18;;;7530:30;-1:-1:-1;;;7576:18:1;;;7569:43;7629:18;;1650:60:0;;;;;;;;;7675:15:::1;::::0;7691:10:::1;:8;;::::0;;::::1;::::0;::::1;:3:::0;:8:::1;:::i;:::-;2013:4:::0;1994:24;;;1766:270;7691:10:::1;7675:27;;;;;;;;;;;;:29;;;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;7723:26:0;;1008:1:::1;::::0;-1:-1:-1;3189:7:0::1;::::0;-1:-1:-1;7457:349:0;-1:-1:-1;;;;;;;7457:349:0:o;6041:396::-;4492:10;-1:-1:-1;;;;;4506:5:0;4492:19;;4488:43;;4520:11;;-1:-1:-1;;;4520:11:0;;;;;;;;;;;4488:43;6177:36:::1;3391:5;3325:6;6177:36;:::i;:::-;6135:79;;6163:8;6155:17;;6143:8;6135:17;;:37;;;;:::i;:::-;:79;6131:137;;6238:18;;;;;;;;;;;;;;6131:137;6304:12;::::0;6283:73:::1;::::0;;6304:12:::1;::::0;;::::1;9761:38:1::0;;6318:17:0;;;::::1;::::0;::::1;9830:2:1::0;9815:18;;9808:47;9891:19;;;9871:18;;;9864:47;9947:19;;;9942:2;9927:18;;9920:47;6283:73:0;::::1;::::0;;;;9748:3:1;6283:73:0;;::::1;6367:12;:23:::0;;::::1;6401:28:::0;;::::1;::::0;::::1;-1:-1:-1::0;;6401:28:0;;;6367:23;;;::::1;6401:28:::0;;;;;;;::::1;::::0;;6041:396::o;7814:1556::-;8010:6;;1658:10;-1:-1:-1;;;;;1680:11:0;1658:34;;1650:60;;;;-1:-1:-1;;;1650:60:0;;7518:2:1;1650:60:0;;;7500:21:1;7557:2;7537:18;;;7530:30;-1:-1:-1;;;7576:18:1;;;7569:43;7629:18;;1650:60:0;7316:337:1;1650:60:0;8037:14:::1;:26;8052:10;:8;;::::0;;::::1;::::0;::::1;:3:::0;:8:::1;:::i;:10::-;8037:26;;;;;;;;;;;;:28;;;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;8092:21:0::1;::::0;-1:-1:-1;8128:7:0;;8124:1189:::1;;8233:12;::::0;8204:19:::1;::::0;3325:6:::1;::::0;8227:18:::1;::::0;8226:38:::1;8233:12;8227:3:::0;:18:::1;:::i;:::-;8226:38;;;;:::i;:::-;8308:17;::::0;8204:60;;-1:-1:-1;8279:19:0::1;::::0;3325:6:::1;::::0;8302:23:::1;::::0;8308:17;;::::1;8301:43;8308:17;8302:3:::0;:23:::1;:::i;:::-;8301:43;;;;:::i;:::-;8279:65:::0;-1:-1:-1;8450:16:0::1;8279:65:::0;8469:17:::1;8475:11:::0;8469:3;:17:::1;:::i;:::-;:31;;;;:::i;:::-;8594:10;::::0;8450:50;;-1:-1:-1;8594:10:0;;::::1;-1:-1:-1::0;;;;;8594:10:0::1;8590:122;;8639:23;8651:11:::0;8639:23;::::1;:::i;:::-;;;8695:1;8681:15;;8590:122;8730:15;::::0;-1:-1:-1;;;;;8730:15:0::1;8726:127;;8780:23;8792:11:::0;8780:23;::::1;:::i;:::-;;;8836:1;8822:15;;8726:127;8897:15:::0;;8893:117:::1;;8970:10;::::0;8933:61:::1;::::0;8970:10;;::::1;-1:-1:-1::0;;;;;8970:10:0::1;8982:11:::0;8933:36:::1;:61::i;:::-;9028:15;::::0;-1:-1:-1;;;;;9028:15:0::1;:29:::0;;::::1;::::0;:48:::1;;;9075:1;9061:11;:15;9028:48;9024:155;;;9134:15;::::0;9097:66:::1;::::0;-1:-1:-1;;;;;9134:15:0::1;9151:11:::0;9097:36:::1;:66::i;:::-;9197:12:::0;;9193:109:::1;;9245:13;-1:-1:-1::0;;;;;9230:37:0::1;;9275:8;9230:56;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;9193:109;8137:1176;;;8124:1189;-1:-1:-1::0;9333:25:0;;9360:1:::1;::::0;-1:-1:-1;7814:1556:0;-1:-1:-1;;;;;;;7814:1556:0:o;295:194::-;374:12;392:2;-1:-1:-1;;;;;392:7:0;407:6;420;392:39;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;373:58;;;450:7;442:39;;;;-1:-1:-1;;;442:39:0;;10975:2:1;442:39:0;;;10957:21:1;11014:2;10994:18;;;10987:30;11053:21;11033:18;;;11026:49;11092:18;;442:39:0;10773:343:1;442:39:0;362:127;295:194;;:::o;14:154:1:-;-1:-1:-1;;;;;93:5:1;89:54;82:5;79:65;69:93;;158:1;155;148:12;69:93;14:154;:::o;173:134::-;241:20;;270:31;241:20;270:31;:::i;:::-;173:134;;;:::o;312:247::-;371:6;424:2;412:9;403:7;399:23;395:32;392:52;;;440:1;437;430:12;392:52;479:9;466:23;498:31;523:5;498:31;:::i;:::-;548:5;312:247;-1:-1:-1;;;312:247:1:o;795:156::-;855:5;900:3;891:6;886:3;882:16;878:26;875:46;;;917:1;914;907:12;875:46;-1:-1:-1;939:6:1;795:156;-1:-1:-1;795:156:1:o;956:158::-;1019:5;1064:2;1055:6;1050:3;1046:16;1042:25;1039:45;;;1080:1;1077;1070:12;1119:347;1170:8;1180:6;1234:3;1227:4;1219:6;1215:17;1211:27;1201:55;;1252:1;1249;1242:12;1201:55;-1:-1:-1;1275:20:1;;1318:18;1307:30;;1304:50;;;1350:1;1347;1340:12;1304:50;1387:4;1379:6;1375:17;1363:29;;1439:3;1432:4;1423:6;1415;1411:19;1407:30;1404:39;1401:59;;;1456:1;1453;1446:12;1401:59;1119:347;;;;;:::o;1471:801::-;1621:6;1629;1637;1645;1653;1706:3;1694:9;1685:7;1681:23;1677:33;1674:53;;;1723:1;1720;1713:12;1674:53;1762:9;1749:23;1781:31;1806:5;1781:31;:::i;:::-;1831:5;-1:-1:-1;1855:63:1;1910:7;1905:2;1890:18;;1855:63;:::i;:::-;1845:73;;1937:67;1996:7;1990:3;1979:9;1975:19;1937:67;:::i;:::-;1927:77;;2055:3;2044:9;2040:19;2027:33;2083:18;2075:6;2072:30;2069:50;;;2115:1;2112;2105:12;2069:50;2154:58;2204:7;2195:6;2184:9;2180:22;2154:58;:::i;:::-;1471:801;;;;-1:-1:-1;1471:801:1;;-1:-1:-1;2231:8:1;;2128:84;1471:801;-1:-1:-1;;;1471:801:1:o;2913:205::-;2997:6;3050:2;3038:9;3029:7;3025:23;3021:32;3018:52;;;3066:1;3063;3056:12;3018:52;-1:-1:-1;3089:23:1;;2913:205;-1:-1:-1;2913:205:1:o;3305:159::-;3372:20;;3432:6;3421:18;;3411:29;;3401:57;;3454:1;3451;3444:12;3469:256;3535:6;3543;3596:2;3584:9;3575:7;3571:23;3567:32;3564:52;;;3612:1;3609;3602:12;3564:52;3635:28;3653:9;3635:28;:::i;:::-;3625:38;;3682:37;3715:2;3704:9;3700:18;3682:37;:::i;:::-;3672:47;;3469:256;;;;;:::o;3730:901::-;3920:6;3928;3936;3944;3952;3960;4013:3;4001:9;3992:7;3988:23;3984:33;3981:53;;;4030:1;4027;4020:12;3981:53;4069:9;4056:23;4088:31;4113:5;4088:31;:::i;:::-;4138:5;-1:-1:-1;4162:63:1;4217:7;4212:2;4197:18;;4162:63;:::i;:::-;4152:73;;4244:67;4303:7;4297:3;4286:9;4282:19;4244:67;:::i;:::-;4234:77;;4358:3;4347:9;4343:19;4330:33;4320:43;;4414:3;4403:9;4399:19;4386:33;4442:18;4434:6;4431:30;4428:50;;;4474:1;4471;4464:12;4428:50;4513:58;4563:7;4554:6;4543:9;4539:22;4513:58;:::i;:::-;3730:901;;;;-1:-1:-1;3730:901:1;;-1:-1:-1;3730:901:1;;4590:8;;3730:901;-1:-1:-1;;;3730:901:1:o;5070:1797::-;5289:13;;5044;5037:21;5025:34;;5260:3;5245:19;;5361:4;5353:6;5349:17;5343:24;5376:51;5421:4;5410:9;5406:20;5392:12;5044:13;5037:21;5025:34;;4974:91;5376:51;;5476:4;5468:6;5464:17;5458:24;5491:53;5538:4;5527:9;5523:20;5507:14;5044:13;5037:21;5025:34;;4974:91;5491:53;;5593:4;5585:6;5581:17;5575:24;5608:53;5655:4;5644:9;5640:20;5624:14;5044:13;5037:21;5025:34;;4974:91;5608:53;;5710:4;5702:6;5698:17;5692:24;5725:53;5772:4;5761:9;5757:20;5741:14;5044:13;5037:21;5025:34;;4974:91;5725:53;;5827:4;5819:6;5815:17;5809:24;5842:53;5889:4;5878:9;5874:20;5858:14;5044:13;5037:21;5025:34;;4974:91;5842:53;;5944:4;5936:6;5932:17;5926:24;5959:53;6006:4;5995:9;5991:20;5975:14;5044:13;5037:21;5025:34;;4974:91;5959:53;;6061:4;6053:6;6049:17;6043:24;6076:53;6123:4;6112:9;6108:20;6092:14;5044:13;5037:21;5025:34;;4974:91;6076:53;;6178:6;6170;6166:19;6160:26;6195:55;6242:6;6231:9;6227:22;6211:14;5044:13;5037:21;5025:34;;4974:91;6195:55;;6299:6;6291;6287:19;6281:26;6316:55;6363:6;6352:9;6348:22;6332:14;5044:13;5037:21;5025:34;;4974:91;6316:55;;6420:6;6412;6408:19;6402:26;6437:55;6484:6;6473:9;6469:22;6453:14;5044:13;5037:21;5025:34;;4974:91;6437:55;;6542:6;6534;6530:19;6524:26;6559:56;6607:6;6596:9;6592:22;6575:15;5044:13;5037:21;5025:34;;4974:91;6559:56;;6665:6;6657;6653:19;6647:26;6682:56;6730:6;6719:9;6715:22;6698:15;5044:13;5037:21;5025:34;;4974:91;6682:56;;6788:6;6780;6776:19;6770:26;6805:56;6853:6;6842:9;6838:22;6821:15;5044:13;5037:21;5025:34;;4974:91;6805:56;;5070:1797;;;;:::o;7658:161::-;7725:20;;7785:8;7774:20;;7764:31;;7754:59;;7809:1;7806;7799:12;7824:160;7890:20;;7950:1;7939:20;;;7929:31;;7919:59;;7974:1;7971;7964:12;7989:922;8071:6;8131:3;8119:9;8110:7;8106:23;8102:33;8147:2;8144:22;;;8162:1;8159;8152:12;8144:22;-1:-1:-1;8211:2:1;8205:9;8253:3;8241:16;;8287:18;8272:34;;8308:22;;;8269:62;8266:242;;;-1:-1:-1;;;8361:1:1;8354:88;8465:4;8462:1;8455:15;8493:4;8490:1;8483:15;8266:242;8524:2;8517:22;8563:29;8582:9;8563:29;:::i;:::-;8555:6;8548:45;8626:38;8660:2;8649:9;8645:18;8626:38;:::i;:::-;8621:2;8613:6;8609:15;8602:63;8698:37;8731:2;8720:9;8716:18;8698:37;:::i;:::-;8693:2;8685:6;8681:15;8674:62;8769:36;8801:2;8790:9;8786:18;8769:36;:::i;:::-;8764:2;8756:6;8752:15;8745:61;8840:39;8874:3;8863:9;8859:19;8840:39;:::i;:::-;8834:3;8822:16;;8815:65;8826:6;7989:922;-1:-1:-1;;;7989:922:1:o;8916:184::-;-1:-1:-1;;;8965:1:1;8958:88;9065:4;9062:1;9055:15;9089:4;9086:1;9079:15;9105:135;9144:3;9165:17;;;9162:43;;9185:18;;:::i;:::-;-1:-1:-1;9232:1:1;9221:13;;9105:135::o;9245:158::-;9338:6;9331:14;;;9315;;;9311:35;;9358:16;;9355:42;;;9377:18;;:::i;:::-;9245:158;;;;:::o;9408:125::-;9473:9;;;9494:10;;;9491:36;;;9507:18;;:::i;9978:168::-;10051:9;;;10082;;10099:15;;;10093:22;;10079:37;10069:71;;10120:18;;:::i;10151:274::-;10191:1;10217;10207:189;;-1:-1:-1;;;10249:1:1;10242:88;10353:4;10350:1;10343:15;10381:4;10378:1;10371:15;10207:189;-1:-1:-1;10410:9:1;;10151:274::o;10430:128::-;10497:9;;;10518:11;;;10515:37;;;10532:18;;:::i

Swarm Source

ipfs://1ea146124706c70f4e49e2972f037a8a5e6e30aabccc90b5823661efcd562ad8

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ 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.