Contract 0x2fB8132D4CF3E4413065f68051D5b2FBD2e642B5 10

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x1c56a424f7b36769cc4dc797b4099458ccdaa78a811f2e27625bbef633864ff9Emergency Withdr...993054702023-06-09 7:17:47268 days 9 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00003359 0.1
0xd099267267753d1369e416eff552699ef3784280d89b09da35f3667e7f67d5c1Emergency Withdr...993053912023-06-09 7:17:27268 days 9 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00003359 0.1
0xdac19c0b1dce8f21f6efda3fe4bf3242d75913d39c6b76ac8b6e500b66b7e0d7Harvest979422862023-06-05 5:58:11272 days 10 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00003788 0.1
0x98ca991b8a6f54e841323a3d306a714bf9277a9fcb55199ddf2bb9c35478acb2Harvest979422002023-06-05 5:57:49272 days 10 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00003959 0.1
0x6776807c4c1cf3ffa47e03b4f7079a11add51e9cca4810da54438ebdd2d810bdHarvest959092362023-05-30 6:18:26278 days 10 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00007853 0.1
0xbcd6d28e264b9e213a2429e2978138b74d327a237f1770532bc916f83c1bc6beHarvest959091492023-05-30 6:18:04278 days 10 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00008024 0.1
0x8d5d2ecb48b07e90098df4bd121712d6a41f7fe4fc15a9178273e1bc3f2d4e9aHarvest938443552023-05-24 5:40:32284 days 11 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00005744 0.1
0x6dad2be1a592e2f94d3561a85c7e67253e636c3fb2e343361e34a9d5f07ea9e0Harvest938443182023-05-24 5:40:23284 days 11 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00005915 0.1
0xbbab73c1723be041551d5f6d9c1f3dcce4cc3ad49ed8901c474745981b9b2d58Deposit937465162023-05-23 22:38:27284 days 18 hrs ago0x2b185c762f6fb49a07116ec06b238b58fe2bec53 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.000125710.1
0x4f17b339a7980a02d25e9b335540008f6f450b6961e7bd34fe36b7b8d1c4053fHarvest908437552023-05-15 5:30:39293 days 11 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00006669 0.1
0x0481298685b013dadc2d21c893f2c70fbd4d86289b6d63cd07d22d669e90c9baHarvest908437232023-05-15 5:30:30293 days 11 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00006669 0.1
0xcb95f06b8073937c76ea7f1ecfaf6ee480546a4555ee9db5e99e4f3b34002896Harvest877881282023-05-06 5:10:24302 days 11 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.0001657 0.1
0x2dcf4b92f264984c639238130e042759efee0f899d9b2d0e8409136b7cd583f4Harvest877880822023-05-06 5:10:12302 days 11 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00016741 0.1
0x62b2caadaee828fa2eb64849e98c44ee103b2582275c816b182785f05b908a90Harvest864935072023-05-02 10:10:49306 days 6 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00003906 0.1
0xc21957152d72aeff1fa75e6bc27cf7a3572c0c2b9d1069e1375559303b70e7b6Harvest864934732023-05-02 10:10:40306 days 6 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00004077 0.1
0xa3d116a08ee727c09b7a7f6c612c0f8f5d5791069c7a1e38e7d64aff95544edaHarvest847591732023-04-27 7:34:43311 days 9 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00005702 0.1
0x02f1f55ddb0b05a275dbfc632ac5873f4e5cb313fcfc707aeb6b9842f2df9570Harvest847591072023-04-27 7:34:27311 days 9 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00005881 0.1
0x53b948451f8e0b09434dc7b3df4cdfed1c9a20e13897b9a65a0124a4c567650aWithdraw831441722023-04-22 14:24:56316 days 2 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00007026 0.1
0x9f6ef3209cae4ea532984e1dc6911c163f2d77395c74725182eab300a1bacda4Deposit831438812023-04-22 14:23:42316 days 2 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00008102 0.1
0x6d2665dace03bbd7c3a05300fa0e72de8a0386c6c763903a4605daa2dcbd96ecHarvest826703062023-04-21 5:05:41317 days 11 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00006361 0.1
0x10699b511e0f74d4c6b61e4333500d031d1d3cf169c4b492691f055132bb5adeHarvest826702542023-04-21 5:05:28317 days 11 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00006497 0.1
0x8c6d23ea4b9ab7980b8dcb8893fd3e7a13eca1e62abb2162d76640a105f6471eHarvest821296212023-04-19 15:22:14319 days 1 hr ago0x13b39775583e0888f9836782acf9f1e50f767ca4 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00017414 0.1
0x4488fdb648e7acaef2d0d771272b60aab5e0e7d40e7df1e8e6419a75ea4e2dfaHarvest807321342023-04-15 14:16:15323 days 2 hrs ago0x13b39775583e0888f9836782acf9f1e50f767ca4 IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00004577 0.1
0x84283c010634c3744e87c8b50ecda52d0829dd6ef3872944a22a7f284a282121Harvest806103872023-04-15 5:50:47323 days 11 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00004075 0.1
0x8a85cc3a83318e56377f5a515080a5ec0c91ebb6f43402ef8e0dddf1d30b869bHarvest806102932023-04-15 5:50:24323 days 11 hrs ago0x6285f201641ae13d7ae9a272987f756c0a17c68d IN  0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b50 ETH0.00004246 0.1
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xa10291b09c974b018a0bece1ed44a06a1df62085bcab4cb1d81ae08ab2e03547720799572023-03-21 9:51:07348 days 7 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0xa10291b09c974b018a0bece1ed44a06a1df62085bcab4cb1d81ae08ab2e03547720799572023-03-21 9:51:07348 days 7 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0xa10291b09c974b018a0bece1ed44a06a1df62085bcab4cb1d81ae08ab2e03547720799572023-03-21 9:51:07348 days 7 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0xa10291b09c974b018a0bece1ed44a06a1df62085bcab4cb1d81ae08ab2e03547720799572023-03-21 9:51:07348 days 7 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0x5579f4932cda2893376558b045033719fec5fd340 ETH
0xb3d4d607699967bbd7fca8f23bcd7793f19d1c6f5d74a322785d4ccf5719d52a720799062023-03-21 9:50:54348 days 7 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0xb3d4d607699967bbd7fca8f23bcd7793f19d1c6f5d74a322785d4ccf5719d52a720799062023-03-21 9:50:54348 days 7 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0xb3d4d607699967bbd7fca8f23bcd7793f19d1c6f5d74a322785d4ccf5719d52a720799062023-03-21 9:50:54348 days 7 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0xb3d4d607699967bbd7fca8f23bcd7793f19d1c6f5d74a322785d4ccf5719d52a720799062023-03-21 9:50:54348 days 7 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0x6737b6194500fa22dc033b76bf9255dbdc77a50a0 ETH
0x0c2ad93f151a60337597267b739f21a0bbfd1045c7b2571698602d3a8813f4ce720021412023-03-21 4:31:18348 days 12 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x0c2ad93f151a60337597267b739f21a0bbfd1045c7b2571698602d3a8813f4ce720021412023-03-21 4:31:18348 days 12 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x0c2ad93f151a60337597267b739f21a0bbfd1045c7b2571698602d3a8813f4ce720021412023-03-21 4:31:18348 days 12 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x0c2ad93f151a60337597267b739f21a0bbfd1045c7b2571698602d3a8813f4ce720021412023-03-21 4:31:18348 days 12 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0x44d9f3e2f8c85842596692250a6ce1eb148d4b4c0 ETH
0x5b8610495374138000afa551b423f013e0d09d2066f69d9c3b159879d6a20605720021072023-03-21 4:31:09348 days 12 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0x44d9f3e2f8c85842596692250a6ce1eb148d4b4c0 ETH
0x5b8610495374138000afa551b423f013e0d09d2066f69d9c3b159879d6a20605720021072023-03-21 4:31:09348 days 12 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x5b8610495374138000afa551b423f013e0d09d2066f69d9c3b159879d6a20605720021072023-03-21 4:31:09348 days 12 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0x44d9f3e2f8c85842596692250a6ce1eb148d4b4c0 ETH
0x91dcf3c4afe8055a2ddb5b48efb68eb22b3e7171a6ad7189cb85907db219fecb717142602023-03-20 8:31:03349 days 8 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x91dcf3c4afe8055a2ddb5b48efb68eb22b3e7171a6ad7189cb85907db219fecb717142602023-03-20 8:31:03349 days 8 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x91dcf3c4afe8055a2ddb5b48efb68eb22b3e7171a6ad7189cb85907db219fecb717142602023-03-20 8:31:03349 days 8 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x91dcf3c4afe8055a2ddb5b48efb68eb22b3e7171a6ad7189cb85907db219fecb717142602023-03-20 8:31:03349 days 8 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0x6737b6194500fa22dc033b76bf9255dbdc77a50a0 ETH
0x168f50dbfb66dd79dee595b4f0de7abcaf8a73719f7d82c05b4e924548650332717142432023-03-20 8:30:59349 days 8 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x168f50dbfb66dd79dee595b4f0de7abcaf8a73719f7d82c05b4e924548650332717142432023-03-20 8:30:59349 days 8 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x168f50dbfb66dd79dee595b4f0de7abcaf8a73719f7d82c05b4e924548650332717142432023-03-20 8:30:59349 days 8 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0x168f50dbfb66dd79dee595b4f0de7abcaf8a73719f7d82c05b4e924548650332717142432023-03-20 8:30:59349 days 8 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0x5579f4932cda2893376558b045033719fec5fd340 ETH
0xed0f5503ce459a3fdec4079f9fb3d175d9bd6a0be2984c5ff7110f07a8a8e832716753592023-03-20 5:49:08349 days 11 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
0xed0f5503ce459a3fdec4079f9fb3d175d9bd6a0be2984c5ff7110f07a8a8e832716753592023-03-20 5:49:08349 days 11 hrs ago 0x2fb8132d4cf3e4413065f68051d5b2fbd2e642b5 0xc59c3e3475b5f86890b4e598e0e709a20f80fad20 ETH
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
GemFarm

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Arbiscan.io on 2023-03-02
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

interface IERC20 {
    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, 'e0');
        (bool success,) = recipient.call{value : amount}('');
        require(success, 'e1');
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, 'e0');
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, 'e0');
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, 'e0');
        return _functionCallWithValue(target, data, value, errorMessage);
    }

    function _functionCallWithValue(
        address target,
        bytes memory data,
        uint256 weiValue,
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), 'e0');
        (bool success, bytes memory returndata) = target.call{value : weiValue}(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library SafeERC20 {
    using Address for address;
    function safeTransfer(
        IERC20 token,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(
        IERC20 token,
        address from,
        address to,
        uint256 value
    ) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, 'e0');
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), 'e1');
        }
    }
}

abstract contract Context {
    function _msgSender() internal view virtual returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view virtual returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: not owner");
        _;
    }

    /**
     * @dev Initializes the contract setting the deployer as the initial owner.
     */
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    /**
     * @dev Returns the address of the current owner.
     */
    function owner() public view returns (address) {
        return _owner;
    }

    /**
     * @dev Leaves the contract without owner. It will not be possible to call
     * `onlyOwner` functions anymore. Can only be called by the current owner.
     *
     * NOTE: Renouncing ownership will leave the contract without an owner,
     * thereby removing any functionality that is only available to the owner.
     */
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    /**
     * @dev Transfers ownership of the contract to a new account (`newOwner`).
     * Can only be called by the current owner.
     */
    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

        // Any calls to nonReentrant after this point will fail
        _status = _ENTERED;

        _;

        // By storing the original value once again, a refund is triggered (see
        // https://eips.ethereum.org/EIPS/eip-2200)
        _status = _NOT_ENTERED;
    }

    modifier isHuman() {
        require(tx.origin == msg.sender, "sorry humans only");
        _;
    }
}

interface CakeToken {
    function mint(address _to, uint256 _amount) external returns (bool);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);
}

