Holesky Testnet

Contract

0x63704675f72A47a7a183112700Cb48d4B0A94332

Overview

ETH Balance

0 ETH

Token Holdings

Multichain Info

N/A
Transaction Hash
Method
Block
From
To
Close Deposit34926332025-03-15 3:56:247 hrs ago1742010984IN
0x63704675...4B0A94332
0 ETH00.000001
Close Deposit34926292025-03-15 3:55:367 hrs ago1742010936IN
0x63704675...4B0A94332
0 ETH00.000001
Deposit Transfer...34926292025-03-15 3:55:367 hrs ago1742010936IN
0x63704675...4B0A94332
0 ETH00.000001
Deposit Transfer34926272025-03-15 3:55:007 hrs ago1742010900IN
0x63704675...4B0A94332
0 ETH00.000001
Deposit Transfer34926252025-03-15 3:54:367 hrs ago1742010876IN
0x63704675...4B0A94332
0 ETH00.000001
Close Deposit34926242025-03-15 3:54:247 hrs ago1742010864IN
0x63704675...4B0A94332
0 ETH00.000001
Deposit Single T...34926212025-03-15 3:53:487 hrs ago1742010828IN
0x63704675...4B0A94332
0 ETH00.000001
Create Deposit34926192025-03-15 3:53:007 hrs ago1742010780IN
0x63704675...4B0A94332
0 ETH00.000001
Deposit Single T...34926162025-03-15 3:52:247 hrs ago1742010744IN
0x63704675...4B0A94332
0 ETH00.000001
Create Deposit34926142025-03-15 3:52:007 hrs ago1742010720IN
0x63704675...4B0A94332
0 ETH00.000001
Create Deposit34926142025-03-15 3:52:007 hrs ago1742010720IN
0x63704675...4B0A94332
0 ETH00.000001
Create Deposit34926042025-03-15 3:49:487 hrs ago1742010588IN
0x63704675...4B0A94332
0 ETH00.000001
Close Deposit34815402025-03-13 4:02:242 days ago1741838544IN
0x63704675...4B0A94332
0 ETH00.000001
Close Deposit34815292025-03-13 3:59:242 days ago1741838364IN
0x63704675...4B0A94332
0 ETH00.000001
Deposit Transfer...34815292025-03-13 3:59:242 days ago1741838364IN
0x63704675...4B0A94332
0 ETH00.000001
Deposit Transfer34815252025-03-13 3:58:242 days ago1741838304IN
0x63704675...4B0A94332
0 ETH00.000001
Deposit Transfer34815232025-03-13 3:57:482 days ago1741838268IN
0x63704675...4B0A94332
0 ETH00.000001
Close Deposit34815232025-03-13 3:57:482 days ago1741838268IN
0x63704675...4B0A94332
0 ETH00.000001
Deposit Single T...34815222025-03-13 3:57:242 days ago1741838244IN
0x63704675...4B0A94332
0 ETH00.000001
Create Deposit34815152025-03-13 3:55:002 days ago1741838100IN
0x63704675...4B0A94332
0 ETH00.000001
Deposit Single T...34815122025-03-13 3:54:122 days ago1741838052IN
0x63704675...4B0A94332
0 ETH00.000001
Create Deposit34815092025-03-13 3:53:362 days ago1741838016IN
0x63704675...4B0A94332
0 ETH00.000001
Create Deposit34815092025-03-13 3:53:362 days ago1741838016IN
0x63704675...4B0A94332
0 ETH00.000001
Create Deposit34815032025-03-13 3:52:122 days ago1741837932IN
0x63704675...4B0A94332
0 ETH00.000001
Close Deposit34760202025-03-12 3:55:483 days ago1741751748IN
0x63704675...4B0A94332
0 ETH0.000000070.00130223
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
LockPayment

Compiler Version
v0.8.26+commit.8a97fa7a

Optimization Enabled:
Yes with 2000 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2024-08-02
*/

// SPDX-License-Identifier: MIT
pragma solidity 0.8.26;

/**
 * Out of the IERC20 interface, only the transfer and transferFrom functions are used.
 */
interface IERC20 {
    function transfer(address to, uint256 amount) external returns (bool);

    function transferFrom(address from, address to, uint256 amount) external returns (bool);
}

/**
  * Actors:
  * - Spender - the address that spends the funds
  * - Funder - the address that deposits the funds
  */

interface ILockPayment {
    struct DepositView {
        uint256 id;     //unique id
        uint64 nonce;  //nonce unique for each funder
        address funder; //address that can spend the funds provided by customer
        address spender; //address that can spend the funds provided by customer
        uint128 amount; //remaining funds locked
        uint64 validTo; //after this timestamp funds can be returned to customer
    }

    function closeDeposit(uint256 id) external;

    function terminateDeposit(uint64 nonce) external;

    function depositSingleTransfer(uint256 id, address addr, uint128 amount) external;

    function depositTransfer(uint256 id, bytes32[] calldata payments) external;

    function depositSingleTransferAndClose(uint256 id, address addr, uint128 amount) external;

    function depositTransferAndClose(uint256 id, bytes32[] calldata payments) external;

    function getDeposit(uint256 id) external view returns (DepositView memory);

    function getDepositByNonce(uint64 nonce, address funder) external view returns (DepositView memory);

    function getValidateDepositSignature() external pure returns (string memory);
}

/**
 * @dev This contract is part of GLM payment system. Visit https://golem.network for details.
 * Be careful when interacting with this contract, because it has no exit mechanism. Any assets sent directly to this contract will be lost.
 */
