PSA: Scheduled Server Maintenance & Upgrades [2nd-December-2021 6:00 AM UTC] - Estimated duration: 3 hours.

Contract 0x3aeff4e27e1f9144ed75ba65a80bdfee345f413e 3

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x69b39ca732881635afce5071a3da9225981a031da3c1afc9d6ea78212bc2ce06Approve131241352021-12-02 7:00:3046 mins ago0xb3c1cd67352c041aff928ba28ac9c060c4ea1e9a IN  Bumoon: BUMN Token0 BNB0.000311318
0xa409b5aab168debff7f09617f6a10dacdb4913e098e0b616d71b862a675c8bc5Include Account131240002021-12-02 6:53:4453 mins agoBumoon: Deployer IN  Bumoon: BUMN Token0 BNB0.00026178
0x923968b2e545ede61c6b6a0e35279ffe26f8cae6fd3c14654ce2a1fedb135828Exclude Account131239592021-12-02 6:51:3155 mins agoBumoon: Deployer IN  Bumoon: BUMN Token0 BNB0.001152275
0xab8aab8fa5cb4d35129174505c41c5eaad38f592456b4e94ec86885bf9ca1408Transfer131238782021-12-02 6:46:371 hr ago0x553b5f17a63fcea1d10575a065f1535b1904bb1f IN  Bumoon: BUMN Token0 BNB0.00198012
0xa6f69a7847506a2a7830876ec1e327570c192d6438ac77579cfc3977a3594872Transfer131215872021-12-02 4:48:272 hrs 58 mins ago0xf3e1a12ba62db32652f8debe708e0701afc8b47f IN  Bumoon: BUMN Token0 BNB0.00198006
0xc4b2b5ef2bb68ed42da7b5c72a56e2364e57fbfd2c5bc3e6f1219c2b5102db56Approve131214882021-12-02 4:43:143 hrs 3 mins ago0x84e844e792ff2d39fbe29b5c16b68f8ce6f81176 IN  Bumoon: BUMN Token0 BNB0.00022237
0xd058446b3bd4865d9da687edde83be9c8b5beaac250e546633ad09e4eb55ce3bTransfer131214422021-12-02 4:40:343 hrs 6 mins ago0x335938014b128ae566c51d4efce07d5ed6dada8b IN  Bumoon: BUMN Token0 BNB0.00198012
0x1b7a9303638b125d74d01db23cfaeb06a2136bcdca099bc7e6335d8b523bf8e0Approve131198752021-12-02 3:15:114 hrs 31 mins ago0x53db058c8b85af7189b01a95c97e8f02461bb6fb IN  Bumoon: BUMN Token0 BNB0.00022237
0x7b39f32cabb8ff03eec152edd87715d58cc96c4f57db8039998fe09c593a543dApprove131198552021-12-02 3:14:004 hrs 32 mins ago0xb10a6b155e408f596cfb21c1b417cceee44afb84 IN  Bumoon: BUMN Token0 BNB0.00022237
0x3c692219f1a655ba3b1ea383d285e60531cddd17341b49f14740eb774b004062Include Account131196542021-12-02 3:02:024 hrs 44 mins agoBumoon: Deployer IN  Bumoon: BUMN Token0 BNB0.00026178
0xca3775d4a8e9ad13e1cbd79c597e75c12b2e32142d63b47242859c6215f8b52aExclude Account131196232021-12-02 3:00:144 hrs 46 mins agoBumoon: Deployer IN  Bumoon: BUMN Token0 BNB0.001152275
0xf87dbc764e18ce37ec2dc07a817912638230920fbf6a0c08653f827ede1df377Approve131190452021-12-02 2:24:535 hrs 21 mins ago0x383db70c7da0ad10c020dba279e691b59e00b3a3 IN  Bumoon: BUMN Token0 BNB0.00022237
0x888ca5338852b2217c28e7f947329fd95f7d97191b5815eb822aa03d8a73d58aTransfer131188712021-12-02 2:14:495 hrs 31 mins agoBumoon: Deployer IN  Bumoon: BUMN Token0 BNB0.00193153
0x5d9c7730c9313053bb233b27a11f4ec934fac5aaccb848d3f9526d0252c2fd75Include Account131188252021-12-02 2:12:315 hrs 34 mins agoBumoon: Deployer IN  Bumoon: BUMN Token0 BNB0.00026178
0x0cdaab7ba4bba4686b6ac53263d4b98521c67d58b372b171378cb3d44f426c3eTransfer131186332021-12-02 2:02:435 hrs 44 mins ago0x8f10319005f07726b58718f7aa21de55c766fe60 IN  Bumoon: BUMN Token0 BNB0.00217135
0xb917ba6697a5cadafb60e0347bf87217e6a262142c3616be1c285bb8f7249fddApprove131159252021-12-01 23:37:488 hrs 9 mins ago0x1c070a5053eb690b5783ad32903be12e28123894 IN  Bumoon: BUMN Token0 BNB0.00022237
0x99fbdf92fc561332d25f884f625360d6a53444ac804e4b9989404c91a9324049Approve131121552021-12-01 20:28:4211 hrs 18 mins ago0xc89e7bcc53753bc3f3678ee580aaa76b88d9ca54 IN  Bumoon: BUMN Token0 BNB0.00022237
0x1008da25a92a0eae4395341e05c098241f36a202ef14be2c303e453a9b397419Transfer131111532021-12-01 19:38:3312 hrs 8 mins ago0xaeb14aa6f22edb3323887e03246b329745f0b075 IN  Bumoon: BUMN Token0 BNB0.002053145
0x875c389f9c2b4162f97da0558674c4e966ee1ced39cda8f8ada4bb343ac4fd10Transfer131110892021-12-01 19:35:2112 hrs 11 mins ago0x24d44f90cb86b10f45b54a2d3926fd770465661d IN  Bumoon: BUMN Token0 BNB0.002057635
0x4132e380066af7ce4a17c458858016b058e6ebb2ac11a2af06c499573f5d9f4dApprove131092212021-12-01 17:59:0913 hrs 47 mins ago0x901ec72dd029ae3b6ed5bc65893a1344e376b24c IN  Bumoon: BUMN Token0 BNB0.00022237
0xff381ac9e52ff57e2b2050df316f3f5ca11941ab4f9b39716524632f749a0cbbApprove131079912021-12-01 16:51:5114 hrs 54 mins ago0x928aaab254d4cb203765c211117c20319a4d8448 IN  Bumoon: BUMN Token0 BNB0.00012637
0xc7a3ae4af2bed9a2767d214905cbfd3d8571bf7a1a7c6c71a314fd6f2ddaf12bApprove131079792021-12-01 16:51:1414 hrs 55 mins ago0x928aaab254d4cb203765c211117c20319a4d8448 IN  Bumoon: BUMN Token0 BNB0.00022237
0x85cb730e9490c1be8b873cc5406a87fb58a67b5af9c2e12206c59e05985aed74Approve131078292021-12-01 16:43:0715 hrs 3 mins ago0x1747052a4c37ee31df24cc0b13cdbce732e2e02b IN  Bumoon: BUMN Token0 BNB0.00022237
0x25f0ca217ef901a01b72790545d373fcbd2636c456321e88ca7bea175a683cadTransfer131062892021-12-01 15:20:2916 hrs 26 mins ago0x944db3c2547d88cac3ad0db1bd5dfbfc3531636a IN  Bumoon: BUMN Token0 BNB0.00209635
0x19328544b6e2627748e14c4884f37786a0f36aaa3d7b4fa49e2453b2cb6ca65bApprove131018492021-12-01 11:04:2820 hrs 42 mins ago0x726a9cd0f8f4867bf3f4d552cfbdfe1ff5380e06 IN  Bumoon: BUMN Token0 BNB0.00022237
[ Download CSV Export 

OVERVIEW

BUMooN is the decentralized yield-generation utility eco-token that delivers an automated liquidity-locking and self-staking direct distribution.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xa65bdecacf9087bef7879a2fbbb8249f8dfd6534665b247d8c8e67594d76ad4a102307952021-08-21 19:37:40102 days 12 hrs ago Bumoon: BUMN Token PancakeSwap: Router v20.01695692196988077 BNB
0xa65bdecacf9087bef7879a2fbbb8249f8dfd6534665b247d8c8e67594d76ad4a102307952021-08-21 19:37:40102 days 12 hrs ago PancakeSwap: Router v2 Bumoon: BUMN Token0.01695692196988077 BNB
0x610a42c5c4de1fa619c8effc70977dac7681d75de31655ae4ddb811bb0cd73e2102305682021-08-21 19:26:19102 days 12 hrs ago Bumoon: BUMN Token PancakeSwap: Router v20.016906271098913957 BNB
0x610a42c5c4de1fa619c8effc70977dac7681d75de31655ae4ddb811bb0cd73e2102305682021-08-21 19:26:19102 days 12 hrs ago PancakeSwap: Router v2 Bumoon: BUMN Token0.016906271098913957 BNB
0xf437187dabe5fc889a7ad9234902d6b767a1e60d5a443854d5f153a679c64e99102299672021-08-21 18:56:16102 days 12 hrs ago Bumoon: BUMN Token PancakeSwap: Router v20.016761945200492933 BNB
0xf437187dabe5fc889a7ad9234902d6b767a1e60d5a443854d5f153a679c64e99102299672021-08-21 18:56:16102 days 12 hrs ago PancakeSwap: Router v2 Bumoon: BUMN Token0.016761945200492933 BNB
0x08e11cfdecf2c7c98f0d47033720fc747e6f4b3868904a3ad486501f28f2347b102298642021-08-21 18:51:07102 days 12 hrs ago Bumoon: BUMN Token PancakeSwap: Router v20.016842296172040914 BNB
0x08e11cfdecf2c7c98f0d47033720fc747e6f4b3868904a3ad486501f28f2347b102298642021-08-21 18:51:07102 days 12 hrs ago PancakeSwap: Router v2 Bumoon: BUMN Token0.016842296172040914 BNB
0x6c44d9009a757e3bec7fadde4aee9e432f3403f8e4e30e4660edaffc5e0ae4e6102298292021-08-21 18:49:22102 days 12 hrs ago Bumoon: BUMN Token PancakeSwap: Router v20.01686832865274385 BNB
0x6c44d9009a757e3bec7fadde4aee9e432f3403f8e4e30e4660edaffc5e0ae4e6102298292021-08-21 18:49:22102 days 12 hrs ago PancakeSwap: Router v2 Bumoon: BUMN Token0.01686832865274385 BNB
0x5438c3e161a28af636fa1b6417945f1af5b53dbdc5faf32be7cbf3e2a117d3ce102297602021-08-21 18:45:55102 days 13 hrs ago Bumoon: BUMN Token PancakeSwap: Router v20.01687941415357946 BNB
0x5438c3e161a28af636fa1b6417945f1af5b53dbdc5faf32be7cbf3e2a117d3ce102297602021-08-21 18:45:55102 days 13 hrs ago PancakeSwap: Router v2 Bumoon: BUMN Token0.01687941415357946 BNB
0xab3f376c3e07110172616a2f21edbd9cf10135db83c755605716f1a490071872102297542021-08-21 18:45:37102 days 13 hrs ago Bumoon: BUMN Token PancakeSwap: Router v20.017004473762816344 BNB
0xab3f376c3e07110172616a2f21edbd9cf10135db83c755605716f1a490071872102297542021-08-21 18:45:37102 days 13 hrs ago PancakeSwap: Router v2 Bumoon: BUMN Token0.017004473762816344 BNB
0xb6ce206883467d33eea096e403a973b48ee5e35f24ab5a532708d4092ca89f17102297342021-08-21 18:44:37102 days 13 hrs ago Bumoon: BUMN Token PancakeSwap: Router v20.017112671881454475 BNB
0xb6ce206883467d33eea096e403a973b48ee5e35f24ab5a532708d4092ca89f17102297342021-08-21 18:44:37102 days 13 hrs ago PancakeSwap: Router v2 Bumoon: BUMN Token0.017112671881454475 BNB
0xe064279a6c078fe42bb706944f928d0ba6d67956833fb096f03c96a240b7ccb6102294132021-08-21 18:28:34102 days 13 hrs ago Bumoon: BUMN Token PancakeSwap: Router v20.017907019100855685 BNB
0xe064279a6c078fe42bb706944f928d0ba6d67956833fb096f03c96a240b7ccb6102294132021-08-21 18:28:34102 days 13 hrs ago PancakeSwap: Router v2 Bumoon: BUMN Token0.017907019100855685 BNB
0x6db018831b27ab414b56608074f07c99356e6d10e6e39be135ea7733c3ffa236102293702021-08-21 18:26:25102 days 13 hrs ago Bumoon: BUMN Token PancakeSwap: Router v20.017929475471706246 BNB
0x6db018831b27ab414b56608074f07c99356e6d10e6e39be135ea7733c3ffa236102293702021-08-21 18:26:25102 days 13 hrs ago PancakeSwap: Router v2 Bumoon: BUMN Token0.017929475471706246 BNB
0x843db158166ad24d878209b7da2f21b83cbe3a49f95345b3c4c7d0b411b23f89102293482021-08-21 18:25:19102 days 13 hrs ago Bumoon: BUMN Token PancakeSwap: Router v20.01793498841497653 BNB
0x843db158166ad24d878209b7da2f21b83cbe3a49f95345b3c4c7d0b411b23f89102293482021-08-21 18:25:19102 days 13 hrs ago PancakeSwap: Router v2 Bumoon: BUMN Token0.01793498841497653 BNB
0x047f1dfe001a59c26f3c42c862524390d7b31770e275791bfac9b06627fb169b102292542021-08-21 18:20:37102 days 13 hrs ago Bumoon: BUMN Token PancakeSwap: Router v20.017875386453670404 BNB
0x047f1dfe001a59c26f3c42c862524390d7b31770e275791bfac9b06627fb169b102292542021-08-21 18:20:37102 days 13 hrs ago PancakeSwap: Router v2 Bumoon: BUMN Token0.017875386453670404 BNB
0xbd16edf0b4aed526dc3ebd91635adf4ad0e21bd54f2f429677292164c9a3251c102292512021-08-21 18:20:28102 days 13 hrs ago Bumoon: BUMN Token PancakeSwap: Router v20.017880550962043608 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Bumoon

Compiler Version
v0.7.6+commit.7338295f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license, Audited

Contract Source Code (Solidity)Audit Report

/**
 *Submitted for verification at BscScan.com on 2021-06-03
*/

// SPDX-License-Identifier: MIT
//
// BBBBBBBBBBBBBBBBB   UUUUUUUU     UUUUUUUUMMMMMMMM               MMMMMMMM                                  NNNNNNNN        NNNNNNNN
// B::::::::::::::::B  U::::::U     U::::::UM:::::::M             M:::::::M                                  N:::::::N       N::::::N
// B::::::BBBBBB:::::B U::::::U     U::::::UM::::::::M           M::::::::M                                  N::::::::N      N::::::N
// BB:::::B     B:::::BUU:::::U     U:::::UUM:::::::::M         M:::::::::M                                  N:::::::::N     N::::::N
//   B::::B     B:::::B U:::::U     U:::::U M::::::::::M       M::::::::::M   ooooooooooo      ooooooooooo   N::::::::::N    N::::::N
//   B::::B     B:::::B U:::::D     D:::::U M:::::::::::M     M:::::::::::M oo:::::::::::oo  oo:::::::::::oo N:::::::::::N   N::::::N
//   B::::BBBBBB:::::B  U:::::D     D:::::U M:::::::M::::M   M::::M:::::::Mo:::::::::::::::oo:::::::::::::::oN:::::::N::::N  N::::::N
//   B:::::::::::::BB   U:::::D     D:::::U M::::::M M::::M M::::M M::::::Mo:::::ooooo:::::oo:::::ooooo:::::oN::::::N N::::N N::::::N
//   B::::BBBBBB:::::B  U:::::D     D:::::U M::::::M  M::::M::::M  M::::::Mo::::o     o::::oo::::o     o::::oN::::::N  N::::N:::::::N
//   B::::B     B:::::B U:::::D     D:::::U M::::::M   M:::::::M   M::::::Mo::::o     o::::oo::::o     o::::oN::::::N   N:::::::::::N
//   B::::B     B:::::B U:::::D     D:::::U M::::::M    M:::::M    M::::::Mo::::o     o::::oo::::o     o::::oN::::::N    N::::::::::N
//   B::::B     B:::::B U::::::U   U::::::U M::::::M     MMMMM     M::::::Mo::::o     o::::oo::::o     o::::oN::::::N     N:::::::::N
// BB:::::BBBBBB::::::B U:::::::UUU:::::::U M::::::M               M::::::Mo:::::ooooo:::::oo:::::ooooo:::::oN::::::N      N::::::::N
// B:::::::::::::::::B   UU:::::::::::::UU  M::::::M               M::::::Mo:::::::::::::::oo:::::::::::::::oN::::::N       N:::::::N
// B::::::::::::::::B      UU:::::::::UU    M::::::M               M::::::M oo:::::::::::oo  oo:::::::::::oo N::::::N        N::::::N
// BBBBBBBBBBBBBBBBB         UUUUUUUUU      MMMMMMMM               MMMMMMMM   ooooooooooo      ooooooooooo   NNNNNNNN         NNNNNNN
//
// © 2021 BUMooN.io

// BUMooN Contracts Core

// Copyright © 2021 BUMooN.io
// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"),
// to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
// and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

// <======== TAX 10% ========>
// 5% to liquidity pool,
// 5% redistribute to all holders,
// Max Tx 2% from total supp = 20 trillion, every 2 billion coin temp threshold then auto add LP and LOCKED for fastest growth
// <=========================>

pragma solidity ^0.7.6;

library Address {
    function isContract(address account) internal view returns (bool) {
        bytes32 accountHash =
            0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        bytes32 codehash;
        assembly {
            codehash := extcodehash(account)
        }
        return (codehash != accountHash && codehash != 0x0);
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        // solhint-disable-next-line avoid-low-level-calls, avoid-call-value
        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }

    function functionCall(address target, bytes memory data)
        internal
        returns (bytes memory)
    {
        return functionCall(target, data, "Address: low-level call failed");
    }

    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,
                "Address: low-level call with value failed"
            );
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(
            address(this).balance >= value,
            "Address: insufficient balance for call"
        );
        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), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (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);
            }
        }
    }
}

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

    function _msgData() internal view virtual returns (bytes memory) {
        this;
        return msg.data;
    }
}