contract GemFarm is Ownable, ReentrancyGuard {
    using SafeERC20 for IERC20;

    struct UserInfo {
        uint256 amount;
        uint256 rewardDebt;
    }

    struct PoolInfo {
        IERC20 lpToken;
        uint256 allocPoint;
        uint256 lastRewardBlock;
        uint256 accCakePerShare;
        uint256 staking_stock_length;
        uint256 multiple;
        bool if_invite_reward;
        bool pool_status;
    }

    CakeToken public cake;
    PoolInfo[] public poolInfo;

    address public devAddress;
    uint256 public cakePerBlock;
    uint256 public stakingFee = 0;
    uint256 public withdrawFee = 0;
    uint256 public inviteFee = 0;
    uint256 public totalAllocPoint = 0;
    uint256 public startBlock;

    mapping(uint256 => mapping(address => UserInfo)) public userInfo;
    mapping(uint256 => mapping(address => uint256)) public first_staking_time;
    mapping(uint256 => mapping(address => uint256)) public last_staking_time;
    mapping(address => address) public invitor;
    mapping(address => bool) public is_invitor;
    mapping(uint256 => mapping(address => uint256)) public pending_list;

    event Deposit(address indexed user, uint256 indexed pid, uint256 amount);
    event Withdraw(address indexed user, uint256 indexed pid, uint256 amount);
    event Harvest(address indexed user, uint256 indexed pid, uint256 amount);
    event EmergencyWithdraw(address indexed user, uint256 indexed pid, uint256 amount);

    constructor() {
        devAddress = _msgSender();
        startBlock = block.number + (10 * 365 * 24 * 60 * 60);
    }

    function poolLength() external view returns (uint256) {
        return poolInfo.length;
    }

    function add( 
        IERC20 _lpToken, 
        uint256 _allocPoint,
        uint256 _multiple,
        uint256 _staking_stock_length, 
        bool _if_invite_reward,
        bool _withUpdate
    ) public onlyOwner {
        if (_withUpdate) {
            massUpdatePools();
        }
        uint256 lastRewardBlock = block.number > startBlock ? block.number : startBlock;
        totalAllocPoint = totalAllocPoint + _allocPoint;
        poolInfo.push(
            PoolInfo({
                lpToken: _lpToken,
                allocPoint: _allocPoint,
                multiple: _multiple,
                lastRewardBlock: lastRewardBlock,
                accCakePerShare: 0,
                staking_stock_length: _staking_stock_length,
                if_invite_reward: _if_invite_reward,
                pool_status: true
            })
        );
    }

    function set(
        uint256 _pid, 
        uint256 _allocPoint, 
        uint256 _multiple,
        uint256 _staking_stock_length, 
        bool _if_invite_reward,
        bool _withUpdate
    ) public onlyOwner {
        if (_withUpdate) {
            massUpdatePools();
        }
        totalAllocPoint = totalAllocPoint - poolInfo[_pid].allocPoint + _allocPoint;
        poolInfo[_pid].allocPoint = _allocPoint;
        poolInfo[_pid].multiple = _multiple;
        poolInfo[_pid].staking_stock_length = _staking_stock_length;
        poolInfo[_pid].if_invite_reward = _if_invite_reward;
    }

    function getMultiplier(uint256 _from, uint256 _to, uint256 _poolMultiple) public pure returns (uint256) {
        return (_to - _from) * _poolMultiple;
    }

    function pendingReward(uint256 _pid, address _user) external view returns (uint256) {
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][_user];
        uint256 accCakePerShare = pool.accCakePerShare;
        uint256 lpSupply = pool.lpToken.balanceOf(address(this));
        if (block.number > pool.lastRewardBlock && lpSupply != 0) {
            uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number, pool.multiple);
            uint256 cakeReward = multiplier * cakePerBlock * pool.allocPoint / totalAllocPoint;
            accCakePerShare = accCakePerShare + (cakeReward * 1e12 / lpSupply);
        }
        uint256 reward = user.amount * accCakePerShare / 1e12 - user.rewardDebt + pending_list[_pid][_user];
        if (pool.if_invite_reward) {
            uint256 fee = reward * inviteFee / 100;
            return reward - fee;
        }
        return reward;
    }

    function massUpdatePools() public {
        uint256 length = poolInfo.length;
        for (uint256 pid = 0; pid < length; pid++) {
            updatePool(pid);
        }
    }

    function updatePool(uint256 _pid) public {
        PoolInfo storage pool = poolInfo[_pid];
        if (block.number <= pool.lastRewardBlock) {
            return;
        }
        uint256 lpSupply = pool.lpToken.balanceOf(address(this));
        if (lpSupply == 0) {
            pool.lastRewardBlock = block.number;
            return;
        }
        uint256 multiplier = getMultiplier(pool.lastRewardBlock, block.number, pool.multiple);
        uint256 cakeReward = multiplier * cakePerBlock * pool.allocPoint / totalAllocPoint;
        if (cakeReward > 0) {
            cake.mint(address(this), cakeReward);
        }

        pool.accCakePerShare = pool.accCakePerShare + (cakeReward * 1e12 / lpSupply);
        pool.lastRewardBlock = block.number;
    }

    function deposit(uint256 _pid, uint256 _amount, address _invitor) public nonReentrant {
        require(poolInfo[_pid].pool_status, 'not open');

        address account = _msgSender();
        if (first_staking_time[_pid][account] == 0) {
            first_staking_time[_pid][account] = block.timestamp;
        }
        if (invitor[account] == address(0) && _invitor != address(0) && _invitor != account && !is_invitor[account]) {
            invitor[account] = _invitor;
            is_invitor[_invitor] = true;
        }
        last_staking_time[_pid][account] = block.timestamp;

        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][account];
        updatePool(_pid);

        if (user.amount > 0) {
            uint256 pending = user.amount * pool.accCakePerShare / 1e12 - user.rewardDebt;
            if (pending > 0) {
                pending_list[_pid][account] = pending_list[_pid][account] + pending;
            }
        }
        if (_amount > 0) {
            uint256 fee = _amount * stakingFee / 100;
            uint256 left = _amount - fee;
            if (fee > 0) {
                pool.lpToken.safeTransferFrom(account, devAddress, fee);
            }
            pool.lpToken.safeTransferFrom(account, address(this), left);
            user.amount = user.amount + left;
        }
        user.rewardDebt = user.amount * pool.accCakePerShare / 1e12;
        emit Deposit(account, _pid, _amount);
    }

    function withdraw(uint256 _pid, uint256 _amount) public nonReentrant {
        address account = _msgSender();
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][account];
        require(user.amount >= _amount, "no more");
        updatePool(_pid);

        uint256 pending = user.amount * pool.accCakePerShare / 1e12 - user.rewardDebt;
        if (pending > 0) {
            pending_list[_pid][account] = pending_list[_pid][account] + pending;
        }
        if (_amount > 0) {
            user.amount = user.amount - _amount;
            uint256 fee = _amount * withdrawFee / 100;
            uint256 left = _amount - fee;
            if (fee > 0) {
                pool.lpToken.safeTransfer(devAddress, fee);
            }
            pool.lpToken.safeTransfer(account, left);
        }
        user.rewardDebt = user.amount * pool.accCakePerShare / 1e12;
        emit Withdraw(account, _pid, _amount);
    }

    function emergencyWithdraw(uint256 _pid) public nonReentrant {
        address account = _msgSender();
        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][account];
        require(user.amount > 0, "no deposit");

        uint256 fee = user.amount * withdrawFee / 100;
        uint256 left = user.amount - fee;
        if (fee > 0) {
            pool.lpToken.safeTransfer(devAddress, fee);
        }
        pool.lpToken.safeTransfer(account, left);
        user.amount = 0;
        user.rewardDebt = 0;
        pending_list[_pid][account] = 0;
        emit EmergencyWithdraw(account, _pid, left);
    }

    function canHarvest(uint256 _pid, address _user) public view returns (bool) {
        return
            block.number >= startBlock &&
            block.timestamp > last_staking_time[_pid][_user] + poolInfo[_pid].staking_stock_length;
    }

    function harvest(uint256 _pid) public nonReentrant isHuman {
        address account = _msgSender();
        require(canHarvest(_pid, account), 'time limit');

        PoolInfo storage pool = poolInfo[_pid];
        UserInfo storage user = userInfo[_pid][account];
        updatePool(_pid);

        if (user.amount > 0) {
            uint256 pending = user.amount * pool.accCakePerShare / 1e12 - user.rewardDebt;
            if (pending > 0) {
                pending_list[_pid][account] = pending_list[_pid][account] + pending;
            }
        }
        user.rewardDebt = user.amount * pool.accCakePerShare / 1e12;


        uint256 reward = pending_list[_pid][account];
        require(reward > 0, 'no rewards');

        pending_list[_pid][account] = 0;
        if (pool.if_invite_reward) {
            uint256 fee = reward * inviteFee / 100;
            if (fee > 0) {
                if (invitor[account] == address(0)) {
                    safeCakeTransfer(devAddress, fee);
                } else {
                    safeCakeTransfer(invitor[account], fee);
                }
            }
            reward = reward - fee;
            safeCakeTransfer(account, reward);
        } else {
            safeCakeTransfer(account, reward);
        }
        emit Harvest(account, _pid, reward);
    }

    function safeCakeTransfer(address _to, uint256 _amount) internal {
        uint256 cakeBal = cake.balanceOf(address(this));
        if (_amount > cakeBal) {
            cake.transfer(_to, cakeBal);
        } else {
            cake.transfer(_to, _amount);
        }
    }

    function startFarming() public onlyOwner {
        require(block.number < startBlock, "farm started already");

        uint256 length = poolInfo.length;
        for (uint256 pid = 0; pid < length; ++pid) {
            poolInfo[pid].lastRewardBlock = block.number;
        }

        startBlock = block.number;
    }

    function setPoolState(uint256 _pid, bool _state) public onlyOwner {
        poolInfo[_pid].pool_status = _state;
    }

    function setFees(uint256 _stakingFee, uint256 _withdrawFee, uint256 _inviteFee) public onlyOwner {
        require(_stakingFee < 50 && _withdrawFee < 50 && _inviteFee < 50, 'too high');
        stakingFee = _stakingFee;
        withdrawFee = _withdrawFee;
        inviteFee = _inviteFee;
    }

    function setCake(CakeToken _cake, uint256 _cakePerBlock) public onlyOwner {
        cake = _cake;
        cakePerBlock = _cakePerBlock;
    }

    function setdev(address _devaddr) public {
        require(_msgSender() == devAddress || _msgSender() == owner(), "cannot");
        devAddress = _devaddr;
    }
}

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"EmergencyWithdraw","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Harvest","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"uint256","name":"_multiple","type":"uint256"},{"internalType":"uint256","name":"_staking_stock_length","type":"uint256"},{"internalType":"bool","name":"_if_invite_reward","type":"bool"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"add","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cake","outputs":[{"internalType":"contract CakeToken","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cakePerBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"canHarvest","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_invitor","type":"address"}],"name":"deposit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"emergencyWithdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"first_staking_time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_from","type":"uint256"},{"internalType":"uint256","name":"_to","type":"uint256"},{"internalType":"uint256","name":"_poolMultiple","type":"uint256"}],"name":"getMultiplier","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"harvest","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"inviteFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"invitor","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"is_invitor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"last_staking_time","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"massUpdatePools","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_user","type":"address"}],"name":"pendingReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"pending_list","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"poolInfo","outputs":[{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"uint256","name":"allocPoint","type":"uint256"},{"internalType":"uint256","name":"lastRewardBlock","type":"uint256"},{"internalType":"uint256","name":"accCakePerShare","type":"uint256"},{"internalType":"uint256","name":"staking_stock_length","type":"uint256"},{"internalType":"uint256","name":"multiple","type":"uint256"},{"internalType":"bool","name":"if_invite_reward","type":"bool"},{"internalType":"bool","name":"pool_status","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_allocPoint","type":"uint256"},{"internalType":"uint256","name":"_multiple","type":"uint256"},{"internalType":"uint256","name":"_staking_stock_length","type":"uint256"},{"internalType":"bool","name":"_if_invite_reward","type":"bool"},{"internalType":"bool","name":"_withUpdate","type":"bool"}],"name":"set","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"contract CakeToken","name":"_cake","type":"address"},{"internalType":"uint256","name":"_cakePerBlock","type":"uint256"}],"name":"setCake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_stakingFee","type":"uint256"},{"internalType":"uint256","name":"_withdrawFee","type":"uint256"},{"internalType":"uint256","name":"_inviteFee","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"bool","name":"_state","type":"bool"}],"name":"setPoolState","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devaddr","type":"address"}],"name":"setdev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startFarming","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalAllocPoint","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"updatePool","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"address","name":"","type":"address"}],"name":"userInfo","outputs":[{"internalType":"uint256","name":"amount","type":"uint256"},{"internalType":"uint256","name":"rewardDebt","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"withdrawFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"}]

6080604052600060065560006007556000600855600060095534801561002457600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a35060018055600480546001600160a01b0319163317905561008a436312cc0300610092565b600a556100b8565b600082198211156100b357634e487b7160e01b600052601160045260246000fd5b500190565b61233f806100c76000396000f3fe608060405234801561001057600080fd5b50600436106102115760003560e01c80637bafb02911610125578063d3b6b88c116100ad578063e35772f21161007c578063e35772f214610512578063e941fa7814610525578063ea9301d61461052e578063eff9884314610551578063f2fde38b1461055a57600080fd5b8063d3b6b88c146104c6578063dba408b1146104d9578063dce17484146104ec578063ddc63262146104ff57600080fd5b806398969e82116100f457806398969e821461047c578063afbcfea11461048f578063b38a436014610497578063b52d881f146104a0578063cec10c11146104b357600080fd5b80637bafb029146103fe5780638da5cb5b146104115780638dbdbe6d1461042257806393f1a40b1461043557600080fd5b80633cc5ac2f116101a857806348cd4cb11161017757806348cd4cb1146103bf57806351eb05a6146103c85780635312ea8e146103db578063630b5ba1146103ee578063715018a6146103f657600080fd5b80633cc5ac2f146103435780633d6b5e5c14610358578063441a3e701461038357806347f6567e1461039657600080fd5b806328634a74116101e457806328634a741461029f5780632e6c998d146102ca5780632f5a947d146102ed5780633ad10ef61461031857600080fd5b80630755e0b614610216578063081e3eda146102325780631526fe271461023a57806317caf6f114610296575b600080fd5b61021f60055481565b6040519081526020015b60405180910390f35b60035461021f565b61024d610248366004611f2c565b61056d565b604080516001600160a01b0390991689526020890197909752958701949094526060860192909252608085015260a0840152151560c0830152151560e082015261010001610229565b61021f60095481565b61021f6102ad366004611f5d565b601060209081526000928352604080842090915290825290205481565b6102dd6102d8366004611f5d565b6105d2565b6040519015158152602001610229565b61021f6102fb366004611f5d565b600d60209081526000928352604080842090915290825290205481565b60045461032b906001600160a01b031681565b6040516001600160a01b039091168152602001610229565b610356610351366004611f9b565b61063f565b005b61021f610366366004611f5d565b600c60209081526000928352604080842090915290825290205481565b610356610391366004611ff9565b61077c565b61032b6103a436600461201b565b600e602052600090815260409020546001600160a01b031681565b61021f600a5481565b6103566103d6366004611f2c565b6109b2565b6103566103e9366004611f2c565b610b64565b610356610ce1565b610356610d0e565b61021f61040c36600461203f565b610d82565b6000546001600160a01b031661032b565b61035661043036600461206b565b610da1565b610467610443366004611f5d565b600b6020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610229565b61021f61048a366004611f5d565b611121565b610356611307565b61021f60085481565b6103566104ae3660046120a4565b6113c7565b6103566104c136600461203f565b611431565b6103566104d436600461201b565b6114bc565b6103566104e73660046120c9565b61153f565b60025461032b906001600160a01b031681565b61035661050d366004611f2c565b61158f565b6103566105203660046120f5565b6118d0565b61021f60075481565b6102dd61053c36600461201b565b600f6020526000908152604090205460ff1681565b61021f60065481565b61035661056836600461201b565b611ad0565b6003818154811061057d57600080fd5b600091825260209091206007909102018054600182015460028301546003840154600485015460058601546006909601546001600160a01b039095169650929491939092919060ff8082169161010090041688565b6000600a5443101580156106365750600383815481106105f4576105f461213e565b6000918252602080832060046007909302019190910154858352600d825260408084206001600160a01b0387168552909252912054610633919061216a565b42115b90505b92915050565b6000546001600160a01b031633146106725760405162461bcd60e51b815260040161066990612182565b60405180910390fd5b801561068057610680610ce1565b84600387815481106106945761069461213e565b9060005260206000209060070201600101546009546106b391906121ae565b6106bd919061216a565b60098190555084600387815481106106d7576106d761213e565b90600052602060002090600702016001018190555083600387815481106107005761070061213e565b90600052602060002090600702016005018190555082600387815481106107295761072961213e565b90600052602060002090600702016004018190555081600387815481106107525761075261213e565b60009182526020909120600790910201600601805460ff1916911515919091179055505050505050565b6002600154141561079f5760405162461bcd60e51b8152600401610669906121c5565b600260015560003390506000600384815481106107be576107be61213e565b60009182526020808320878452600b825260408085206001600160a01b0388168652909252922080546007909202909201925084111561082a5760405162461bcd60e51b81526020600482015260076024820152666e6f206d6f726560c81b6044820152606401610669565b610833856109b2565b6000816001015464e8d4a510008460030154846000015461085491906121fc565b61085e919061221b565b61086891906121ae565b905080156108c25760008681526010602090815260408083206001600160a01b038816845290915290205461089e90829061216a565b60008781526010602090815260408083206001600160a01b03891684529091529020555b841561093f5781546108d59086906121ae565b82556007546000906064906108ea90886121fc565b6108f4919061221b565b9050600061090282886121ae565b90508115610926576004548554610926916001600160a01b03918216911684611bba565b845461093c906001600160a01b03168783611bba565b50505b6003830154825464e8d4a5100091610956916121fc565b610960919061221b565b600183015560405185815286906001600160a01b038616907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568906020015b60405180910390a350506001805550505050565b6000600382815481106109c7576109c761213e565b90600052602060002090600702019050806002015443116109e6575050565b80546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610a2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a52919061223d565b905080610a6457504360029091015550565b6000610a798360020154438560050154610d82565b90506000600954846001015460055484610a9391906121fc565b610a9d91906121fc565b610aa7919061221b565b90508015610b26576002546040516340c10f1960e01b8152306004820152602481018390526001600160a01b03909116906340c10f19906044016020604051808303816000875af1158015610b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b249190612256565b505b82610b368264e8d4a510006121fc565b610b40919061221b565b8460030154610b4f919061216a565b60038501555050436002909201919091555050565b60026001541415610b875760405162461bcd60e51b8152600401610669906121c5565b60026001556000339050600060038381548110610ba657610ba661213e565b60009182526020808320868452600b825260408085206001600160a01b03881686529092529220805460079092029092019250610c125760405162461bcd60e51b815260206004820152600a6024820152691b9bc819195c1bdcda5d60b21b6044820152606401610669565b600060646007548360000154610c2891906121fc565b610c32919061221b565b90506000818360000154610c4691906121ae565b90508115610c6a576004548454610c6a916001600160a01b03918216911684611bba565b8354610c80906001600160a01b03168683611bba565b6000808455600184018190558681526010602090815260408083206001600160a01b03891680855290835281842093909355518381528892917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae0595910161099e565b60035460005b81811015610d0a57610cf8816109b2565b80610d0281612273565b915050610ce7565b5050565b6000546001600160a01b03163314610d385760405162461bcd60e51b815260040161066990612182565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600081610d8f85856121ae565b610d9991906121fc565b949350505050565b60026001541415610dc45760405162461bcd60e51b8152600401610669906121c5565b60026001556003805484908110610ddd57610ddd61213e565b906000526020600020906007020160060160019054906101000a900460ff16610e335760405162461bcd60e51b81526020600482015260086024820152673737ba1037b832b760c11b6044820152606401610669565b6000838152600c6020908152604080832033808552925290912054610e78576000848152600c602090815260408083206001600160a01b038516845290915290204290555b6001600160a01b038181166000908152600e602052604090205416158015610ea857506001600160a01b03821615155b8015610ec65750806001600160a01b0316826001600160a01b031614155b8015610eeb57506001600160a01b0381166000908152600f602052604090205460ff16155b15610f34576001600160a01b038181166000908152600e6020908152604080832080546001600160a01b0319169487169485179055928252600f905220805460ff191660011790555b6000848152600d602090815260408083206001600160a01b038516845290915281204290556003805486908110610f6d57610f6d61213e565b60009182526020808320888452600b825260408085206001600160a01b0388168652909252922060079091029091019150610fa7866109b2565b80541561103f576000816001015464e8d4a5100084600301548460000154610fcf91906121fc565b610fd9919061221b565b610fe391906121ae565b9050801561103d5760008781526010602090815260408083206001600160a01b038816845290915290205461101990829061216a565b60008881526010602090815260408083206001600160a01b03891684529091529020555b505b84156110be57600060646006548761105791906121fc565b611061919061221b565b9050600061106f82886121ae565b90508115611095576004548454611095916001600160a01b039182169188911685611c22565b83546110ac906001600160a01b0316863084611c22565b82546110b990829061216a565b835550505b6003820154815464e8d4a51000916110d5916121fc565b6110df919061221b565b600182015560405185815286906001600160a01b038516907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159060200161099e565b600080600384815481106111375761113761213e565b60009182526020808320878452600b825260408085206001600160a01b03898116875293528085206007949094029091016003810154815492516370a0823160e01b815230600482015291965093949291909116906370a0823190602401602060405180830381865afa1580156111b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d6919061223d565b90508360020154431180156111ea57508015155b1561125d5760006112048560020154438760050154610d82565b9050600060095486600101546005548461121e91906121fc565b61122891906121fc565b611232919061221b565b9050826112448264e8d4a510006121fc565b61124e919061221b565b611258908561216a565b935050505b60008781526010602090815260408083206001600160a01b038a1684529091528120546001850154855464e8d4a51000906112999087906121fc565b6112a3919061221b565b6112ad91906121ae565b6112b7919061216a565b600686015490915060ff16156112fc5760006064600854836112d991906121fc565b6112e3919061221b565b90506112ef81836121ae565b9650505050505050610639565b979650505050505050565b6000546001600160a01b031633146113315760405162461bcd60e51b815260040161066990612182565b600a5443106113795760405162461bcd60e51b81526020600482015260146024820152736661726d207374617274656420616c726561647960601b6044820152606401610669565b60035460005b818110156113bf57436003828154811061139b5761139b61213e565b60009182526020909120600260079092020101556113b881612273565b905061137f565b505043600a55565b6000546001600160a01b031633146113f15760405162461bcd60e51b815260040161066990612182565b80600383815481106114055761140561213e565b906000526020600020906007020160060160016101000a81548160ff0219169083151502179055505050565b6000546001600160a01b0316331461145b5760405162461bcd60e51b815260040161066990612182565b60328310801561146b5750603282105b80156114775750603281105b6114ae5760405162461bcd60e51b81526020600482015260086024820152670e8dede40d0d2ced60c31b6044820152606401610669565b600692909255600755600855565b6004546001600160a01b0316336001600160a01b031614806114e857506000546001600160a01b031633145b61151d5760405162461bcd60e51b815260206004820152600660248201526518d85b9b9bdd60d21b6044820152606401610669565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115695760405162461bcd60e51b815260040161066990612182565b600280546001600160a01b0319166001600160a01b039390931692909217909155600555565b600260015414156115b25760405162461bcd60e51b8152600401610669906121c5565b60026001553233146115fa5760405162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b6044820152606401610669565b3361160582826105d2565b61163e5760405162461bcd60e51b815260206004820152600a6024820152691d1a5b59481b1a5b5a5d60b21b6044820152606401610669565b6000600383815481106116535761165361213e565b60009182526020808320868452600b825260408085206001600160a01b038816865290925292206007909102909101915061168d846109b2565b805415611725576000816001015464e8d4a51000846003015484600001546116b591906121fc565b6116bf919061221b565b6116c991906121ae565b905080156117235760008581526010602090815260408083206001600160a01b03881684529091529020546116ff90829061216a565b60008681526010602090815260408083206001600160a01b03891684529091529020555b505b6003820154815464e8d4a510009161173c916121fc565b611746919061221b565b600182015560008481526010602090815260408083206001600160a01b0387168452909152902054806117a85760405162461bcd60e51b815260206004820152600a6024820152696e6f207265776172647360b01b6044820152606401610669565b60008581526010602090815260408083206001600160a01b0388168452909152812055600683015460ff16156118775760006064600854836117ea91906121fc565b6117f4919061221b565b9050801561185b576001600160a01b038581166000908152600e60205260409020541661183657600454611831906001600160a01b031682611c60565b61185b565b6001600160a01b038086166000908152600e602052604090205461185b911682611c60565b61186581836121ae565b91506118718583611c60565b50611881565b6118818482611c60565b84846001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954836040516118bd91815260200190565b60405180910390a3505060018055505050565b6000546001600160a01b031633146118fa5760405162461bcd60e51b815260040161066990612182565b801561190857611908610ce1565b6000600a54431161191b57600a5461191d565b435b90508560095461192d919061216a565b6009556040805161010080820183526001600160a01b03998a168252602082019889529181019283526000606082018181526080830197885260a0830198895295151560c08301908152600160e0840181815260038054928301815590935292517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b600790940293840180546001600160a01b03191691909c1617909a5597517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c82015591517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d83015592517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85e82015592517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85f8401555091517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f86082015592517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f8619093018054925161ffff1990931693151561ff0019169390931791151502179055565b6000546001600160a01b03163314611afa5760405162461bcd60e51b815260040161066990612182565b6001600160a01b038116611b5f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610669565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b038316602482015260448101829052611c1d90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611d88565b505050565b6040516001600160a01b0380851660248301528316604482015260648101829052611c5a9085906323b872dd60e01b90608401611be6565b50505050565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccd919061223d565b905080821115611d4f5760025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb906044015b6020604051808303816000875af1158015611d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612256565b60025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529091169063a9059cbb90604401611d0c565b6000611dc28260405180604001604052806002815260200161065360f41b815250856001600160a01b0316611e119092919063ffffffff16565b805190915015611c1d5780806020019051810190611de09190612256565b611c1d5760405162461bcd60e51b8152602060048201526002602482015261653160f01b6044820152606401610669565b6060610d9984846000856060611e2685611ef3565b611e575760405162461bcd60e51b8152602060048201526002602482015261065360f41b6044820152606401610669565b600080866001600160a01b03168587604051611e7391906122ba565b60006040518083038185875af1925050503d8060008114611eb0576040519150601f19603f3d011682016040523d82523d6000602084013e611eb5565b606091505b50915091508115611ec9579150610d999050565b805115611ed95780518082602001fd5b8360405162461bcd60e51b815260040161066991906122d6565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610d99575050151592915050565b600060208284031215611f3e57600080fd5b5035919050565b6001600160a01b0381168114611f5a57600080fd5b50565b60008060408385031215611f7057600080fd5b823591506020830135611f8281611f45565b809150509250929050565b8015158114611f5a57600080fd5b60008060008060008060c08789031215611fb457600080fd5b863595506020870135945060408701359350606087013592506080870135611fdb81611f8d565b915060a0870135611feb81611f8d565b809150509295509295509295565b6000806040838503121561200c57600080fd5b50508035926020909101359150565b60006020828403121561202d57600080fd5b813561203881611f45565b9392505050565b60008060006060848603121561205457600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561208057600080fd5b8335925060208401359150604084013561209981611f45565b809150509250925092565b600080604083850312156120b757600080fd5b823591506020830135611f8281611f8d565b600080604083850312156120dc57600080fd5b82356120e781611f45565b946020939093013593505050565b60008060008060008060c0878903121561210e57600080fd5b863561211981611f45565b95506020870135945060408701359350606087013592506080870135611fdb81611f8d565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561217d5761217d612154565b500190565b60208082526012908201527127bbb730b136329d103737ba1037bbb732b960711b604082015260600190565b6000828210156121c0576121c0612154565b500390565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600081600019048311821515161561221657612216612154565b500290565b60008261223857634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561224f57600080fd5b5051919050565b60006020828403121561226857600080fd5b815161203881611f8d565b600060001982141561228757612287612154565b5060010190565b60005b838110156122a9578181015183820152602001612291565b83811115611c5a5750506000910152565b600082516122cc81846020870161228e565b9190910192915050565b60208152600082518060208401526122f581604085016020870161228e565b601f01601f1916919091016040019291505056fea2646970667358221220e71a2e6606506d29ebf656ac0d0cd615b76175bb32e26b2dbd98293d76cf4f3364736f6c634300080a0033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106102115760003560e01c80637bafb02911610125578063d3b6b88c116100ad578063e35772f21161007c578063e35772f214610512578063e941fa7814610525578063ea9301d61461052e578063eff9884314610551578063f2fde38b1461055a57600080fd5b8063d3b6b88c146104c6578063dba408b1146104d9578063dce17484146104ec578063ddc63262146104ff57600080fd5b806398969e82116100f457806398969e821461047c578063afbcfea11461048f578063b38a436014610497578063b52d881f146104a0578063cec10c11146104b357600080fd5b80637bafb029146103fe5780638da5cb5b146104115780638dbdbe6d1461042257806393f1a40b1461043557600080fd5b80633cc5ac2f116101a857806348cd4cb11161017757806348cd4cb1146103bf57806351eb05a6146103c85780635312ea8e146103db578063630b5ba1146103ee578063715018a6146103f657600080fd5b80633cc5ac2f146103435780633d6b5e5c14610358578063441a3e701461038357806347f6567e1461039657600080fd5b806328634a74116101e457806328634a741461029f5780632e6c998d146102ca5780632f5a947d146102ed5780633ad10ef61461031857600080fd5b80630755e0b614610216578063081e3eda146102325780631526fe271461023a57806317caf6f114610296575b600080fd5b61021f60055481565b6040519081526020015b60405180910390f35b60035461021f565b61024d610248366004611f2c565b61056d565b604080516001600160a01b0390991689526020890197909752958701949094526060860192909252608085015260a0840152151560c0830152151560e082015261010001610229565b61021f60095481565b61021f6102ad366004611f5d565b601060209081526000928352604080842090915290825290205481565b6102dd6102d8366004611f5d565b6105d2565b6040519015158152602001610229565b61021f6102fb366004611f5d565b600d60209081526000928352604080842090915290825290205481565b60045461032b906001600160a01b031681565b6040516001600160a01b039091168152602001610229565b610356610351366004611f9b565b61063f565b005b61021f610366366004611f5d565b600c60209081526000928352604080842090915290825290205481565b610356610391366004611ff9565b61077c565b61032b6103a436600461201b565b600e602052600090815260409020546001600160a01b031681565b61021f600a5481565b6103566103d6366004611f2c565b6109b2565b6103566103e9366004611f2c565b610b64565b610356610ce1565b610356610d0e565b61021f61040c36600461203f565b610d82565b6000546001600160a01b031661032b565b61035661043036600461206b565b610da1565b610467610443366004611f5d565b600b6020908152600092835260408084209091529082529020805460019091015482565b60408051928352602083019190915201610229565b61021f61048a366004611f5d565b611121565b610356611307565b61021f60085481565b6103566104ae3660046120a4565b6113c7565b6103566104c136600461203f565b611431565b6103566104d436600461201b565b6114bc565b6103566104e73660046120c9565b61153f565b60025461032b906001600160a01b031681565b61035661050d366004611f2c565b61158f565b6103566105203660046120f5565b6118d0565b61021f60075481565b6102dd61053c36600461201b565b600f6020526000908152604090205460ff1681565b61021f60065481565b61035661056836600461201b565b611ad0565b6003818154811061057d57600080fd5b600091825260209091206007909102018054600182015460028301546003840154600485015460058601546006909601546001600160a01b039095169650929491939092919060ff8082169161010090041688565b6000600a5443101580156106365750600383815481106105f4576105f461213e565b6000918252602080832060046007909302019190910154858352600d825260408084206001600160a01b0387168552909252912054610633919061216a565b42115b90505b92915050565b6000546001600160a01b031633146106725760405162461bcd60e51b815260040161066990612182565b60405180910390fd5b801561068057610680610ce1565b84600387815481106106945761069461213e565b9060005260206000209060070201600101546009546106b391906121ae565b6106bd919061216a565b60098190555084600387815481106106d7576106d761213e565b90600052602060002090600702016001018190555083600387815481106107005761070061213e565b90600052602060002090600702016005018190555082600387815481106107295761072961213e565b90600052602060002090600702016004018190555081600387815481106107525761075261213e565b60009182526020909120600790910201600601805460ff1916911515919091179055505050505050565b6002600154141561079f5760405162461bcd60e51b8152600401610669906121c5565b600260015560003390506000600384815481106107be576107be61213e565b60009182526020808320878452600b825260408085206001600160a01b0388168652909252922080546007909202909201925084111561082a5760405162461bcd60e51b81526020600482015260076024820152666e6f206d6f726560c81b6044820152606401610669565b610833856109b2565b6000816001015464e8d4a510008460030154846000015461085491906121fc565b61085e919061221b565b61086891906121ae565b905080156108c25760008681526010602090815260408083206001600160a01b038816845290915290205461089e90829061216a565b60008781526010602090815260408083206001600160a01b03891684529091529020555b841561093f5781546108d59086906121ae565b82556007546000906064906108ea90886121fc565b6108f4919061221b565b9050600061090282886121ae565b90508115610926576004548554610926916001600160a01b03918216911684611bba565b845461093c906001600160a01b03168783611bba565b50505b6003830154825464e8d4a5100091610956916121fc565b610960919061221b565b600183015560405185815286906001600160a01b038616907ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b568906020015b60405180910390a350506001805550505050565b6000600382815481106109c7576109c761213e565b90600052602060002090600702019050806002015443116109e6575050565b80546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015610a2e573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a52919061223d565b905080610a6457504360029091015550565b6000610a798360020154438560050154610d82565b90506000600954846001015460055484610a9391906121fc565b610a9d91906121fc565b610aa7919061221b565b90508015610b26576002546040516340c10f1960e01b8152306004820152602481018390526001600160a01b03909116906340c10f19906044016020604051808303816000875af1158015610b00573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b249190612256565b505b82610b368264e8d4a510006121fc565b610b40919061221b565b8460030154610b4f919061216a565b60038501555050436002909201919091555050565b60026001541415610b875760405162461bcd60e51b8152600401610669906121c5565b60026001556000339050600060038381548110610ba657610ba661213e565b60009182526020808320868452600b825260408085206001600160a01b03881686529092529220805460079092029092019250610c125760405162461bcd60e51b815260206004820152600a6024820152691b9bc819195c1bdcda5d60b21b6044820152606401610669565b600060646007548360000154610c2891906121fc565b610c32919061221b565b90506000818360000154610c4691906121ae565b90508115610c6a576004548454610c6a916001600160a01b03918216911684611bba565b8354610c80906001600160a01b03168683611bba565b6000808455600184018190558681526010602090815260408083206001600160a01b03891680855290835281842093909355518381528892917fbb757047c2b5f3974fe26b7c10f732e7bce710b0952a71082702781e62ae0595910161099e565b60035460005b81811015610d0a57610cf8816109b2565b80610d0281612273565b915050610ce7565b5050565b6000546001600160a01b03163314610d385760405162461bcd60e51b815260040161066990612182565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b600081610d8f85856121ae565b610d9991906121fc565b949350505050565b60026001541415610dc45760405162461bcd60e51b8152600401610669906121c5565b60026001556003805484908110610ddd57610ddd61213e565b906000526020600020906007020160060160019054906101000a900460ff16610e335760405162461bcd60e51b81526020600482015260086024820152673737ba1037b832b760c11b6044820152606401610669565b6000838152600c6020908152604080832033808552925290912054610e78576000848152600c602090815260408083206001600160a01b038516845290915290204290555b6001600160a01b038181166000908152600e602052604090205416158015610ea857506001600160a01b03821615155b8015610ec65750806001600160a01b0316826001600160a01b031614155b8015610eeb57506001600160a01b0381166000908152600f602052604090205460ff16155b15610f34576001600160a01b038181166000908152600e6020908152604080832080546001600160a01b0319169487169485179055928252600f905220805460ff191660011790555b6000848152600d602090815260408083206001600160a01b038516845290915281204290556003805486908110610f6d57610f6d61213e565b60009182526020808320888452600b825260408085206001600160a01b0388168652909252922060079091029091019150610fa7866109b2565b80541561103f576000816001015464e8d4a5100084600301548460000154610fcf91906121fc565b610fd9919061221b565b610fe391906121ae565b9050801561103d5760008781526010602090815260408083206001600160a01b038816845290915290205461101990829061216a565b60008881526010602090815260408083206001600160a01b03891684529091529020555b505b84156110be57600060646006548761105791906121fc565b611061919061221b565b9050600061106f82886121ae565b90508115611095576004548454611095916001600160a01b039182169188911685611c22565b83546110ac906001600160a01b0316863084611c22565b82546110b990829061216a565b835550505b6003820154815464e8d4a51000916110d5916121fc565b6110df919061221b565b600182015560405185815286906001600160a01b038516907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a159060200161099e565b600080600384815481106111375761113761213e565b60009182526020808320878452600b825260408085206001600160a01b03898116875293528085206007949094029091016003810154815492516370a0823160e01b815230600482015291965093949291909116906370a0823190602401602060405180830381865afa1580156111b2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111d6919061223d565b90508360020154431180156111ea57508015155b1561125d5760006112048560020154438760050154610d82565b9050600060095486600101546005548461121e91906121fc565b61122891906121fc565b611232919061221b565b9050826112448264e8d4a510006121fc565b61124e919061221b565b611258908561216a565b935050505b60008781526010602090815260408083206001600160a01b038a1684529091528120546001850154855464e8d4a51000906112999087906121fc565b6112a3919061221b565b6112ad91906121ae565b6112b7919061216a565b600686015490915060ff16156112fc5760006064600854836112d991906121fc565b6112e3919061221b565b90506112ef81836121ae565b9650505050505050610639565b979650505050505050565b6000546001600160a01b031633146113315760405162461bcd60e51b815260040161066990612182565b600a5443106113795760405162461bcd60e51b81526020600482015260146024820152736661726d207374617274656420616c726561647960601b6044820152606401610669565b60035460005b818110156113bf57436003828154811061139b5761139b61213e565b60009182526020909120600260079092020101556113b881612273565b905061137f565b505043600a55565b6000546001600160a01b031633146113f15760405162461bcd60e51b815260040161066990612182565b80600383815481106114055761140561213e565b906000526020600020906007020160060160016101000a81548160ff0219169083151502179055505050565b6000546001600160a01b0316331461145b5760405162461bcd60e51b815260040161066990612182565b60328310801561146b5750603282105b80156114775750603281105b6114ae5760405162461bcd60e51b81526020600482015260086024820152670e8dede40d0d2ced60c31b6044820152606401610669565b600692909255600755600855565b6004546001600160a01b0316336001600160a01b031614806114e857506000546001600160a01b031633145b61151d5760405162461bcd60e51b815260206004820152600660248201526518d85b9b9bdd60d21b6044820152606401610669565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146115695760405162461bcd60e51b815260040161066990612182565b600280546001600160a01b0319166001600160a01b039390931692909217909155600555565b600260015414156115b25760405162461bcd60e51b8152600401610669906121c5565b60026001553233146115fa5760405162461bcd60e51b8152602060048201526011602482015270736f7272792068756d616e73206f6e6c7960781b6044820152606401610669565b3361160582826105d2565b61163e5760405162461bcd60e51b815260206004820152600a6024820152691d1a5b59481b1a5b5a5d60b21b6044820152606401610669565b6000600383815481106116535761165361213e565b60009182526020808320868452600b825260408085206001600160a01b038816865290925292206007909102909101915061168d846109b2565b805415611725576000816001015464e8d4a51000846003015484600001546116b591906121fc565b6116bf919061221b565b6116c991906121ae565b905080156117235760008581526010602090815260408083206001600160a01b03881684529091529020546116ff90829061216a565b60008681526010602090815260408083206001600160a01b03891684529091529020555b505b6003820154815464e8d4a510009161173c916121fc565b611746919061221b565b600182015560008481526010602090815260408083206001600160a01b0387168452909152902054806117a85760405162461bcd60e51b815260206004820152600a6024820152696e6f207265776172647360b01b6044820152606401610669565b60008581526010602090815260408083206001600160a01b0388168452909152812055600683015460ff16156118775760006064600854836117ea91906121fc565b6117f4919061221b565b9050801561185b576001600160a01b038581166000908152600e60205260409020541661183657600454611831906001600160a01b031682611c60565b61185b565b6001600160a01b038086166000908152600e602052604090205461185b911682611c60565b61186581836121ae565b91506118718583611c60565b50611881565b6118818482611c60565b84846001600160a01b03167f71bab65ced2e5750775a0613be067df48ef06cf92a496ebf7663ae0660924954836040516118bd91815260200190565b60405180910390a3505060018055505050565b6000546001600160a01b031633146118fa5760405162461bcd60e51b815260040161066990612182565b801561190857611908610ce1565b6000600a54431161191b57600a5461191d565b435b90508560095461192d919061216a565b6009556040805161010080820183526001600160a01b03998a168252602082019889529181019283526000606082018181526080830197885260a0830198895295151560c08301908152600160e0840181815260038054928301815590935292517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85b600790940293840180546001600160a01b03191691909c1617909a5597517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85c82015591517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85d83015592517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85e82015592517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f85f8401555091517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f86082015592517fc2575a0e9e593c00f959f8c92f12db2869c3395a3b0502d05e2516446f71f8619093018054925161ffff1990931693151561ff0019169390931791151502179055565b6000546001600160a01b03163314611afa5760405162461bcd60e51b815260040161066990612182565b6001600160a01b038116611b5f5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610669565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6040516001600160a01b038316602482015260448101829052611c1d90849063a9059cbb60e01b906064015b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152611d88565b505050565b6040516001600160a01b0380851660248301528316604482015260648101829052611c5a9085906323b872dd60e01b90608401611be6565b50505050565b6002546040516370a0823160e01b81523060048201526000916001600160a01b0316906370a0823190602401602060405180830381865afa158015611ca9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611ccd919061223d565b905080821115611d4f5760025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018490529091169063a9059cbb906044015b6020604051808303816000875af1158015611d2b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611c5a9190612256565b60025460405163a9059cbb60e01b81526001600160a01b038581166004830152602482018590529091169063a9059cbb90604401611d0c565b6000611dc28260405180604001604052806002815260200161065360f41b815250856001600160a01b0316611e119092919063ffffffff16565b805190915015611c1d5780806020019051810190611de09190612256565b611c1d5760405162461bcd60e51b8152602060048201526002602482015261653160f01b6044820152606401610669565b6060610d9984846000856060611e2685611ef3565b611e575760405162461bcd60e51b8152602060048201526002602482015261065360f41b6044820152606401610669565b600080866001600160a01b03168587604051611e7391906122ba565b60006040518083038185875af1925050503d8060008114611eb0576040519150601f19603f3d011682016040523d82523d6000602084013e611eb5565b606091505b50915091508115611ec9579150610d999050565b805115611ed95780518082602001fd5b8360405162461bcd60e51b815260040161066991906122d6565b6000813f7fc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470818114801590610d99575050151592915050565b600060208284031215611f3e57600080fd5b5035919050565b6001600160a01b0381168114611f5a57600080fd5b50565b60008060408385031215611f7057600080fd5b823591506020830135611f8281611f45565b809150509250929050565b8015158114611f5a57600080fd5b60008060008060008060c08789031215611fb457600080fd5b863595506020870135945060408701359350606087013592506080870135611fdb81611f8d565b915060a0870135611feb81611f8d565b809150509295509295509295565b6000806040838503121561200c57600080fd5b50508035926020909101359150565b60006020828403121561202d57600080fd5b813561203881611f45565b9392505050565b60008060006060848603121561205457600080fd5b505081359360208301359350604090920135919050565b60008060006060848603121561208057600080fd5b8335925060208401359150604084013561209981611f45565b809150509250925092565b600080604083850312156120b757600080fd5b823591506020830135611f8281611f8d565b600080604083850312156120dc57600080fd5b82356120e781611f45565b946020939093013593505050565b60008060008060008060c0878903121561210e57600080fd5b863561211981611f45565b95506020870135945060408701359350606087013592506080870135611fdb81611f8d565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052601160045260246000fd5b6000821982111561217d5761217d612154565b500190565b60208082526012908201527127bbb730b136329d103737ba1037bbb732b960711b604082015260600190565b6000828210156121c0576121c0612154565b500390565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b600081600019048311821515161561221657612216612154565b500290565b60008261223857634e487b7160e01b600052601260045260246000fd5b500490565b60006020828403121561224f57600080fd5b5051919050565b60006020828403121561226857600080fd5b815161203881611f8d565b600060001982141561228757612287612154565b5060010190565b60005b838110156122a9578181015183820152602001612291565b83811115611c5a5750506000910152565b600082516122cc81846020870161228e565b9190910192915050565b60208152600082518060208401526122f581604085016020870161228e565b601f01601f1916919091016040019291505056fea2646970667358221220e71a2e6606506d29ebf656ac0d0cd615b76175bb32e26b2dbd98293d76cf4f3364736f6c634300080a0033

Deployed ByteCode Sourcemap

6795:11490:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7342:27;;;;;;;;;160:25:1;;;148:2;133:18;7342:27:0;;;;;;;;8422:95;8494:8;:15;8422:95;;7275:26;;;;;;:::i;:::-;;:::i;:::-;;;;-1:-1:-1;;;;;743:32:1;;;725:51;;807:2;792:18;;785:34;;;;835:18;;;828:34;;;;893:2;878:18;;871:34;;;;936:3;921:19;;914:35;763:3;965:19;;958:35;1037:14;1030:22;1024:3;1009:19;;1002:51;1097:14;1090:22;1084:3;1069:19;;1062:51;712:3;697:19;7275:26:0;381:738:1;7484:34:0;;;;;;7887:67;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;15304:244;;;;;;:::i;:::-;;:::i;:::-;;;1745:14:1;;1738:22;1720:41;;1708:2;1693:18;15304:244:0;1580:187:1;7710:72:0;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;7310:25;;;;;-1:-1:-1;;;;;7310:25:0;;;;;;-1:-1:-1;;;;;1936:32:1;;;1918:51;;1906:2;1891:18;7310:25:0;1772:203:1;9415:614:0;;;;;;:::i;:::-;;:::i;:::-;;7630:73;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;13645:981;;;;;;:::i;:::-;;:::i;7789:42::-;;;;;;:::i;:::-;;;;;;;;;;;;-1:-1:-1;;;;;7789:42:0;;;7525:25;;;;;;11349:779;;;;;;:::i;:::-;;:::i;14634:662::-;;;;;;:::i;:::-;;:::i;11161:180::-;;;:::i;5173:148::-;;;:::i;10037:159::-;;;;;;:::i;:::-;;:::i;4743:79::-;4781:7;4808:6;-1:-1:-1;;;;;4808:6:0;4743:79;;12136:1501;;;;;;:::i;:::-;;:::i;7559:64::-;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4147:25:1;;;4203:2;4188:18;;4181:34;;;;4120:18;7559:64:0;3973:248:1;10204:949:0;;;;;;:::i;:::-;;:::i;17199:325::-;;;:::i;7449:28::-;;;;;;17532:120;;;;;;:::i;:::-;;:::i;17660:298::-;;;;;;:::i;:::-;;:::i;18118:164::-;;;;;;:::i;:::-;;:::i;17966:144::-;;;;;;:::i;:::-;;:::i;7247:21::-;;;;;-1:-1:-1;;;;;7247:21:0;;;15556:1349;;;;;;:::i;:::-;;:::i;8525:882::-;;;;;;:::i;:::-;;:::i;7412:30::-;;;;;;7838:42;;;;;;:::i;:::-;;;;;;;;;;;;;;;;7376:29;;;;;;5476:244;;;;;;:::i;:::-;;:::i;7275:26::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;7275:26:0;;;;-1:-1:-1;7275:26:0;;;;;;;;;;;;;;;;;;:::o;15304:244::-;15374:4;15427:10;;15411:12;:26;;:129;;;;;15505:8;15514:4;15505:14;;;;;;;;:::i;:::-;;;;;;;;;:35;:14;;;;;:35;;;;;15472:23;;;:17;:23;;;;;;-1:-1:-1;;;;;15472:30:0;;;;;;;;;;:68;;15505:35;15472:68;:::i;:::-;15454:15;:86;15411:129;15391:149;;15304:244;;;;;:::o;9415:614::-;4336:6;;-1:-1:-1;;;;;4336:6:0;3871:10;4336:22;4328:53;;;;-1:-1:-1;;;4328:53:0;;;;;;;:::i;:::-;;;;;;;;;9651:11:::1;9647:61;;;9679:17;:15;:17::i;:::-;9782:11;9754:8;9763:4;9754:14;;;;;;;;:::i;:::-;;;;;;;;;;;:25;;;9736:15;;:43;;;;:::i;:::-;:57;;;;:::i;:::-;9718:15;:75;;;;9832:11;9804:8;9813:4;9804:14;;;;;;;;:::i;:::-;;;;;;;;;;;:25;;:39;;;;9880:9;9854:8;9863:4;9854:14;;;;;;;;:::i;:::-;;;;;;;;;;;:23;;:35;;;;9938:21;9900:8;9909:4;9900:14;;;;;;;;:::i;:::-;;;;;;;;;;;:35;;:59;;;;10004:17;9970:8;9979:4;9970:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;;::::1;;:31;;:51:::0;;-1:-1:-1;;9970:51:0::1;::::0;::::1;;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;9415:614:0:o;13645:981::-;5852:1;6072:7;;:19;;6064:63;;;;-1:-1:-1;;;6064:63:0;;;;;;;:::i;:::-;5852:1;6205:7;:18;13725:15:::1;3871:10:::0;13725:30:::1;;13766:21;13790:8;13799:4;13790:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;13839;;;:8:::1;:14:::0;;;;;;-1:-1:-1;;;;;13839:23:0;::::1;::::0;;;;;;;13881:11;;13790:14:::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;13881:22:0;-1:-1:-1;13881:22:0::1;13873:42;;;::::0;-1:-1:-1;;;13873:42:0;;7280:2:1;13873:42:0::1;::::0;::::1;7262:21:1::0;7319:1;7299:18;;;7292:29;-1:-1:-1;;;7337:18:1;;;7330:37;7384:18;;13873:42:0::1;7078:330:1::0;13873:42:0::1;13926:16;13937:4;13926:10;:16::i;:::-;13955:15;14017:4;:15;;;14010:4;13987;:20;;;13973:4;:11;;;:34;;;;:::i;:::-;:41;;;;:::i;:::-;:59;;;;:::i;:::-;13955:77:::0;-1:-1:-1;14047:11:0;;14043:111:::1;;14105:18;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;14105:27:0;::::1;::::0;;;;;;;;:37:::1;::::0;14135:7;;14105:37:::1;:::i;:::-;14075:18;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;14075:27:0;::::1;::::0;;;;;;;:67;14043:111:::1;14168:11:::0;;14164:337:::1;;14210:11:::0;;:21:::1;::::0;14224:7;;14210:21:::1;:::i;:::-;14196:35:::0;;14270:11:::1;::::0;14196::::1;::::0;14284:3:::1;::::0;14260:21:::1;::::0;:7;:21:::1;:::i;:::-;:27;;;;:::i;:::-;14246:41:::0;-1:-1:-1;14302:12:0::1;14317:13;14246:41:::0;14317:7;:13:::1;:::i;:::-;14302:28:::0;-1:-1:-1;14349:7:0;;14345:90:::1;;14403:10;::::0;14377:12;;:42:::1;::::0;-1:-1:-1;;;;;14377:12:0;;::::1;::::0;14403:10:::1;14415:3:::0;14377:25:::1;:42::i;:::-;14449:12:::0;;:40:::1;::::0;-1:-1:-1;;;;;14449:12:0::1;14475:7:::0;14484:4;14449:25:::1;:40::i;:::-;14181:320;;14164:337;14543:20;::::0;::::1;::::0;14529:11;;14566:4:::1;::::0;14529:34:::1;::::0;::::1;:::i;:::-;:41;;;;:::i;:::-;14511:15;::::0;::::1;:59:::0;14586:32:::1;::::0;160:25:1;;;14604:4:0;;-1:-1:-1;;;;;14586:32:0;::::1;::::0;::::1;::::0;148:2:1;133:18;14586:32:0::1;;;;;;;;-1:-1:-1::0;;5808:1:0;6384:22;;-1:-1:-1;;;;13645:981:0:o;11349:779::-;11401:21;11425:8;11434:4;11425:14;;;;;;;;:::i;:::-;;;;;;;;;;;11401:38;;11470:4;:20;;;11454:12;:36;11450:75;;11507:7;11349:779;:::o;11450:75::-;11554:12;;:37;;-1:-1:-1;;;11554:37:0;;11585:4;11554:37;;;1918:51:1;11535:16:0;;-1:-1:-1;;;;;11554:12:0;;:22;;1891:18:1;;11554:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11535:56;-1:-1:-1;11606:13:0;11602:102;;-1:-1:-1;11659:12:0;11636:20;;;;:35;-1:-1:-1;11349:779:0:o;11602:102::-;11714:18;11735:64;11749:4;:20;;;11771:12;11785:4;:13;;;11735;:64::i;:::-;11714:85;;11810:18;11877:15;;11859:4;:15;;;11844:12;;11831:10;:25;;;;:::i;:::-;:43;;;;:::i;:::-;:61;;;;:::i;:::-;11810:82;-1:-1:-1;11907:14:0;;11903:83;;11938:4;;:36;;-1:-1:-1;;;11938:36:0;;11956:4;11938:36;;;8171:51:1;8238:18;;;8231:34;;;-1:-1:-1;;;;;11938:4:0;;;;:9;;8144:18:1;;11938:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11903:83;12065:8;12045:17;:10;12058:4;12045:17;:::i;:::-;:28;;;;:::i;:::-;12021:4;:20;;;:53;;;;:::i;:::-;11998:20;;;:76;-1:-1:-1;;12108:12:0;12085:20;;;;:35;;;;-1:-1:-1;;11349:779:0:o;14634:662::-;5852:1;6072:7;;:19;;6064:63;;;;-1:-1:-1;;;6064:63:0;;;;;;;:::i;:::-;5852:1;6205:7;:18;14706:15:::1;3871:10:::0;14706:30:::1;;14747:21;14771:8;14780:4;14771:14;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;14820;;;:8:::1;:14:::0;;;;;;-1:-1:-1;;;;;14820:23:0;::::1;::::0;;;;;;;14862:11;;14771:14:::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;14854:38:0::1;;;::::0;-1:-1:-1;;;14854:38:0;;8728:2:1;14854:38:0::1;::::0;::::1;8710:21:1::0;8767:2;8747:18;;;8740:30;-1:-1:-1;;;8786:18:1;;;8779:40;8836:18;;14854:38:0::1;8526:334:1::0;14854:38:0::1;14905:11;14947:3;14933:11;;14919:4;:11;;;:25;;;;:::i;:::-;:31;;;;:::i;:::-;14905:45;;14961:12;14990:3;14976:4;:11;;;:17;;;;:::i;:::-;14961:32:::0;-1:-1:-1;15008:7:0;;15004:82:::1;;15058:10;::::0;15032:12;;:42:::1;::::0;-1:-1:-1;;;;;15032:12:0;;::::1;::::0;15058:10:::1;15070:3:::0;15032:25:::1;:42::i;:::-;15096:12:::0;;:40:::1;::::0;-1:-1:-1;;;;;15096:12:0::1;15122:7:::0;15131:4;15096:25:::1;:40::i;:::-;15161:1;15147:15:::0;;;15173::::1;::::0;::::1;:19:::0;;;15203:18;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;15203:27:0;::::1;::::0;;;;;;;;;:31;;;;15250:38;160:25:1;;;15203:18:0;;:27;15250:38:::1;::::0;133:18:1;15250:38:0::1;14:177:1::0;11161:180:0;11223:8;:15;11206:14;11249:85;11277:6;11271:3;:12;11249:85;;;11307:15;11318:3;11307:10;:15::i;:::-;11285:5;;;;:::i;:::-;;;;11249:85;;;;11195:146;11161:180::o;5173:148::-;4336:6;;-1:-1:-1;;;;;4336:6:0;3871:10;4336:22;4328:53;;;;-1:-1:-1;;;4328:53:0;;;;;;;:::i;:::-;5280:1:::1;5264:6:::0;;5243:40:::1;::::0;-1:-1:-1;;;;;5264:6:0;;::::1;::::0;5243:40:::1;::::0;5280:1;;5243:40:::1;5311:1;5294:19:::0;;-1:-1:-1;;;;;;5294:19:0::1;::::0;;5173:148::o;10037:159::-;10132:7;10175:13;10160:11;10166:5;10160:3;:11;:::i;:::-;10159:29;;;;:::i;:::-;10152:36;10037:159;-1:-1:-1;;;;10037:159:0:o;12136:1501::-;5852:1;6072:7;;:19;;6064:63;;;;-1:-1:-1;;;6064:63:0;;;;;;;:::i;:::-;5852:1;6205:7;:18;12241:8:::1;:14:::0;;12250:4;;12241:14;::::1;;;;;:::i;:::-;;;;;;;;;;;:26;;;;;;;;;;;;12233:47;;;::::0;-1:-1:-1;;;12233:47:0;;9207:2:1;12233:47:0::1;::::0;::::1;9189:21:1::0;9246:1;9226:18;;;9219:29;-1:-1:-1;;;9264:18:1;;;9257:38;9312:18;;12233:47:0::1;9005:331:1::0;12233:47:0::1;12293:15;12338:24:::0;;;:18:::1;:24;::::0;;;;;;;3871:10;12338:33;;;;;;;;;12334:122:::1;;12393:24;::::0;;;:18:::1;:24;::::0;;;;;;;-1:-1:-1;;;;;12393:33:0;::::1;::::0;;;;;;;12429:15:::1;12393:51:::0;;12334:122:::1;-1:-1:-1::0;;;;;12470:16:0;;::::1;12498:1;12470:16:::0;;;:7:::1;:16;::::0;;;;;::::1;:30:::0;:56;::::1;;;-1:-1:-1::0;;;;;;12504:22:0;::::1;::::0;::::1;12470:56;:79;;;;;12542:7;-1:-1:-1::0;;;;;12530:19:0::1;:8;-1:-1:-1::0;;;;;12530:19:0::1;;;12470:79;:103;;;;-1:-1:-1::0;;;;;;12554:19:0;::::1;;::::0;;;:10:::1;:19;::::0;;;;;::::1;;12553:20;12470:103;12466:205;;;-1:-1:-1::0;;;;;12590:16:0;;::::1;;::::0;;;:7:::1;:16;::::0;;;;;;;:27;;-1:-1:-1;;;;;;12590:27:0::1;::::0;;::::1;::::0;;::::1;::::0;;12632:20;;;:10:::1;:20:::0;;;:27;;-1:-1:-1;;12632:27:0::1;-1:-1:-1::0;12632:27:0::1;::::0;;12466:205:::1;12681:23;::::0;;;:17:::1;:23;::::0;;;;;;;-1:-1:-1;;;;;12681:32:0;::::1;::::0;;;;;;;12716:15:::1;12681:50:::0;;12768:8:::1;:14:::0;;12699:4;;12768:14;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;12817;;;:8:::1;:14:::0;;;;;;-1:-1:-1;;;;;12817:23:0;::::1;::::0;;;;;;;12768:14:::1;::::0;;::::1;::::0;;::::1;::::0;-1:-1:-1;12851:16:0::1;12826:4:::0;12851:10:::1;:16::i;:::-;12884:11:::0;;:15;12880:258:::1;;12916:15;12978:4;:15;;;12971:4;12948;:20;;;12934:4;:11;;;:34;;;;:::i;:::-;:41;;;;:::i;:::-;:59;;;;:::i;:::-;12916:77:::0;-1:-1:-1;13012:11:0;;13008:119:::1;;13074:18;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;13074:27:0;::::1;::::0;;;;;;;;:37:::1;::::0;13104:7;;13074:37:::1;:::i;:::-;13044:18;::::0;;;:12:::1;:18;::::0;;;;;;;-1:-1:-1;;;;;13044:27:0;::::1;::::0;;;;;;;:67;13008:119:::1;12901:237;12880:258;13152:11:::0;;13148:365:::1;;13180:11;13217:3;13204:10;;13194:7;:20;;;;:::i;:::-;:26;;;;:::i;:::-;13180:40:::0;-1:-1:-1;13235:12:0::1;13250:13;13180:40:::0;13250:7;:13:::1;:::i;:::-;13235:28:::0;-1:-1:-1;13282:7:0;;13278:103:::1;;13349:10;::::0;13310:12;;:55:::1;::::0;-1:-1:-1;;;;;13310:12:0;;::::1;::::0;13340:7;;13349:10:::1;13361:3:::0;13310:29:::1;:55::i;:::-;13395:12:::0;;:59:::1;::::0;-1:-1:-1;;;;;13395:12:0::1;13425:7:::0;13442:4:::1;13449::::0;13395:29:::1;:59::i;:::-;13483:11:::0;;:18:::1;::::0;13497:4;;13483:18:::1;:::i;:::-;13469:32:::0;;-1:-1:-1;;13148:365:0::1;13555:20;::::0;::::1;::::0;13541:11;;13578:4:::1;::::0;13541:34:::1;::::0;::::1;:::i;:::-;:41;;;;:::i;:::-;13523:15;::::0;::::1;:59:::0;13598:31:::1;::::0;160:25:1;;;13615:4:0;;-1:-1:-1;;;;;13598:31:0;::::1;::::0;::::1;::::0;148:2:1;133:18;13598:31:0::1;14:177:1::0;10204:949:0;10279:7;10299:21;10323:8;10332:4;10323:14;;;;;;;;:::i;:::-;;;;;;;;;10372;;;:8;:14;;;;;;-1:-1:-1;;;;;10372:21:0;;;;;;;;;;10323:14;;;;;;;;10430:20;;;;10480:12;;:37;;-1:-1:-1;;;10480:37:0;;10511:4;10480:37;;;1918:51:1;10323:14:0;;-1:-1:-1;10372:21:0;;10323:14;10480:12;;;;;:22;;1891:18:1;;10480:37:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;10461:56;;10547:4;:20;;;10532:12;:35;:52;;;;-1:-1:-1;10571:13:0;;;10532:52;10528:348;;;10601:18;10622:64;10636:4;:20;;;10658:12;10672:4;:13;;;10622;:64::i;:::-;10601:85;;10701:18;10768:15;;10750:4;:15;;;10735:12;;10722:10;:25;;;;:::i;:::-;:43;;;;:::i;:::-;:61;;;;:::i;:::-;10701:82;-1:-1:-1;10855:8:0;10835:17;10701:82;10848:4;10835:17;:::i;:::-;:28;;;;:::i;:::-;10816:48;;:15;:48;:::i;:::-;10798:66;;10586:290;;10528:348;10886:14;10960:18;;;:12;:18;;;;;;;;-1:-1:-1;;;;;10960:25:0;;;;;;;;;;10942:15;;;;10903:11;;10935:4;;10903:29;;10917:15;;10903:29;:::i;:::-;:36;;;;:::i;:::-;:54;;;;:::i;:::-;:82;;;;:::i;:::-;11000:21;;;;10886:99;;-1:-1:-1;11000:21:0;;10996:126;;;11038:11;11073:3;11061:9;;11052:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;11038:38;-1:-1:-1;11098:12:0;11038:38;11098:6;:12;:::i;:::-;11091:19;;;;;;;;;;10996:126;11139:6;10204:949;-1:-1:-1;;;;;;;10204:949:0:o;17199:325::-;4336:6;;-1:-1:-1;;;;;4336:6:0;3871:10;4336:22;4328:53;;;;-1:-1:-1;;;4328:53:0;;;;;;;:::i;:::-;17274:10:::1;;17259:12;:25;17251:58;;;::::0;-1:-1:-1;;;17251:58:0;;9543:2:1;17251:58:0::1;::::0;::::1;9525:21:1::0;9582:2;9562:18;;;9555:30;-1:-1:-1;;;9601:18:1;;;9594:50;9661:18;;17251:58:0::1;9341:344:1::0;17251:58:0::1;17339:8;:15:::0;17322:14:::1;17365:114;17393:6;17387:3;:12;17365:114;;;17455:12;17423:8;17432:3;17423:13;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;:29:::1;:13;::::0;;::::1;;:29;:44:::0;17401:5:::1;::::0;::::1;:::i;:::-;;;17365:114;;;-1:-1:-1::0;;17504:12:0::1;17491:10;:25:::0;17199:325::o;17532:120::-;4336:6;;-1:-1:-1;;;;;4336:6:0;3871:10;4336:22;4328:53;;;;-1:-1:-1;;;4328:53:0;;;;;;;:::i;:::-;17638:6:::1;17609:8;17618:4;17609:14;;;;;;;;:::i;:::-;;;;;;;;;;;:26;;;:35;;;;;;;;;;;;;;;;;;17532:120:::0;;:::o;17660:298::-;4336:6;;-1:-1:-1;;;;;4336:6:0;3871:10;4336:22;4328:53;;;;-1:-1:-1;;;4328:53:0;;;;;;;:::i;:::-;17790:2:::1;17776:11;:16;:37;;;;;17811:2;17796:12;:17;17776:37;:56;;;;;17830:2;17817:10;:15;17776:56;17768:77;;;::::0;-1:-1:-1;;;17768:77:0;;9892:2:1;17768:77:0::1;::::0;::::1;9874:21:1::0;9931:1;9911:18;;;9904:29;-1:-1:-1;;;9949:18:1;;;9942:38;9997:18;;17768:77:0::1;9690:331:1::0;17768:77:0::1;17856:10;:24:::0;;;;17891:11:::1;:26:::0;17928:9:::1;:22:::0;17660:298::o;18118:164::-;18194:10;;-1:-1:-1;;;;;18194:10:0;3871;-1:-1:-1;;;;;18178:26:0;;:53;;;-1:-1:-1;4781:7:0;4808:6;-1:-1:-1;;;;;4808:6:0;3871:10;18208:23;18178:53;18170:72;;;;-1:-1:-1;;;18170:72:0;;10228:2:1;18170:72:0;;;10210:21:1;10267:1;10247:18;;;10240:29;-1:-1:-1;;;10285:18:1;;;10278:36;10331:18;;18170:72:0;10026:329:1;18170:72:0;18253:10;:21;;-1:-1:-1;;;;;;18253:21:0;-1:-1:-1;;;;;18253:21:0;;;;;;;;;;18118:164::o;17966:144::-;4336:6;;-1:-1:-1;;;;;4336:6:0;3871:10;4336:22;4328:53;;;;-1:-1:-1;;;4328:53:0;;;;;;;:::i;:::-;18051:4:::1;:12:::0;;-1:-1:-1;;;;;;18051:12:0::1;-1:-1:-1::0;;;;;18051:12:0;;;::::1;::::0;;;::::1;::::0;;;18074::::1;:28:::0;17966:144::o;15556:1349::-;5852:1;6072:7;;:19;;6064:63;;;;-1:-1:-1;;;6064:63:0;;;;;;;:::i;:::-;5852:1;6205:7;:18;6460:9:::1;6473:10;6460:23;6452:53;;;::::0;-1:-1:-1;;;6452:53:0;;10562:2:1;6452:53:0::1;::::0;::::1;10544:21:1::0;10601:2;10581:18;;;10574:30;-1:-1:-1;;;10620:18:1;;;10613:47;10677:18;;6452:53:0::1;10360:341:1::0;6452:53:0::1;3871:10:::0;15675:25:::2;15686:4:::0;3871:10;15675::::2;:25::i;:::-;15667:48;;;::::0;-1:-1:-1;;;15667:48:0;;10908:2:1;15667:48:0::2;::::0;::::2;10890:21:1::0;10947:2;10927:18;;;10920:30;-1:-1:-1;;;10966:18:1;;;10959:40;11016:18;;15667:48:0::2;10706:334:1::0;15667:48:0::2;15728:21;15752:8;15761:4;15752:14;;;;;;;;:::i;:::-;;::::0;;;::::2;::::0;;;15801;;;:8:::2;:14:::0;;;;;;-1:-1:-1;;;;;15801:23:0;::::2;::::0;;;;;;;15752:14:::2;::::0;;::::2;::::0;;::::2;::::0;-1:-1:-1;15835:16:0::2;15810:4:::0;15835:10:::2;:16::i;:::-;15868:11:::0;;:15;15864:258:::2;;15900:15;15962:4;:15;;;15955:4;15932;:20;;;15918:4;:11;;;:34;;;;:::i;:::-;:41;;;;:::i;:::-;:59;;;;:::i;:::-;15900:77:::0;-1:-1:-1;15996:11:0;;15992:119:::2;;16058:18;::::0;;;:12:::2;:18;::::0;;;;;;;-1:-1:-1;;;;;16058:27:0;::::2;::::0;;;;;;;;:37:::2;::::0;16088:7;;16058:37:::2;:::i;:::-;16028:18;::::0;;;:12:::2;:18;::::0;;;;;;;-1:-1:-1;;;;;16028:27:0;::::2;::::0;;;;;;;:67;15992:119:::2;15885:237;15864:258;16164:20;::::0;::::2;::::0;16150:11;;16187:4:::2;::::0;16150:34:::2;::::0;::::2;:::i;:::-;:41;;;;:::i;:::-;16132:15;::::0;::::2;:59:::0;16206:14:::2;16223:18:::0;;;:12:::2;:18;::::0;;;;;;;-1:-1:-1;;;;;16223:27:0;::::2;::::0;;;;;;;;16269:10;16261:33:::2;;;::::0;-1:-1:-1;;;16261:33:0;;11247:2:1;16261:33:0::2;::::0;::::2;11229:21:1::0;11286:2;11266:18;;;11259:30;-1:-1:-1;;;11305:18:1;;;11298:40;11355:18;;16261:33:0::2;11045:334:1::0;16261:33:0::2;16337:1;16307:18:::0;;;:12:::2;:18;::::0;;;;;;;-1:-1:-1;;;;;16307:27:0;::::2;::::0;;;;;;;:31;16353:21:::2;::::0;::::2;::::0;::::2;;16349:503;;;16391:11;16426:3;16414:9;;16405:6;:18;;;;:::i;:::-;:24;;;;:::i;:::-;16391:38:::0;-1:-1:-1;16448:7:0;;16444:247:::2;;-1:-1:-1::0;;;;;16480:16:0;;::::2;16508:1;16480:16:::0;;;:7:::2;:16;::::0;;;;;::::2;16476:200;;16552:10;::::0;16535:33:::2;::::0;-1:-1:-1;;;;;16552:10:0::2;16564:3:::0;16535:16:::2;:33::i;:::-;16476:200;;;-1:-1:-1::0;;;;;16634:16:0;;::::2;;::::0;;;:7:::2;:16;::::0;;;;;16617:39:::2;::::0;16634:16:::2;16652:3:::0;16617:16:::2;:39::i;:::-;16714:12;16723:3:::0;16714:6;:12:::2;:::i;:::-;16705:21;;16741:33;16758:7;16767:6;16741:16;:33::i;:::-;16376:410;16349:503;;;16807:33;16824:7;16833:6;16807:16;:33::i;:::-;16884:4;16875:7;-1:-1:-1::0;;;;;16867:30:0::2;;16890:6;16867:30;;;;160:25:1::0;;148:2;133:18;;14:177;16867:30:0::2;;;;;;;;-1:-1:-1::0;;5808:1:0;6384:22;;-1:-1:-1;;;15556:1349:0:o;8525:882::-;4336:6;;-1:-1:-1;;;;;4336:6:0;3871:10;4336:22;4328:53;;;;-1:-1:-1;;;4328:53:0;;;;;;;:::i;:::-;8764:11:::1;8760:61;;;8792:17;:15;:17::i;:::-;8831:23;8872:10;;8857:12;:25;:53;;8900:10;;8857:53;;;8885:12;8857:53;8831:79;;8957:11;8939:15;;:29;;;;:::i;:::-;8921:15;:47:::0;9007:381:::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;9007:381:0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;;;;-1:-1:-1;9007:381:0;;;;;;;;;;;;;;;;;;;::::1;;::::0;;;;;;9368:4:::1;9007:381:::0;;;;;;8979:8:::1;:420:::0;;;;::::1;::::0;;;;;;;;::::1;::::0;;::::1;::::0;;::::1;::::0;;-1:-1:-1;;;;;;8979:420:0::1;::::0;;;::::1;;::::0;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;8979:420:0;;;;;;;;;;;;;;;;-1:-1:-1;;8979:420:0;;;;::::1;;-1:-1:-1::0;;8979:420:0;;;;;;::::1;;;;::::0;;8525:882::o;5476:244::-;4336:6;;-1:-1:-1;;;;;4336:6:0;3871:10;4336:22;4328:53;;;;-1:-1:-1;;;4328:53:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;5565:22:0;::::1;5557:73;;;::::0;-1:-1:-1;;;5557:73:0;;11586:2:1;5557:73:0::1;::::0;::::1;11568:21:1::0;11625:2;11605:18;;;11598:30;11664:34;11644:18;;;11637:62;-1:-1:-1;;;11715:18:1;;;11708:36;11761:19;;5557:73:0::1;11384:402:1::0;5557:73:0::1;5667:6;::::0;;5646:38:::1;::::0;-1:-1:-1;;;;;5646:38:0;;::::1;::::0;5667:6;::::1;::::0;5646:38:::1;::::0;::::1;5695:6;:17:::0;;-1:-1:-1;;;;;;5695:17:0::1;-1:-1:-1::0;;;;;5695:17:0;;;::::1;::::0;;;::::1;::::0;;5476:244::o;2997:211::-;3141:58;;-1:-1:-1;;;;;8189:32:1;;3141:58:0;;;8171:51:1;8238:18;;;8231:34;;;3114:86:0;;3134:5;;-1:-1:-1;;;3164:23:0;8144:18:1;;3141:58:0;;;;-1:-1:-1;;3141:58:0;;;;;;;;;;;;;;-1:-1:-1;;;;;3141:58:0;-1:-1:-1;;;;;;3141:58:0;;;;;;;;;;3114:19;:86::i;:::-;2997:211;;;:::o;3216:248::-;3387:68;;-1:-1:-1;;;;;12049:15:1;;;3387:68:0;;;12031:34:1;12101:15;;12081:18;;;12074:43;12133:18;;;12126:34;;;3360:96:0;;3380:5;;-1:-1:-1;;;3410:27:0;11966:18:1;;3387:68:0;11791:375:1;3360:96:0;3216:248;;;;:::o;16913:278::-;17007:4;;:29;;-1:-1:-1;;;17007:29:0;;17030:4;17007:29;;;1918:51:1;16989:15:0;;-1:-1:-1;;;;;17007:4:0;;:14;;1891:18:1;;17007:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;16989:47;;17061:7;17051;:17;17047:137;;;17085:4;;:27;;-1:-1:-1;;;17085:27:0;;-1:-1:-1;;;;;8189:32:1;;;17085:27:0;;;8171:51:1;8238:18;;;8231:34;;;17085:4:0;;;;:13;;8144:18:1;;17085:27:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;17047:137::-;17145:4;;:27;;-1:-1:-1;;;17145:27:0;;-1:-1:-1;;;;;8189:32:1;;;17145:27:0;;;8171:51:1;8238:18;;;8231:34;;;17145:4:0;;;;:13;;8144:18:1;;17145:27:0;7997:274:1;3472:263:0;3553:23;3579:39;3607:4;3579:39;;;;;;;;;;;;;-1:-1:-1;;;3579:39:0;;;3587:5;-1:-1:-1;;;;;3579:27:0;;;:39;;;;;:::i;:::-;3633:17;;3553:65;;-1:-1:-1;3633:21:0;3629:99;;3690:10;3679:30;;;;;;;;;;;;:::i;:::-;3671:45;;;;-1:-1:-1;;;3671:45:0;;12373:2:1;3671:45:0;;;12355:21:1;12412:1;12392:18;;;12385:29;-1:-1:-1;;;12430:18:1;;;12423:32;12472:18;;3671:45:0;12171:325:1;1430:230:0;1567:12;1599:53;1622:6;1630:4;1636:1;1639:12;2401;2434:18;2445:6;2434:10;:18::i;:::-;2426:33;;;;-1:-1:-1;;;2426:33:0;;12703:2:1;2426:33:0;;;12685:21:1;12742:1;12722:18;;;12715:29;-1:-1:-1;;;12760:18:1;;;12753:32;12802:18;;2426:33:0;12501:325:1;2426:33:0;2471:12;2485:23;2512:6;-1:-1:-1;;;;;2512:11:0;2532:8;2542:4;2512:35;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2470:77;;;;2562:7;2558:368;;;2593:10;-1:-1:-1;2586:17:0;;-1:-1:-1;2586:17:0;2558:368;2640:17;;:21;2636:279;;2743:10;2737:17;2804:15;2791:10;2787:2;2783:19;2776:44;2636:279;2886:12;2879:20;;-1:-1:-1;;;2879:20:0;;;;;;;;:::i;408:619::-;468:4;936:20;;779:66;976:23;;;;;;:42;;-1:-1:-1;;1003:15:0;;;968:51;-1:-1:-1;;408:619:0:o;196:180:1:-;255:6;308:2;296:9;287:7;283:23;279:32;276:52;;;324:1;321;314:12;276:52;-1:-1:-1;347:23:1;;196:180;-1:-1:-1;196:180:1:o;1124:131::-;-1:-1:-1;;;;;1199:31:1;;1189:42;;1179:70;;1245:1;1242;1235:12;1179:70;1124:131;:::o;1260:315::-;1328:6;1336;1389:2;1377:9;1368:7;1364:23;1360:32;1357:52;;;1405:1;1402;1395:12;1357:52;1441:9;1428:23;1418:33;;1501:2;1490:9;1486:18;1473:32;1514:31;1539:5;1514:31;:::i;:::-;1564:5;1554:15;;;1260:315;;;;;:::o;1980:118::-;2066:5;2059:13;2052:21;2045:5;2042:32;2032:60;;2088:1;2085;2078:12;2103:651;2201:6;2209;2217;2225;2233;2241;2294:3;2282:9;2273:7;2269:23;2265:33;2262:53;;;2311:1;2308;2301:12;2262:53;2347:9;2334:23;2324:33;;2404:2;2393:9;2389:18;2376:32;2366:42;;2455:2;2444:9;2440:18;2427:32;2417:42;;2506:2;2495:9;2491:18;2478:32;2468:42;;2560:3;2549:9;2545:19;2532:33;2574:28;2596:5;2574:28;:::i;:::-;2621:5;-1:-1:-1;2678:3:1;2663:19;;2650:33;2692:30;2650:33;2692:30;:::i;:::-;2741:7;2731:17;;;2103:651;;;;;;;;:::o;2759:248::-;2827:6;2835;2888:2;2876:9;2867:7;2863:23;2859:32;2856:52;;;2904:1;2901;2894:12;2856:52;-1:-1:-1;;2927:23:1;;;2997:2;2982:18;;;2969:32;;-1:-1:-1;2759:248:1:o;3012:247::-;3071:6;3124:2;3112:9;3103:7;3099:23;3095:32;3092:52;;;3140:1;3137;3130:12;3092:52;3179:9;3166:23;3198:31;3223:5;3198:31;:::i;:::-;3248:5;3012:247;-1:-1:-1;;;3012:247:1:o;3264:316::-;3341:6;3349;3357;3410:2;3398:9;3389:7;3385:23;3381:32;3378:52;;;3426:1;3423;3416:12;3378:52;-1:-1:-1;;3449:23:1;;;3519:2;3504:18;;3491:32;;-1:-1:-1;3570:2:1;3555:18;;;3542:32;;3264:316;-1:-1:-1;3264:316:1:o;3585:383::-;3662:6;3670;3678;3731:2;3719:9;3710:7;3706:23;3702:32;3699:52;;;3747:1;3744;3737:12;3699:52;3783:9;3770:23;3760:33;;3840:2;3829:9;3825:18;3812:32;3802:42;;3894:2;3883:9;3879:18;3866:32;3907:31;3932:5;3907:31;:::i;:::-;3957:5;3947:15;;;3585:383;;;;;:::o;4226:309::-;4291:6;4299;4352:2;4340:9;4331:7;4327:23;4323:32;4320:52;;;4368:1;4365;4358:12;4320:52;4404:9;4391:23;4381:33;;4464:2;4453:9;4449:18;4436:32;4477:28;4499:5;4477:28;:::i;4540:332::-;4625:6;4633;4686:2;4674:9;4665:7;4661:23;4657:32;4654:52;;;4702:1;4699;4692:12;4654:52;4741:9;4728:23;4760:31;4785:5;4760:31;:::i;:::-;4810:5;4862:2;4847:18;;;;4834:32;;-1:-1:-1;;;4540:332:1:o;5102:737::-;5213:6;5221;5229;5237;5245;5253;5306:3;5294:9;5285:7;5281:23;5277:33;5274:53;;;5323:1;5320;5313:12;5274:53;5362:9;5349:23;5381:31;5406:5;5381:31;:::i;:::-;5431:5;-1:-1:-1;5483:2:1;5468:18;;5455:32;;-1:-1:-1;5534:2:1;5519:18;;5506:32;;-1:-1:-1;5585:2:1;5570:18;;5557:32;;-1:-1:-1;5641:3:1;5626:19;;5613:33;5655:30;5613:33;5655:30;:::i;5844:127::-;5905:10;5900:3;5896:20;5893:1;5886:31;5936:4;5933:1;5926:15;5960:4;5957:1;5950:15;5976:127;6037:10;6032:3;6028:20;6025:1;6018:31;6068:4;6065:1;6058:15;6092:4;6089:1;6082:15;6108:128;6148:3;6179:1;6175:6;6172:1;6169:13;6166:39;;;6185:18;;:::i;:::-;-1:-1:-1;6221:9:1;;6108:128::o;6241:342::-;6443:2;6425:21;;;6482:2;6462:18;;;6455:30;-1:-1:-1;;;6516:2:1;6501:18;;6494:48;6574:2;6559:18;;6241:342::o;6588:125::-;6628:4;6656:1;6653;6650:8;6647:34;;;6661:18;;:::i;:::-;-1:-1:-1;6698:9:1;;6588:125::o;6718:355::-;6920:2;6902:21;;;6959:2;6939:18;;;6932:30;6998:33;6993:2;6978:18;;6971:61;7064:2;7049:18;;6718:355::o;7413:168::-;7453:7;7519:1;7515;7511:6;7507:14;7504:1;7501:21;7496:1;7489:9;7482:17;7478:45;7475:71;;;7526:18;;:::i;:::-;-1:-1:-1;7566:9:1;;7413:168::o;7586:217::-;7626:1;7652;7642:132;;7696:10;7691:3;7687:20;7684:1;7677:31;7731:4;7728:1;7721:15;7759:4;7756:1;7749:15;7642:132;-1:-1:-1;7788:9:1;;7586:217::o;7808:184::-;7878:6;7931:2;7919:9;7910:7;7906:23;7902:32;7899:52;;;7947:1;7944;7937:12;7899:52;-1:-1:-1;7970:16:1;;7808:184;-1:-1:-1;7808:184:1:o;8276:245::-;8343:6;8396:2;8384:9;8375:7;8371:23;8367:32;8364:52;;;8412:1;8409;8402:12;8364:52;8444:9;8438:16;8463:28;8485:5;8463:28;:::i;8865:135::-;8904:3;-1:-1:-1;;8925:17:1;;8922:43;;;8945:18;;:::i;:::-;-1:-1:-1;8992:1:1;8981:13;;8865:135::o;12831:258::-;12903:1;12913:113;12927:6;12924:1;12921:13;12913:113;;;13003:11;;;12997:18;12984:11;;;12977:39;12949:2;12942:10;12913:113;;;13044:6;13041:1;13038:13;13035:48;;;-1:-1:-1;;13079:1:1;13061:16;;13054:27;12831:258::o;13094:274::-;13223:3;13261:6;13255:13;13277:53;13323:6;13318:3;13311:4;13303:6;13299:17;13277:53;:::i;:::-;13346:16;;;;;13094:274;-1:-1:-1;;13094:274:1:o;13373:383::-;13522:2;13511:9;13504:21;13485:4;13554:6;13548:13;13597:6;13592:2;13581:9;13577:18;13570:34;13613:66;13672:6;13667:2;13656:9;13652:18;13647:2;13639:6;13635:15;13613:66;:::i;:::-;13740:2;13719:15;-1:-1:-1;;13715:29:1;13700:45;;;;13747:2;13696:54;;13373:383;-1:-1:-1;;13373:383:1:o

Metadata Hash

e71a2e6606506d29ebf656ac0d0cd615b76175bb32e26b2dbd98293d76cf4f33
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.