contract LockPayment is ILockPayment {
    IERC20 public immutable GLM;

    struct Deposit {
        address spender; //address that can spend the funds provided by customer
        uint64 validTo; //after this timestamp funds can be returned to customer
        uint128 amount; //remaining funds locked (assuming max value 1 billion GLMs <=~ 2**90 gwei)
        uint128 feeAmount; //fee amount locked for spender
    }

    uint64 immutable public CONTRACT_VERSION = 0x2;
    uint64 immutable public CONTRACT_ID = 0x167583000; //6028800000
    // CONTRACT_ID_AND_VERSION = CONTRACT_ID ^ CONTRACT_VERSION
    // CONTRACT_ID_AND_VERSION = CONTRACT_ID | CONTRACT_VERSION
    // CONTRACT_ID_AND_VERSION = CONTRACT_ID + CONTRACT_VERSION
    uint64 immutable public CONTRACT_ID_AND_VERSION = 0x167583002; //6028800002

    event DepositCreated(uint256 indexed id, address spender);
    event DepositExtended(uint256 indexed id, address spender);
    event DepositClosed(uint256 indexed id, address spender);
    event DepositTerminated(uint256 indexed id, address spender);
    event DepositFeeTransfer(uint256 indexed id, address spender, uint128 amount);
    event DepositTransfer(uint256 indexed id, address spender, address recipient, uint128 amount);
    // deposit is stored using arbitrary id
    // maybe should be private? But no point to hide it
    mapping(uint256 => Deposit) public deposits;

    // only strictly ERC20 compliant tokens are supported
    constructor(IERC20 _GLM) {
        require(CONTRACT_ID_AND_VERSION == CONTRACT_ID | CONTRACT_VERSION);
        //id has special property that CONTRACT_ID | CONTRACT_VERSION == CONTRACT_ID + CONTRACT_VERSION
        require(CONTRACT_ID | CONTRACT_VERSION == CONTRACT_ID + CONTRACT_VERSION);
        require(CONTRACT_ID ^ CONTRACT_VERSION == CONTRACT_ID + CONTRACT_VERSION);
        GLM = _GLM;
    }

    function idFromNonce(uint64 nonce) public view returns (uint256) {
        return idFromNonceAndFunder(nonce, msg.sender);
    }

    function idFromNonceAndFunder(uint64 nonce, address funder) public pure returns (uint256) {
        return (uint256(uint160(funder)) << 96) ^ uint256(nonce);
    }

    function nonceFromId(uint256 id) public pure returns (uint64) {
        return uint64(id);
    }

    function funderFromId(uint256 id) public pure returns (address) {
        return address(uint160(id >> 96));
    }

    function getDeposit(uint256 id) external view returns (DepositView memory) {
        Deposit memory deposit = deposits[id];
        return DepositView(id, nonceFromId(id), funderFromId(id), deposit.spender, deposit.amount, deposit.validTo);
    }

    function getDepositByNonce(uint64 nonce, address funder) external view returns (DepositView memory) {
        uint256 id = idFromNonceAndFunder(nonce, funder);
        Deposit memory deposit = deposits[id];
        return DepositView(id, nonce, funder, deposit.spender, deposit.amount, deposit.validTo);
    }

    // createDeposit - Customer locks funds for usage by spender
    //
    // nonce - used to build unique id (from Funder address and nonce)
    // spender - the address that is allowed to spend the funds regardless of time
    // amount - amount of GLM tokens to lock
    // flatFeeAmount - amount of GLM tokens given to spender (non-refundable). Fee is claimed by spender when called payoutSingle or payoutMultiple first time.
    // validToTimestamp - time until which funds are guaranteed to be locked for spender.
    //           Spender still can use the funds after this timestamp,
    //           but customer can request the funds to be returned clearing deposit after (or equal to) this timestamp.
    function createDeposit(uint64 nonce, address spender, uint128 amount, uint128 flatFeeAmount, uint64 validToTimestamp) external returns (uint256) {
        //check if id is not used
        uint256 id = idFromNonce(nonce);
        //this checks if deposit is not already created with this id
        require(deposits[id].spender == address(0), "deposits[id].spender == address(0)");
        require(amount > 0, "amount > 0");
        require(spender != address(0), "spender cannot be null address");
        require(msg.sender != spender, "spender cannot be funder");
        deposits[id] = Deposit(spender, validToTimestamp, amount, flatFeeAmount);
        emit DepositCreated(id, spender);
        require(GLM.transferFrom(msg.sender, address(this), amount + flatFeeAmount), "transferFrom failed");
        return id;
    }

    function extendDeposit(uint64 nonce, uint128 additionalAmount, uint128 additionalFlatFee, uint64 validToTimestamp) external {
        uint256 id = idFromNonce(nonce);
        Deposit memory deposit = deposits[id];
        emit DepositExtended(id, deposit.spender);
        require(deposit.validTo <= validToTimestamp, "deposit.validTo <= validTo");
        deposit.amount += additionalAmount;
        deposit.feeAmount += additionalFlatFee;
        deposit.validTo = validToTimestamp;
        deposits[id] = deposit;
        require(GLM.transferFrom(msg.sender, address(this), additionalAmount + additionalFlatFee), "transferFrom failed");
    }

    // Spender can close deposit anytime claiming fee and returning rest of funds to Funder
    function closeDeposit(uint256 id) public {
        Deposit memory deposit = deposits[id];
        // customer cannot return funds before block_no
        // sender can return funds at any time
        require(msg.sender == deposit.spender);
        emit DepositClosed(id, deposit.spender);
        require(GLM.transfer(funderFromId(id), deposit.amount), "return transfer failed");
        if (deposit.feeAmount > 0) {
            emit DepositFeeTransfer(id, deposit.spender, deposit.feeAmount);
            require(GLM.transfer(deposit.spender, deposit.feeAmount), "fee transfer failed");
        }
        deposits[id].feeAmount = 0;
        deposits[id].amount = 0;
        //leave this in deposit to prevent recreating deposit with the same id
        deposits[id].spender = 0x0000000000000000000000000000000000000Bad;
    }

    // Funder can terminate deposit after validTo date elapses
    function terminateDeposit(uint64 nonce) external {
        uint256 id = idFromNonce(nonce);
        Deposit memory deposit = deposits[id];
        //The following check is not needed (Funder is in id), but added for clarity
        require(funderFromId(id) == msg.sender, "funderFromId(id) == msg.sender");
        // Check for time condition
        require(deposit.validTo < block.timestamp, "deposit.validTo < block.timestamp");
        emit DepositTerminated(id, deposit.spender);
        require(GLM.transfer(msg.sender, deposit.amount + deposit.feeAmount), "transfer failed");
        deposits[id].amount = 0;
        deposits[id].feeAmount = 0;
        //leave this in deposit to prevent recreating deposit with the same id
        deposits[id].spender = 0x0000000000000000000000000000000000000Bad;
    }

    function depositSingleTransfer(uint256 id, address addr, uint128 amount) public {
        Deposit memory deposit = deposits[id];
        require(msg.sender == deposit.spender, "msg.sender == deposit.spender");
        require(addr != deposit.spender, "cannot transfer to spender");
        require(deposit.amount >= amount, "deposit.amount >= amount");
        emit DepositTransfer(id, deposit.spender, addr, amount);
        require(GLM.transfer(addr, amount), "GLM transfer failed");
        deposit.amount -= amount;
        deposits[id].amount = deposit.amount;
    }

    function depositTransfer(uint256 id, bytes32[] calldata payments) public {
        Deposit memory deposit = deposits[id];
        require(msg.sender == deposit.spender, "msg.sender == deposit.spender");

        for (uint32 i = 0; i < payments.length; ++i) {
            // A payment contains compressed data:
            // first 160 bits (20 bytes) is an address.
            // following 96 bits (12 bytes) is a value,
            bytes32 payment = payments[i];
            address addr = address(bytes20(payment));
            uint128 amount = uint128(uint256(payment) % 2 ** 96);
            require(addr != deposit.spender, "cannot transfer to spender");
            emit DepositTransfer(id, deposit.spender, addr, amount);
            require(GLM.transfer(addr, amount), "GLM transfer failed");
            require(deposit.amount >= amount, "deposit.amount >= amount");
            deposit.amount -= amount;
        }

        deposits[id].amount = deposit.amount;
    }

    function depositSingleTransferAndClose(uint256 id, address addr, uint128 amount) external {
        depositSingleTransfer(id, addr, amount);
        closeDeposit(id);
    }

    function depositTransferAndClose(uint256 id, bytes32[] calldata payments) external {
        depositTransfer(id, payments);
        closeDeposit(id);
    }

    //validateDeposit - validate extra fields not covered by common validation
    function validateDeposit(uint256 id, uint128 flatFeeAmount) external view returns (string memory) {
        Deposit memory deposit = deposits[id];
        if (deposit.spender == address(0)) {
            return "failed due to wrong deposit id";
        }
        if (flatFeeAmount != deposit.feeAmount) {
            return "failed due to flatFeeAmount mismatch";
        }
        return "valid";
    }

    function getValidateDepositSignature() external pure returns (string memory) {
        // this signature may be different if other compatible fee scheme is deployed
        return '[{"type": "uint256", "name": "id"}, {"type": "uint128", "name": "flatFeeAmount"}]';
    }
}

Contract ABI

API
[{"inputs":[{"internalType":"contract IERC20","name":"_GLM","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"spender","type":"address"}],"name":"DepositClosed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"spender","type":"address"}],"name":"DepositCreated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"spender","type":"address"}],"name":"DepositExtended","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"}],"name":"DepositFeeTransfer","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"spender","type":"address"}],"name":"DepositTerminated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"id","type":"uint256"},{"indexed":false,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint128","name":"amount","type":"uint128"}],"name":"DepositTransfer","type":"event"},{"inputs":[],"name":"CONTRACT_ID","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CONTRACT_ID_AND_VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"CONTRACT_VERSION","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"GLM","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"closeDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"uint128","name":"flatFeeAmount","type":"uint128"},{"internalType":"uint64","name":"validToTimestamp","type":"uint64"}],"name":"createDeposit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"depositSingleTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"address","name":"addr","type":"address"},{"internalType":"uint128","name":"amount","type":"uint128"}],"name":"depositSingleTransferAndClose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes32[]","name":"payments","type":"bytes32[]"}],"name":"depositTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"bytes32[]","name":"payments","type":"bytes32[]"}],"name":"depositTransferAndClose","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"deposits","outputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint64","name":"validTo","type":"uint64"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"uint128","name":"feeAmount","type":"uint128"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"uint128","name":"additionalAmount","type":"uint128"},{"internalType":"uint128","name":"additionalFlatFee","type":"uint128"},{"internalType":"uint64","name":"validToTimestamp","type":"uint64"}],"name":"extendDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"funderFromId","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"getDeposit","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"address","name":"funder","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"uint64","name":"validTo","type":"uint64"}],"internalType":"struct ILockPayment.DepositView","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"address","name":"funder","type":"address"}],"name":"getDepositByNonce","outputs":[{"components":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"address","name":"funder","type":"address"},{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint128","name":"amount","type":"uint128"},{"internalType":"uint64","name":"validTo","type":"uint64"}],"internalType":"struct ILockPayment.DepositView","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getValidateDepositSignature","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}],"name":"idFromNonce","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint64","name":"nonce","type":"uint64"},{"internalType":"address","name":"funder","type":"address"}],"name":"idFromNonceAndFunder","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"}],"name":"nonceFromId","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint64","name":"nonce","type":"uint64"}],"name":"terminateDeposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"id","type":"uint256"},{"internalType":"uint128","name":"flatFeeAmount","type":"uint128"}],"name":"validateDeposit","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"}]