interface IBEP20 {
    function totalSupply() external view returns (uint256);

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

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

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

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

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        _transferOwnership(newOwner);
    }

    function _transferOwnership(address newOwner) internal {
        require(
            newOwner != address(0),
            "Ownable: new owner is the zero address"
        );
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    //Locks the contract for owner for the amount of time provided
    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = time;
        emit OwnershipTransferred(_owner, address(0));
    }

    //Unlocks the contract for owner when _lockTime is exceeds
    function unlock() public virtual {
        require(
            _previousOwner == msg.sender,
            "You don't have permission to unlock"
        );
        require(
            block.timestamp > _lockTime,
            "Contract is locked until specific time"
        );
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

interface IPancakeRouter01 {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETH(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountToken, uint256 amountETH);

    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint256 liquidity,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountA, uint256 amountB);

    function removeLiquidityETHWithPermit(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountToken, uint256 amountETH);

    function swapExactTokensForTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapTokensForExactTokens(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactETHForTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function swapTokensForExactETH(
        uint256 amountOut,
        uint256 amountInMax,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapExactTokensForETH(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external returns (uint256[] memory amounts);

    function swapETHForExactTokens(
        uint256 amountOut,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable returns (uint256[] memory amounts);

    function quote(
        uint256 amountA,
        uint256 reserveA,
        uint256 reserveB
    ) external pure returns (uint256 amountB);

    function getAmountOut(
        uint256 amountIn,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountOut);

    function getAmountIn(
        uint256 amountOut,
        uint256 reserveIn,
        uint256 reserveOut
    ) external pure returns (uint256 amountIn);

    function getAmountsOut(uint256 amountIn, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);

    function getAmountsIn(uint256 amountOut, address[] calldata path)
        external
        view
        returns (uint256[] memory amounts);
}

interface IPancakeRouter02 is IPancakeRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    ) external returns (uint256 amountETH);

    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint256 liquidity,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline,
        bool approveMax,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external returns (uint256 amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;
}

interface IPancakeSwapV2Factory {
    event PairCreated(
        address indexed token0,
        address indexed token1,
        address pair,
        uint256
    );

    function feeTo() external view returns (address);

    function feeToSetter() external view returns (address);

    function getPair(address tokenA, address tokenB)
        external
        view
        returns (address pair);

    function allPairs(uint256) external view returns (address pair);

    function allPairsLength() external view returns (uint256);

    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);

    function setFeeTo(address) external;

    function setFeeToSetter(address) external;
}

interface IPancakeSwapV2Pair {
    event Approval(
        address indexed owner,
        address indexed spender,
        uint256 value
    );
    event Transfer(address indexed from, address indexed to, uint256 value);

    function name() external pure returns (string memory);

    function symbol() external pure returns (string memory);

    function decimals() external pure returns (uint8);

    function totalSupply() external view returns (uint256);

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

    function allowance(address owner, address spender)
        external
        view
        returns (uint256);

    function approve(address spender, uint256 value) external returns (bool);

    function transfer(address to, uint256 value) external returns (bool);

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

    function DOMAIN_SEPARATOR() external view returns (bytes32);

    function PERMIT_TYPEHASH() external pure returns (bytes32);

    function nonces(address owner) external view returns (uint256);

    function permit(
        address owner,
        address spender,
        uint256 value,
        uint256 deadline,
        uint8 v,
        bytes32 r,
        bytes32 s
    ) external;

    event Mint(address indexed sender, uint256 amount0, uint256 amount1);
    event Burn(
        address indexed sender,
        uint256 amount0,
        uint256 amount1,
        address indexed to
    );
    event Swap(
        address indexed sender,
        uint256 amount0In,
        uint256 amount1In,
        uint256 amount0Out,
        uint256 amount1Out,
        address indexed to
    );
    event Sync(uint112 reserve0, uint112 reserve1);

    function MINIMUM_LIQUIDITY() external pure returns (uint256);

    function factory() external view returns (address);

    function token0() external view returns (address);

    function token1() external view returns (address);

    function getReserves()
        external
        view
        returns (
            uint112 reserve0,
            uint112 reserve1,
            uint32 blockTimestampLast
        );

    function price0CumulativeLast() external view returns (uint256);

    function price1CumulativeLast() external view returns (uint256);

    function kLast() external view returns (uint256);

    function mint(address to) external returns (uint256 liquidity);

    function burn(address to)
        external
        returns (uint256 amount0, uint256 amount1);

    function swap(
        uint256 amount0Out,
        uint256 amount1Out,
        address to,
        bytes calldata data
    ) external;

    function skim(address to) external;

    function sync() external;

    function initialize(address, address) external;
}

contract Bumoon is Context, IBEP20, Ownable {
    using SafeMath for uint256;
    using Address for address;
    IPancakeRouter02 public PancakeSwapV2Router;
    address public PancakeSwapV2Pair;
    IPancakeSwapV2Factory factory;
    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => uint256) private _balances;
    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcluded;
    address[] private _excluded;
    uint256 public _taxFee = 5;
    uint256 public _liquidityFee = 5;
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 private _previousTaxFee = _taxFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1 * 10**9 * 10**6 * 10**9;
    //uint256 private ttotalinit = 1 * 10**9 * 10**6 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    address public constant BURN_ADDRESS =
        0x0000000000000000000000000000000000000000;
    uint256 private _tFeeTotal;
    uint256 private _rBurnTotal;

    bool inSwapAndLiquify;
    bool public swapAndLiquifyEnabled = true;
    string private _name = "BUMooN";
    string private _symbol = "BUMN";
    uint8 private _decimals = 9;
    uint256 private numTokensSellToAddToLiquidity = 2 * 10**9 * 10**9; //threshold
    uint256 public _maxTxAmount = 2 * 10**13 * 10**9;

    event MinTokensBeforeSwapUpdated(uint256 minTokensBeforeSwap);
    event SwapAndLiquifyEnabledUpdated(bool enabled);
    event SwapAndLiquify(
        uint256 tokensSwapped,
        uint256 ethReceived,
        uint256 tokensIntoLiqudity
    );

    modifier lockTheSwap {
        inSwapAndLiquify = true;
        _;
        inSwapAndLiquify = false;
    }

    constructor() {
        _rOwned[_msgSender()] = _rTotal;
        IPancakeRouter02 _pancakeswapV2Router =
            IPancakeRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);

        PancakeSwapV2Pair = IPancakeSwapV2Factory(
            _pancakeswapV2Router.factory()
        )
            .createPair(address(this), _pancakeswapV2Router.WETH());

        factory = IPancakeSwapV2Factory(_pancakeswapV2Router.factory());

        PancakeSwapV2Router = _pancakeswapV2Router;

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        emit Transfer(address(0), _msgSender(), _tTotal);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

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

    function totalSupplyReflect() public view returns (uint256) {
        return _rTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        if (_isExcluded[account]) return _tOwned[account];
        return tokenFromReflection(_rOwned[account]);
    }

    function transfer(address recipient, uint256 amount)
        public
        override
        entrancyGuard()
        returns (bool)
    {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender)
        public
        view
        override
        returns (uint256)
    {
        return _allowances[owner][spender];
    }

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _approve(_msgSender(), spender, amount);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function increaseAllowance(address spender, uint256 addedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].add(addedValue)
        );
        return true;
    }

    function decreaseAllowance(address spender, uint256 subtractedValue)
        public
        virtual
        returns (bool)
    {
        _approve(
            _msgSender(),
            spender,
            _allowances[_msgSender()][spender].sub(
                subtractedValue,
                "ERC20: decreased allowance below zero"
            )
        );
        return true;
    }

    function isExcluded(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function totalFees() public view returns (uint256) {
        return _tFeeTotal;
    }

    function totalSoftBurn() public view returns (uint256) {
        return _rBurnTotal;
    }

    function reflect(uint256 tAmount) public onlyOwner {
        address sender = _msgSender();
        require(
            !_isExcluded[sender],
            "Excluded addresses cannot call this function"
        );
        (uint256 rAmount, , , , , ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rTotal = _rTotal.sub(rAmount);
        _tFeeTotal = _tFeeTotal.add(tAmount);
        _rBurnTotal = _rBurnTotal.add(rAmount);
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferFee)
        public
        view
        returns (uint256)
    {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferFee) {
            (uint256 rAmount, , , , , ) = _getValues(tAmount);
            return rAmount;
        } else {
            (, uint256 rTransferAmount, , , , ) = _getValues(tAmount);
            return rTransferAmount;
        }
    }

    function tokenFromReflection(uint256 rAmount)
        public
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function excludeAccount(address account) external onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeAccount(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already included");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break;
            }
        }
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        require(sender != address(0), "ERC20: transfer from the zero address");
        //require(recipient != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        if (sender != owner())
            require(
                amount <= _maxTxAmount,
                "Transfer amount exceeds the maxTxAmount."
            );

        uint256 contractTokenBalance = balanceOf(address(this));

        if (contractTokenBalance >= _maxTxAmount) {
            contractTokenBalance = _maxTxAmount;
        }

        bool overMinTokenBalance =
            contractTokenBalance >= numTokensSellToAddToLiquidity;
        if (
            overMinTokenBalance &&
            !inSwapAndLiquify &&
            sender != PancakeSwapV2Pair &&
            swapAndLiquifyEnabled
        ) {
            contractTokenBalance = numTokensSellToAddToLiquidity;
            swapAndLiquify(contractTokenBalance);
        }

        bool takeFee = true;

        if (_isExcludedFromFee[sender] || _isExcludedFromFee[recipient]) {
            takeFee = false;
        }

        _tokenTransfer(sender, recipient, amount, takeFee);
    }

    function swapAndLiquify(uint256 contractTokenBalance) private lockTheSwap {
        uint256 half = contractTokenBalance.div(2);
        uint256 otherHalf = contractTokenBalance.sub(half);

        uint256 initialBalance = address(this).balance;
        swapTokensForBnb(half);
        uint256 newBalance = address(this).balance.sub(initialBalance);

        // add half for liquidity to pancake
        addLiquidity(otherHalf, newBalance);

        emit SwapAndLiquify(half, newBalance, otherHalf);
    }

    function swapTokensForBnb(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = PancakeSwapV2Router.WETH();

        _approve(address(this), address(PancakeSwapV2Router), tokenAmount);
        PancakeSwapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(PancakeSwapV2Router), tokenAmount);
        //add the liquidity
        PancakeSwapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();

        if (_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferFromExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && _isExcluded[recipient]) {
            _transferToExcluded(sender, recipient, amount);
        } else if (!_isExcluded[sender] && !_isExcluded[recipient]) {
            _transferStandard(sender, recipient, amount);
        } else if (_isExcluded[sender] && _isExcluded[recipient]) {
            _transferBothExcluded(sender, recipient, amount);
        } else {
            _transferStandard(sender, recipient, amount);
        }

        if (!takeFee) restoreAllFee();
    }

    function removeAllFee() private {
        if (_taxFee == 0) return;

        _previousTaxFee = _taxFee;

        _taxFee = 0;
    }

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
    }

    function _transferBothExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferToExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _tOwned[recipient] = _tOwned[recipient].add(tTransferAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _transferFromExcluded(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tLiquidity
        ) = _getValues(tAmount);
        _tOwned[sender] = _tOwned[sender].sub(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeLiquidity(tLiquidity);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _rBurnTotal = _rBurnTotal.add(rFee);
        //ttotalinit = ttotalinit.sub(tFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tLiquidity) =
            _getTValues(tAmount);
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tLiquidity, _getRate());
        return (
            rAmount,
            rTransferAmount,
            rFee,
            tTransferAmount,
            tFee,
            tLiquidity
        );
    }

    function _getTValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = calculateTaxFee(tAmount);
        uint256 tLiquidity = calculateLiquidityFee(tAmount);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tLiquidity);
        return (tTransferAmount, tFee, tLiquidity);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tLiquidity,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rLiquidity);
        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (
                _rOwned[_excluded[i]] > rSupply ||
                _tOwned[_excluded[i]] > tSupply
            ) return (_rTotal, _tTotal);
            rSupply = rSupply.sub(_rOwned[_excluded[i]]);
            tSupply = tSupply.sub(_tOwned[_excluded[i]]);
        }
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    function _takeLiquidity(uint256 tLiquidity) private {
        uint256 currentRate = _getRate();
        uint256 rLiquidity = tLiquidity.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rLiquidity);
        if (_isExcluded[address(this)])
            _tOwned[address(this)] = _tOwned[address(this)].add(tLiquidity);
    }

    function calculateLiquidityFee(uint256 _amount)
        private
        view
        returns (uint256)
    {
        return _amount.mul(_liquidityFee).div(10**2);
    }

    function excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }

    function setTaxFeePercent(uint256 taxFee) external onlyOwner() {
        _taxFee = taxFee;
    }

    function setMaxTxPercent(uint256 maxTxPercent) external onlyOwner() {
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(10**2);
    }

    function calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(10**2);
    }

    function setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
        _liquidityFee = liquidityFee;
    }

    function setSwapAndLiquifyEnabled(bool _enabled) public onlyOwner {
        swapAndLiquifyEnabled = _enabled;
        emit SwapAndLiquifyEnabledUpdated(_enabled);
    }

    receive() external payable {}

    //Set Router if any swap router address updated
    function setRouterAddress(address newRouter) public onlyOwner() {
        IPancakeRouter02 _newPancakeRouter = IPancakeRouter02(newRouter);

        PancakeSwapV2Pair = IPancakeSwapV2Factory(_newPancakeRouter.factory())
            .createPair(address(this), _newPancakeRouter.WETH());
        PancakeSwapV2Router = _newPancakeRouter;
    }

    uint256 private counter = 1;
    modifier entrancyGuard() {
        counter = counter.add(1);
        uint256 guard = counter;
        _;
        require(guard == counter, "That is not allowed");
    }

    function getLiquidity(address tokenA, address tokenB)
        external
        view
        onlyOwner()
        returns (uint256)
    {
        IPancakeSwapV2Pair pair;
        pair = IPancakeSwapV2Pair(factory.getPair(tokenA, tokenB));
        return pair.balanceOf(msg.sender);
    }

    function isNumtoken() public view returns (bool) {
        uint256 contractTokenBalance = balanceOf(address(this));
        bool overMinTokenBalance =
            contractTokenBalance >= numTokensSellToAddToLiquidity;
        return overMinTokenBalance;
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"minTokensBeforeSwap","type":"uint256"}],"name":"MinTokensBeforeSwapUpdated","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":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"tokensIntoLiqudity","type":"uint256"}],"name":"SwapAndLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"SwapAndLiquifyEnabledUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"BURN_ADDRESS","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PancakeSwapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"PancakeSwapV2Router","outputs":[{"internalType":"contract IPancakeRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_liquidityFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenA","type":"address"},{"internalType":"address","name":"tokenB","type":"address"}],"name":"getLiquidity","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeAccount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isNumtoken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"time","type":"uint256"}],"name":"lock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"reflect","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferFee","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"liquidityFee","type":"uint256"}],"name":"setLiquidityFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxPercent","type":"uint256"}],"name":"setMaxTxPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"}],"name":"setRouterAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setSwapAndLiquifyEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"taxFee","type":"uint256"}],"name":"setTaxFeePercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapAndLiquifyEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFees","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSoftBurn","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupplyReflect","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6005600d819055600e819055600f81905560105569d3c21bcecceda100000060115569085afffa6ff50bffffff196012556015805461ff00191661010017905560c06040526006608081905265212aa6b7b7a760d11b60a09081526200006991601691906200044c565b5060408051808201909152600480825263212aa6a760e11b602090920191825262000097916017916200044c565b506018805460ff19166009179055671bc16d674ec8000060195569043c33c1937564800000601a556001601b55348015620000d157600080fd5b506000620000de62000439565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350601254600660006200013962000439565b6001600160a01b03166001600160a01b031681526020019081526020016000208190555060007310ed43c718714eb63d5aa57b78b54704e256024e9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001b057600080fd5b505afa158015620001c5573d6000803e3d6000fd5b505050506040513d6020811015620001dc57600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b1580156200022d57600080fd5b505afa15801562000242573d6000803e3d6000fd5b505050506040513d60208110156200025957600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b158015620002ac57600080fd5b505af1158015620002c1573d6000803e3d6000fd5b505050506040513d6020811015620002d857600080fd5b5051600480546001600160a01b0319166001600160a01b039283161781556040805163c45a015560e01b815290519284169263c45a015592828101926020929190829003018186803b1580156200032e57600080fd5b505afa15801562000343573d6000803e3d6000fd5b505050506040513d60208110156200035a57600080fd5b5051600580546001600160a01b03199081166001600160a01b0393841617909155600380549091169183169190911790556001600960006200039b6200043d565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526009909252902080549091166001179055620003e562000439565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6011546040518082815260200191505060405180910390a350620004f8565b3390565b6000546001600160a01b031690565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282620004845760008555620004cf565b82601f106200049f57805160ff1916838001178555620004cf565b82800160010185558215620004cf579182015b82811115620004cf578251825591602001919060010190620004b2565b50620004dd929150620004e1565b5090565b5b80821115620004dd5760008155600101620004e2565b612db580620005086000396000f3fe6080604052600436106102555760003560e01c8063715018a611610139578063c49b9a80116100b6578063ea2f0b371161007a578063ea2f0b3714610832578063ea526de714610865578063f2cc0c18146108a0578063f2fde38b146108d3578063f84354f114610906578063fccc2813146109395761025c565b8063c49b9a8014610744578063cba0e99614610770578063d543dbeb146107a3578063dd467064146107cd578063dd62ed3e146107f75761025c565b806395d89b41116100fd57806395d89b4114610693578063a457c2d7146106a8578063a69df4b5146106e1578063a9059cbb146106f6578063c1258a401461072f5761025c565b8063715018a6146105f957806379fdd8321461060e5780637d1db4a51461063f5780638da5cb5b146106545780638ee88c53146106695761025c565b806339509351116101d25780634a74bb02116101965780634a74bb021461055d5780634bcfd19514610572578063602bc62b146105875780636893b40b1461059c5780636bc87c3a146105b157806370a08231146105c65761025c565b806339509351146104775780633b124fe7146104b057806341cb87fc146104c5578063437823ec146104f85780634549b0391461052b5761025c565b806313114a9d1161021957806313114a9d146103b557806318160ddd146103ca57806323b872dd146103df5780632d83811914610422578063313ce5671461044c5761025c565b8063053ab18214610261578063061c82d01461028d57806306fdde03146102b7578063095ea7b3146103415780630b449dc51461038e5761025c565b3661025c57005b600080fd5b34801561026d57600080fd5b5061028b6004803603602081101561028457600080fd5b503561094e565b005b34801561029957600080fd5b5061028b600480360360208110156102b057600080fd5b5035610a90565b3480156102c357600080fd5b506102cc610aed565b6040805160208082528351818301528351919283929083019185019080838360005b838110156103065781810151838201526020016102ee565b50505050905090810190601f1680156103335780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561034d57600080fd5b5061037a6004803603604081101561036457600080fd5b506001600160a01b038135169060200135610b83565b604080519115158252519081900360200190f35b34801561039a57600080fd5b506103a3610ba1565b60408051918252519081900360200190f35b3480156103c157600080fd5b506103a3610ba7565b3480156103d657600080fd5b506103a3610bad565b3480156103eb57600080fd5b5061037a6004803603606081101561040257600080fd5b506001600160a01b03813581169160208101359091169060400135610bb3565b34801561042e57600080fd5b506103a36004803603602081101561044557600080fd5b5035610c3a565b34801561045857600080fd5b50610461610c9c565b6040805160ff9092168252519081900360200190f35b34801561048357600080fd5b5061037a6004803603604081101561049a57600080fd5b506001600160a01b038135169060200135610ca5565b3480156104bc57600080fd5b506103a3610cf3565b3480156104d157600080fd5b5061028b600480360360208110156104e857600080fd5b50356001600160a01b0316610cf9565b34801561050457600080fd5b5061028b6004803603602081101561051b57600080fd5b50356001600160a01b0316610ee3565b34801561053757600080fd5b506103a36004803603604081101561054e57600080fd5b50803590602001351515610f5f565b34801561056957600080fd5b5061037a610ff1565b34801561057e57600080fd5b5061037a610fff565b34801561059357600080fd5b506103a3611016565b3480156105a857600080fd5b506103a361101c565b3480156105bd57600080fd5b506103a3611022565b3480156105d257600080fd5b506103a3600480360360208110156105e957600080fd5b50356001600160a01b0316611028565b34801561060557600080fd5b5061028b61108a565b34801561061a57600080fd5b5061062361111a565b604080516001600160a01b039092168252519081900360200190f35b34801561064b57600080fd5b506103a3611129565b34801561066057600080fd5b5061062361112f565b34801561067557600080fd5b5061028b6004803603602081101561068c57600080fd5b503561113e565b34801561069f57600080fd5b506102cc61119b565b3480156106b457600080fd5b5061037a600480360360408110156106cb57600080fd5b506001600160a01b0381351690602001356111fc565b3480156106ed57600080fd5b5061028b611264565b34801561070257600080fd5b5061037a6004803603604081101561071957600080fd5b506001600160a01b03813516906020013561133c565b34801561073b57600080fd5b506106236113bb565b34801561075057600080fd5b5061028b6004803603602081101561076757600080fd5b503515156113ca565b34801561077c57600080fd5b5061037a6004803603602081101561079357600080fd5b50356001600160a01b0316611471565b3480156107af57600080fd5b5061028b600480360360208110156107c657600080fd5b503561148f565b3480156107d957600080fd5b5061028b600480360360208110156107f057600080fd5b503561150d565b34801561080357600080fd5b506103a36004803603604081101561081a57600080fd5b506001600160a01b03813581169160200135166115aa565b34801561083e57600080fd5b5061028b6004803603602081101561085557600080fd5b50356001600160a01b03166115d5565b34801561087157600080fd5b506103a36004803603604081101561088857600080fd5b506001600160a01b038135811691602001351661164e565b3480156108ac57600080fd5b5061028b600480360360208110156108c357600080fd5b50356001600160a01b03166117ab565b3480156108df57600080fd5b5061028b600480360360208110156108f657600080fd5b50356001600160a01b0316611931565b34801561091257600080fd5b5061028b6004803603602081101561092957600080fd5b50356001600160a01b0316611995565b34801561094557600080fd5b50610623611b56565b610956611b5b565b6000546001600160a01b039081169116146109a6576040805162461bcd60e51b81526020600482018190526024820152600080516020612c34833981519152604482015290519081900360640190fd5b60006109b0611b5b565b6001600160a01b0381166000908152600b602052604090205490915060ff1615610a0b5760405162461bcd60e51b815260040180806020018281038252602c815260200180612ce6602c913960400191505060405180910390fd5b6000610a1683611b5f565b505050506001600160a01b038416600090815260066020526040902054919250610a4291905082611bae565b6001600160a01b038316600090815260066020526040902055601254610a689082611bae565b601255601354610a789084611bf7565b601355601454610a889082611bf7565b601455505050565b610a98611b5b565b6000546001600160a01b03908116911614610ae8576040805162461bcd60e51b81526020600482018190526024820152600080516020612c34833981519152604482015290519081900360640190fd5b600d55565b60168054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b795780601f10610b4e57610100808354040283529160200191610b79565b820191906000526020600020905b815481529060010190602001808311610b5c57829003601f168201915b5050505050905090565b6000610b97610b90611b5b565b8484611c51565b5060015b92915050565b60145490565b60135490565b60115490565b6000610bc0848484611d3d565b610c3084610bcc611b5b565b610c2b85604051806060016040528060288152602001612c0c602891396001600160a01b038a166000908152600a6020526040812090610c0a611b5b565b6001600160a01b031681526020810191909152604001600020549190611ef3565b611c51565b5060019392505050565b6000601254821115610c7d5760405162461bcd60e51b815260040180806020018281038252602a815260200180612b51602a913960400191505060405180910390fd5b6000610c87611f8a565b9050610c938382611fad565b9150505b919050565b60185460ff1690565b6000610b97610cb2611b5b565b84610c2b85600a6000610cc3611b5b565b6001600160a01b03908116825260208083019390935260409182016000908120918c168152925290205490611bf7565b600d5481565b610d01611b5b565b6000546001600160a01b03908116911614610d51576040805162461bcd60e51b81526020600482018190526024820152600080516020612c34833981519152604482015290519081900360640190fd5b6000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015610d8f57600080fd5b505afa158015610da3573d6000803e3d6000fd5b505050506040513d6020811015610db957600080fd5b5051604080516315ab88c960e31b815290516001600160a01b039283169263c9c653969230929186169163ad5c464891600480820192602092909190829003018186803b158015610e0957600080fd5b505afa158015610e1d573d6000803e3d6000fd5b505050506040513d6020811015610e3357600080fd5b5051604080516001600160e01b031960e086901b1681526001600160a01b0393841660048201529290911660248301525160448083019260209291908290030181600087803b158015610e8557600080fd5b505af1158015610e99573d6000803e3d6000fd5b505050506040513d6020811015610eaf57600080fd5b5051600480546001600160a01b039283166001600160a01b0319918216179091556003805493909216921691909117905550565b610eeb611b5b565b6000546001600160a01b03908116911614610f3b576040805162461bcd60e51b81526020600482018190526024820152600080516020612c34833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600960205260409020805460ff19166001179055565b6000601154831115610fb8576040805162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604482015290519081900360640190fd5b81610fd7576000610fc884611b5f565b50939550610b9b945050505050565b6000610fe284611b5f565b50929550610b9b945050505050565b601554610100900460ff1681565b60008061100b30611028565b601954111591505090565b60025490565b60125490565b600e5481565b6001600160a01b0381166000908152600b602052604081205460ff161561106857506001600160a01b038116600090815260076020526040902054610c97565b6001600160a01b038216600090815260066020526040902054610b9b90610c3a565b611092611b5b565b6000546001600160a01b039081169116146110e2576040805162461bcd60e51b81526020600482018190526024820152600080516020612c34833981519152604482015290519081900360640190fd5b600080546040516001600160a01b0390911690600080516020612c54833981519152908390a3600080546001600160a01b0319169055565b6003546001600160a01b031681565b601a5481565b6000546001600160a01b031690565b611146611b5b565b6000546001600160a01b03908116911614611196576040805162461bcd60e51b81526020600482018190526024820152600080516020612c34833981519152604482015290519081900360640190fd5b600e55565b60178054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610b795780601f10610b4e57610100808354040283529160200191610b79565b6000610b97611209611b5b565b84610c2b85604051806060016040528060258152602001612d5b60259139600a6000611233611b5b565b6001600160a01b03908116825260208083019390935260409182016000908120918d16815292529020549190611ef3565b6001546001600160a01b031633146112ad5760405162461bcd60e51b8152600401808060200182810382526023815260200180612d386023913960400191505060405180910390fd5b60025442116112ed5760405162461bcd60e51b8152600401808060200182810382526026815260200180612d126026913960400191505060405180910390fd5b600154600080546040516001600160a01b039384169390911691600080516020612c5483398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b601b5460009061134d906001611bf7565b601b81905561136461135d611b5b565b8585611d3d565b60019150601b5481146113b4576040805162461bcd60e51b8152602060048201526013602482015272151a185d081a5cc81b9bdd08185b1b1bddd959606a1b604482015290519081900360640190fd5b5092915050565b6004546001600160a01b031681565b6113d2611b5b565b6000546001600160a01b03908116911614611422576040805162461bcd60e51b81526020600482018190526024820152600080516020612c34833981519152604482015290519081900360640190fd5b60158054821515610100810261ff00199092169190911790915560408051918252517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc1599181900360200190a150565b6001600160a01b03166000908152600b602052604090205460ff1690565b611497611b5b565b6000546001600160a01b039081169116146114e7576040805162461bcd60e51b81526020600482018190526024820152600080516020612c34833981519152604482015290519081900360640190fd5b611507606461150183601154611fef90919063ffffffff16565b90611fad565b601a5550565b611515611b5b565b6000546001600160a01b03908116911614611565576040805162461bcd60e51b81526020600482018190526024820152600080516020612c34833981519152604482015290519081900360640190fd5b60008054600180546001600160a01b03199081166001600160a01b0384161790915516815560028290556040518190600080516020612c54833981519152908290a350565b6001600160a01b039182166000908152600a6020908152604080832093909416825291909152205490565b6115dd611b5b565b6000546001600160a01b0390811691161461162d576040805162461bcd60e51b81526020600482018190526024820152600080516020612c34833981519152604482015290519081900360640190fd5b6001600160a01b03166000908152600960205260409020805460ff19169055565b6000611658611b5b565b6000546001600160a01b039081169116146116a8576040805162461bcd60e51b81526020600482018190526024820152600080516020612c34833981519152604482015290519081900360640190fd5b6005546040805163e6a4390560e01b81526001600160a01b03868116600483015285811660248301529151600093929092169163e6a4390591604480820192602092909190829003018186803b15801561170157600080fd5b505afa158015611715573d6000803e3d6000fd5b505050506040513d602081101561172b57600080fd5b5051604080516370a0823160e01b815233600482015290519192506001600160a01b038316916370a0823191602480820192602092909190829003018186803b15801561177757600080fd5b505afa15801561178b573d6000803e3d6000fd5b505050506040513d60208110156117a157600080fd5b5051949350505050565b6117b3611b5b565b6000546001600160a01b03908116911614611803576040805162461bcd60e51b81526020600482018190526024820152600080516020612c34833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600b602052604090205460ff1615611871576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604482015290519081900360640190fd5b6001600160a01b038116600090815260066020526040902054156118cb576001600160a01b0381166000908152600660205260409020546118b190610c3a565b6001600160a01b0382166000908152600760205260409020555b6001600160a01b03166000818152600b60205260408120805460ff19166001908117909155600c805491820181559091527fdf6966c971051c3d54ec59162606531493a51404a002842f56009d7e5cf4a8c70180546001600160a01b0319169091179055565b611939611b5b565b6000546001600160a01b03908116911614611989576040805162461bcd60e51b81526020600482018190526024820152600080516020612c34833981519152604482015290519081900360640190fd5b61199281612048565b50565b61199d611b5b565b6000546001600160a01b039081169116146119ed576040805162461bcd60e51b81526020600482018190526024820152600080516020612c34833981519152604482015290519081900360640190fd5b6001600160a01b0381166000908152600b602052604090205460ff16611a5a576040805162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c726561647920696e636c756465640000000000604482015290519081900360640190fd5b60005b600c54811015611b5257816001600160a01b0316600c8281548110611a7e57fe5b6000918252602090912001546001600160a01b03161415611b4a57600c80546000198101908110611aab57fe5b600091825260209091200154600c80546001600160a01b039092169183908110611ad157fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600782526040808220829055600b90925220805460ff19169055600c805480611b2357fe5b600082815260209020810160001990810180546001600160a01b0319169055019055611b52565b600101611a5d565b5050565b600081565b3390565b6000806000806000806000806000611b768a6120d6565b9250925092506000806000611b948d8686611b8f611f8a565b612118565b919f909e50909c50959a5093985091965092945050505050565b6000611bf083836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611ef3565b9392505050565b600082820183811015611bf0576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6001600160a01b038316611c965760405162461bcd60e51b8152600401808060200182810382526024815260200180612cc26024913960400191505060405180910390fd5b6001600160a01b038216611cdb5760405162461bcd60e51b8152600401808060200182810382526022815260200180612ba16022913960400191505060405180910390fd5b6001600160a01b038084166000818152600a6020908152604080832094871680845294825291829020859055815185815291517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9259281900390910190a3505050565b6001600160a01b038316611d825760405162461bcd60e51b8152600401808060200182810382526025815260200180612c9d6025913960400191505060405180910390fd5b60008111611dc15760405162461bcd60e51b8152600401808060200182810382526029815260200180612c746029913960400191505060405180910390fd5b611dc961112f565b6001600160a01b0316836001600160a01b031614611e2257601a54811115611e225760405162461bcd60e51b8152600401808060200182810382526028815260200180612bc36028913960400191505060405180910390fd5b6000611e2d30611028565b9050601a548110611e3d5750601a545b60195481108015908190611e54575060155460ff16155b8015611e6e57506004546001600160a01b03868116911614155b8015611e815750601554610100900460ff165b15611e94576019549150611e9482612168565b6001600160a01b03851660009081526009602052604090205460019060ff1680611ed657506001600160a01b03851660009081526009602052604090205460ff165b15611edf575060005b611eeb86868684612205565b505050505050565b60008184841115611f825760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611f47578181015183820152602001611f2f565b50505050905090810190601f168015611f745780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000806000611f97612379565b9092509050611fa68282611fad565b9250505090565b6000611bf083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124dc565b600082611ffe57506000610b9b565b8282028284828161200b57fe5b0414611bf05760405162461bcd60e51b8152600401808060200182810382526021815260200180612beb6021913960400191505060405180910390fd5b6001600160a01b03811661208d5760405162461bcd60e51b8152600401808060200182810382526026815260200180612b7b6026913960400191505060405180910390fd5b600080546040516001600160a01b0380851693921691600080516020612c5483398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000806000806120e585612541565b905060006120f28661255d565b9050600061210a826121048986611bae565b90611bae565b979296509094509092505050565b60008080806121278886611fef565b905060006121358887611fef565b905060006121438888611fef565b90506000612155826121048686611bae565b939b939a50919850919650505050505050565b6015805460ff191660011790556000612182826002611fad565b905060006121908383611bae565b90504761219c83612579565b60006121a84783611bae565b90506121b48382612720565b604080518581526020810183905280820185905290517f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5619181900360600190a150506015805460ff19169055505050565b80612212576122126127ed565b6001600160a01b0384166000908152600b602052604090205460ff16801561225357506001600160a01b0383166000908152600b602052604090205460ff16155b1561226857612263848484612807565b612366565b6001600160a01b0384166000908152600b602052604090205460ff161580156122a957506001600160a01b0383166000908152600b602052604090205460ff165b156122b95761226384848461292b565b6001600160a01b0384166000908152600b602052604090205460ff161580156122fb57506001600160a01b0383166000908152600b602052604090205460ff16155b1561230b576122638484846129d4565b6001600160a01b0384166000908152600b602052604090205460ff16801561234b57506001600160a01b0383166000908152600b602052604090205460ff165b1561235b57612263848484612a18565b6123668484846129d4565b8061237357612373612a8b565b50505050565b6012546011546000918291825b600c548110156124aa578260066000600c84815481106123a257fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061240757508160076000600c84815481106123e057fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561241e57601254601154945094505050506124d8565b61245e60066000600c848154811061243257fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548490611bae565b92506124a060076000600c848154811061247457fe5b60009182526020808320909101546001600160a01b031683528201929092526040019020548390611bae565b9150600101612386565b506011546012546124ba91611fad565b8210156124d2576012546011549350935050506124d8565b90925090505b9091565b6000818361252b5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315611f47578181015183820152602001611f2f565b50600083858161253757fe5b0495945050505050565b6000610b9b6064611501600d5485611fef90919063ffffffff16565b6000610b9b6064611501600e5485611fef90919063ffffffff16565b60408051600280825260608201835260009260208301908036833701905050905030816000815181106125a857fe5b6001600160a01b03928316602091820292909201810191909152600354604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156125fc57600080fd5b505afa158015612610573d6000803e3d6000fd5b505050506040513d602081101561262657600080fd5b505181518290600190811061263757fe5b6001600160a01b03928316602091820292909201015260035461265d9130911684611c51565b60035460405163791ac94760e01b8152600481018481526000602483018190523060648401819052426084850181905260a060448601908152875160a487015287516001600160a01b039097169663791ac947968a968a9594939092909160c40190602080880191028083838b5b838110156126e35781810151838201526020016126cb565b505050509050019650505050505050600060405180830381600087803b15801561270c57600080fd5b505af1158015611eeb573d6000803e3d6000fd5b6003546127389030906001600160a01b031684611c51565b6003546001600160a01b031663f305d71982308560008061275761112f565b426040518863ffffffff1660e01b815260040180876001600160a01b03168152602001868152602001858152602001848152602001836001600160a01b0316815260200182815260200196505050505050506060604051808303818588803b1580156127c257600080fd5b505af11580156127d6573d6000803e3d6000fd5b50505050506040513d606081101561237357600080fd5b600d546127f957612805565b600d8054601055600090555b565b60008060008060008061281987611b5f565b6001600160a01b038f16600090815260076020526040902054959b5093995091975095509350915061284b9088611bae565b6001600160a01b038a1660009081526007602090815260408083209390935560069052205461287a9087611bae565b6001600160a01b03808b1660009081526006602052604080822093909355908a16815220546128a99086611bf7565b6001600160a01b0389166000908152600660205260409020556128cb81612a93565b6128d58483612b1c565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef856040518082815260200191505060405180910390a3505050505050505050565b60008060008060008061293d87611b5f565b6001600160a01b038f16600090815260066020526040902054959b5093995091975095509350915061296f9087611bae565b6001600160a01b03808b16600090815260066020908152604080832094909455918b168152600790915220546129a59084611bf7565b6001600160a01b0389166000908152600760209081526040808320939093556006905220546128a99086611bf7565b6000806000806000806129e687611b5f565b6001600160a01b038f16600090815260066020526040902054959b5093995091975095509350915061287a9087611bae565b600080600080600080612a2a87611b5f565b6001600160a01b038f16600090815260076020526040902054959b50939950919750955093509150612a5c9088611bae565b6001600160a01b038a1660009081526007602090815260408083209390935560069052205461296f9087611bae565b601054600d55565b6000612a9d611f8a565b90506000612aab8383611fef565b30600090815260066020526040902054909150612ac89082611bf7565b30600090815260066020908152604080832093909355600b9052205460ff1615612b175730600090815260076020526040902054612b069084611bf7565b306000908152600760205260409020555b505050565b601254612b299083611bae565b601255601454612b399083611bf7565b601455601354612b499082611bf7565b601355505056fe416d6f756e74206d757374206265206c657373207468616e20746f74616c207265666c656374696f6e734f776e61626c653a206e6577206f776e657220697320746865207a65726f206164647265737345524332303a20617070726f766520746f20746865207a65726f20616464726573735472616e7366657220616d6f756e74206578636565647320746865206d61785478416d6f756e742e536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f7745524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63654f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e65728be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e05472616e7366657220616d6f756e74206d7573742062652067726561746572207468616e207a65726f45524332303a207472616e736665722066726f6d20746865207a65726f206164647265737345524332303a20617070726f76652066726f6d20746865207a65726f20616464726573734578636c75646564206164647265737365732063616e6e6f742063616c6c20746869732066756e6374696f6e436f6e7472616374206973206c6f636b656420756e74696c2073706563696669632074696d65596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b45524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212203f475fbb53a9c504ed32b4388d200bdf0e1c72718ab0efc94cd042ea4274da5764736f6c63430007060033