610100604052600260a05264016758300060c05264016758300260e052348015610027575f80fd5b50604051612176380380612176833981016040819052610046916100e0565b60a05160c051176001600160401b031660e0516001600160401b03161461006b575f80fd5b60a05160c05161007b919061010d565b6001600160401b031660a05160c051176001600160401b03161461009d575f80fd5b60a05160c0516100ad919061010d565b6001600160401b031660a05160c051186001600160401b0316146100cf575f80fd5b6001600160a01b031660805261013e565b5f602082840312156100f0575f80fd5b81516001600160a01b0381168114610106575f80fd5b9392505050565b6001600160401b03818116838216019081111561013857634e487b7160e01b5f52601160045260245ffd5b92915050565b60805160a05160c05160e051611fd46101a25f395f61054301525f61022201525f6101c101525f818161044c015281816107db01528181610c0101528181610ef60152818161109101528181611346015281816117730152611aad0152611fd45ff3fe608060405234801561000f575f80fd5b506004361061016e575f3560e01c8063841dbca6116100d2578063ac658a4811610088578063d61a095611610063578063d61a095614610565578063ee7b7ad814610578578063fbe1e3311461058b575f80fd5b8063ac658a4814610492578063b02c43d0146104a5578063d56052571461053e575f80fd5b80638c338c86116100b85780638c338c86146104475780639e40a5cf1461046e5780639f9fb9681461047f575f80fd5b8063841dbca6146102c65780638853a8de146102d9575f80fd5b80634ed5ddb011610127578063540469b81161010d578063540469b81461026c57806373930ff81461027f57806383b24c52146102b3575f80fd5b80634ed5ddb014610244578063519f5dad14610259575f80fd5b806338b903331161015757806338b90333146101bc5780633a14b91f146101fc5780633e35487c1461021d575f80fd5b80631ae023701461017257806330edc21d14610190575b5f80fd5b61017a61059e565b6040516101879190611bd8565b60405180910390f35b6101a461019e366004611c2b565b60601c90565b6040516001600160a01b039091168152602001610187565b6101e37f000000000000000000000000000000000000000000000000000000000000000081565b60405167ffffffffffffffff9091168152602001610187565b61020f61020a366004611c5e565b6105be565b604051908152602001610187565b6101e37f000000000000000000000000000000000000000000000000000000000000000081565b610257610252366004611c7e565b6105e5565b005b61020f610267366004611d24565b61097a565b61017a61027a366004611d85565b610d1e565b61020f61028d366004611daf565b6bffffffffffffffffffffffff19606082901b1667ffffffffffffffff83161892915050565b6102576102c1366004611c2b565b610e43565b6102576102d4366004611c5e565b6111af565b6103cd6102e7366004611daf565b6040805160c080820183525f80835260208084018290528385018290526060808501839052608080860184905260a095860184905267ffffffffffffffff98891688831b6bffffffffffffffffffffffff191681188086528585529488902088518084018a5281546001600160a01b038082168352600160a01b9091048d168288019081526001909301546001600160801b03808216848e01908152600160801b9092048116848901528c519a8b018d52988a52968901939093529982169887019890985297519097169084015251169381019390935290519092169181019190915290565b60405161018791905f60c0820190508251825267ffffffffffffffff60208401511660208301526001600160a01b0360408401511660408301526001600160a01b0360608401511660608301526001600160801b03608084015116608083015267ffffffffffffffff60a08401511660a083015292915050565b6101a47f000000000000000000000000000000000000000000000000000000000000000081565b6101e361047c366004611c2b565b90565b6103cd61048d366004611c2b565b6114a4565b6102576104a0366004611dd7565b6115a3565b6104fc6104b3366004611c2b565b5f60208190529081526040902080546001909101546001600160a01b03821691600160a01b900467ffffffffffffffff16906001600160801b0380821691600160801b90041684565b604080516001600160a01b03909516855267ffffffffffffffff90931660208501526001600160801b0391821692840192909252166060820152608001610187565b6101e37f000000000000000000000000000000000000000000000000000000000000000081565b610257610573366004611c7e565b611890565b610257610586366004611e28565b6118a9565b610257610599366004611e28565b611bcd565b6060604051806080016040528060518152602001611f2a60519139905090565b5f67ffffffffffffffff82163360601b6bffffffffffffffffffffffff1916185b92915050565b5f8381526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16938201939093526001909101546001600160801b0380821694830194909452600160801b90049092166060830152331461069e5760405162461bcd60e51b815260206004820152601d60248201527f6d73672e73656e646572203d3d206465706f7369742e7370656e64657200000060448201526064015b60405180910390fd5b5f5b63ffffffff811683111561092b575f84848363ffffffff168181106106c7576106c7611e61565b6020029190910135915050606081901c5f6106ef6c0100000000000000000000000084611e75565b9050845f01516001600160a01b0316826001600160a01b0316036107555760405162461bcd60e51b815260206004820152601a60248201527f63616e6e6f74207472616e7366657220746f207370656e6465720000000000006044820152606401610695565b8451604080516001600160a01b03928316815291841660208301526001600160801b0383169082015288907f4e024b1a4230fccb351fc854e250a45569711fc304c1af0abc494165d29360639060600160405180910390a260405163a9059cbb60e01b81526001600160a01b0383811660048301526001600160801b03831660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af1158015610821573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108459190611e94565b6108915760405162461bcd60e51b815260206004820152601360248201527f474c4d207472616e73666572206661696c6564000000000000000000000000006044820152606401610695565b806001600160801b031685604001516001600160801b031610156108f75760405162461bcd60e51b815260206004820152601860248201527f6465706f7369742e616d6f756e74203e3d20616d6f756e7400000000000000006044820152606401610695565b80856040018181516109099190611ec7565b6001600160801b03169052506109249250839150611ee69050565b90506106a0565b506040908101515f9485526020859052932060010180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001600160801b03909416939093179092555050565b5f80610985876105be565b5f818152602081905260409020549091506001600160a01b031615610a125760405162461bcd60e51b815260206004820152602260248201527f6465706f736974735b69645d2e7370656e646572203d3d20616464726573732860448201527f30290000000000000000000000000000000000000000000000000000000000006064820152608401610695565b5f856001600160801b031611610a6a5760405162461bcd60e51b815260206004820152600a60248201527f616d6f756e74203e2030000000000000000000000000000000000000000000006044820152606401610695565b6001600160a01b038616610ac05760405162461bcd60e51b815260206004820152601e60248201527f7370656e6465722063616e6e6f74206265206e756c6c206164647265737300006044820152606401610695565b6001600160a01b0386163303610b185760405162461bcd60e51b815260206004820152601860248201527f7370656e6465722063616e6e6f742062652066756e64657200000000000000006044820152606401610695565b604080516080810182526001600160a01b0388811680835267ffffffffffffffff87811660208086019182526001600160801b038c81168789019081528c8216606089019081525f8b81528085528a9020985189549551909616600160a01b027fffffffff000000000000000000000000000000000000000000000000000000009095169590971694909417929092178655915193518116600160801b02931692909217600190930192909255915190815282917f788f62f195987bb297862ea62b31d08e6c02dd48c82691e3690b2a32b8fb759b910160405180910390a26001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000166323b872dd3330610c32888a611f0a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301526001600160801b031660448201526064016020604051808303815f875af1158015610ca4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc89190611e94565b610d145760405162461bcd60e51b815260206004820152601360248201527f7472616e7366657246726f6d206661696c6564000000000000000000000000006044820152606401610695565b9695505050505050565b5f8281526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16938201939093526001909101546001600160801b0380821694830194909452600160801b90049092166060808401919091529190610dc957505060408051808201909152601e81527f6661696c65642064756520746f2077726f6e67206465706f736974206964000060208201526105df565b80606001516001600160801b0316836001600160801b031614610e0757604051806060016040528060248152602001611f7b602491399150506105df565b505060408051808201909152600581527f76616c6964000000000000000000000000000000000000000000000000000000602082015292915050565b5f8181526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16938201939093526001909101546001600160801b0380821694830194909452600160801b900490921660608301523314610eb3575f80fd5b80516040516001600160a01b03909116815282907f8ac07cc6e38c6222dd0309c80353c1962354bacf222b825d7401cc80e93ff3cc9060200160405180910390a27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb610f2d8460601c90565b60408085015190517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526001600160801b031660248201526044016020604051808303815f875af1158015610f9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fbf9190611e94565b61100b5760405162461bcd60e51b815260206004820152601660248201527f72657475726e207472616e73666572206661696c6564000000000000000000006044820152606401610695565b60608101516001600160801b03161561116d5780516060820151604080516001600160a01b0390931683526001600160801b03909116602083015283917fed2c74ec5ee17d93f94a64e9ca42f75d33868e90f338237709b611ac1810a40f910160405180910390a28051606082015160405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169263a9059cbb926110e1926004016001600160a01b039290921682526001600160801b0316602082015260400190565b6020604051808303815f875af11580156110fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111219190611e94565b61116d5760405162461bcd60e51b815260206004820152601360248201527f666565207472616e73666572206661696c6564000000000000000000000000006044820152606401610695565b505f908152602081905260408120600181019190915580547fffffffffffffffffffffffff000000000000000000000000000000000000000016610bad179055565b5f6111b9826105be565b5f8181526020818152604091829020825160808101845281546001600160a01b038116825267ffffffffffffffff600160a01b9091041692810192909252600101546001600160801b0380821693830193909352600160801b900490911660608201529091503361122a8360601c90565b6001600160a01b0316146112805760405162461bcd60e51b815260206004820152601e60248201527f66756e64657246726f6d496428696429203d3d206d73672e73656e64657200006044820152606401610695565b42816020015167ffffffffffffffff16106113035760405162461bcd60e51b815260206004820152602160248201527f6465706f7369742e76616c6964546f203c20626c6f636b2e74696d657374616d60448201527f70000000000000000000000000000000000000000000000000000000000000006064820152608401610695565b80516040516001600160a01b03909116815282907f843d1bd667ac549c763b55fefb74223882ce415856e0e243f24ed3b97f572f109060200160405180910390a27f00000000000000000000000000000000000000000000000000000000000000006001600160a01b031663a9059cbb33836060015184604001516113889190611f0a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526001600160801b031660248201526044016020604051808303815f875af11580156113f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114159190611e94565b6114615760405162461bcd60e51b815260206004820152600f60248201527f7472616e73666572206661696c656400000000000000000000000000000000006044820152606401610695565b505f908152602081905260408120600181019190915580547fffffffffffffffffffffffff000000000000000000000000000000000000000016610bad17905550565b6040805160c080820183525f80835260208084018290528385018290526060808501839052608080860184905260a08601849052878452838352928690208651938401875280546001600160a01b038116855267ffffffffffffffff600160a01b9091041684840152600101546001600160801b0380821685890152600160801b90910416908301528451928301909452848252919281018467ffffffffffffffff1681526020016115568560601c90565b6001600160a01b03168152602001825f01516001600160a01b0316815260200182604001516001600160801b03168152602001826020015167ffffffffffffffff16815250915050919050565b5f6115ad856105be565b5f8181526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16828501526001909201546001600160801b0380821683870152600160801b9091041660608201529251908152929350909183917f28b2e97799d08959c3ff7a213e5de97fe58327ecbfdb497e039d5b45b85c4627910160405180910390a28267ffffffffffffffff16816020015167ffffffffffffffff1611156116ab5760405162461bcd60e51b815260206004820152601a60248201527f6465706f7369742e76616c6964546f203c3d2076616c6964546f0000000000006044820152606401610695565b84816040018181516116bd9190611f0a565b6001600160801b03169052506060810180518591906116dd908390611f0a565b6001600160801b0390811690915267ffffffffffffffff80861660208086019182525f87815290819052604090819020865181549351909416600160a01b027fffffffff000000000000000000000000000000000000000000000000000000009093166001600160a01b039485161792909217825585015160608601518416600160801b029316929092176001909201919091557f00000000000000000000000000000000000000000000000000000000000000001690506323b872dd33306117a6888a611f0a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301526001600160801b031660448201526064016020604051808303815f875af1158015611818573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061183c9190611e94565b6118885760405162461bcd60e51b815260206004820152601360248201527f7472616e7366657246726f6d206661696c6564000000000000000000000000006044820152606401610695565b505050505050565b61189b8383836105e5565b6118a483610e43565b505050565b5f8381526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16938201939093526001909101546001600160801b0380821694830194909452600160801b90049092166060830152331461195d5760405162461bcd60e51b815260206004820152601d60248201527f6d73672e73656e646572203d3d206465706f7369742e7370656e6465720000006044820152606401610695565b805f01516001600160a01b0316836001600160a01b0316036119c15760405162461bcd60e51b815260206004820152601a60248201527f63616e6e6f74207472616e7366657220746f207370656e6465720000000000006044820152606401610695565b816001600160801b031681604001516001600160801b03161015611a275760405162461bcd60e51b815260206004820152601860248201527f6465706f7369742e616d6f756e74203e3d20616d6f756e7400000000000000006044820152606401610695565b8051604080516001600160a01b03928316815291851660208301526001600160801b0384169082015284907f4e024b1a4230fccb351fc854e250a45569711fc304c1af0abc494165d29360639060600160405180910390a260405163a9059cbb60e01b81526001600160a01b0384811660048301526001600160801b03841660248301527f0000000000000000000000000000000000000000000000000000000000000000169063a9059cbb906044016020604051808303815f875af1158015611af3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b179190611e94565b611b635760405162461bcd60e51b815260206004820152601360248201527f474c4d207472616e73666572206661696c6564000000000000000000000000006044820152606401610695565b8181604001818151611b759190611ec7565b6001600160801b039081169091526040928301515f96875260208790529290952060010180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169290951691909117909355505050565b61189b8383836118a9565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f60208284031215611c3b575f80fd5b5035919050565b803567ffffffffffffffff81168114611c59575f80fd5b919050565b5f60208284031215611c6e575f80fd5b611c7782611c42565b9392505050565b5f805f60408486031215611c90575f80fd5b83359250602084013567ffffffffffffffff811115611cad575f80fd5b8401601f81018613611cbd575f80fd5b803567ffffffffffffffff811115611cd3575f80fd5b8660208260051b8401011115611ce7575f80fd5b939660209190910195509293505050565b80356001600160a01b0381168114611c59575f80fd5b80356001600160801b0381168114611c59575f80fd5b5f805f805f60a08688031215611d38575f80fd5b611d4186611c42565b9450611d4f60208701611cf8565b9350611d5d60408701611d0e565b9250611d6b60608701611d0e565b9150611d7960808701611c42565b90509295509295909350565b5f8060408385031215611d96575f80fd5b82359150611da660208401611d0e565b90509250929050565b5f8060408385031215611dc0575f80fd5b611dc983611c42565b9150611da660208401611cf8565b5f805f8060808587031215611dea575f80fd5b611df385611c42565b9350611e0160208601611d0e565b9250611e0f60408601611d0e565b9150611e1d60608601611c42565b905092959194509250565b5f805f60608486031215611e3a575f80fd5b83359250611e4a60208501611cf8565b9150611e5860408501611d0e565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f82611e8f57634e487b7160e01b5f52601260045260245ffd5b500690565b5f60208284031215611ea4575f80fd5b81518015158114611c77575f80fd5b634e487b7160e01b5f52601160045260245ffd5b6001600160801b0382811682821603908111156105df576105df611eb3565b5f63ffffffff821663ffffffff8103611f0157611f01611eb3565b60010192915050565b6001600160801b0381811683821601908111156105df576105df611eb356fe5b7b2274797065223a202275696e74323536222c20226e616d65223a20226964227d2c207b2274797065223a202275696e74313238222c20226e616d65223a2022666c6174466565416d6f756e74227d5d6661696c65642064756520746f20666c6174466565416d6f756e74206d69736d61746368a2646970667358221220f7bb42799dc6a5452f7c4fadcb18a1be32e6ab84701a98cd4950c7db9617ee5c64736f6c634300081a00330000000000000000000000008888888815bf4db87e57b609a50f938311eed068

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061016e575f3560e01c8063841dbca6116100d2578063ac658a4811610088578063d61a095611610063578063d61a095614610565578063ee7b7ad814610578578063fbe1e3311461058b575f80fd5b8063ac658a4814610492578063b02c43d0146104a5578063d56052571461053e575f80fd5b80638c338c86116100b85780638c338c86146104475780639e40a5cf1461046e5780639f9fb9681461047f575f80fd5b8063841dbca6146102c65780638853a8de146102d9575f80fd5b80634ed5ddb011610127578063540469b81161010d578063540469b81461026c57806373930ff81461027f57806383b24c52146102b3575f80fd5b80634ed5ddb014610244578063519f5dad14610259575f80fd5b806338b903331161015757806338b90333146101bc5780633a14b91f146101fc5780633e35487c1461021d575f80fd5b80631ae023701461017257806330edc21d14610190575b5f80fd5b61017a61059e565b6040516101879190611bd8565b60405180910390f35b6101a461019e366004611c2b565b60601c90565b6040516001600160a01b039091168152602001610187565b6101e37f000000000000000000000000000000000000000000000000000000000000000281565b60405167ffffffffffffffff9091168152602001610187565b61020f61020a366004611c5e565b6105be565b604051908152602001610187565b6101e37f000000000000000000000000000000000000000000000000000000016758300081565b610257610252366004611c7e565b6105e5565b005b61020f610267366004611d24565b61097a565b61017a61027a366004611d85565b610d1e565b61020f61028d366004611daf565b6bffffffffffffffffffffffff19606082901b1667ffffffffffffffff83161892915050565b6102576102c1366004611c2b565b610e43565b6102576102d4366004611c5e565b6111af565b6103cd6102e7366004611daf565b6040805160c080820183525f80835260208084018290528385018290526060808501839052608080860184905260a095860184905267ffffffffffffffff98891688831b6bffffffffffffffffffffffff191681188086528585529488902088518084018a5281546001600160a01b038082168352600160a01b9091048d168288019081526001909301546001600160801b03808216848e01908152600160801b9092048116848901528c519a8b018d52988a52968901939093529982169887019890985297519097169084015251169381019390935290519092169181019190915290565b60405161018791905f60c0820190508251825267ffffffffffffffff60208401511660208301526001600160a01b0360408401511660408301526001600160a01b0360608401511660608301526001600160801b03608084015116608083015267ffffffffffffffff60a08401511660a083015292915050565b6101a47f0000000000000000000000008888888815bf4db87e57b609a50f938311eed06881565b6101e361047c366004611c2b565b90565b6103cd61048d366004611c2b565b6114a4565b6102576104a0366004611dd7565b6115a3565b6104fc6104b3366004611c2b565b5f60208190529081526040902080546001909101546001600160a01b03821691600160a01b900467ffffffffffffffff16906001600160801b0380821691600160801b90041684565b604080516001600160a01b03909516855267ffffffffffffffff90931660208501526001600160801b0391821692840192909252166060820152608001610187565b6101e37f000000000000000000000000000000000000000000000000000000016758300281565b610257610573366004611c7e565b611890565b610257610586366004611e28565b6118a9565b610257610599366004611e28565b611bcd565b6060604051806080016040528060518152602001611f2a60519139905090565b5f67ffffffffffffffff82163360601b6bffffffffffffffffffffffff1916185b92915050565b5f8381526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16938201939093526001909101546001600160801b0380821694830194909452600160801b90049092166060830152331461069e5760405162461bcd60e51b815260206004820152601d60248201527f6d73672e73656e646572203d3d206465706f7369742e7370656e64657200000060448201526064015b60405180910390fd5b5f5b63ffffffff811683111561092b575f84848363ffffffff168181106106c7576106c7611e61565b6020029190910135915050606081901c5f6106ef6c0100000000000000000000000084611e75565b9050845f01516001600160a01b0316826001600160a01b0316036107555760405162461bcd60e51b815260206004820152601a60248201527f63616e6e6f74207472616e7366657220746f207370656e6465720000000000006044820152606401610695565b8451604080516001600160a01b03928316815291841660208301526001600160801b0383169082015288907f4e024b1a4230fccb351fc854e250a45569711fc304c1af0abc494165d29360639060600160405180910390a260405163a9059cbb60e01b81526001600160a01b0383811660048301526001600160801b03831660248301527f0000000000000000000000008888888815bf4db87e57b609a50f938311eed068169063a9059cbb906044016020604051808303815f875af1158015610821573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906108459190611e94565b6108915760405162461bcd60e51b815260206004820152601360248201527f474c4d207472616e73666572206661696c6564000000000000000000000000006044820152606401610695565b806001600160801b031685604001516001600160801b031610156108f75760405162461bcd60e51b815260206004820152601860248201527f6465706f7369742e616d6f756e74203e3d20616d6f756e7400000000000000006044820152606401610695565b80856040018181516109099190611ec7565b6001600160801b03169052506109249250839150611ee69050565b90506106a0565b506040908101515f9485526020859052932060010180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000166001600160801b03909416939093179092555050565b5f80610985876105be565b5f818152602081905260409020549091506001600160a01b031615610a125760405162461bcd60e51b815260206004820152602260248201527f6465706f736974735b69645d2e7370656e646572203d3d20616464726573732860448201527f30290000000000000000000000000000000000000000000000000000000000006064820152608401610695565b5f856001600160801b031611610a6a5760405162461bcd60e51b815260206004820152600a60248201527f616d6f756e74203e2030000000000000000000000000000000000000000000006044820152606401610695565b6001600160a01b038616610ac05760405162461bcd60e51b815260206004820152601e60248201527f7370656e6465722063616e6e6f74206265206e756c6c206164647265737300006044820152606401610695565b6001600160a01b0386163303610b185760405162461bcd60e51b815260206004820152601860248201527f7370656e6465722063616e6e6f742062652066756e64657200000000000000006044820152606401610695565b604080516080810182526001600160a01b0388811680835267ffffffffffffffff87811660208086019182526001600160801b038c81168789019081528c8216606089019081525f8b81528085528a9020985189549551909616600160a01b027fffffffff000000000000000000000000000000000000000000000000000000009095169590971694909417929092178655915193518116600160801b02931692909217600190930192909255915190815282917f788f62f195987bb297862ea62b31d08e6c02dd48c82691e3690b2a32b8fb759b910160405180910390a26001600160a01b037f0000000000000000000000008888888815bf4db87e57b609a50f938311eed068166323b872dd3330610c32888a611f0a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301526001600160801b031660448201526064016020604051808303815f875af1158015610ca4573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610cc89190611e94565b610d145760405162461bcd60e51b815260206004820152601360248201527f7472616e7366657246726f6d206661696c6564000000000000000000000000006044820152606401610695565b9695505050505050565b5f8281526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16938201939093526001909101546001600160801b0380821694830194909452600160801b90049092166060808401919091529190610dc957505060408051808201909152601e81527f6661696c65642064756520746f2077726f6e67206465706f736974206964000060208201526105df565b80606001516001600160801b0316836001600160801b031614610e0757604051806060016040528060248152602001611f7b602491399150506105df565b505060408051808201909152600581527f76616c6964000000000000000000000000000000000000000000000000000000602082015292915050565b5f8181526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16938201939093526001909101546001600160801b0380821694830194909452600160801b900490921660608301523314610eb3575f80fd5b80516040516001600160a01b03909116815282907f8ac07cc6e38c6222dd0309c80353c1962354bacf222b825d7401cc80e93ff3cc9060200160405180910390a27f0000000000000000000000008888888815bf4db87e57b609a50f938311eed0686001600160a01b031663a9059cbb610f2d8460601c90565b60408085015190517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526001600160801b031660248201526044016020604051808303815f875af1158015610f9b573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610fbf9190611e94565b61100b5760405162461bcd60e51b815260206004820152601660248201527f72657475726e207472616e73666572206661696c6564000000000000000000006044820152606401610695565b60608101516001600160801b03161561116d5780516060820151604080516001600160a01b0390931683526001600160801b03909116602083015283917fed2c74ec5ee17d93f94a64e9ca42f75d33868e90f338237709b611ac1810a40f910160405180910390a28051606082015160405163a9059cbb60e01b81526001600160a01b037f0000000000000000000000008888888815bf4db87e57b609a50f938311eed068169263a9059cbb926110e1926004016001600160a01b039290921682526001600160801b0316602082015260400190565b6020604051808303815f875af11580156110fd573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906111219190611e94565b61116d5760405162461bcd60e51b815260206004820152601360248201527f666565207472616e73666572206661696c6564000000000000000000000000006044820152606401610695565b505f908152602081905260408120600181019190915580547fffffffffffffffffffffffff000000000000000000000000000000000000000016610bad179055565b5f6111b9826105be565b5f8181526020818152604091829020825160808101845281546001600160a01b038116825267ffffffffffffffff600160a01b9091041692810192909252600101546001600160801b0380821693830193909352600160801b900490911660608201529091503361122a8360601c90565b6001600160a01b0316146112805760405162461bcd60e51b815260206004820152601e60248201527f66756e64657246726f6d496428696429203d3d206d73672e73656e64657200006044820152606401610695565b42816020015167ffffffffffffffff16106113035760405162461bcd60e51b815260206004820152602160248201527f6465706f7369742e76616c6964546f203c20626c6f636b2e74696d657374616d60448201527f70000000000000000000000000000000000000000000000000000000000000006064820152608401610695565b80516040516001600160a01b03909116815282907f843d1bd667ac549c763b55fefb74223882ce415856e0e243f24ed3b97f572f109060200160405180910390a27f0000000000000000000000008888888815bf4db87e57b609a50f938311eed0686001600160a01b031663a9059cbb33836060015184604001516113889190611f0a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e085901b1681526001600160a01b0390921660048301526001600160801b031660248201526044016020604051808303815f875af11580156113f1573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906114159190611e94565b6114615760405162461bcd60e51b815260206004820152600f60248201527f7472616e73666572206661696c656400000000000000000000000000000000006044820152606401610695565b505f908152602081905260408120600181019190915580547fffffffffffffffffffffffff000000000000000000000000000000000000000016610bad17905550565b6040805160c080820183525f80835260208084018290528385018290526060808501839052608080860184905260a08601849052878452838352928690208651938401875280546001600160a01b038116855267ffffffffffffffff600160a01b9091041684840152600101546001600160801b0380821685890152600160801b90910416908301528451928301909452848252919281018467ffffffffffffffff1681526020016115568560601c90565b6001600160a01b03168152602001825f01516001600160a01b0316815260200182604001516001600160801b03168152602001826020015167ffffffffffffffff16815250915050919050565b5f6115ad856105be565b5f8181526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16828501526001909201546001600160801b0380821683870152600160801b9091041660608201529251908152929350909183917f28b2e97799d08959c3ff7a213e5de97fe58327ecbfdb497e039d5b45b85c4627910160405180910390a28267ffffffffffffffff16816020015167ffffffffffffffff1611156116ab5760405162461bcd60e51b815260206004820152601a60248201527f6465706f7369742e76616c6964546f203c3d2076616c6964546f0000000000006044820152606401610695565b84816040018181516116bd9190611f0a565b6001600160801b03169052506060810180518591906116dd908390611f0a565b6001600160801b0390811690915267ffffffffffffffff80861660208086019182525f87815290819052604090819020865181549351909416600160a01b027fffffffff000000000000000000000000000000000000000000000000000000009093166001600160a01b039485161792909217825585015160608601518416600160801b029316929092176001909201919091557f0000000000000000000000008888888815bf4db87e57b609a50f938311eed0681690506323b872dd33306117a6888a611f0a565b6040517fffffffff0000000000000000000000000000000000000000000000000000000060e086901b1681526001600160a01b0393841660048201529290911660248301526001600160801b031660448201526064016020604051808303815f875af1158015611818573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019061183c9190611e94565b6118885760405162461bcd60e51b815260206004820152601360248201527f7472616e7366657246726f6d206661696c6564000000000000000000000000006044820152606401610695565b505050505050565b61189b8383836105e5565b6118a483610e43565b505050565b5f8381526020818152604091829020825160808101845281546001600160a01b038116808352600160a01b90910467ffffffffffffffff16938201939093526001909101546001600160801b0380821694830194909452600160801b90049092166060830152331461195d5760405162461bcd60e51b815260206004820152601d60248201527f6d73672e73656e646572203d3d206465706f7369742e7370656e6465720000006044820152606401610695565b805f01516001600160a01b0316836001600160a01b0316036119c15760405162461bcd60e51b815260206004820152601a60248201527f63616e6e6f74207472616e7366657220746f207370656e6465720000000000006044820152606401610695565b816001600160801b031681604001516001600160801b03161015611a275760405162461bcd60e51b815260206004820152601860248201527f6465706f7369742e616d6f756e74203e3d20616d6f756e7400000000000000006044820152606401610695565b8051604080516001600160a01b03928316815291851660208301526001600160801b0384169082015284907f4e024b1a4230fccb351fc854e250a45569711fc304c1af0abc494165d29360639060600160405180910390a260405163a9059cbb60e01b81526001600160a01b0384811660048301526001600160801b03841660248301527f0000000000000000000000008888888815bf4db87e57b609a50f938311eed068169063a9059cbb906044016020604051808303815f875af1158015611af3573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190611b179190611e94565b611b635760405162461bcd60e51b815260206004820152601360248201527f474c4d207472616e73666572206661696c6564000000000000000000000000006044820152606401610695565b8181604001818151611b759190611ec7565b6001600160801b039081169091526040928301515f96875260208790529290952060010180547fffffffffffffffffffffffffffffffff00000000000000000000000000000000169290951691909117909355505050565b61189b8383836118a9565b602081525f82518060208401528060208501604085015e5f6040828501015260407fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0601f83011684010191505092915050565b5f60208284031215611c3b575f80fd5b5035919050565b803567ffffffffffffffff81168114611c59575f80fd5b919050565b5f60208284031215611c6e575f80fd5b611c7782611c42565b9392505050565b5f805f60408486031215611c90575f80fd5b83359250602084013567ffffffffffffffff811115611cad575f80fd5b8401601f81018613611cbd575f80fd5b803567ffffffffffffffff811115611cd3575f80fd5b8660208260051b8401011115611ce7575f80fd5b939660209190910195509293505050565b80356001600160a01b0381168114611c59575f80fd5b80356001600160801b0381168114611c59575f80fd5b5f805f805f60a08688031215611d38575f80fd5b611d4186611c42565b9450611d4f60208701611cf8565b9350611d5d60408701611d0e565b9250611d6b60608701611d0e565b9150611d7960808701611c42565b90509295509295909350565b5f8060408385031215611d96575f80fd5b82359150611da660208401611d0e565b90509250929050565b5f8060408385031215611dc0575f80fd5b611dc983611c42565b9150611da660208401611cf8565b5f805f8060808587031215611dea575f80fd5b611df385611c42565b9350611e0160208601611d0e565b9250611e0f60408601611d0e565b9150611e1d60608601611c42565b905092959194509250565b5f805f60608486031215611e3a575f80fd5b83359250611e4a60208501611cf8565b9150611e5860408501611d0e565b90509250925092565b634e487b7160e01b5f52603260045260245ffd5b5f82611e8f57634e487b7160e01b5f52601260045260245ffd5b500690565b5f60208284031215611ea4575f80fd5b81518015158114611c77575f80fd5b634e487b7160e01b5f52601160045260245ffd5b6001600160801b0382811682821603908111156105df576105df611eb3565b5f63ffffffff821663ffffffff8103611f0157611f01611eb3565b60010192915050565b6001600160801b0381811683821601908111156105df576105df611eb356fe5b7b2274797065223a202275696e74323536222c20226e616d65223a20226964227d2c207b2274797065223a202275696e74313238222c20226e616d65223a2022666c6174466565416d6f756e74227d5d6661696c65642064756520746f20666c6174466565416d6f756e74206d69736d61746368a2646970667358221220f7bb42799dc6a5452f7c4fadcb18a1be32e6ab84701a98cd4950c7db9617ee5c64736f6c634300081a0033

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