Deployed ByteCode Sourcemap

20603:19881:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25945:478;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25945:478:0;;:::i;:::-;;38557:98;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38557:98:0;;:::i;23150:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;24261:193;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24261:193:0;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;25845:92;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;25750:87;;;;;;;;;;;;;:::i;23427:95::-;;;;;;;;;;;;;:::i;24462:446::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24462:446:0;;;;;;;;;;;;;;;;;:::i;26918:322::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26918:322:0;;:::i;23336:83::-;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;24916:300;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24916:300:0;;;;;;;;:::i;21213:26::-;;;;;;;;;;;;;:::i;39346:346::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39346:346:0;-1:-1:-1;;;;;39346:346:0;;:::i;38320:111::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38320:111:0;-1:-1:-1;;;;;38320:111:0;;:::i;26431:479::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26431:479:0;;;;;;;;;:::i;21813:40::-;;;;;;;;;;;;;:::i;40217:264::-;;;;;;;;;;;;;:::i;10420:90::-;;;;;;;;;;;;;:::i;23530:93::-;;;;;;;;;;;;;:::i;21246:32::-;;;;;;;;;;;;;:::i;23631:198::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;23631:198:0;-1:-1:-1;;;;;23631:198:0;;:::i;9865:148::-;;;;;;;;;;;;;:::i;20719:43::-;;;;;;;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;20719:43:0;;;;;;;;;;;;;;22054:48;;;;;;;;;;;;;:::i;9651:79::-;;;;;;;;;;;;;:::i;38947:122::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38947:122:0;;:::i;23241:87::-;;;;;;;;;;;;;:::i;25224:400::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;25224:400:0;;;;;;;;:::i;10866:385::-;;;;;;;;;;;;;:::i;23837:224::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;23837:224:0;;;;;;;;:::i;20769:32::-;;;;;;;;;;;;;:::i;39077:171::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;39077:171:0;;;;:::i;25632:110::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;25632:110:0;-1:-1:-1;;;;;25632:110:0;;:::i;38663:138::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38663:138:0;;:::i;10586:208::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10586:208:0;;:::i;24069:184::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;24069:184:0;;;;;;;;;;:::i;38439:110::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;38439:110:0;-1:-1:-1;;;;;38439:110:0;;:::i;39915:294::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;39915:294:0;;;;;;;;;;:::i;27248:333::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27248:333:0;-1:-1:-1;;;;;27248:333:0;;:::i;10021:117::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;10021:117:0;-1:-1:-1;;;;;10021:117:0;;:::i;27589:478::-;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;27589:478:0;-1:-1:-1;;;;;27589:478:0;;:::i;21619:90::-;;;;;;;;;;;;;:::i;25945:478::-;9788:12;:10;:12::i;:::-;9778:6;;-1:-1:-1;;;;;9778:6:0;;;:22;;;9770:67;;;;;-1:-1:-1;;;9770:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9770:67:0;;;;;;;;;;;;;;;26007:14:::1;26024:12;:10;:12::i;:::-;-1:-1:-1::0;;;;;26070:19:0;::::1;;::::0;;;:11:::1;:19;::::0;;;;;26007:29;;-1:-1:-1;26070:19:0::1;;26069:20;26047:114;;;;-1:-1:-1::0;;;26047:114:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;26173:15;26202:19;26213:7;26202:10;:19::i;:::-;-1:-1:-1::0;;;;;;;;;26250:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;;26172:49;;-1:-1:-1;26250:28:0::1;::::0;:15;-1:-1:-1;26172:49:0;26250:19:::1;:28::i;:::-;-1:-1:-1::0;;;;;26232:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;:46;26299:7:::1;::::0;:20:::1;::::0;26311:7;26299:11:::1;:20::i;:::-;26289:7;:30:::0;26343:10:::1;::::0;:23:::1;::::0;26358:7;26343:14:::1;:23::i;:::-;26330:10;:36:::0;26391:11:::1;::::0;:24:::1;::::0;26407:7;26391:15:::1;:24::i;:::-;26377:11;:38:::0;-1:-1:-1;;;25945:478:0:o;38557:98::-;9788:12;:10;:12::i;:::-;9778:6;;-1:-1:-1;;;;;9778:6:0;;;:22;;;9770:67;;;;;-1:-1:-1;;;9770:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9770:67:0;;;;;;;;;;;;;;;38631:7:::1;:16:::0;38557:98::o;23150:83::-;23220:5;23213:12;;;;;;;;-1:-1:-1;;23213:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23187:13;;23213:12;;23220:5;;23213:12;;23220:5;23213:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23150:83;:::o;24261:193::-;24363:4;24385:39;24394:12;:10;:12::i;:::-;24408:7;24417:6;24385:8;:39::i;:::-;-1:-1:-1;24442:4:0;24261:193;;;;;:::o;25845:92::-;25918:11;;25845:92;:::o;25750:87::-;25819:10;;25750:87;:::o;23427:95::-;23507:7;;23427:95;:::o;24462:446::-;24594:4;24611:36;24621:6;24629:9;24640:6;24611:9;:36::i;:::-;24658:220;24681:6;24702:12;:10;:12::i;:::-;24729:138;24785:6;24729:138;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;24729:19:0;;;;;;:11;:19;;;;;;24749:12;:10;:12::i;:::-;-1:-1:-1;;;;;24729:33:0;;;;;;;;;;;;-1:-1:-1;24729:33:0;;;:138;:37;:138::i;:::-;24658:8;:220::i;:::-;-1:-1:-1;24896:4:0;24462:446;;;;;:::o;26918:322::-;27012:7;27070;;27059;:18;;27037:110;;;;-1:-1:-1;;;27037:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;27158:19;27180:10;:8;:10::i;:::-;27158:32;-1:-1:-1;27208:24:0;:7;27158:32;27208:11;:24::i;:::-;27201:31;;;26918:322;;;;:::o;23336:83::-;23402:9;;;;23336:83;:::o;24916:300::-;25031:4;25053:133;25076:12;:10;:12::i;:::-;25103:7;25125:50;25164:10;25125:11;:25;25137:12;:10;:12::i;:::-;-1:-1:-1;;;;;25125:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;25125:25:0;;;:34;;;;;;;;;;;:38;:50::i;21213:26::-;;;;:::o;39346:346::-;9788:12;:10;:12::i;:::-;9778:6;;-1:-1:-1;;;;;9778:6:0;;;:22;;;9770:67;;;;;-1:-1:-1;;;9770:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9770:67:0;;;;;;;;;;;;;;;39421:34:::1;39475:9;39421:64;;39540:17;-1:-1:-1::0;;;;;39540:25:0::1;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;39540:27:0;39609:24:::1;::::0;;-1:-1:-1;;;39609:24:0;;;;-1:-1:-1;;;;;39518:75:0;;::::1;::::0;::::1;::::0;39602:4:::1;::::0;39609:22;;::::1;::::0;::::1;::::0;:24:::1;::::0;;::::1;::::0;39540:27:::1;::::0;39609:24;;;;;;;;:22;:24;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;39609:24:0;39518:116:::1;::::0;;-1:-1:-1;;;;;;39518:116:0::1;::::0;;;;;;-1:-1:-1;;;;;39518:116:0;;::::1;;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;39609:24:::1;::::0;39518:116;;;;;;;-1:-1:-1;39518:116:0;;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;39518:116:0;39498:17:::1;:136:::0;;-1:-1:-1;;;;;39498:136:0;;::::1;-1:-1:-1::0;;;;;;39498:136:0;;::::1;;::::0;;;39645:19:::1;:39:::0;;;;;::::1;::::0;::::1;::::0;;;::::1;::::0;;-1:-1:-1;39346:346:0:o;38320:111::-;9788:12;:10;:12::i;:::-;9778:6;;-1:-1:-1;;;;;9778:6:0;;;:22;;;9770:67;;;;;-1:-1:-1;;;9770:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9770:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;38389:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;38389:34:0::1;38419:4;38389:34;::::0;;38320:111::o;26431:479::-;26549:7;26593;;26582;:18;;26574:62;;;;;-1:-1:-1;;;26574:62:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;26652:17;26647:256;;26687:15;26716:19;26727:7;26716:10;:19::i;:::-;-1:-1:-1;26686:49:0;;-1:-1:-1;26750:14:0;;-1:-1:-1;;;;;26750:14:0;26647:256;26800:23;26835:19;26846:7;26835:10;:19::i;:::-;-1:-1:-1;26797:57:0;;-1:-1:-1;26869:22:0;;-1:-1:-1;;;;;26869:22:0;21813:40;;;;;;;;;:::o;40217:264::-;40260:4;40277:28;40308:24;40326:4;40308:9;:24::i;:::-;40407:29;;-1:-1:-1;40383:53:0;;-1:-1:-1;;40217:264:0;:::o;10420:90::-;10493:9;;10420:90;:::o;23530:93::-;23608:7;;23530:93;:::o;21246:32::-;;;;:::o;23631:198::-;-1:-1:-1;;;;;23721:20:0;;23697:7;23721:20;;;:11;:20;;;;;;;;23717:49;;;-1:-1:-1;;;;;;23750:16:0;;;;;;:7;:16;;;;;;23743:23;;23717:49;-1:-1:-1;;;;;23804:16:0;;;;;;:7;:16;;;;;;23784:37;;:19;:37::i;9865:148::-;9788:12;:10;:12::i;:::-;9778:6;;-1:-1:-1;;;;;9778:6:0;;;:22;;;9770:67;;;;;-1:-1:-1;;;9770:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9770:67:0;;;;;;;;;;;;;;;9972:1:::1;9956:6:::0;;9935:40:::1;::::0;-1:-1:-1;;;;;9956:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;9935:40:0;9972:1;;9935:40:::1;10003:1;9986:19:::0;;-1:-1:-1;;;;;;9986:19:0::1;::::0;;9865:148::o;20719:43::-;;;-1:-1:-1;;;;;20719:43:0;;:::o;22054:48::-;;;;:::o;9651:79::-;9689:7;9716:6;-1:-1:-1;;;;;9716:6:0;9651:79;:::o;38947:122::-;9788:12;:10;:12::i;:::-;9778:6;;-1:-1:-1;;;;;9778:6:0;;;:22;;;9770:67;;;;;-1:-1:-1;;;9770:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9770:67:0;;;;;;;;;;;;;;;39033:13:::1;:28:::0;38947:122::o;23241:87::-;23313:7;23306:14;;;;;;;;-1:-1:-1;;23306:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;23280:13;;23306:14;;23313:7;;23306:14;;23313:7;23306:14;;;;;;;;;;;;;;;;;;;;;;;;25224:400;25344:4;25366:228;25389:12;:10;:12::i;:::-;25416:7;25438:145;25495:15;25438:145;;;;;;;;;;;;;;;;;:11;:25;25450:12;:10;:12::i;:::-;-1:-1:-1;;;;;25438:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;25438:25:0;;;:34;;;;;;;;;;;:145;:38;:145::i;10866:385::-;10932:14;;-1:-1:-1;;;;;10932:14:0;10950:10;10932:28;10910:113;;;;-1:-1:-1;;;10910:113:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11074:9;;11056:15;:27;11034:115;;;;-1:-1:-1;;;11034:115:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;11194:14;;;11186:6;;11165:44;;-1:-1:-1;;;;;11194:14:0;;;;11186:6;;;;-1:-1:-1;;;;;;;;;;;11165:44:0;;11229:14;;;11220:23;;-1:-1:-1;;;;;;11220:23:0;-1:-1:-1;;;;;11229:14:0;;;11220:23;;;;;;10866:385::o;23837:224::-;39780:7;;23967:4;;39780:14;;39792:1;39780:11;:14::i;:::-;39770:7;:24;;;23989:42:::1;23999:12;:10;:12::i;:::-;24013:9;24024:6;23989:9;:42::i;:::-;24049:4;24042:11;;39868:7:::0;;39859:5;:16;39851:48;;;;;-1:-1:-1;;;39851:48:0;;;;;;;;;;;;-1:-1:-1;;;39851:48:0;;;;;;;;;;;;;;;23837:224;;;;;:::o;20769:32::-;;;-1:-1:-1;;;;;20769:32:0;;:::o;39077:171::-;9788:12;:10;:12::i;:::-;9778:6;;-1:-1:-1;;;;;9778:6:0;;;:22;;;9770:67;;;;;-1:-1:-1;;;9770:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9770:67:0;;;;;;;;;;;;;;;39154:21:::1;:32:::0;;;::::1;;;::::0;::::1;-1:-1:-1::0;;39154:32:0;;::::1;::::0;;;::::1;::::0;;;39202:38:::1;::::0;;;;;;::::1;::::0;;;;::::1;::::0;;::::1;39077:171:::0;:::o;25632:110::-;-1:-1:-1;;;;;25714:20:0;25690:4;25714:20;;;:11;:20;;;;;;;;;25632:110::o;38663:138::-;9788:12;:10;:12::i;:::-;9778:6;;-1:-1:-1;;;;;9778:6:0;;;:22;;;9770:67;;;;;-1:-1:-1;;;9770:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9770:67:0;;;;;;;;;;;;;;;38757:36:::1;38787:5;38757:25;38769:12;38757:7;;:11;;:25;;;;:::i;:::-;:29:::0;::::1;:36::i;:::-;38742:12;:51:::0;-1:-1:-1;38663:138:0:o;10586:208::-;9788:12;:10;:12::i;:::-;9778:6;;-1:-1:-1;;;;;9778:6:0;;;:22;;;9770:67;;;;;-1:-1:-1;;;9770:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9770:67:0;;;;;;;;;;;;;;;10667:6:::1;::::0;;;10650:23;;-1:-1:-1;;;;;;10650:23:0;;::::1;-1:-1:-1::0;;;;;10667:6:0;::::1;10650:23;::::0;;;10684:19:::1;::::0;;10714:9:::1;:16:::0;;;10746:40:::1;::::0;10667:6;;-1:-1:-1;;;;;;;;;;;10746:40:0;10667:6;;10746:40:::1;10586:208:::0;:::o;24069:184::-;-1:-1:-1;;;;;24218:18:0;;;24186:7;24218:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;24069:184::o;38439:110::-;9788:12;:10;:12::i;:::-;9778:6;;-1:-1:-1;;;;;9778:6:0;;;:22;;;9770:67;;;;;-1:-1:-1;;;9770:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9770:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;38506:27:0::1;38536:5;38506:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;38506:35:0::1;::::0;;38439:110::o;39915:294::-;40040:7;9788:12;:10;:12::i;:::-;9778:6;;-1:-1:-1;;;;;9778:6:0;;;:22;;;9770:67;;;;;-1:-1:-1;;;9770:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9770:67:0;;;;;;;;;;;;;;;40125:7:::1;::::0;:31:::1;::::0;;-1:-1:-1;;;40125:31:0;;-1:-1:-1;;;;;40125:31:0;;::::1;;::::0;::::1;::::0;;;::::1;::::0;;;;;;40065:23:::1;::::0;40125:7;;;::::1;::::0;:15:::1;::::0;:31;;;;;::::1;::::0;;;;;;;;;:7;:31;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;40125:31:0;40175:26:::1;::::0;;-1:-1:-1;;;40175:26:0;;40190:10:::1;40175:26;::::0;::::1;::::0;;;40125:31;;-1:-1:-1;;;;;;40175:14:0;::::1;::::0;::::1;::::0;:26;;;;;40125:31:::1;::::0;40175:26;;;;;;;;:14;:26;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;40175:26:0;;39915:294;-1:-1:-1;;;;39915:294:0:o;27248:333::-;9788:12;:10;:12::i;:::-;9778:6;;-1:-1:-1;;;;;9778:6:0;;;:22;;;9770:67;;;;;-1:-1:-1;;;9770:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9770:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27330:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;27329:21;27321:61;;;::::0;;-1:-1:-1;;;27321:61:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;-1:-1:-1::0;;;;;27397:16:0;::::1;27416:1;27397:16:::0;;;:7:::1;:16;::::0;;;;;:20;27393:109:::1;;-1:-1:-1::0;;;;;27473:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;27453:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;27434:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;27393:109:::1;-1:-1:-1::0;;;;;27512:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;27512:27:0::1;27535:4;27512:27:::0;;::::1;::::0;;;27550:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;27550:23:0::1;::::0;;::::1;::::0;;27248:333::o;10021:117::-;9788:12;:10;:12::i;:::-;9778:6;;-1:-1:-1;;;;;9778:6:0;;;:22;;;9770:67;;;;;-1:-1:-1;;;9770:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9770:67:0;;;;;;;;;;;;;;;10102:28:::1;10121:8;10102:18;:28::i;:::-;10021:117:::0;:::o;27589:478::-;9788:12;:10;:12::i;:::-;9778:6;;-1:-1:-1;;;;;9778:6:0;;;:22;;;9770:67;;;;;-1:-1:-1;;;9770:67:0;;;;;;;;;;;;;-1:-1:-1;;;;;;;;;;;9770:67:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;27670:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;27662:60;;;::::0;;-1:-1:-1;;;27662:60:0;;::::1;;::::0;::::1;::::0;::::1;::::0;;;;::::1;::::0;;;;;;;;;;;;;::::1;;27738:9;27733:327;27757:9;:16:::0;27753:20;::::1;27733:327;;;27815:7;-1:-1:-1::0;;;;;27799:23:0::1;:9;27809:1;27799:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;27799:12:0::1;:23;27795:254;;;27858:9;27868:16:::0;;-1:-1:-1;;27868:20:0;;;27858:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;27843:9:::1;:12:::0;;-1:-1:-1;;;;;27858:31:0;;::::1;::::0;27853:1;;27843:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;27843:46:0::1;-1:-1:-1::0;;;;;27843:46:0;;::::1;;::::0;;27908:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;27947:11:::1;:20:::0;;;;:28;;-1:-1:-1;;27947:28:0::1;::::0;;27994:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;27994:15:0;;;;;-1:-1:-1;;;;;;27994:15:0::1;::::0;;;;;28028:5:::1;;27795:254;27775:3;;27733:327;;;;27589:478:::0;:::o;21619:90::-;21667:42;21619:90;:::o;6547:106::-;6635:10;6547:106;:::o;35345:655::-;35445:7;35467;35489;35511;35533;35555;35591:23;35616:12;35630:18;35665:20;35677:7;35665:11;:20::i;:::-;35590:95;;;;;;35697:15;35714:23;35739:12;35768:50;35780:7;35789:4;35795:10;35807;:8;:10::i;:::-;35768:11;:50::i;:::-;35696:122;;;;-1:-1:-1;35696:122:0;;-1:-1:-1;35922:15:0;;-1:-1:-1;35952:4:0;;-1:-1:-1;35971:10:0;;-1:-1:-1;35345:655:0;;-1:-1:-1;;;;;35345:655:0:o;7799:136::-;7857:7;7884:43;7888:1;7891;7884:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;7877:50;7799:136;-1:-1:-1;;;7799:136:0:o;7610:181::-;7668:7;7700:5;;;7724:6;;;;7716:46;;;;;-1:-1:-1;;;7716:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;28075:371;-1:-1:-1;;;;;28202:19:0;;28194:68;;;;-1:-1:-1;;;28194:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28281:21:0;;28273:68;;;;-1:-1:-1;;;28273:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;28354:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;28406:32;;;;;;;;;;;;;;;;;28075:371;;;:::o;28454:1340::-;-1:-1:-1;;;;;28585:20:0;;28577:70;;;;-1:-1:-1;;;28577:70:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28759:1;28750:6;:10;28742:64;;;;-1:-1:-1;;;28742:64:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28831:7;:5;:7::i;:::-;-1:-1:-1;;;;;28821:17:0;:6;-1:-1:-1;;;;;28821:17:0;;28817:160;;28889:12;;28879:6;:22;;28853:124;;;;-1:-1:-1;;;28853:124:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28990:28;29021:24;29039:4;29021:9;:24::i;:::-;28990:55;;29086:12;;29062:20;:36;29058:104;;-1:-1:-1;29138:12:0;;29058:104;29238:29;;29214:53;;;;;;;29296;;-1:-1:-1;29333:16:0;;;;29332:17;29296:53;:97;;;;-1:-1:-1;29376:17:0;;-1:-1:-1;;;;;29366:27:0;;;29376:17;;29366:27;;29296:97;:135;;;;-1:-1:-1;29410:21:0;;;;;;;29296:135;29278:295;;;29481:29;;29458:52;;29525:36;29540:20;29525:14;:36::i;:::-;-1:-1:-1;;;;;29621:26:0;;29585:12;29621:26;;;:18;:26;;;;;;29600:4;;29621:26;;;:59;;-1:-1:-1;;;;;;29651:29:0;;;;;;:18;:29;;;;;;;;29621:59;29617:107;;;-1:-1:-1;29707:5:0;29617:107;29736:50;29751:6;29759:9;29770:6;29778:7;29736:14;:50::i;:::-;28454:1340;;;;;;:::o;7943:226::-;8063:7;8099:12;8091:6;;;;8083:29;;;;-1:-1:-1;;;8083:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;8135:5:0;;;7943:226::o;36990:164::-;37032:7;37053:15;37070;37089:19;:17;:19::i;:::-;37052:56;;-1:-1:-1;37052:56:0;-1:-1:-1;37126:20:0;37052:56;;37126:11;:20::i;:::-;37119:27;;;;36990:164;:::o;8435:132::-;8493:7;8520:39;8524:1;8527;8520:39;;;;;;;;;;;;;;;;;:3;:39::i;8177:250::-;8235:7;8259:6;8255:47;;-1:-1:-1;8289:1:0;8282:8;;8255:47;8326:5;;;8330:1;8326;:5;:1;8350:5;;;;;:10;8342:56;;;;-1:-1:-1;;;8342:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10146:266;-1:-1:-1;;;;;10234:22:0;;10212:110;;;;-1:-1:-1;;;10212:110:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10359:6;;;10338:38;;-1:-1:-1;;;;;10338:38:0;;;;10359:6;;;-1:-1:-1;;;;;;;;;;;10338:38:0;;10387:6;:17;;-1:-1:-1;;;;;;10387:17:0;-1:-1:-1;;;;;10387:17:0;;;;;;;;;;10146:266::o;36008:412::-;36109:7;36131;36153;36188:12;36203:24;36219:7;36203:15;:24::i;:::-;36188:39;;36238:18;36259:30;36281:7;36259:21;:30::i;:::-;36238:51;-1:-1:-1;36300:23:0;36326:33;36238:51;36326:17;:7;36338:4;36326:11;:17::i;:::-;:21;;:33::i;:::-;36300:59;36395:4;;-1:-1:-1;36401:10:0;;-1:-1:-1;36008:412:0;;-1:-1:-1;;;36008:412:0:o;36428:554::-;36627:7;;;;36724:24;:7;36736:11;36724;:24::i;:::-;36706:42;-1:-1:-1;36759:12:0;36774:21;:4;36783:11;36774:8;:21::i;:::-;36759:36;-1:-1:-1;36806:18:0;36827:27;:10;36842:11;36827:14;:27::i;:::-;36806:48;-1:-1:-1;36865:23:0;36891:33;36806:48;36891:17;:7;36903:4;36891:11;:17::i;:33::-;36943:7;;;;-1:-1:-1;36969:4:0;;-1:-1:-1;36428:554:0;;-1:-1:-1;;;;;;;36428:554:0:o;29802:516::-;22401:16;:23;;-1:-1:-1;;22401:23:0;22420:4;22401:23;;;:16;29902:27:::1;:20:::0;29927:1:::1;29902:24;:27::i;:::-;29887:42:::0;-1:-1:-1;29940:17:0::1;29960:30;:20:::0;29887:42;29960:24:::1;:30::i;:::-;29940:50:::0;-1:-1:-1;30028:21:0::1;30060:22;30077:4:::0;30060:16:::1;:22::i;:::-;30093:18;30114:41;:21;30140:14:::0;30114:25:::1;:41::i;:::-;30093:62;;30214:35;30227:9;30238:10;30214:12;:35::i;:::-;30267:43;::::0;;;;;::::1;::::0;::::1;::::0;;;;;;;;;;;::::1;::::0;;;;;;;::::1;-1:-1:-1::0;;22447:16:0;:24;;-1:-1:-1;;22447:24:0;;;-1:-1:-1;;;29802:516:0:o;31224:838::-;31380:7;31375:28;;31389:14;:12;:14::i;:::-;-1:-1:-1;;;;;31420:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;31444:22:0;;;;;;:11;:22;;;;;;;;31443:23;31420:46;31416:597;;;31483:48;31505:6;31513:9;31524:6;31483:21;:48::i;:::-;31416:597;;;-1:-1:-1;;;;;31554:19:0;;;;;;:11;:19;;;;;;;;31553:20;:46;;;;-1:-1:-1;;;;;;31577:22:0;;;;;;:11;:22;;;;;;;;31553:46;31549:464;;;31616:46;31636:6;31644:9;31655:6;31616:19;:46::i;31549:464::-;-1:-1:-1;;;;;31685:19:0;;;;;;:11;:19;;;;;;;;31684:20;:47;;;;-1:-1:-1;;;;;;31709:22:0;;;;;;:11;:22;;;;;;;;31708:23;31684:47;31680:333;;;31748:44;31766:6;31774:9;31785:6;31748:17;:44::i;31680:333::-;-1:-1:-1;;;;;31814:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;31837:22:0;;;;;;:11;:22;;;;;;;;31814:45;31810:203;;;31876:48;31898:6;31906:9;31917:6;31876:21;:48::i;31810:203::-;31957:44;31975:6;31983:9;31994:6;31957:17;:44::i;:::-;32030:7;32025:29;;32039:15;:13;:15::i;:::-;31224:838;;;;:::o;37162:605::-;37260:7;;37296;;37213;;;;;37314:338;37338:9;:16;37334:20;;37314:338;;;37422:7;37398;:21;37406:9;37416:1;37406:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37406:12:0;37398:21;;;;;;;;;;;;;:31;;:83;;;37474:7;37450;:21;37458:9;37468:1;37458:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37458:12:0;37450:21;;;;;;;;;;;;;:31;37398:83;37376:146;;;37505:7;;37514;;37497:25;;;;;;;;;37376:146;37547:34;37559:7;:21;37567:9;37577:1;37567:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37567:12:0;37559:21;;;;;;;;;;;;;37547:7;;:11;:34::i;:::-;37537:44;;37606:34;37618:7;:21;37626:9;37636:1;37626:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;37626:12:0;37618:21;;;;;;;;;;;;;37606:7;;:11;:34::i;:::-;37596:44;-1:-1:-1;37356:3:0;;37314:338;;;-1:-1:-1;37688:7:0;;37676;;:20;;:11;:20::i;:::-;37666:7;:30;37662:61;;;37706:7;;37715;;37698:25;;;;;;;;37662:61;37742:7;;-1:-1:-1;37751:7:0;-1:-1:-1;37162:605:0;;;:::o;8575:312::-;8695:7;8730:12;8723:5;8715:28;;;;-1:-1:-1;;;8715:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8754:9;8770:1;8766;:5;;;;;;;8575:312;-1:-1:-1;;;;;8575:312:0:o;38809:130::-;38873:7;38900:31;38925:5;38900:20;38912:7;;38900;:11;;:20;;;;:::i;38138:174::-;38235:7;38267:37;38298:5;38267:26;38279:13;;38267:7;:11;;:26;;;;:::i;30326:485::-;30416:16;;;30430:1;30416:16;;;;;;;;30392:21;;30416:16;;;;;;;;;;-1:-1:-1;30416:16:0;30392:40;;30461:4;30443;30448:1;30443:7;;;;;;;;-1:-1:-1;;;;;30443:23:0;;;:7;;;;;;;;;;:23;;;;30487:19;;:26;;;-1:-1:-1;;;30487:26:0;;;;:19;;;;;:24;;:26;;;;;30443:7;;30487:26;;;;;:19;:26;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;30487:26:0;30477:7;;:4;;30482:1;;30477:7;;;;;;-1:-1:-1;;;;;30477:36:0;;;:7;;;;;;;;;:36;30558:19;;30526:66;;30543:4;;30558:19;30580:11;30526:8;:66::i;:::-;30603:19;;:200;;-1:-1:-1;;;30603:200:0;;;;;;;;:19;:200;;;;;;30757:4;30603:200;;;;;;30777:15;30603:200;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;30603:19:0;;;;:70;;30688:11;;30730:4;;30757;30777:15;30603:200;;;;;;;;;;;;;;;;:19;:200;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;30819:397;30932:19;;30900:66;;30917:4;;-1:-1:-1;;;;;30932:19:0;30954:11;30900:8;:66::i;:::-;31006:19;;-1:-1:-1;;;;;31006:19:0;:35;31049:9;31082:4;31102:11;31006:19;;31160:7;:5;:7::i;:::-;31182:15;31006:202;;;;;;;;;;;;;-1:-1:-1;;;;;31006:202:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;31006:202:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;32070:137;32117:7;;32113:25;;32131:7;;32113:25;32168:7;;;32150:15;:25;-1:-1:-1;32188:11:0;;32070:137;:::o;34404:686::-;34555:15;34585:23;34623:12;34650:23;34688:12;34715:18;34747:19;34758:7;34747:10;:19::i;:::-;-1:-1:-1;;;;;34795:15:0;;;;;;:7;:15;;;;;;34540:226;;-1:-1:-1;34540:226:0;;-1:-1:-1;34540:226:0;;-1:-1:-1;34540:226:0;-1:-1:-1;34540:226:0;-1:-1:-1;34540:226:0;-1:-1:-1;34795:28:0;;34815:7;34795:19;:28::i;:::-;-1:-1:-1;;;;;34777:15:0;;;;;;:7;:15;;;;;;;;:46;;;;34852:7;:15;;;;:28;;34872:7;34852:19;:28::i;:::-;-1:-1:-1;;;;;34834:15:0;;;;;;;:7;:15;;;;;;:46;;;;34912:18;;;;;;;:39;;34935:15;34912:22;:39::i;:::-;-1:-1:-1;;;;;34891:18:0;;;;;;:7;:18;;;;;:60;34962:26;34977:10;34962:14;:26::i;:::-;34999:23;35011:4;35017;34999:11;:23::i;:::-;35055:9;-1:-1:-1;;;;;35038:44:0;35047:6;-1:-1:-1;;;;;35038:44:0;;35066:15;35038:44;;;;;;;;;;;;;;;;;;34404:686;;;;;;;;;:::o;33698:698::-;33847:15;33877:23;33915:12;33942:23;33980:12;34007:18;34039:19;34050:7;34039:10;:19::i;:::-;-1:-1:-1;;;;;34087:15:0;;;;;;:7;:15;;;;;;33832:226;;-1:-1:-1;33832:226:0;;-1:-1:-1;33832:226:0;;-1:-1:-1;33832:226:0;-1:-1:-1;33832:226:0;-1:-1:-1;33832:226:0;-1:-1:-1;34087:28:0;;33832:226;34087:19;:28::i;:::-;-1:-1:-1;;;;;34069:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;34147:18;;;;;:7;:18;;;;;:39;;34170:15;34147:22;:39::i;:::-;-1:-1:-1;;;;;34126:18:0;;;;;;:7;:18;;;;;;;;:60;;;;34218:7;:18;;;;:39;;34241:15;34218:22;:39::i;33065:625::-;33212:15;33242:23;33280:12;33307:23;33345:12;33372:18;33404:19;33415:7;33404:10;:19::i;:::-;-1:-1:-1;;;;;33452:15:0;;;;;;:7;:15;;;;;;33197:226;;-1:-1:-1;33197:226:0;;-1:-1:-1;33197:226:0;;-1:-1:-1;33197:226:0;-1:-1:-1;33197:226:0;-1:-1:-1;33197:226:0;-1:-1:-1;33452:28:0;;33197:226;33452:19;:28::i;32300:757::-;32451:15;32481:23;32519:12;32546:23;32584:12;32611:18;32643:19;32654:7;32643:10;:19::i;:::-;-1:-1:-1;;;;;32691:15:0;;;;;;:7;:15;;;;;;32436:226;;-1:-1:-1;32436:226:0;;-1:-1:-1;32436:226:0;;-1:-1:-1;32436:226:0;-1:-1:-1;32436:226:0;-1:-1:-1;32436:226:0;-1:-1:-1;32691:28:0;;32711:7;32691:19;:28::i;:::-;-1:-1:-1;;;;;32673:15:0;;;;;;:7;:15;;;;;;;;:46;;;;32748:7;:15;;;;:28;;32768:7;32748:19;:28::i;32215:77::-;32269:15;;32259:7;:25;32215:77::o;37775:355::-;37838:19;37860:10;:8;:10::i;:::-;37838:32;-1:-1:-1;37881:18:0;37902:27;:10;37838:32;37902:14;:27::i;:::-;37981:4;37965:22;;;;:7;:22;;;;;;37881:48;;-1:-1:-1;37965:38:0;;37881:48;37965:26;:38::i;:::-;37956:4;37940:22;;;;:7;:22;;;;;;;;:63;;;;38018:11;:26;;;;;;38014:108;;;38100:4;38084:22;;;;:7;:22;;;;;;:38;;38111:10;38084:26;:38::i;:::-;38075:4;38059:22;;;;:7;:22;;;;;:63;38014:108;37775:355;;;:::o;35098:239::-;35176:7;;:17;;35188:4;35176:11;:17::i;:::-;35166:7;:27;35218:11;;:21;;35234:4;35218:15;:21::i;:::-;35204:11;:35;35309:10;;:20;;35324:4;35309:14;:20::i;:::-;35296:10;:33;-1:-1:-1;;35098:239:0:o

Swarm Source

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