0000000000000000000000008888888815bf4db87e57b609a50f938311eed068

-----Decoded View---------------
Arg [0] : _GLM (address): 0x8888888815bf4DB87e57B609A50f938311EEd068

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


Deployed Bytecode Sourcemap

1928:9807:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11459:273;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4249:116;;;;;;:::i;:::-;4353:2;4347:8;;4249:116;;;;-1:-1:-1;;;;;891:55:1;;;873:74;;861:2;846:18;4249:116:0;727:226:1;2364:46:0;;;;;;;;1132:18:1;1120:31;;;1102:50;;1090:2;1075:18;2364:46:0;958:200:1;3832:130:0;;;;;;:::i;:::-;;:::i;:::-;;;1674:25:1;;;1662:2;1647:18;3832:130:0;1528:177:1;2417:49:0;;;;;9606:996;;;;;;:::i;:::-;;:::i;:::-;;5672:836;;;;;;:::i;:::-;;:::i;11039:412::-;;;;;;:::i;:::-;;:::i;3970:165::-;;;;;;:::i;:::-;-1:-1:-1;;4107:2:0;4079:30;;;;4113:14;;;4078:49;3970:165;;;;;7272:842;;;;;;:::i;:::-;;:::i;8186:824::-;;;;;;:::i;:::-;;:::i;4630:313::-;;;;;;:::i;:::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4113:14:0;;;;4079:30;;;-1:-1:-1;;4079:30:0;4078:49;;4825:12;;;;;;;;;;4800:37;;;;;;;;;-1:-1:-1;;;;;4800:37:0;;;;;-1:-1:-1;;;4800:37:0;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4800:37:0;;;;;;;;;-1:-1:-1;;;4800:37:0;;;;;;;;;4855:80;;;;;;;;;;;;;;;;;;;;;;;;;;;4886:15;;4855:80;;;;;;;4903:14;4855:80;;;;;;;;4919:15;;4855:80;;;;;;;;;;;4630:313;;;;;;;4032:4:1;4074:3;4063:9;4059:19;4051:27;;4111:6;4105:13;4094:9;4087:32;4187:18;4179:4;4171:6;4167:17;4161:24;4157:49;4150:4;4139:9;4135:20;4128:79;-1:-1:-1;;;;;4267:4:1;4259:6;4255:17;4249:24;4245:73;4238:4;4227:9;4223:20;4216:103;-1:-1:-1;;;;;4379:4:1;4371:6;4367:17;4361:24;4357:73;4350:4;4339:9;4335:20;4328:103;-1:-1:-1;;;;;4491:4:1;4483:6;4479:17;4473:24;4469:65;4462:4;4451:9;4447:20;4440:95;4603:18;4595:4;4587:6;4583:17;4577:24;4573:49;4566:4;4555:9;4551:20;4544:79;3886:743;;;;;1972:27:0;;;;;4143:98;;;;;;:::i;:::-;4230:2;4143:98;4373:249;;;;;;:::i;:::-;;:::i;6516:655::-;;;;;;:::i;:::-;;:::i;3309:43::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;3309:43:0;;;-1:-1:-1;;;3309:43:0;;;;;-1:-1:-1;;;;;3309:43:0;;;;-1:-1:-1;;;3309:43:0;;;;;;;;;-1:-1:-1;;;;;5535:55:1;;;5517:74;;5639:18;5627:31;;;5622:2;5607:18;;5600:59;-1:-1:-1;;;;;5695:47:1;;;5675:18;;;5668:75;;;;5779:47;5774:2;5759:18;;5752:75;5504:3;5489:19;3309:43:0;5288:545:1;2681:61:0;;;;;10793:158;;;;;;:::i;:::-;;:::i;9018:580::-;;;;;;:::i;:::-;;:::i;10610:175::-;;;;;;:::i;:::-;;:::i;11459:273::-;11521:13;11634:90;;;;;;;;;;;;;;;;;;;11459:273;:::o;3832:130::-;3888:7;4113:14;;;3943:10;4107:2;4079:30;-1:-1:-1;;4079:30:0;4078:49;3915:39;3908:46;3832:130;-1:-1:-1;;3832:130:0:o;9606:996::-;9690:22;9715:12;;;;;;;;;;;;9690:37;;;;;;;;;-1:-1:-1;;;;;9690:37:0;;;;;-1:-1:-1;;;9690:37:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9690:37:0;;;;;;;;;;-1:-1:-1;;;9690:37:0;;;;;;;;;9746:10;:29;9738:71;;;;-1:-1:-1;;;9738:71:0;;6419:2:1;9738:71:0;;;6401:21:1;6458:2;6438:18;;;6431:30;6497:31;6477:18;;;6470:59;6546:18;;9738:71:0;;;;;;;;;9827:8;9822:724;9841:19;;;;-1:-1:-1;9822:724:0;;;10048:15;10066:8;;10075:1;10066:11;;;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;10107:25:0;;;;10092:12;10172:26;10191:7;10066:11;10172:26;:::i;:::-;10147:52;;10230:7;:15;;;-1:-1:-1;;;;;10222:23:0;:4;-1:-1:-1;;;;;10222:23:0;;10214:62;;;;-1:-1:-1;;;10214:62:0;;7237:2:1;10214:62:0;;;7219:21:1;7276:2;7256:18;;;7249:30;7315:28;7295:18;;;7288:56;7361:18;;10214:62:0;7035:350:1;10214:62:0;10316:15;;10296:50;;;-1:-1:-1;;;;;7610:55:1;;;7592:74;;7702:55;;;7697:2;7682:18;;7675:83;-1:-1:-1;;;;;7794:47:1;;7774:18;;;7767:75;10312:2:0;;10296:50;;7580:2:1;7565:18;10296:50:0;;;;;;;10369:26;;-1:-1:-1;;;10369:26:0;;-1:-1:-1;;;;;8045:55:1;;;10369:26:0;;;8027:74:1;-1:-1:-1;;;;;8137:47:1;;8117:18;;;8110:75;10369:3:0;:12;;;;8000:18:1;;10369:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10361:58;;;;-1:-1:-1;;;10361:58:0;;8680:2:1;10361:58:0;;;8662:21:1;8719:2;8699:18;;;8692:30;8758:21;8738:18;;;8731:49;8797:18;;10361:58:0;8478:343:1;10361:58:0;10460:6;-1:-1:-1;;;;;10442:24:0;:7;:14;;;-1:-1:-1;;;;;10442:24:0;;;10434:61;;;;-1:-1:-1;;;10434:61:0;;9028:2:1;10434:61:0;;;9010:21:1;9067:2;9047:18;;;9040:30;9106:26;9086:18;;;9079:54;9150:18;;10434:61:0;8826:348:1;10434:61:0;10528:6;10510:7;:14;;:24;;;;;;;:::i;:::-;-1:-1:-1;;;;;10510:24:0;;;-1:-1:-1;9862:3:0;;-1:-1:-1;9862:3:0;;-1:-1:-1;9862:3:0;;-1:-1:-1;9862:3:0:i;:::-;;;9822:724;;;-1:-1:-1;10580:14:0;;;;;10558:8;:12;;;;;;;;;:19;;:36;;;;-1:-1:-1;;;;;10558:36:0;;;;;;;;;;-1:-1:-1;;9606:996:0:o;5672:836::-;5808:7;5863:10;5876:18;5888:5;5876:11;:18::i;:::-;6015:1;5983:12;;;;;;;;;;:20;5863:31;;-1:-1:-1;;;;;;5983:20:0;:34;5975:81;;;;-1:-1:-1;;;5975:81:0;;10011:2:1;5975:81:0;;;9993:21:1;10050:2;10030:18;;;10023:30;10089:34;10069:18;;;10062:62;10160:4;10140:18;;;10133:32;10182:19;;5975:81:0;9809:398:1;5975:81:0;6084:1;6075:6;-1:-1:-1;;;;;6075:10:0;;6067:33;;;;-1:-1:-1;;;6067:33:0;;10414:2:1;6067:33:0;;;10396:21:1;10453:2;10433:18;;;10426:30;10492:12;10472:18;;;10465:40;10522:18;;6067:33:0;10212:334:1;6067:33:0;-1:-1:-1;;;;;6119:21:0;;6111:64;;;;-1:-1:-1;;;6111:64:0;;10753:2:1;6111:64:0;;;10735:21:1;10792:2;10772:18;;;10765:30;10831:32;10811:18;;;10804:60;10881:18;;6111:64:0;10551:354:1;6111:64:0;-1:-1:-1;;;;;6194:21:0;;:10;:21;6186:58;;;;-1:-1:-1;;;6186:58:0;;11112:2:1;6186:58:0;;;11094:21:1;11151:2;11131:18;;;11124:30;11190:26;11170:18;;;11163:54;11234:18;;6186:58:0;10910:348:1;6186:58:0;6270:57;;;;;;;;-1:-1:-1;;;;;6270:57:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;6270:57:0;;;;;;;;;;;;;;;;;;-1:-1:-1;6255:12:0;;;;;;;;;:72;;;;;;;;;-1:-1:-1;;;6255:72:0;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6255:72:0;;;;;;;-1:-1:-1;6255:72:0;;;;;;;6343:27;;873:74:1;;;6255:12:0;;6343:27;;846:18:1;6343:27:0;;;;;;;-1:-1:-1;;;;;6389:3:0;:16;;6406:10;6426:4;6433:22;6442:13;6433:6;:22;:::i;:::-;6389:67;;;;;;;;;;-1:-1:-1;;;;;7610:55:1;;;6389:67:0;;;7592:74:1;7702:55;;;;7682:18;;;7675:83;-1:-1:-1;;;;;7794:47:1;7774:18;;;7767:75;7565:18;;6389:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6381:99;;;;-1:-1:-1;;;6381:99:0;;12173:2:1;6381:99:0;;;12155:21:1;12212:2;12192:18;;;12185:30;12251:21;12231:18;;;12224:49;12290:18;;6381:99:0;11971:343:1;6381:99:0;6498:2;5672:836;-1:-1:-1;;;;;;5672:836:0:o;11039:412::-;11148:22;11173:12;;;;;;;;;;;;11148:37;;;;;;;;;-1:-1:-1;;;;;11148:37:0;;;;;-1:-1:-1;;;11148:37:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;11148:37:0;;;;;;;;;;-1:-1:-1;;;11148:37:0;;;;;11122:13;11148:37;;;;;;;11122:13;11148:37;11196:101;;-1:-1:-1;;11246:39:0;;;;;;;;;;;;;;;;;;;11196:101;11328:7;:17;;;-1:-1:-1;;;;;11311:34:0;:13;-1:-1:-1;;;;;11311:34:0;;11307:112;;11362:45;;;;;;;;;;;;;;;;;;;;;;11307:112;-1:-1:-1;;11429:14:0;;;;;;;;;;;;;;;;;11039:412;;;;:::o;7272:842::-;7324:22;7349:12;;;;;;;;;;;;7324:37;;;;;;;;;-1:-1:-1;;;;;7324:37:0;;;;;-1:-1:-1;;;7324:37:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7324:37:0;;;;;;;;;;-1:-1:-1;;;7324:37:0;;;;;;;;;7485:10;:29;7477:38;;;;;;7549:15;;7531:34;;-1:-1:-1;;;;;891:55:1;;;873:74;;7545:2:0;;7531:34;;861:2:1;846:18;7531:34:0;;;;;;;7584:3;-1:-1:-1;;;;;7584:12:0;;7597:16;7610:2;4353;4347:8;;4249:116;7597:16;7615:14;;;;;7584:46;;;;;;;;;;-1:-1:-1;;;;;8045:55:1;;;7584:46:0;;;8027:74:1;-1:-1:-1;;;;;8137:47:1;8117:18;;;8110:75;8000:18;;7584:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7576:81;;;;-1:-1:-1;;;7576:81:0;;12521:2:1;7576:81:0;;;12503:21:1;12560:2;12540:18;;;12533:30;12599:24;12579:18;;;12572:52;12641:18;;7576:81:0;12319:346:1;7576:81:0;7672:17;;;;-1:-1:-1;;;;;7672:21:0;;7668:212;;7738:15;;7755:17;;;;7715:58;;;-1:-1:-1;;;;;8045:55:1;;;8027:74;;-1:-1:-1;;;;;8137:47:1;;;8132:2;8117:18;;8110:75;7734:2:0;;7715:58;;8000:18:1;7715:58:0;;;;;;;7809:15;;7826:17;;;;7796:48;;-1:-1:-1;;;7796:48:0;;-1:-1:-1;;;;;7796:3:0;:12;;;;:48;;;;-1:-1:-1;;;;;8045:55:1;;;;8027:74;;-1:-1:-1;;;;;8137:47:1;8132:2;8117:18;;8110:75;8015:2;8000:18;;7853:338;7796:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7788:80;;;;-1:-1:-1;;;7788:80:0;;13215:2:1;7788:80:0;;;13197:21:1;13254:2;13234:18;;;13227:30;13293:21;13273:18;;;13266:49;13332:18;;7788:80:0;13013:343:1;7788:80:0;-1:-1:-1;7915:1:0;7890:12;;;;;;;;;;:22;;;7927:23;;;;8041:65;;;;8064:42;8041:65;;;7272:842::o;8186:824::-;8246:10;8259:18;8271:5;8259:11;:18::i;:::-;8288:22;8313:12;;;;;;;;;;;;8288:37;;;;;;;;;-1:-1:-1;;;;;8288:37:0;;;;;-1:-1:-1;;;8288:37:0;;;;;;;;;;;;;;-1:-1:-1;;;;;8288:37:0;;;;;;;;;;-1:-1:-1;;;8288:37:0;;;;;;;;;8246:31;;-1:-1:-1;8450:10:0;8430:16;8246:31;4353:2;4347:8;;4249:116;8430:16;-1:-1:-1;;;;;8430:30:0;;8422:73;;;;-1:-1:-1;;;8422:73:0;;13563:2:1;8422:73:0;;;13545:21:1;13602:2;13582:18;;;13575:30;13641:32;13621:18;;;13614:60;13691:18;;8422:73:0;13361:354:1;8422:73:0;8569:15;8551:7;:15;;;:33;;;8543:79;;;;-1:-1:-1;;;8543:79:0;;13922:2:1;8543:79:0;;;13904:21:1;13961:2;13941:18;;;13934:30;14000:34;13980:18;;;13973:62;14071:3;14051:18;;;14044:31;14092:19;;8543:79:0;13720:397:1;8543:79:0;8660:15;;8638:38;;-1:-1:-1;;;;;891:55:1;;;873:74;;8656:2:0;;8638:38;;861:2:1;846:18;8638:38:0;;;;;;;8695:3;-1:-1:-1;;;;;8695:12:0;;8708:10;8737:7;:17;;;8720:7;:14;;;:34;;;;:::i;:::-;8695:60;;;;;;;;;;-1:-1:-1;;;;;8045:55:1;;;8695:60:0;;;8027:74:1;-1:-1:-1;;;;;8137:47:1;8117:18;;;8110:75;8000:18;;8695:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;8687:88;;;;-1:-1:-1;;;8687:88:0;;14324:2:1;8687:88:0;;;14306:21:1;14363:2;14343:18;;;14336:30;14402:17;14382:18;;;14375:45;14437:18;;8687:88:0;14122:339:1;8687:88:0;-1:-1:-1;8808:1:0;8786:12;;;;;;;;;;:19;;;8820:26;;;;8937:65;;;;8960:42;8937:65;;;-1:-1:-1;8186:824:0:o;4373:249::-;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4484:12:0;;;;;;;;;;4459:37;;;;;;;;;-1:-1:-1;;;;;4459:37:0;;;;;-1:-1:-1;;;4459:37:0;;;;;;;;;;;-1:-1:-1;;;;;4459:37:0;;;;;;;-1:-1:-1;;;4459:37:0;;;;;;;;4514:100;;;;;;;;;;;-1:-1:-1;;4514:100:0;;4484:12;4514:100;;;;;;4547:16;4560:2;4353;4347:8;;4249:116;4547:16;-1:-1:-1;;;;;4514:100:0;;;;;4565:7;:15;;;-1:-1:-1;;;;;4514:100:0;;;;;4582:7;:14;;;-1:-1:-1;;;;;4514:100:0;;;;;4598:7;:15;;;4514:100;;;;;4507:107;;;4373:249;;;:::o;6516:655::-;6651:10;6664:18;6676:5;6664:11;:18::i;:::-;6693:22;6718:12;;;;;;;;;;;;6693:37;;;;;;;;;-1:-1:-1;;;;;6693:37:0;;;;;-1:-1:-1;;;6693:37:0;;;;;;;;;;;;;;-1:-1:-1;;;;;6693:37:0;;;;;;;-1:-1:-1;;;6693:37:0;;;;;;;;6746:36;;873:74:1;;;6718:12:0;;-1:-1:-1;6693:37:0;;6718:12;;6746:36;;846:18:1;6746:36:0;;;;;;;6820:16;6801:35;;:7;:15;;;:35;;;;6793:74;;;;-1:-1:-1;;;6793:74:0;;14668:2:1;6793:74:0;;;14650:21:1;14707:2;14687:18;;;14680:30;14746:28;14726:18;;;14719:56;14792:18;;6793:74:0;14466:350:1;6793:74:0;6896:16;6878:7;:14;;:34;;;;;;;:::i;:::-;-1:-1:-1;;;;;6878:34:0;;;-1:-1:-1;6923:17:0;;;:38;;6944:17;;6923;:38;;6944:17;;6923:38;:::i;:::-;-1:-1:-1;;;;;6923:38:0;;;;;;6972:34;;;;:15;;;;:34;;;7017:8;:12;;;;;;;;;;;;:22;;;;;;;;;-1:-1:-1;;;7017:22:0;;;;;-1:-1:-1;;;;;7017:22:0;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;7017:22:0;;;;;;;;;;;;;;;7058:3;:16;;-1:-1:-1;7058:16:0;7075:10;7095:4;7102:36;7121:17;7102:16;:36;:::i;:::-;7058:81;;;;;;;;;;-1:-1:-1;;;;;7610:55:1;;;7058:81:0;;;7592:74:1;7702:55;;;;7682:18;;;7675:83;-1:-1:-1;;;;;7794:47:1;7774:18;;;7767:75;7565:18;;7058:81:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;7050:113;;;;-1:-1:-1;;;7050:113:0;;12173:2:1;7050:113:0;;;12155:21:1;12212:2;12192:18;;;12185:30;12251:21;12231:18;;;12224:49;12290:18;;7050:113:0;11971:343:1;7050:113:0;6640:531;;6516:655;;;;:::o;10793:158::-;10887:29;10903:2;10907:8;;10887:15;:29::i;:::-;10927:16;10940:2;10927:12;:16::i;:::-;10793:158;;;:::o;9018:580::-;9109:22;9134:12;;;;;;;;;;;;9109:37;;;;;;;;;-1:-1:-1;;;;;9109:37:0;;;;;-1:-1:-1;;;9109:37:0;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9109:37:0;;;;;;;;;;-1:-1:-1;;;9109:37:0;;;;;;;;;9165:10;:29;9157:71;;;;-1:-1:-1;;;9157:71:0;;6419:2:1;9157:71:0;;;6401:21:1;6458:2;6438:18;;;6431:30;6497:31;6477:18;;;6470:59;6546:18;;9157:71:0;6217:353:1;9157:71:0;9255:7;:15;;;-1:-1:-1;;;;;9247:23:0;:4;-1:-1:-1;;;;;9247:23:0;;9239:62;;;;-1:-1:-1;;;9239:62:0;;7237:2:1;9239:62:0;;;7219:21:1;7276:2;7256:18;;;7249:30;7315:28;7295:18;;;7288:56;7361:18;;9239:62:0;7035:350:1;9239:62:0;9338:6;-1:-1:-1;;;;;9320:24:0;:7;:14;;;-1:-1:-1;;;;;9320:24:0;;;9312:61;;;;-1:-1:-1;;;9312:61:0;;9028:2:1;9312:61:0;;;9010:21:1;9067:2;9047:18;;;9040:30;9106:26;9086:18;;;9079:54;9150:18;;9312:61:0;8826:348:1;9312:61:0;9409:15;;9389:50;;;-1:-1:-1;;;;;7610:55:1;;;7592:74;;7702:55;;;7697:2;7682:18;;7675:83;-1:-1:-1;;;;;7794:47:1;;7774:18;;;7767:75;9405:2:0;;9389:50;;7580:2:1;7565:18;9389:50:0;;;;;;;9458:26;;-1:-1:-1;;;9458:26:0;;-1:-1:-1;;;;;8045:55:1;;;9458:26:0;;;8027:74:1;-1:-1:-1;;;;;8137:47:1;;8117:18;;;8110:75;9458:3:0;:12;;;;8000:18:1;;9458:26:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9450:58;;;;-1:-1:-1;;;9450:58:0;;8680:2:1;9450:58:0;;;8662:21:1;8719:2;8699:18;;;8692:30;8758:21;8738:18;;;8731:49;8797:18;;9450:58:0;8478:343:1;9450:58:0;9537:6;9519:7;:14;;:24;;;;;;;:::i;:::-;-1:-1:-1;;;;;9519:24:0;;;;;;9576:14;;;;;9554:8;:12;;;;;;;;;;;:19;;:36;;;;;;;;;;;;;;;-1:-1:-1;;;9018:580:0:o;10610:175::-;10711:39;10733:2;10737:4;10743:6;10711:21;:39::i;14:477:1:-;163:2;152:9;145:21;126:4;195:6;189:13;238:6;233:2;222:9;218:18;211:34;297:6;292:2;284:6;280:15;275:2;264:9;260:18;254:50;353:1;348:2;339:6;328:9;324:22;320:31;313:42;482:2;412:66;407:2;399:6;395:15;391:88;380:9;376:104;372:113;364:121;;;14:477;;;;:::o;496:226::-;555:6;608:2;596:9;587:7;583:23;579:32;576:52;;;624:1;621;614:12;576:52;-1:-1:-1;669:23:1;;496:226;-1:-1:-1;496:226:1:o;1163:171::-;1230:20;;1290:18;1279:30;;1269:41;;1259:69;;1324:1;1321;1314:12;1259:69;1163:171;;;:::o;1339:184::-;1397:6;1450:2;1438:9;1429:7;1425:23;1421:32;1418:52;;;1466:1;1463;1456:12;1418:52;1489:28;1507:9;1489:28;:::i;:::-;1479:38;1339:184;-1:-1:-1;;;1339:184:1:o;1710:724::-;1805:6;1813;1821;1874:2;1862:9;1853:7;1849:23;1845:32;1842:52;;;1890:1;1887;1880:12;1842:52;1935:23;;;-1:-1:-1;2033:2:1;2018:18;;2005:32;2060:18;2049:30;;2046:50;;;2092:1;2089;2082:12;2046:50;2115:22;;2168:4;2160:13;;2156:27;-1:-1:-1;2146:55:1;;2197:1;2194;2187:12;2146:55;2237:2;2224:16;2263:18;2255:6;2252:30;2249:50;;;2295:1;2292;2285:12;2249:50;2348:7;2343:2;2333:6;2330:1;2326:14;2322:2;2318:23;2314:32;2311:45;2308:65;;;2369:1;2366;2359:12;2308:65;1710:724;;2400:2;2392:11;;;;;-1:-1:-1;2422:6:1;;-1:-1:-1;;;1710:724:1:o;2439:196::-;2507:20;;-1:-1:-1;;;;;2556:54:1;;2546:65;;2536:93;;2625:1;2622;2615:12;2640:188;2708:20;;-1:-1:-1;;;;;2757:46:1;;2747:57;;2737:85;;2818:1;2815;2808:12;2833:480;2926:6;2934;2942;2950;2958;3011:3;2999:9;2990:7;2986:23;2982:33;2979:53;;;3028:1;3025;3018:12;2979:53;3051:28;3069:9;3051:28;:::i;:::-;3041:38;;3098;3132:2;3121:9;3117:18;3098:38;:::i;:::-;3088:48;;3155:38;3189:2;3178:9;3174:18;3155:38;:::i;:::-;3145:48;;3212:38;3246:2;3235:9;3231:18;3212:38;:::i;:::-;3202:48;;3269:38;3302:3;3291:9;3287:19;3269:38;:::i;:::-;3259:48;;2833:480;;;;;;;;:::o;3318:300::-;3386:6;3394;3447:2;3435:9;3426:7;3422:23;3418:32;3415:52;;;3463:1;3460;3453:12;3415:52;3508:23;;;-1:-1:-1;3574:38:1;3608:2;3593:18;;3574:38;:::i;:::-;3564:48;;3318:300;;;;;:::o;3623:258::-;3690:6;3698;3751:2;3739:9;3730:7;3726:23;3722:32;3719:52;;;3767:1;3764;3757:12;3719:52;3790:28;3808:9;3790:28;:::i;:::-;3780:38;;3837;3871:2;3860:9;3856:18;3837:38;:::i;4878:405::-;4962:6;4970;4978;4986;5039:3;5027:9;5018:7;5014:23;5010:33;5007:53;;;5056:1;5053;5046:12;5007:53;5079:28;5097:9;5079:28;:::i;:::-;5069:38;;5126;5160:2;5149:9;5145:18;5126:38;:::i;:::-;5116:48;;5183:38;5217:2;5206:9;5202:18;5183:38;:::i;:::-;5173:48;;5240:37;5273:2;5262:9;5258:18;5240:37;:::i;:::-;5230:47;;4878:405;;;;;;;:::o;5838:374::-;5915:6;5923;5931;5984:2;5972:9;5963:7;5959:23;5955:32;5952:52;;;6000:1;5997;5990:12;5952:52;6045:23;;;-1:-1:-1;6111:38:1;6145:2;6130:18;;6111:38;:::i;:::-;6101:48;;6168:38;6202:2;6191:9;6187:18;6168:38;:::i;:::-;6158:48;;5838:374;;;;;:::o;6575:184::-;-1:-1:-1;;;6624:1:1;6617:88;6724:4;6721:1;6714:15;6748:4;6745:1;6738:15;6764:266;6796:1;6822;6812:189;;-1:-1:-1;;;6854:1:1;6847:88;6958:4;6955:1;6948:15;6986:4;6983:1;6976:15;6812:189;-1:-1:-1;7015:9:1;;6764:266::o;8196:277::-;8263:6;8316:2;8304:9;8295:7;8291:23;8287:32;8284:52;;;8332:1;8329;8322:12;8284:52;8364:9;8358:16;8417:5;8410:13;8403:21;8396:5;8393:32;8383:60;;8439:1;8436;8429:12;9179:184;-1:-1:-1;;;9228:1:1;9221:88;9328:4;9325:1;9318:15;9352:4;9349:1;9342:15;9368:243;-1:-1:-1;;;;;9483:42:1;;;9439;;;9435:91;;9538:44;;9535:70;;;9585:18;;:::i;9616:188::-;9654:3;9698:10;9691:5;9687:22;9733:10;9724:7;9721:23;9718:49;;9747:18;;:::i;:::-;9796:1;9783:15;;9616:188;-1:-1:-1;;9616:188:1:o;11263:240::-;-1:-1:-1;;;;;11332:42:1;;;11376;;;11328:91;;11431:43;;11428:69;;;11477:18;;:::i

Swarm Source

ipfs://f7bb42799dc6a5452f7c4fadcb18a1be32e6ab84701a98cd4950c7db9617ee5c

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
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.