Contract 0x8855cfba493d8a22f924a5ce1b06efbcea68ffec 2

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x893d2bd8a35765ac87341365c5001128dd2283a596d12ac32590abd79f22f985Approve130372722021-11-29 0:44:581 hr 57 mins ago0xfa365b9c34ecca15ac68bcb5fd4948854c771b97 IN  Bimp.Finance: BIMP Token0 BNB0.00022318
0x694a27d2dde7bdb4c3ada00ca7e087ce29a5fd4d714bb9414a3712047d21a654Approve130370682021-11-29 0:33:542 hrs 8 mins ago0xd7e7bf8f923d734cbb59ab7268ec26f2400c93f9 IN  Bimp.Finance: BIMP Token0 BNB0.00022318
0x8de51465e1321bef9e9644da0098a6b9395d95a5bda28457dc41aa0ab8dfceddApprove130353682021-11-28 23:02:303 hrs 39 mins ago0xbb8dcfefe11cac34b1edc9608be12c9ae6a62087 IN  Bimp.Finance: BIMP Token0 BNB0.00022318
0x54e1cb89294b06ceadfda6a2bc776c366050ff15896c8011807e41ab6e2249a5Claim BNB Reward130349702021-11-28 22:41:444 hrs ago0x2a01a84f07d5e61786b51161f3b23b93d473f89f IN  Bimp.Finance: BIMP Token0 BNB0.000421355
0xad51e66855b1d68826be9b9a63733c2acbad13669eb79bc46a148e92dbe32cdfApprove130346042021-11-28 22:22:464 hrs 19 mins ago0x1822fa4f9c5215d4c4e8aabf5fb908b7ecb1759b IN  Bimp.Finance: BIMP Token0 BNB0.00022318
0xb70e897754ec3c2ed3ca65cc9d79769755443de0328e2fa152c3d0b8d484d8d1Claim BNB Reward130321472021-11-28 20:10:186 hrs 31 mins ago0x1428c25c8ebdb2cbcc252cb43c10cfe6a464d01c IN  Bimp.Finance: BIMP Token0 BNB0.000421355
0x4dac4e5eab1aca5d12c12e0ebc025ea368e1d5af2e425b292201d5f1fd56e1ebApprove130276942021-11-28 16:09:3310 hrs 32 mins ago0xfeb554770c4b49414503e17e5747f505e6420614 IN  Bimp.Finance: BIMP Token0 BNB0.000312452
0xa830c4eb10d512e6a255395b3a537eb3fe59f0c4133b03510bebb30ad060c783Approve130266202021-11-28 15:11:3311 hrs 30 mins ago0x0189586a2f6cdca568931217ccf1cd320d3ba41c IN  Bimp.Finance: BIMP Token0 BNB0.00022318
0x67399843aa8eb91f7df9952e0baec765f95e36c10d056c1b6f824f887a4331b8Claim BNB Reward130236832021-11-28 12:30:1214 hrs 11 mins ago0x263678f13c08e8066e99420929fa0d05382a2fba IN  Bimp.Finance: BIMP Token0 BNB0.00046721528
0x2ab06575728abf36aa05c763b695cf57b649a8be52eaa930599629f74c4cb9ffClaim BNB Reward130210722021-11-28 10:10:0616 hrs 31 mins ago0xc1fa87d0959e4d1ee35d499d6a7ad8e297f5cb9d IN  Bimp.Finance: BIMP Token0 BNB0.00046721528
0x611cf481f0d4f92ebed35bd89e49c596440f8acbad6bb5d2c7b795aa39619d30Claim BNB Reward130209012021-11-28 10:01:2216 hrs 40 mins ago0x35a251c2d6bf0871a5380864139089d59dac5789 IN  Bimp.Finance: BIMP Token0 BNB0.000421355
0x9ffa6bf649cf78ae5ec85d602db17770cd023aa7e51e0a3d5b3a4aa7b62017b1Claim BNB Reward130206812021-11-28 9:50:0516 hrs 51 mins ago0xb4ecdf6fcd6a2c25be0bccfffcc3041f4b75077c IN  Bimp.Finance: BIMP Token0 BNB0.00046721528
0x38575cdb91e26254bfa15c026483d82985ab501e8a59a0aaeb8dbcb1d988eec4Claim BNB Reward130201112021-11-28 9:20:0517 hrs 21 mins ago0x6275f23e14bd9ba08a1c8f88dc4438f1db9fa4df IN  Bimp.Finance: BIMP Token0 BNB0.00046721528
0x534ffc4b46c1354aaf698d3a87bbef633472ec3fecc290da3552b5ce72de83feClaim BNB Reward130183882021-11-28 7:50:0918 hrs 51 mins ago0x33de7f9530791f0d7f11cf65e6ecf7a5b3890042 IN  Bimp.Finance: BIMP Token0 BNB0.00046721528
0xd80e1f342320ce2a2f12d366de690979c2626ea0e1445b4b5ecd9267d9559a47Claim BNB Reward130170842021-11-28 6:40:0920 hrs 1 min ago0xbdf5036739da5c4c1369bc2431c3d9ef9cad35be IN  Bimp.Finance: BIMP Token0 BNB0.00046721528
0x2fb2b15dc20365e7d2e101c64601c24ddd08410d81b36a1306382146209784e5Claim BNB Reward130165352021-11-28 6:10:0920 hrs 31 mins ago0xb6ee8800d8066c73ce5b069f2edfc71a5e828385 IN  Bimp.Finance: BIMP Token0 BNB0.00046721528
0xd127de66903c4f528a03250da4981916ba6edae74f7efbd6cdd60d95e17b5b7cClaim BNB Reward130163542021-11-28 6:00:0520 hrs 41 mins ago0xcfd5393f98f80fbf9f5b1a4622fd6ecbb40b086e IN  Bimp.Finance: BIMP Token0 BNB0.00046721528
0x9d06699f0ca7e9f50b45549375d312205042b24a497e50dc23a2a59c535890d7Claim BNB Reward130161602021-11-28 5:50:0820 hrs 51 mins ago0x097fe0b43cb08c6f15f32edf4f9bdb03a5a79348 IN  Bimp.Finance: BIMP Token0 BNB0.00046721528
0xc71b970ea8d132851ed162d74ad7e63603866049aa97e1ec77642e813e66c7f5Claim BNB Reward130155992021-11-28 5:20:0921 hrs 21 mins ago0xe5ed954fdbf08ecd11a0e25665d5027c70ce0eb9 IN  Bimp.Finance: BIMP Token0 BNB0.00046721528
0x541873857abdddbffcb359f6973cb4cd2068b26d274f7681c72f4f2a0a97f30aClaim BNB Reward130093842021-11-27 23:44:421 day 2 hrs ago0xc164defb17d0215a0c93b752337f1101f4095605 IN  Bimp.Finance: BIMP Token0 BNB0.000421355
0xaee7a72ec2c656c0908c4df93a128b9f9ff139c48ad5fb3c1d13fcea077ed897Claim BNB Reward130093682021-11-27 23:43:541 day 2 hrs ago0x962fcf5f7ab67893db3aa58841f846fa8856e916 IN  Bimp.Finance: BIMP Token0 BNB0.000421355
0x34ec677dcbd3a02d5891bc63aa2c7814ad3b1e09dd923312cdeeb4804f2116e4Approve130071082021-11-27 21:48:021 day 4 hrs ago0x42f3fe182f6de312b1b88685856c36ec02194712 IN  Bimp.Finance: BIMP Token0 BNB0.00022318
0x13778889a22a5c8a61781db440ade3fa63288c87c8ca478495f841333ab0dcb4Claim BNB Reward130061632021-11-27 20:57:411 day 5 hrs ago0x2f2089dc9028dca8835caf181f36f68ee1cb5c02 IN  Bimp.Finance: BIMP Token0 BNB0.000421355
0x89a528daa9e90db541619f7745295ace56f385bd189520535d3c9ffa354ddfdaClaim BNB Reward130047642021-11-27 19:43:591 day 6 hrs ago0x9ea101278885b199d65d282daeb2d423641bea23 IN  Bimp.Finance: BIMP Token0 BNB0.000421355
0x71d985974257a69f74431e3a2248fd68f25fa1ffadbc0cfec1d5f5fc78d94bdeClaim BNB Reward130041332021-11-27 19:10:581 day 7 hrs ago0xd7160f906f82e47d61bfd27e2bde33b611b59b9e IN  Bimp.Finance: BIMP Token0 BNB0.000421355
[ Download CSV Export 

OVERVIEW

Bimp is the future of NFT merchandise selling of female online streamers. having an NFT money technology. NFTs are backed by real tokens that can be traded and liquidated back to tokens.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xab8cdad8057165cc2833a94dd3758431b55aea8b75b21766b40ad9f856136f07130353772021-11-28 23:02:573 hrs 39 mins ago Bimp.Finance: BIMP Token PancakeSwap: Router v20.001641854399000978 BNB
0xab8cdad8057165cc2833a94dd3758431b55aea8b75b21766b40ad9f856136f07130353772021-11-28 23:02:573 hrs 39 mins ago PancakeSwap: Router v2 Bimp.Finance: BIMP Token0.004925563197002936 BNB
0x54e1cb89294b06ceadfda6a2bc776c366050ff15896c8011807e41ab6e2249a5130349702021-11-28 22:41:444 hrs ago Bimp.Finance: BIMP Token0x2a01a84f07d5e61786b51161f3b23b93d473f89f0.000472406862762399 BNB
0xba586b6494c5882f09fef8c2c1a9129aef41fba10ef60696d19208346c6c63a7130346152021-11-28 22:23:214 hrs 18 mins ago Bimp.Finance: BIMP Token PancakeSwap: Router v20.001642018873244939 BNB
0xba586b6494c5882f09fef8c2c1a9129aef41fba10ef60696d19208346c6c63a7130346152021-11-28 22:23:214 hrs 18 mins ago PancakeSwap: Router v2 Bimp.Finance: BIMP Token0.004926056619734818 BNB
0xb70e897754ec3c2ed3ca65cc9d79769755443de0328e2fa152c3d0b8d484d8d1130321472021-11-28 20:10:186 hrs 31 mins ago Bimp.Finance: BIMP Token0x1428c25c8ebdb2cbcc252cb43c10cfe6a464d01c0.002009370595878786 BNB
0xe7150c2990756c057bd4d8ca65fa15d6cda1b00d0403c3c55f212232ad8c39df130313252021-11-28 19:25:157 hrs 16 mins ago Bimp.Finance: BIMP Token PancakeSwap: Router v20.001644442830151136 BNB
0xe7150c2990756c057bd4d8ca65fa15d6cda1b00d0403c3c55f212232ad8c39df130313252021-11-28 19:25:157 hrs 16 mins ago PancakeSwap: Router v2 Bimp.Finance: BIMP Token0.00493332849045341 BNB
0x8a8921ed132cc317830f2b1e6c0cf80f20e34419b8b190c7bb85df33d15918bf130266322021-11-28 15:12:0911 hrs 29 mins ago Bimp.Finance: BIMP Token PancakeSwap: Router v20.001642342189457787 BNB
0x8a8921ed132cc317830f2b1e6c0cf80f20e34419b8b190c7bb85df33d15918bf130266322021-11-28 15:12:0911 hrs 29 mins ago PancakeSwap: Router v2 Bimp.Finance: BIMP Token0.004927026568373362 BNB
0x67399843aa8eb91f7df9952e0baec765f95e36c10d056c1b6f824f887a4331b8130236832021-11-28 12:30:1214 hrs 11 mins ago Bimp.Finance: BIMP Token0x263678f13c08e8066e99420929fa0d05382a2fba0.001151061286360459 BNB
0x2ab06575728abf36aa05c763b695cf57b649a8be52eaa930599629f74c4cb9ff130210722021-11-28 10:10:0616 hrs 31 mins ago Bimp.Finance: BIMP Token0xc1fa87d0959e4d1ee35d499d6a7ad8e297f5cb9d0.001152997942119687 BNB
0x611cf481f0d4f92ebed35bd89e49c596440f8acbad6bb5d2c7b795aa39619d30130209012021-11-28 10:01:2216 hrs 40 mins ago Bimp.Finance: BIMP Token0x35a251c2d6bf0871a5380864139089d59dac57890.006712437169197533 BNB
0x9ffa6bf649cf78ae5ec85d602db17770cd023aa7e51e0a3d5b3a4aa7b62017b1130206812021-11-28 9:50:0516 hrs 51 mins ago Bimp.Finance: BIMP Token0xb4ecdf6fcd6a2c25be0bccfffcc3041f4b75077c0.001165151895060653 BNB
0x38575cdb91e26254bfa15c026483d82985ab501e8a59a0aaeb8dbcb1d988eec4130201112021-11-28 9:20:0517 hrs 21 mins ago Bimp.Finance: BIMP Token0x6275f23e14bd9ba08a1c8f88dc4438f1db9fa4df0.001166785293328007 BNB
0x534ffc4b46c1354aaf698d3a87bbef633472ec3fecc290da3552b5ce72de83fe130183882021-11-28 7:50:0918 hrs 51 mins ago Bimp.Finance: BIMP Token0x33de7f9530791f0d7f11cf65e6ecf7a5b38900420.001168607981642844 BNB
0xf0271e8c1f8172e8b63878f89bd08a6d8bc018bec5c04fb0b3061178f1d36c73130179652021-11-28 7:26:5419 hrs 15 mins ago Bimp.Finance: BIMP Token PancakeSwap: Router v20.001643590110153837 BNB
0xf0271e8c1f8172e8b63878f89bd08a6d8bc018bec5c04fb0b3061178f1d36c73130179652021-11-28 7:26:5419 hrs 15 mins ago PancakeSwap: Router v2 Bimp.Finance: BIMP Token0.004930770330461513 BNB
0xd80e1f342320ce2a2f12d366de690979c2626ea0e1445b4b5ecd9267d9559a47130170842021-11-28 6:40:0920 hrs 1 min ago Bimp.Finance: BIMP Token0xbdf5036739da5c4c1369bc2431c3d9ef9cad35be0.00116512889814836 BNB
0x2fb2b15dc20365e7d2e101c64601c24ddd08410d81b36a1306382146209784e5130165352021-11-28 6:10:0920 hrs 31 mins ago Bimp.Finance: BIMP Token0xb6ee8800d8066c73ce5b069f2edfc71a5e8283850.001166814301953551 BNB
0xd127de66903c4f528a03250da4981916ba6edae74f7efbd6cdd60d95e17b5b7c130163542021-11-28 6:00:0520 hrs 41 mins ago Bimp.Finance: BIMP Token0xcfd5393f98f80fbf9f5b1a4622fd6ecbb40b086e0.001168706802199044 BNB
0x9d06699f0ca7e9f50b45549375d312205042b24a497e50dc23a2a59c535890d7130161602021-11-28 5:50:0820 hrs 51 mins ago Bimp.Finance: BIMP Token0x097fe0b43cb08c6f15f32edf4f9bdb03a5a793480.001170532173320153 BNB
0xc71b970ea8d132851ed162d74ad7e63603866049aa97e1ec77642e813e66c7f5130155992021-11-28 5:20:0921 hrs 21 mins ago Bimp.Finance: BIMP Token0xe5ed954fdbf08ecd11a0e25665d5027c70ce0eb90.001172383915422615 BNB
0x541873857abdddbffcb359f6973cb4cd2068b26d274f7681c72f4f2a0a97f30a130093842021-11-27 23:44:421 day 2 hrs ago Bimp.Finance: BIMP Token0xc164defb17d0215a0c93b752337f1101f40956050.001844617055972889 BNB
0xaee7a72ec2c656c0908c4df93a128b9f9ff139c48ad5fb3c1d13fcea077ed897130093682021-11-27 23:43:541 day 2 hrs ago Bimp.Finance: BIMP Token0x962fcf5f7ab67893db3aa58841f846fa8856e9160.002560597356960444 BNB
[ Download CSV Export 
Loading
This contract contains unverified libraries: Utils

Contract Source Code Verified (Exact Match)

Contract Name:
BimpFinance

Compiler Version
v0.6.8+commit.0bbfe453

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

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

//SPDX-License-Identifier: Unlicensed

pragma solidity >=0.6.8;

interface IBEP20 {

    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the amount of tokens owned by `account`.
     */
    function balanceOf(address account) external view returns (uint256);

    /**
     * @dev Moves `amount` tokens from the caller's account to `recipient`.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transfer(address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Returns the remaining number of tokens that `spender` will be
     * allowed to spend on behalf of `owner` through {transferFrom}. This is
     * zero by default.
     *
     * This value changes when {approve} or {transferFrom} are called.
     */
    function allowance(address owner, address spender) external view returns (uint256);

    /**
     * @dev Sets `amount` as the allowance of `spender` over the caller's tokens.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * IMPORTANT: Beware that changing an allowance with this method brings the risk
     * that someone may use both the old and the new allowance by unfortunate
     * transaction ordering. One possible solution to mitigate this race
     * condition is to first reduce the spender's allowance to 0 and set the
     * desired value afterwards:
     * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729
     *
     * Emits an {Approval} event.
     */
    function approve(address spender, uint256 amount) external returns (bool);

    /**
     * @dev Moves `amount` tokens from `sender` to `recipient` using the
     * allowance mechanism. `amount` is then deducted from the caller's
     * allowance.
     *
     * Returns a boolean value indicating whether the operation succeeded.
     *
     * Emits a {Transfer} event.
     */
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    /**
     * @dev Emitted when `value` tokens are moved from one account (`from`) to
     * another (`to`).
     *
     * Note that `value` may be zero.
     */
    event Transfer(address indexed from, address indexed to, uint256 value);

    /**
     * @dev Emitted when the allowance of a `spender` for an `owner` is set by
     * a call to {approve}. `value` is the new allowance.
     */
    event Approval(address indexed owner, address indexed spender, uint256 value);
}



/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */

library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;

        return c;
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be 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;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * Reverts with custom message when dividing by zero.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

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

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


/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // According to EIP-1052, 0x0 is the value returned for not-yet created accounts
        // and 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470 is returned
        // for accounts without code, i.e. `keccak256('')`
        bytes32 codehash;
        bytes32 accountHash = 0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470;
        // solhint-disable-next-line no-inline-assembly
        assembly { codehash := extcodehash(account) }
        return (codehash != accountHash && codehash != 0x0);
    }

    /**
     * @dev Replacement for Solidity's `transfer`: sends `amount` wei to
     * `recipient`, forwarding all available gas and reverting on errors.
     *
     * https://eips.ethereum.org/EIPS/eip-1884[EIP1884] increases the gas cost
     * of certain opcodes, possibly making contracts go over the 2300 gas limit
     * imposed by `transfer`, making them unable to receive funds via
     * `transfer`. {sendValue} removes this limitation.
     *
     * https://diligence.consensys.net/posts/2019/09/stop-using-soliditys-transfer-now/[Learn more].
     *
     * IMPORTANT: because control is transferred to `recipient`, care must be
     * taken to not create reentrancy vulnerabilities. Consider using
     * {ReentrancyGuard} or the
     * https://solidity.readthedocs.io/en/v0.5.11/security-considerations.html#use-the-checks-effects-interactions-pattern[checks-effects-interactions pattern].
     */
    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");
    }

    /**
     * @dev Performs a Solidity function call using a low level `call`. A
     * plain`call` is an unsafe replacement for a function call: use this
     * function instead.
     *
     * If `target` reverts with a revert reason, it is bubbled up by this
     * function (like regular Solidity function calls).
     *
     * Returns the raw returned data. To convert to the expected return value,
     * use https://solidity.readthedocs.io/en/latest/units-and-global-variables.html?highlight=abi.decode#abi-encoding-and-decoding-functions[`abi.decode`].
     *
     * Requirements:
     *
     * - `target` must be a contract.
     * - calling `target` with `data` must not revert.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`], but with
     * `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return _functionCallWithValue(target, data, 0, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an BNB balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    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");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    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 {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

/**
 * @dev Contract module which provides a basic access control mechanism, where
 * there is an account (an owner) that can be granted exclusive access to
 * specific functions.
 *
 * By default, the owner account will be the one that deploys the contract. This
 * can later be changed with {transferOwnership}.
 *
 * This module is used through inheritance. It will make available the modifier
 * `onlyOwner`, which can be applied to your functions to restrict their use to
 * the owner.
 */
contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    uint256 private _lockTime;

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

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

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

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

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

    function geUnlockTime() 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 = now + 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(now > _lockTime , "Contract is locked until 7 days");
        emit OwnershipTransferred(_owner, _previousOwner);
        _owner = _previousOwner;
    }
}

interface IPancakeFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    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(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);

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

    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IPancakePair {
    event Approval(address indexed owner, address indexed spender, uint value);
    event Transfer(address indexed from, address indexed to, uint 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 (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint 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 (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    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 (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

    function mint(address to) external returns (uint liquidity);
    function burn(address to) external returns (uint amount0, uint amount1);
    function swap(uint amount0Out, uint amount1Out, address to, bytes calldata data) external;
    function skim(address to) external;
    function sync() external;

    function initialize(address, address) external;
}

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

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IPancakeRouter02 is IPancakeRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}

// File: contracts/protocols/bep/Utils.sol

pragma solidity >=0.6.8;


library Utils {
    using SafeMath for uint256;

    function random(uint256 from, uint256 to, uint256 salty) private view returns (uint256) {
        uint256 seed = uint256(
            keccak256(
                abi.encodePacked(
                    block.timestamp + block.difficulty +
                    ((uint256(keccak256(abi.encodePacked(block.coinbase)))) / (now)) +
                    block.gaslimit +
                    ((uint256(keccak256(abi.encodePacked(msg.sender)))) / (now)) +
                    block.number +
                    salty
                )
            )
        );
        return seed.mod(to - from) + from;
    }



    function calculateBNBReward(
        uint256 _tTotal,
        uint256 currentBalance,
        uint256 currentBNBPool,
        uint256 totalSupply,
        address ofAddress
    ) public view returns (uint256) {
        uint256 bnbPool = currentBNBPool;

        // calculate reward to send
     
        uint256 multiplier = 100;

        // now calculate reward
        uint256 reward = bnbPool.mul(multiplier).mul(currentBalance).div(100).div(totalSupply);

        return reward;
    }

    function calculateTopUpClaim(
        uint256 currentRecipientBalance,
        uint256 basedRewardCycleBlock,
        uint256 threshHoldTopUpRate,
        uint256 amount
    ) public returns (uint256) {
        if (currentRecipientBalance == 0) {
            return block.timestamp + basedRewardCycleBlock;
        }
        else {
            uint256 rate = amount.mul(100).div(currentRecipientBalance);

            if (uint256(rate) >= threshHoldTopUpRate) {
                uint256 incurCycleBlock = basedRewardCycleBlock.mul(uint256(rate)).div(100);

                if (incurCycleBlock >= basedRewardCycleBlock) {
                    incurCycleBlock = basedRewardCycleBlock;
                }

                return incurCycleBlock;
            }

            return 0;
        }
    }

    function swapTokensForEth(
        address routerAddress,
        uint256 tokenAmount
    ) public {
        IPancakeRouter02 pancakeRouter = IPancakeRouter02(routerAddress);

        // generate the pancake pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = pancakeRouter.WETH();

        // make the swap
        pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of BNB
            path,
            address(this),
            block.timestamp
        );
    }

    function swapETHForTokens(
        address routerAddress,
        address recipient,
        uint256 ethAmount
    ) public {
        IPancakeRouter02 pancakeRouter = IPancakeRouter02(routerAddress);

        // generate the pancake pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = pancakeRouter.WETH();
        path[1] = address(this);

        // make the swap
        pancakeRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{value: ethAmount}(
            0, // accept any amount of BNB
            path,
            address(recipient),
            block.timestamp + 360
        );
    }

    function addLiquidity(
        address routerAddress,
        address owner,
        uint256 tokenAmount,
        uint256 ethAmount
    ) public {
        IPancakeRouter02 pancakeRouter = IPancakeRouter02(routerAddress);

        // add the liquidity
        pancakeRouter.addLiquidityETH{value : ethAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            owner,
            block.timestamp + 360
        );
    }
}

// File: contracts/protocols/bep/ReentrancyGuard.sol

pragma solidity >=0.6.8;

/**
 * @dev Contract module that helps prevent reentrant calls to a function.
 *
 * Inheriting from `ReentrancyGuard` will make the {nonReentrant} modifier
 * available, which can be applied to functions to make sure there are no nested
 * (reentrant) calls to them.
 *
 * Note that because there is a single `nonReentrant` guard, functions marked as
 * `nonReentrant` may not call one another. This can be worked around by making
 * those functions `private`, and then adding `external` `nonReentrant` entry
 * points to them.
 *
 * TIP: If you would like to learn more about reentrancy and alternative ways
 * to protect against it, check out our blog post
 * https://blog.openzeppelin.com/reentrancy-after-istanbul/[Reentrancy After Istanbul].
 */
abstract contract ReentrancyGuard {
    // Booleans are more expensive than uint256 or any type that takes up a full
    // word because each write operation emits an extra SLOAD to first read the
    // slot's contents, replace the bits taken up by the boolean, and then write
    // back. This is the compiler's defense against contract upgrades and
    // pointer aliasing, and it cannot be disabled.

    // The values being non-zero value makes deployment a bit more expensive,
    // but in exchange the refund on every call to nonReentrant will be lower in
    // amount. Since refunds are capped to a percentage of the total
    // transaction's gas, it is best to keep them low in cases like this one, to
    // increase the likelihood of the full refund coming into effect.
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;

    uint256 private _status;

    constructor () public {
        _status = _NOT_ENTERED;
    }

    /**
     * @dev Prevents a contract from calling itself, directly or indirectly.
     * Calling a `nonReentrant` function from another `nonReentrant`
     * function is not supported. It is possible to prevent this from happening
     * by making the `nonReentrant` function external, and make it call a
     * `private` function that does the actual work.
     */
    modifier nonReentrant() {
        // On the first call to nonReentrant, _notEntered will be true
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");

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

        _;

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

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

// File: contracts/protocols/LM.sol

pragma solidity >=0.6.8;
pragma experimental ABIEncoderV2;



contract BimpFinance is Context, IBEP20, Ownable, ReentrancyGuard {
    using SafeMath for uint256;
    using Address for address;
    
    address payable public charityAddress = 0xc24dd0aA72AAEfd7B2fA34284cE08278c998b5e7;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => bool) private _isExcludedFromFee;
    mapping(address => bool) private _isExcluded;
    mapping(address => bool) private _isExcludedFromMaxTx;

    address[] private _excluded;

    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 1000000000 * 10 ** 6 * 10 ** 9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    string private _name = "Bimp.Finance";
    string private _symbol = "BIMP";
    uint8 private _decimals = 9;

    IPancakeRouter02 public immutable pancakeRouter;
    address public immutable pancakePair;

    bool inSwapAndLiquify = false;

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

    event ClaimBNBSuccessfully(
        address recipient,
        uint256 ethReceived,
        uint256 nextAvailableClaimDate
    );

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

    constructor (
        address payable routerAddress
    ) public {
        _rOwned[_msgSender()] = _rTotal;

        IPancakeRouter02 _pancakeRouter = IPancakeRouter02(routerAddress);
        // Create a pancake pair for this new token
        pancakePair = IPancakeFactory(_pancakeRouter.factory())
        .createPair(address(this), _pancakeRouter.WETH());

        // set the rest of the contract variables
        pancakeRouter = _pancakeRouter;

        //exclude owner and this contract from fee
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        
       

        // exclude from max tx
        _isExcludedFromMaxTx[owner()] = true;
        _isExcludedFromMaxTx[address(this)] = true;
        _isExcludedFromMaxTx[address(0x000000000000000000000000000000000000dEaD)] = true;
        _isExcludedFromMaxTx[address(0)] = 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 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 returns (bool) {
        _transfer(_msgSender(), recipient, amount, 0);
        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, 0);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "BEP20: 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, "BEP20: decreased allowance below zero"));
        return true;
    }

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

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

    function deliver(uint256 tAmount) public {
        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);
    }

    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 excludeFromReward(address account) public onlyOwner() {
        // require(account != 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D, 'We can not exclude Pancake router.');
        require(!_isExcluded[account], "Account is already excluded");
        if (_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is already excluded");
        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 _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 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 setLiquidityFeePercent(uint256 liquidityFee) external onlyOwner() {
        _liquidityFee = liquidityFee;
    }

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

    //to receive BNB from pancakeRouter when swapping
    receive() external payable {}

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _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 calculateTaxFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_taxFee).div(
            10 ** 2
        );
    }

    function calculateLiquidityFee(uint256 _amount) private view returns (uint256) {
        return _amount.mul(_liquidityFee).div(
            10 ** 2
        );
    }
    
    function removeAllFee() private {
        if (_taxFee == 0 && _liquidityFee == 0) return;

        _previousTaxFee = _taxFee;
        _previousLiquidityFee = _liquidityFee;
      
        _taxFee = 0;
        _liquidityFee = 0;
        
    }
    
    // the magic sauce - BIMP Finance
    function calculateProgressiveFee(uint256 amount) private {
        uint256 currentSupply =
            _tTotal.sub(balanceOf(0x000000000000000000000000000000000000dEaD));

        uint256 fee;
        uint256 feeTx;
        uint256 feeLp;
    
        uint256 txSize = amount.mul(10**6).div(currentSupply);


        if (txSize <= 1000) {
            fee = 10;
        } else if (txSize <= 2000) {
            fee = 12;
        } else if (txSize <= 4000) {
            fee = 16;
        } else if (txSize <= 8000) {
            fee = 20; 
        } else if (txSize <= 16000) {
            fee = 24;
        } else {
            fee = 30;
        }

        feeTx = fee.mul(2).div(10);
        feeLp = fee.mul(8).div(10);

        _taxFee = feeTx;
        _liquidityFee = feeLp;
    }
    
    

    function restoreAllFee() private {
        _taxFee = _previousTaxFee;
        _liquidityFee = _previousLiquidityFee;
       
    }

    function isExcludedFromFee(address account) public view returns (bool) {
        return _isExcludedFromFee[account];
    }

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

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

    function _transfer(
        address from,
        address to,
        uint256 amount,
        uint256 value
    ) private {
        require(from != address(0), "BEP20: transfer from the zero address");
        require(to != address(0), "BEP20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        ensureMaxTxAmount(from, to, amount, value);

        // swap and liquify
        swapAndLiquify(from, to);

        //indicates if fee should be deducted from transfer
        bool takeFee = true;

        //if any account belongs to _isExcludedFromFee account then remove the fee
        if (_isExcludedFromFee[from] || _isExcludedFromFee[to] || reflectionFeesdiabled) {
            takeFee = false;
        }

        //transfer amount, it will take tax, burn, liquidity fee
        _tokenTransfer(from, to, amount, takeFee);
    }

    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 amount, bool takeFee) private {
        if (!takeFee){
            removeAllFee();

        // top up claim cycle
        topUpClaimCycleAfterTransfer(recipient, amount);
        }
        else {
            calculateProgressiveFee(amount);
        }

        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 _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);
    }

    // Innovation for protocol by Bimp Team
    uint256 public rewardCycleBlock = 1 days;
    uint256 public easyRewardCycleBlock = 1 days;
    uint256 public threshHoldTopUpRate = 25; // 25 percent
    uint256 public _maxTxAmount = _tTotal; // should be 0.05% percent per transaction, will be set again at activateContract() function
    uint256 public disruptiveCoverageFee = 1 ether; // antiwhale
    mapping(address => uint256) public nextAvailableClaimDate;
    bool public swapAndLiquifyEnabled = false; // should be true
    uint256 public disruptiveTransferEnabledFrom = 0;
    uint256 public disableEasyRewardFrom = 0;
    
    bool public reflectionFeesdiabled = false;
   
    uint256 public _taxFee = 2;
    uint256 private _previousTaxFee = _taxFee;
    
    uint256 public _liquidityFee = 8; // 4% will be added pool, 4% will be converted to BNB
    uint256 private _previousLiquidityFee = _liquidityFee;
    uint256 public rewardThreshold = 1 ether;

    uint256 minTokenNumberToSell = _tTotal.mul(1).div(10000).div(10); // 0.001% max tx amount will trigger swap and add liquidity

    function setMaxTxPercent(uint256 maxTxPercent) public onlyOwner() {
        _maxTxAmount = _tTotal.mul(maxTxPercent).div(10000);
    }   

    function setExcludeFromMaxTx(address _address, bool value) public onlyOwner { 
        _isExcludedFromMaxTx[_address] = value;
    }       

    function calculateBNBReward(address ofAddress) public view returns (uint256) {
        uint256 totalSupply = uint256(_tTotal)
        .sub(balanceOf(address(0)))
        .sub(balanceOf(0x000000000000000000000000000000000000dEaD)) // exclude burned wallet
        .sub(balanceOf(address(pancakePair)));
        // exclude liquidity wallet

        return Utils.calculateBNBReward(
            _tTotal,
            balanceOf(address(ofAddress)),
            address(this).balance,
            totalSupply,
            ofAddress
        );
    }

    function getRewardCycleBlock() public view returns (uint256) {
        if (block.timestamp >= disableEasyRewardFrom) return rewardCycleBlock;
        return easyRewardCycleBlock;
    }

    function claimBNBReward() isHuman nonReentrant public {
        require(nextAvailableClaimDate[msg.sender] <= block.timestamp, 'Error: next available not reached');
        require(balanceOf(msg.sender) >= 0, 'Error: must own BIMP to claim reward');

        uint256 reward = calculateBNBReward(msg.sender);

        // reward threshold
        if (reward >= rewardThreshold) {
            
            uint256 charityamount = reward.div(5);
            (bool success, ) = address(charityAddress).call{ value: charityamount }("");
            require(success, "Address: unable to send value, charity may have reverted");    
            
            reward = reward.sub(reward.div(5));
        }

        // update rewardCycleBlock
        nextAvailableClaimDate[msg.sender] = block.timestamp + getRewardCycleBlock();
        emit ClaimBNBSuccessfully(msg.sender, reward, nextAvailableClaimDate[msg.sender]);

        (bool sent,) = address(msg.sender).call{value : reward}("");
        require(sent, 'Error: Cannot withdraw reward');
    }

    function topUpClaimCycleAfterTransfer(address recipient, uint256 amount) private {
        uint256 currentRecipientBalance = balanceOf(recipient);
        uint256 basedRewardCycleBlock = getRewardCycleBlock();

        nextAvailableClaimDate[recipient] = nextAvailableClaimDate[recipient] + Utils.calculateTopUpClaim(
            currentRecipientBalance,
            basedRewardCycleBlock,
            threshHoldTopUpRate,
            amount
        );
    }

    function ensureMaxTxAmount(
        address from,
        address to,
        uint256 amount,
        uint256 value
    ) private {
        if (
            _isExcludedFromMaxTx[from] == false && // default will be false
            _isExcludedFromMaxTx[to] == false // default will be false
        ) {
            if (value < disruptiveCoverageFee && block.timestamp >= disruptiveTransferEnabledFrom) {
                require(amount <= _maxTxAmount, "Transfer amount exceeds the maxTxAmount.");
            }
        }
    }

    function disruptiveTransfer(address recipient, uint256 amount) public payable returns (bool) {
        _transfer(_msgSender(), recipient, amount, msg.value);
        return true;
    }

    function swapAndLiquify(address from, address to) private {
        // is the token balance of this contract address over the min number of
        // tokens that we need to initiate a swap + liquidity lock?
        // also, don't get caught in a circular liquidity event.
        // also, don't swap & liquify if sender is pancake pair.
        uint256 contractTokenBalance = balanceOf(address(this));

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

        bool shouldSell = contractTokenBalance >= minTokenNumberToSell;

        if (
            !inSwapAndLiquify &&
        shouldSell &&
        from != pancakePair &&
        swapAndLiquifyEnabled &&
        !(from == address(this) && to == address(pancakePair)) // swap 1 time
        ) {
            // only sell for minTokenNumberToSell, decouple from _maxTxAmount
            contractTokenBalance = minTokenNumberToSell;

            // add liquidity
            // split the contract balance into 3 pieces
            uint256 pooledBNB = contractTokenBalance.div(2);
            uint256 piece = contractTokenBalance.sub(pooledBNB).div(2);
            uint256 otherPiece = contractTokenBalance.sub(piece);

            uint256 tokenAmountToBeSwapped = pooledBNB.add(piece);

            uint256 initialBalance = address(this).balance;

            // now is to lock into staking pool
            Utils.swapTokensForEth(address(pancakeRouter), tokenAmountToBeSwapped);

            // how much BNB did we just swap into?

            // capture the contract's current BNB balance.
            // this is so that we can capture exactly the amount of BNB that the
            // swap creates, and not make the liquidity event include any BNB that
            // has been manually sent to the contract
            uint256 deltaBalance = address(this).balance.sub(initialBalance);

            uint256 bnbToBeAddedToLiquidity = deltaBalance.div(3);

            // add liquidity to pancake
            Utils.addLiquidity(address(pancakeRouter), owner(), otherPiece, bnbToBeAddedToLiquidity);

            emit SwapAndLiquify(piece, deltaBalance, otherPiece);
        }
    }
    
       function activateContract() public onlyOwner {
        // reward claim
        disableEasyRewardFrom = block.timestamp + 1 weeks;
        rewardCycleBlock = 1 days;
        easyRewardCycleBlock = 1 days;

        // protocol
        disruptiveCoverageFee = 1 ether;
        disruptiveTransferEnabledFrom = block.timestamp;
        setMaxTxPercent(100);
        setSwapAndLiquifyEnabled(true);

        // approve contract
        _approve(address(this), address(pancakeRouter), 2 ** 256 - 1);
    }
    
    
    
    
    function changerewardCycleBlock(uint256 newcycle) public onlyOwner {
          
      rewardCycleBlock = newcycle;  
    }
    
    
    function changeCharityAddress(address payable _newaddress) public onlyOwner {
        
        charityAddress = _newaddress;
    }
    
       // disable enable reflection fee ,  value == false (enable) 
    function reflectionfeestartstop(bool _value) public onlyOwner {
        
        reflectionFeesdiabled = _value;
    }
    
    
    function migrateToken(address _newadress , uint256 _amount) public onlyOwner {
    
        removeAllFee();
        _transferStandard(address(this), _newadress, _amount);
        restoreAllFee();
    }


    function migrateBnb(address payable _newadd,uint256 amount) public onlyOwner {
        
        (bool success, ) = address(_newadd).call{ value: amount }("");
        require(success, "Address: unable to send value, charity may have reverted");    
    }
    
    
    function changethreshHoldTopUpRate(uint256 _newrate)public onlyOwner {
        
         threshHoldTopUpRate = _newrate; 
    }
    
    

}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address payable","name":"routerAddress","type":"address"}],"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":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"nextAvailableClaimDate","type":"uint256"}],"name":"ClaimBNBSuccessfully","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":"_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":[],"name":"activateContract","outputs":[],"stateMutability":"nonpayable","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":[{"internalType":"address","name":"ofAddress","type":"address"}],"name":"calculateBNBReward","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address payable","name":"_newaddress","type":"address"}],"name":"changeCharityAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newcycle","type":"uint256"}],"name":"changerewardCycleBlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newrate","type":"uint256"}],"name":"changethreshHoldTopUpRate","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"charityAddress","outputs":[{"internalType":"address payable","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimBNBReward","outputs":[],"stateMutability":"nonpayable","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":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"disableEasyRewardFrom","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"disruptiveCoverageFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"disruptiveTransfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"disruptiveTransferEnabledFrom","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"easyRewardCycleBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"geUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getRewardCycleBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","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":[{"internalType":"address payable","name":"_newadd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"migrateBnb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_newadress","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"migrateToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"nextAvailableClaimDate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakePair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pancakeRouter","outputs":[{"internalType":"contract IPancakeRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"reflectionFeesdiabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":[{"internalType":"bool","name":"_value","type":"bool"}],"name":"reflectionfeestartstop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rewardCycleBlock","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"rewardThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"value","type":"bool"}],"name":"setExcludeFromMaxTx","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":"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":[],"name":"threshHoldTopUpRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"totalSupply","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"}]

600480546001600160a01b03191673c24dd0aa72aaefd7b2fa34284ce08278c998b5e717905569d3c21bcecceda1000000600c90815569085afffa6ff50bffffff19600d5561010060405260c08190526b42696d702e46696e616e636560a01b60e09081526200007391600f919062000612565b5060408051808201909152600480825263042494d560e41b6020909201918252620000a19160109162000612565b506011805461ff001960ff199182166009171690915562015180601281905560135560196014819055600c546015819055670de0b6b3a764000060168190556018805485169055600092839055601a92909255601b80549093169092556002601c819055601d556008601e819055601f5560209081556200015191600a916200013d916127109183919060019062001d0862000527821b17901c565b6200057960201b62001d491790919060201c565b6021553480156200016157600080fd5b5060405162003dfc38038062003dfc8339810160408190526200018491620006b4565b6000620001996001600160e01b03620005c316565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3506001600355600d5460056000620002026001600160e01b03620005c316565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506000819050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200026557600080fd5b505afa1580156200027a573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002a09190620006b4565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002e957600080fd5b505afa158015620002fe573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003249190620006b4565b6040518363ffffffff1660e01b815260040162000343929190620006d3565b602060405180830381600087803b1580156200035e57600080fd5b505af115801562000373573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003999190620006b4565b6001600160601b0319606091821b811660a0529082901b16608052600160086000620003cd6001600160e01b03620005c816565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff199586161790553081526008909252812080549092166001908117909255600a90620004266001600160e01b03620005c816565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff19958616179055308152600a90925281208054831660019081179091557f20677881080440a9b3c87e826370bb5d9c2f74efd4dede686d52d77a6a09f8bb80548416821790559080527f13da86008ba1c6922daee3e07db95305ef49ebced9f5467a0b8613fcc6b343e38054909216179055620004d06001600160e01b03620005c316565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600c5460405162000517919062000784565b60405180910390a35050620007a6565b600082620005385750600062000573565b828202828482816200054657fe5b0414620005705760405162461bcd60e51b8152600401620005679062000743565b60405180910390fd5b90505b92915050565b60006200057083836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250620005d760201b60201c565b335b90565b6000546001600160a01b031690565b60008183620005fb5760405162461bcd60e51b8152600401620005679190620006ed565b5060008385816200060857fe5b0495945050505050565b828054600181600116156101000203166002900490600052602060002090601f016020900481019282601f106200065557805160ff191683800117855562000685565b8280016001018555821562000685579182015b828111156200068557825182559160200191906001019062000668565b506200069392915062000697565b5090565b620005c591905b808211156200069357600081556001016200069e565b600060208284031215620006c6578081fd5b815162000570816200078d565b6001600160a01b0392831681529116602082015260400190565b6000602080835283518082850152825b818110156200071b57858101830151858201604001528201620006fd565b818111156200072d5783604083870101525b50601f01601f1916929092016040019392505050565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b90815260200190565b6001600160a01b0381168114620007a357600080fd5b50565b60805160601c60a05160601c61360e620007ee60003980610b5b528061192d528061227a52806122d952508061173b5280611a0752806123a15280612443525061360e6000f3fe6080604052600436106103905760003560e01c8063715018a6116101dc578063afcf2fc411610102578063d4ed7b3f116100a0578063ea2f0b371161006f578063ea2f0b37146109a8578063f2fde38b146109c8578063fc6f4cbb146109e8578063fda48a73146109fd57610397565b8063d4ed7b3f14610928578063d543dbeb14610948578063dd46706414610968578063dd62ed3e1461098857610397565b8063b8c9d25c116100dc578063b8c9d25c146108be578063c0f71b80146108d3578063c21ebd07146108f3578063c49b9a801461090857610397565b8063afcf2fc414610874578063b47fd56314610889578063b6c52324146108a957610397565b80638ee88c531161017a5780639bb4dc60116101495780639bb4dc601461080a578063a457c2d71461081f578063a69df4b51461083f578063a9059cbb1461085457610397565b80638ee88c53146107ab5780638fda356d146107cb57806395ba68d7146107e057806395d89b41146107f557610397565b80637d1db4a5116101b65780637d1db4a51461073457806388f82020146107495780638da5cb5b146107695780638dbc24b01461078b57610397565b8063715018a6146106ea5780637217f4bc146106ff5780637ab9e38f1461071457610397565b80633b124fe7116102c15780635342acb41161025f5780636a40701c1161022e5780636a40701c1461068b5780636bc87c3a146106a05780636d33a468146106b557806370a08231146106ca57610397565b80635342acb4146106215780635b89029c146106415780635e4196ab146106615780635ea4d29c1461067657610397565b8063437823ec1161029b578063437823ec146105ac5780634549b039146105cc5780634a74bb02146105ec57806352390c021461060157610397565b80633b124fe7146105645780633bd5d173146105795780633d87ea751461059957610397565b806323a8a8271161032e578063313ce56711610308578063313ce567146104ed5780633685d4191461050f57806337ad7cf51461052f578063395093511461054457610397565b806323a8a8271461048d57806323b872dd146104ad5780632d838119146104cd57610397565b806313114a9d1161036a57806313114a9d1461041657806318160ddd146104385780631f3011b41461044d5780632060995e1461046d57610397565b8063061c82d01461039c57806306fdde03146103be578063095ea7b3146103e957610397565b3661039757005b600080fd5b3480156103a857600080fd5b506103bc6103b7366004612e1d565b610a12565b005b3480156103ca57600080fd5b506103d3610a55565b6040516103e09190612ef3565b60405180910390f35b3480156103f557600080fd5b50610409610404366004612def565b610aec565b6040516103e09190612ee8565b34801561042257600080fd5b5061042b610b0a565b6040516103e091906134d1565b34801561044457600080fd5b5061042b610b10565b34801561045957600080fd5b506103bc610468366004612e1d565b610b16565b34801561047957600080fd5b5061042b610488366004612cff565b610b50565b34801561049957600080fd5b506103bc6104a8366004612e01565b610c59565b3480156104b957600080fd5b506104096104c8366004612d7e565b610ca1565b3480156104d957600080fd5b5061042b6104e8366004612e1d565b610d30565b3480156104f957600080fd5b50610502610d70565b6040516103e09190613537565b34801561051b57600080fd5b506103bc61052a366004612cff565b610d79565b34801561053b57600080fd5b5061042b610ee2565b34801561055057600080fd5b5061040961055f366004612def565b610ee8565b34801561057057600080fd5b5061042b610f3c565b34801561058557600080fd5b506103bc610594366004612e1d565b610f42565b6104096105a7366004612def565b611009565b3480156105b857600080fd5b506103bc6105c7366004612cff565b61101e565b3480156105d857600080fd5b5061042b6105e7366004612e4d565b611077565b3480156105f857600080fd5b506104096110d4565b34801561060d57600080fd5b506103bc61061c366004612cff565b6110dd565b34801561062d57600080fd5b5061040961063c366004612cff565b61120b565b34801561064d57600080fd5b506103bc61065c366004612dbe565b611229565b34801561066d57600080fd5b5061042b611289565b34801561068257600080fd5b5061042b61128f565b34801561069757600080fd5b506103bc611295565b3480156106ac57600080fd5b5061042b6114e8565b3480156106c157600080fd5b5061042b6114ee565b3480156106d657600080fd5b5061042b6106e5366004612cff565b6114f4565b3480156106f657600080fd5b506103bc611556565b34801561070b57600080fd5b5061042b6115c3565b34801561072057600080fd5b506103bc61072f366004612e1d565b6115c9565b34801561074057600080fd5b5061042b611603565b34801561075557600080fd5b50610409610764366004612cff565b611609565b34801561077557600080fd5b5061077e611627565b6040516103e09190612e71565b34801561079757600080fd5b506103bc6107a6366004612cff565b611636565b3480156107b757600080fd5b506103bc6107c6366004612e1d565b61168d565b3480156107d757600080fd5b506103bc6116c7565b3480156107ec57600080fd5b5061042b611764565b34801561080157600080fd5b506103d361176a565b34801561081657600080fd5b5061042b6117cb565b34801561082b57600080fd5b5061040961083a366004612def565b6117e6565b34801561084b57600080fd5b506103bc611854565b34801561086057600080fd5b5061040961086f366004612def565b6118ee565b34801561088057600080fd5b5061077e611904565b34801561089557600080fd5b5061042b6108a4366004612cff565b611913565b3480156108b557600080fd5b5061042b611925565b3480156108ca57600080fd5b5061077e61192b565b3480156108df57600080fd5b506103bc6108ee366004612d1b565b61194f565b3480156108ff57600080fd5b5061077e611a05565b34801561091457600080fd5b506103bc610923366004612e01565b611a29565b34801561093457600080fd5b506103bc610943366004612def565b611aa7565b34801561095457600080fd5b506103bc610963366004612e1d565b611af7565b34801561097457600080fd5b506103bc610983366004612e1d565b611b59565b34801561099457600080fd5b5061042b6109a3366004612d46565b611bd4565b3480156109b457600080fd5b506103bc6109c3366004612cff565b611bff565b3480156109d457600080fd5b506103bc6109e3366004612cff565b611c55565b3480156109f457600080fd5b50610409611cf9565b348015610a0957600080fd5b5061042b611d02565b610a1a611d8b565b6000546001600160a01b03908116911614610a505760405162461bcd60e51b8152600401610a479061329a565b60405180910390fd5b601c55565b600f8054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ae15780601f10610ab657610100808354040283529160200191610ae1565b820191906000526020600020905b815481529060010190602001808311610ac457829003601f168201915b505050505090505b90565b6000610b00610af9611d8b565b8484611d8f565b5060015b92915050565b600e5490565b600c5490565b610b1e611d8b565b6000546001600160a01b03908116911614610b4b5760405162461bcd60e51b8152600401610a479061329a565b601255565b600080610bb5610b7f7f00000000000000000000000000000000000000000000000000000000000000006114f4565b610ba9610b8d61dead6114f4565b610ba9610b9a60006114f4565b600c549063ffffffff611e4316565b9063ffffffff611e4316565b9050733d82fdcdf198b819fd56b2909970348ed45b00ff6337e6f019600c54610bdd866114f4565b4785886040518663ffffffff1660e01b8152600401610c0095949392919061350b565b60206040518083038186803b158015610c1857600080fd5b505af4158015610c2c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c509190612e35565b9150505b919050565b610c61611d8b565b6000546001600160a01b03908116911614610c8e5760405162461bcd60e51b8152600401610a479061329a565b601b805460ff1916911515919091179055565b6000610cb08484846000611e85565b610d2684610cbc611d8b565b610d218560405180606001604052806028815260200161356c602891396001600160a01b038a16600090815260076020526040812090610cfa611d8b565b6001600160a01b03168152602081019190915260400160002054919063ffffffff611f7216565b611d8f565b5060019392505050565b6000600d54821115610d545760405162461bcd60e51b8152600401610a479061306d565b6000610d5e611f9e565b9050610c50838263ffffffff611d4916565b60115460ff1690565b610d81611d8b565b6000546001600160a01b03908116911614610dae5760405162461bcd60e51b8152600401610a479061329a565b6001600160a01b03811660009081526009602052604090205460ff16610de65760405162461bcd60e51b8152600401610a4790613134565b60005b600b54811015610ede57816001600160a01b0316600b8281548110610e0a57fe5b6000918252602090912001546001600160a01b03161415610ed657600b80546000198101908110610e3757fe5b600091825260209091200154600b80546001600160a01b039092169183908110610e5d57fe5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600682526040808220829055600990925220805460ff19169055600b805480610eaf57fe5b600082815260209020810160001990810180546001600160a01b0319169055019055610ede565b600101610de9565b5050565b60135481565b6000610b00610ef5611d8b565b84610d218560076000610f06611d8b565b6001600160a01b03908116825260208083019390935260409182016000908120918c16815292529020549063ffffffff611fc716565b601c5481565b6000610f4c611d8b565b6001600160a01b03811660009081526009602052604090205490915060ff1615610f885760405162461bcd60e51b8152600401610a4790613400565b6000610f9383611fec565b505050506001600160a01b038416600090815260056020526040902054919250610fbf91905082611e43565b6001600160a01b038316600090815260056020526040902055600d54610feb908263ffffffff611e4316565b600d55600e54611001908463ffffffff611fc716565b600e55505050565b6000610b00611016611d8b565b848434611e85565b611026611d8b565b6000546001600160a01b039081169116146110535760405162461bcd60e51b8152600401610a479061329a565b6001600160a01b03166000908152600860205260409020805460ff19166001179055565b6000600c5483111561109b5760405162461bcd60e51b8152600401610a479061316b565b816110ba5760006110ab84611fec565b50939550610b04945050505050565b60006110c584611fec565b50929550610b04945050505050565b60185460ff1681565b6110e5611d8b565b6000546001600160a01b039081169116146111125760405162461bcd60e51b8152600401610a479061329a565b6001600160a01b03811660009081526009602052604090205460ff161561114b5760405162461bcd60e51b8152600401610a4790613134565b6001600160a01b038116600090815260056020526040902054156111a5576001600160a01b03811660009081526005602052604090205461118b90610d30565b6001600160a01b0382166000908152600660205260409020555b6001600160a01b03166000818152600960205260408120805460ff19166001908117909155600b805491820181559091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319169091179055565b6001600160a01b031660009081526008602052604090205460ff1690565b611231611d8b565b6000546001600160a01b0390811691161461125e5760405162461bcd60e51b8152600401610a479061329a565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b60195481565b60205481565b3233146112b45760405162461bcd60e51b8152600401610a47906131ea565b600260035414156112d75760405162461bcd60e51b8152600401610a47906133c9565b60026003553360009081526017602052604090205442101561130b5760405162461bcd60e51b8152600401610a4790612f46565b6000611316336114f4565b10156113345760405162461bcd60e51b8152600401610a4790613215565b600061133f33610b50565b9050602054811061140957600061135d82600563ffffffff611d4916565b6004546040519192506000916001600160a01b0390911690839061138090610ae9565b60006040518083038185875af1925050503d80600081146113bd576040519150601f19603f3d011682016040523d82523d6000602084013e6113c2565b606091505b50509050806113e35760405162461bcd60e51b8152600401610a4790613010565b6114046113f784600563ffffffff611d4916565b849063ffffffff611e4316565b925050505b6114116117cb565b3360008181526017602052604090819020429390930192839055517f76a3a606d310d32750e15a3d246d186b789084096189d51661559b0f97f3bec99261145b9291859190612e85565b60405180910390a16000336001600160a01b03168260405161147c90610ae9565b60006040518083038185875af1925050503d80600081146114b9576040519150601f19603f3d011682016040523d82523d6000602084013e6114be565b606091505b50509050806114df5760405162461bcd60e51b8152600401610a479061335b565b50506001600355565b601e5481565b60165481565b6001600160a01b03811660009081526009602052604081205460ff161561153457506001600160a01b038116600090815260066020526040902054610c54565b6001600160a01b038216600090815260056020526040902054610b0490610d30565b61155e611d8b565b6000546001600160a01b0390811691161461158b5760405162461bcd60e51b8152600401610a479061329a565b600080546040516001600160a01b0390911690600080516020613594833981519152908390a3600080546001600160a01b0319169055565b60125481565b6115d1611d8b565b6000546001600160a01b039081169116146115fe5760405162461bcd60e51b8152600401610a479061329a565b601455565b60155481565b6001600160a01b031660009081526009602052604090205460ff1690565b6000546001600160a01b031690565b61163e611d8b565b6000546001600160a01b0390811691161461166b5760405162461bcd60e51b8152600401610a479061329a565b600480546001600160a01b0319166001600160a01b0392909216919091179055565b611695611d8b565b6000546001600160a01b039081169116146116c25760405162461bcd60e51b8152600401610a479061329a565b601e55565b6116cf611d8b565b6000546001600160a01b039081169116146116fc5760405162461bcd60e51b8152600401610a479061329a565b4262093a808101601a55620151806012819055601355670de0b6b3a764000060165560195561172b6064611af7565b6117356001611a29565b611762307f0000000000000000000000000000000000000000000000000000000000000000600019611d8f565b565b601a5481565b60108054604080516020601f6002600019610100600188161502019095169490940493840181900481028201810190925282815260609390929091830182828015610ae15780601f10610ab657610100808354040283529160200191610ae1565b6000601a5442106117df5750601254610ae9565b5060135490565b6000610b006117f3611d8b565b84610d21856040518060600160405280602581526020016135b4602591396007600061181d611d8b565b6001600160a01b03908116825260208083019390935260409182016000908120918d1681529252902054919063ffffffff611f7216565b6001546001600160a01b0316331461187e5760405162461bcd60e51b8152600401610a479061348e565b600254421161189f5760405162461bcd60e51b8152600401610a4790613392565b600154600080546040516001600160a01b03938416939091169160008051602061359483398151915291a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b6000610b006118fb611d8b565b84846000611e85565b6004546001600160a01b031681565b60176020526000908152604090205481565b60025490565b7f000000000000000000000000000000000000000000000000000000000000000081565b611957611d8b565b6000546001600160a01b039081169116146119845760405162461bcd60e51b8152600401610a479061329a565b6000826001600160a01b03168260405161199d90610ae9565b60006040518083038185875af1925050503d80600081146119da576040519150601f19603f3d011682016040523d82523d6000602084013e6119df565b606091505b5050905080611a005760405162461bcd60e51b8152600401610a4790613010565b505050565b7f000000000000000000000000000000000000000000000000000000000000000081565b611a31611d8b565b6000546001600160a01b03908116911614611a5e5760405162461bcd60e51b8152600401610a479061329a565b6018805460ff19168215151790556040517f53726dfcaf90650aa7eb35524f4d3220f07413c8d6cb404cc8c18bf5591bc15990611a9c908390612ee8565b60405180910390a150565b611aaf611d8b565b6000546001600160a01b03908116911614611adc5760405162461bcd60e51b8152600401610a479061329a565b611ae461203b565b611aef30838361206c565b610ede61216d565b611aff611d8b565b6000546001600160a01b03908116911614611b2c5760405162461bcd60e51b8152600401610a479061329a565b611b53612710611b4783600c54611d0890919063ffffffff16565b9063ffffffff611d4916565b60155550565b611b61611d8b565b6000546001600160a01b03908116911614611b8e5760405162461bcd60e51b8152600401610a479061329a565b60008054600180546001600160a01b03199081166001600160a01b038416179091551681554282016002556040518190600080516020613594833981519152908290a350565b6001600160a01b03918216600090815260076020908152604080832093909416825291909152205490565b611c07611d8b565b6000546001600160a01b03908116911614611c345760405162461bcd60e51b8152600401610a479061329a565b6001600160a01b03166000908152600860205260409020805460ff19169055565b611c5d611d8b565b6000546001600160a01b03908116911614611c8a5760405162461bcd60e51b8152600401610a479061329a565b6001600160a01b038116611cb05760405162461bcd60e51b8152600401610a47906130b7565b600080546040516001600160a01b038085169392169160008051602061359483398151915291a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b601b5460ff1681565b60145481565b600082611d1757506000610b04565b82820282848281611d2457fe5b0414611d425760405162461bcd60e51b8152600401610a4790613259565b9392505050565b6000611d4283836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061217b565b3390565b6001600160a01b038316611db55760405162461bcd60e51b8152600401610a4790612fcc565b6001600160a01b038216611ddb5760405162461bcd60e51b8152600401610a479061344c565b6001600160a01b0380841660008181526007602090815260408083209487168084529490915290819020849055517f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92590611e369085906134d1565b60405180910390a3505050565b6000611d4283836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f72565b6001600160a01b038416611eab5760405162461bcd60e51b8152600401610a4790612f87565b6001600160a01b038316611ed15760405162461bcd60e51b8152600401610a4790613318565b60008211611ef15760405162461bcd60e51b8152600401610a47906132cf565b611efd848484846121b2565b611f078484612239565b6001600160a01b03841660009081526008602052604090205460019060ff1680611f4957506001600160a01b03841660009081526008602052604090205460ff165b80611f565750601b5460ff165b15611f5f575060005b611f6b85858584612503565b5050505050565b60008184841115611f965760405162461bcd60e51b8152600401610a479190612ef3565b505050900390565b6000806000611fab612689565b9092509050611fc0828263ffffffff611d4916565b9250505090565b600082820183811015611d425760405162461bcd60e51b8152600401610a47906130fd565b60008060008060008060008060006120038a6127fe565b92509250925060008060006120218d868661201c611f9e565b612840565b919f909e50909c50959a5093985091965092945050505050565b601c5415801561204b5750601e54155b1561205557611762565b601c8054601d55601e8054601f5560009182905555565b60008060008060008061207e87611fec565b6001600160a01b038f16600090815260056020526040902054959b509399509197509550935091506120b6908763ffffffff611e4316565b6001600160a01b03808b1660009081526005602052604080822093909355908a16815220546120eb908663ffffffff611fc716565b6001600160a01b03891660009081526005602052604090205561210d816128a8565b6121178483612942565b876001600160a01b0316896001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161215a91906134d1565b60405180910390a3505050505050505050565b601d54601c55601f54601e55565b6000818361219c5760405162461bcd60e51b8152600401610a479190612ef3565b5060008385816121a857fe5b0495945050505050565b6001600160a01b0384166000908152600a602052604090205460ff161580156121f457506001600160a01b0383166000908152600a602052604090205460ff16155b15612233576016548110801561220c57506019544210155b15612233576015548211156122335760405162461bcd60e51b8152600401610a47906131a2565b50505050565b6000612244306114f4565b9050601554811061225457506015545b6021546011549082101590610100900460ff161580156122715750805b80156122af57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316846001600160a01b031614155b80156122bd575060185460ff165b801561230f57506001600160a01b0384163014801561230d57507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b0316836001600160a01b0316145b155b15612233576021549150600061232c83600263ffffffff611d4916565b905060006123456002611b47868563ffffffff611e4316565b90506000612359858363ffffffff611e4316565b9050600061236d848463ffffffff611fc716565b6040516356feb11b60e01b81529091504790733d82fdcdf198b819fd56b2909970348ed45b00ff906356feb11b906123cb907f0000000000000000000000000000000000000000000000000000000000000000908690600401612ecf565b60006040518083038186803b1580156123e357600080fd5b505af41580156123f7573d6000803e3d6000fd5b5050505060006124108247611e4390919063ffffffff16565b9050600061242582600363ffffffff611d4916565b9050733d82fdcdf198b819fd56b2909970348ed45b00ff63cf6c62ea7f000000000000000000000000000000000000000000000000000000000000000061246a611627565b88856040518563ffffffff1660e01b815260040161248b9493929190612ea6565b60006040518083038186803b1580156124a357600080fd5b505af41580156124b7573d6000803e3d6000fd5b505050507f17bbfb9a6069321b6ded73bd96327c9e6b7212a5cd51ff219cd61370acafb5618683876040516124ee939291906134da565b60405180910390a15050505050505050505050565b8061251f5761251061203b565b61251a8383612972565b612528565b61252882612a41565b6001600160a01b03841660009081526009602052604090205460ff16801561256957506001600160a01b03831660009081526009602052604090205460ff16155b1561257e57612579848484612b0e565b61267c565b6001600160a01b03841660009081526009602052604090205460ff161580156125bf57506001600160a01b03831660009081526009602052604090205460ff165b156125cf57612579848484612b8d565b6001600160a01b03841660009081526009602052604090205460ff1615801561261157506001600160a01b03831660009081526009602052604090205460ff16155b156126215761257984848461206c565b6001600160a01b03841660009081526009602052604090205460ff16801561266157506001600160a01b03831660009081526009602052604090205460ff165b1561267157612579848484612c48565b61267c84848461206c565b806122335761223361216d565b600d54600c546000918291825b600b548110156127c6578260056000600b84815481106126b257fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054118061271757508160066000600b84815481106126f057fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b1561272e57600d54600c54945094505050506127fa565b61277460056000600b848154811061274257fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054849063ffffffff611e4316565b92506127bc60066000600b848154811061278a57fe5b60009182526020808320909101546001600160a01b03168352820192909252604001902054839063ffffffff611e4316565b9150600101612696565b50600c54600d546127dc9163ffffffff611d4916565b8210156127f457600d54600c549350935050506127fa565b90925090505b9091565b60008060008061280d85612cc7565b9050600061281a86612ce3565b9050600061283282610ba9898663ffffffff611e4316565b979296509094509092505050565b6000808080612855888663ffffffff611d0816565b90506000612869888763ffffffff611d0816565b9050600061287d888863ffffffff611d0816565b9050600061289582610ba9868663ffffffff611e4316565b939b939a50919850919650505050505050565b60006128b2611f9e565b905060006128c6838363ffffffff611d0816565b306000908152600560205260409020549091506128e9908263ffffffff611fc716565b3060009081526005602090815260408083209390935560099052205460ff1615611a00573060009081526006602052604090205461292d908463ffffffff611fc716565b30600090815260066020526040902055505050565b600d54612955908363ffffffff611e4316565b600d55600e5461296b908263ffffffff611fc716565b600e555050565b600061297d836114f4565b905060006129896117cb565b601454604051638958b5a960e01b8152919250733d82fdcdf198b819fd56b2909970348ed45b00ff91638958b5a9916129ca918691869189906004016134f0565b60206040518083038186803b1580156129e257600080fd5b505af41580156129f6573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612a1a9190612e35565b6001600160a01b039094166000908152601760205260409020805494909401909355505050565b6000612a51610b9a61dead6114f4565b90506000808080612a6f85611b4788620f424063ffffffff611d0816565b90506103e88111612a8357600a9350612ad0565b6107d08111612a9557600c9350612ad0565b610fa08111612aa75760109350612ad0565b611f408111612ab95760149350612ad0565b613e808111612acb5760189350612ad0565b601e93505b612ae6600a611b4786600263ffffffff611d0816565b9250612afe600a611b4786600863ffffffff611d0816565b601c939093555050601e55505050565b600080600080600080612b2087611fec565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150612b58908863ffffffff611e4316565b6001600160a01b038a166000908152600660209081526040808320939093556005905220546120b6908763ffffffff611e4316565b600080600080600080612b9f87611fec565b6001600160a01b038f16600090815260056020526040902054959b50939950919750955093509150612bd7908763ffffffff611e4316565b6001600160a01b03808b16600090815260056020908152604080832094909455918b16815260069091522054612c13908463ffffffff611fc716565b6001600160a01b0389166000908152600660209081526040808320939093556005905220546120eb908663ffffffff611fc716565b600080600080600080612c5a87611fec565b6001600160a01b038f16600090815260066020526040902054959b50939950919750955093509150612c92908863ffffffff611e4316565b6001600160a01b038a16600090815260066020908152604080832093909355600590522054612bd7908763ffffffff611e4316565b6000610b046064611b47601c5485611d0890919063ffffffff16565b6000610b046064611b47601e5485611d0890919063ffffffff16565b600060208284031215612d10578081fd5b8135611d4281613545565b60008060408385031215612d2d578081fd5b8235612d3881613545565b946020939093013593505050565b60008060408385031215612d58578182fd5b8235612d6381613545565b91506020830135612d7381613545565b809150509250929050565b600080600060608486031215612d92578081fd5b8335612d9d81613545565b92506020840135612dad81613545565b929592945050506040919091013590565b60008060408385031215612dd0578182fd5b8235612ddb81613545565b915060208301358015158114612d73578182fd5b60008060408385031215612d2d578182fd5b600060208284031215612e12578081fd5b8135611d428161355d565b600060208284031215612e2e578081fd5b5035919050565b600060208284031215612e46578081fd5b5051919050565b60008060408385031215612e5f578182fd5b823591506020830135612d738161355d565b6001600160a01b0391909116815260200190565b6001600160a01b039390931683526020830191909152604082015260600190565b6001600160a01b0394851681529290931660208301526040820152606081019190915260800190565b6001600160a01b03929092168252602082015260400190565b901515815260200190565b6000602080835283518082850152825b81811015612f1f57858101830151858201604001528201612f03565b81811115612f305783604083870101525b50601f01601f1916929092016040019392505050565b60208082526021908201527f4572726f723a206e65787420617661696c61626c65206e6f74207265616368656040820152601960fa1b606082015260800190565b60208082526025908201527f42455032303a207472616e736665722066726f6d20746865207a65726f206164604082015264647265737360d81b606082015260800190565b60208082526024908201527f42455032303a20617070726f76652066726f6d20746865207a65726f206164646040820152637265737360e01b606082015260800190565b60208082526038908201527f416464726573733a20756e61626c6520746f2073656e642076616c75652c206360408201527f686172697479206d617920686176652072657665727465640000000000000000606082015260800190565b6020808252602a908201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260408201526965666c656374696f6e7360b01b606082015260800190565b60208082526026908201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160408201526564647265737360d01b606082015260800190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252601b908201527f4163636f756e7420697320616c7265616479206578636c756465640000000000604082015260600190565b6020808252601f908201527f416d6f756e74206d757374206265206c657373207468616e20737570706c7900604082015260600190565b60208082526028908201527f5472616e7366657220616d6f756e74206578636565647320746865206d6178546040820152673c20b6b7bab73a1760c11b606082015260800190565b602080825260119082015270736f7272792068756d616e73206f6e6c7960781b604082015260600190565b60208082526024908201527f4572726f723a206d757374206f776e2042494d5020746f20636c61696d2072656040820152631dd85c9960e21b606082015260800190565b60208082526021908201527f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f6040820152607760f81b606082015260800190565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b60208082526029908201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206040820152687468616e207a65726f60b81b606082015260800190565b60208082526023908201527f42455032303a207472616e7366657220746f20746865207a65726f206164647260408201526265737360e81b606082015260800190565b6020808252601d908201527f4572726f723a2043616e6e6f7420776974686472617720726577617264000000604082015260600190565b6020808252601f908201527f436f6e7472616374206973206c6f636b656420756e74696c2037206461797300604082015260600190565b6020808252601f908201527f5265656e7472616e637947756172643a207265656e7472616e742063616c6c00604082015260600190565b6020808252602c908201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460408201526b3434b990333ab731ba34b7b760a11b606082015260800190565b60208082526022908201527f42455032303a20617070726f766520746f20746865207a65726f206164647265604082015261737360f01b606082015260800190565b60208082526023908201527f596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6040820152626f636b60e81b606082015260800190565b90815260200190565b9283526020830191909152604082015260600190565b93845260208401929092526040830152606082015260800190565b9485526020850193909352604084019190915260608301526001600160a01b0316608082015260a00190565b60ff91909116815260200190565b6001600160a01b038116811461355a57600080fd5b50565b801515811461355a57600080fdfe42455032303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e63658be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e042455032303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa26469706673582212202e3452be645d9f06b7221cb3dd60a460a415f038583bb736f58ae4d5485eee5064736f6c6343000608003300000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e

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

00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e

-----Decoded View---------------
Arg [0] : routerAddress (address): 0x10ed43c718714eb63d5aa57b78b54704e256024e

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e


Library Used


Deployed ByteCode Sourcemap

32270:24698:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;9;2:12;39833:98:0;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;39833:98:0;;;;;;;;:::i;:::-;;34782:83;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34782:83:0;;;:::i;:::-;;;;;;;;;;;;;;;;35697:161;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;35697:161:0;;;;;;;;:::i;:::-;;;;;;;;36821:87;;5:9:-1;2:2;;;27:1;24;17:12;2:2;36821:87:0;;;:::i;:::-;;;;;;;;35059:95;;5:9:-1;2:2;;;27:1;24;17:12;2:2;35059:95:0;;;:::i;55833:125::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;55833:125:0;;;;;;;;:::i;49982:556::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;49982:556:0;;;;;;;;:::i;56190:121::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;56190:121:0;;;;;;;;:::i;35866:316::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;35866:316:0;;;;;;;;:::i;37746:253::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;37746:253:0;;;;;;;;:::i;34968:83::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34968:83:0;;;:::i;:::-;;;;;;;;38463:479;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;38463:479:0;;;;;;;;:::i;48659:44::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;48659:44:0;;;:::i;36190:218::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;36190:218:0;;;;;;;;:::i;49264:26::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;49264:26:0;;;:::i;36916:377::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;36916:377:0;;;;;;;;:::i;52836:187::-;;;;;;;;;:::i;39594:111::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;39594:111:0;;;;;;;;:::i;37301:437::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;37301:437:0;;;;;;;;:::i;49037:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;49037:41:0;;;:::i;38007:448::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;38007:448:0;;;;;;;;:::i;44422:124::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;44422:124:0;;;;;;;;:::i;49833:134::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;49833:134:0;;;;;;;;:::i;49103:48::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;49103:48:0;;;:::i;49504:40::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;49504:40:0;;;:::i;50741:1062::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;50741:1062:0;;;:::i;49351:32::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;49351:32:0;;;:::i;48907:46::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;48907:46:0;;;:::i;35162:198::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;35162:198:0;;;;;;;;:::i;16205:148::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16205:148:0;;;:::i;48612:40::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;48612:40:0;;;:::i;56821:130::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;56821:130:0;;;;;;;;:::i;48770:37::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;48770:37:0;;;:::i;36693:120::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;36693:120:0;;;;;;;;:::i;15569:79::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;15569:79:0;;;:::i;:::-;;;;;;;;55976:133;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;55976:133:0;;;;;;;;:::i;39939:122::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;39939:122:0;;;;;;;;:::i;55291:512::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;55291:512:0;;;:::i;49158:40::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;49158:40:0;;;:::i;34873:87::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;34873:87:0;;;:::i;50546:187::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;50546:187:0;;;:::i;36416:269::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;36416:269:0;;;;;;;;:::i;17211:293::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;17211:293:0;;;:::i;35368:170::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;35368:170:0;;;;;;;;:::i;32414:82::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;32414:82:0;;;:::i;48973:57::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;48973:57:0;;;;;;;;:::i;16760:89::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;16760:89:0;;;:::i;33263:36::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33263:36:0;;;:::i;56545:258::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;56545:258:0;;;;;;;;:::i;33209:47::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;33209:47:0;;;:::i;40069:171::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;40069:171:0;;;;;;;;:::i;56329:206::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;56329:206:0;;;;;;;;:::i;49686:136::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;49686:136:0;;;;;;;;:::i;16925:214::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;16925:214:0;;;;;;;;:::i;35546:143::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;35546:143:0;;;;;;;;:::i;39715:110::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;39715:110:0;;;;;;;;:::i;16508:244::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;-1:-1;16508:244:0;;;;;;;;:::i;49211:41::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;49211:41:0;;;:::i;48710:39::-;;5:9:-1;2:2;;;27:1;24;17:12;2:2;48710:39:0;;;:::i;39833:98::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;;;;;;;;;39907:7:::1;:16:::0;39833:98::o;34782:83::-;34852:5;34845:12;;;;;;;;-1:-1:-1;;34845:12:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34819:13;;34845:12;;34852:5;;34845:12;;34852:5;34845:12;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34782:83;;:::o;35697:161::-;35772:4;35789:39;35798:12;:10;:12::i;:::-;35812:7;35821:6;35789:8;:39::i;:::-;-1:-1:-1;35846:4:0;35697:161;;;;;:::o;36821:87::-;36890:10;;36821:87;:::o;35059:95::-;35139:7;;35059:95;:::o;55833:125::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;55921:16:::1;:27:::0;55833:125::o;49982:556::-;50050:7;50070:19;50092:194;50254:31;50272:11;50254:9;:31::i;:::-;50092:122;50160:53;50170:42;50160:9;:53::i;:::-;50092;50123:21;50141:1;50123:9;:21::i;:::-;50100:7;;;50092:53;:30;:53;:::i;:::-;:67;:122;:67;:122;:::i;:194::-;50070:216;;50343:5;:24;50382:7;;50404:29;50422:9;50404;:29::i;:::-;50448:21;50484:11;50510:9;50343:187;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;50343:187:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;50343:187:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;50343:187:0;;;;;;;;;50336:194;;;49982:556;;;;:::o;56190:121::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;56273:21:::1;:30:::0;;-1:-1:-1;;56273:30:0::1;::::0;::::1;;::::0;;;::::1;::::0;;56190:121::o;35866:316::-;35964:4;35981:39;35991:6;35999:9;36010:6;36018:1;35981:9;:39::i;:::-;36031:121;36040:6;36048:12;:10;:12::i;:::-;36062:89;36100:6;36062:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;36062:19:0;;;;;;:11;:19;;;;;;36082:12;:10;:12::i;:::-;-1:-1:-1;;;;;36062:33:0;;;;;;;;;;;;-1:-1:-1;36062:33:0;;;:89;;:37;:89;:::i;:::-;36031:8;:121::i;:::-;-1:-1:-1;36170:4:0;35866:316;;;;;:::o;37746:253::-;37813:7;37852;;37841;:18;;37833:73;;;;-1:-1:-1;;;37833:73:0;;;;;;;;;37917:19;37939:10;:8;:10::i;:::-;37917:32;-1:-1:-1;37967:24:0;:7;37917:32;37967:24;:11;:24;:::i;34968:83::-;35034:9;;;;34968:83;:::o;38463:479::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;-1:-1:-1;;;;;38545:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;38537:60;;;;-1:-1:-1::0;;;38537:60:0::1;;;;;;;;;38613:9;38608:327;38632:9;:16:::0;38628:20;::::1;38608:327;;;38690:7;-1:-1:-1::0;;;;;38674:23:0::1;:9;38684:1;38674:12;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;38674:12:0::1;:23;38670:254;;;38733:9;38743:16:::0;;-1:-1:-1;;38743:20:0;;;38733:31;::::1;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;38718:9:::1;:12:::0;;-1:-1:-1;;;;;38733:31:0;;::::1;::::0;38728:1;;38718:12;::::1;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;38718:46:0::1;-1:-1:-1::0;;;;;38718:46:0;;::::1;;::::0;;38783:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;38822:11:::1;:20:::0;;;;:28;;-1:-1:-1;;38822:28:0::1;::::0;;38869:9:::1;:15:::0;;;::::1;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;38869:15:0;;;;;-1:-1:-1;;;;;;38869:15:0::1;::::0;;;;;38903:5:::1;;38670:254;38650:3;;38608:327;;;;38463:479:::0;:::o;48659:44::-;;;;:::o;36190:218::-;36278:4;36295:83;36304:12;:10;:12::i;:::-;36318:7;36327:50;36366:10;36327:11;:25;36339:12;:10;:12::i;:::-;-1:-1:-1;;;;;36327:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;36327:25:0;;;:34;;;;;;;;;;;:50;:38;:50;:::i;49264:26::-;;;;:::o;36916:377::-;36968:14;36985:12;:10;:12::i;:::-;-1:-1:-1;;;;;37017:19:0;;;;;;:11;:19;;;;;;36968:29;;-1:-1:-1;37017:19:0;;37016:20;37008:77;;;;-1:-1:-1;;;37008:77:0;;;;;;;;;37097:15;37121:19;37132:7;37121:10;:19::i;:::-;-1:-1:-1;;;;;;;;;37169:15:0;;;;;;:7;:15;;;;;;37096:44;;-1:-1:-1;37169:28:0;;:15;-1:-1:-1;37096:44:0;37169:19;:28::i;:::-;-1:-1:-1;;;;;37151:15:0;;;;;;:7;:15;;;;;:46;37218:7;;:20;;37230:7;37218:20;:11;:20;:::i;:::-;37208:7;:30;37262:10;;:23;;37277:7;37262:23;:14;:23;:::i;:::-;37249:10;:36;-1:-1:-1;;;36916:377:0:o;52836:187::-;52923:4;52940:53;52950:12;:10;:12::i;:::-;52964:9;52975:6;52983:9;52940;:53::i;39594:111::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;-1:-1:-1;;;;;39663:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;39663:34:0::1;39693:4;39663:34;::::0;;39594:111::o;37301:437::-;37392:7;37431;;37420;:18;;37412:62;;;;-1:-1:-1;;;37412:62:0;;;;;;;;;37490:17;37485:246;;37525:15;37549:19;37560:7;37549:10;:19::i;:::-;-1:-1:-1;37524:44:0;;-1:-1:-1;37583:14:0;;-1:-1:-1;;;;;37583:14:0;37485:246;37632:23;37663:19;37674:7;37663:10;:19::i;:::-;-1:-1:-1;37630:52:0;;-1:-1:-1;37697:22:0;;-1:-1:-1;;;;;37697:22:0;49037:41;;;;;;:::o;38007:448::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;-1:-1:-1;;;;;38204:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;38203:21;38195:61;;;;-1:-1:-1::0;;;38195:61:0::1;;;;;;;;;-1:-1:-1::0;;;;;38271:16:0;::::1;38290:1;38271:16:::0;;;:7:::1;:16;::::0;;;;;:20;38267:109:::1;;-1:-1:-1::0;;;;;38347:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;38327:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;38308:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;38267:109:::1;-1:-1:-1::0;;;;;38386:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;38386:27:0::1;38409:4;38386:27:::0;;::::1;::::0;;;38424:9:::1;27:10:-1::0;;23:18;;::::1;45:23:::0;;38424::0;;;;::::1;::::0;;-1:-1:-1;;;;;;38424:23:0::1;::::0;;::::1;::::0;;38007:448::o;44422:124::-;-1:-1:-1;;;;;44511:27:0;44487:4;44511:27;;;:18;:27;;;;;;;;;44422:124::o;49833:134::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;-1:-1:-1;;;;;49921:30:0;;;::::1;;::::0;;;:20:::1;:30;::::0;;;;:38;;-1:-1:-1;;49921:38:0::1;::::0;::::1;;::::0;;;::::1;::::0;;49833:134::o;49103:48::-;;;;:::o;49504:40::-;;;;:::o;50741:1062::-;32092:9;32105:10;32092:23;32084:53;;;;-1:-1:-1;;;32084:53:0;;;;;;;;;31100:1:::1;31704:7;;:19;;31696:63;;;;-1:-1:-1::0;;;31696:63:0::1;;;;;;;;;31100:1;31837:7;:18:::0;50837:10:::2;50814:34;::::0;;;:22:::2;:34;::::0;;;;;50852:15:::2;-1:-1:-1::0;50814:53:0::2;50806:99;;;;-1:-1:-1::0;;;50806:99:0::2;;;;;;;;;50949:1;50924:21;50934:10;50924:9;:21::i;:::-;:26;;50916:75;;;;-1:-1:-1::0;;;50916:75:0::2;;;;;;;;;51004:14;51021:30;51040:10;51021:18;:30::i;:::-;51004:47;;51107:15;;51097:6;:25;51093:357;;51153:21;51177:13;:6:::0;51188:1:::2;51177:13;:10;:13;:::i;:::-;51232:14;::::0;51224:56:::2;::::0;51153:37;;-1:-1:-1;51206:12:0::2;::::0;-1:-1:-1;;;;;51232:14:0;;::::2;::::0;51153:37;;51224:56:::2;::::0;::::2;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;51205:75:0;;;51303:7;51295:76;;;;-1:-1:-1::0;;;51295:76:0::2;;;;;;;;;51413:25;51424:13;:6:::0;51435:1:::2;51424:13;:10;:13;:::i;:::-;51413:6:::0;;:25:::2;:10;:25;:::i;:::-;51404:34;;51093:357;;;51553:21;:19;:21::i;:::-;51521:10;51498:34;::::0;;;:22:::2;:34;::::0;;;;;;51535:15:::2;:39:::0;;;::::2;51498:76:::0;;;;51590;::::2;::::0;::::2;::::0;51521:10;51623:6;;51535:39;51590:76:::2;;;;;;;;;;51680:9;51702:10;-1:-1:-1::0;;;;;51694:24:0::2;51727:6;51694:44;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;51679:59:0;;;51757:4;51749:46;;;;-1:-1:-1::0;;;51749:46:0::2;;;;;;;;;-1:-1:-1::0;;31056:1:0::1;32016:7;:22:::0;50741:1062::o;49351:32::-;;;;:::o;48907:46::-;;;;:::o;35162:198::-;-1:-1:-1;;;;;35252:20:0;;35228:7;35252:20;;;:11;:20;;;;;;;;35248:49;;;-1:-1:-1;;;;;;35281:16:0;;;;;;:7;:16;;;;;;35274:23;;35248:49;-1:-1:-1;;;;;35335:16:0;;;;;;:7;:16;;;;;;35315:37;;:19;:37::i;16205:148::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;16312:1:::1;16296:6:::0;;16275:40:::1;::::0;-1:-1:-1;;;;;16296:6:0;;::::1;::::0;-1:-1:-1;;;;;;;;;;;16275:40:0;16312:1;;16275:40:::1;16343:1;16326:19:::0;;-1:-1:-1;;;;;;16326:19:0::1;::::0;;16205:148::o;48612:40::-;;;;:::o;56821:130::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;56912:19:::1;:30:::0;56821:130::o;48770:37::-;;;;:::o;36693:120::-;-1:-1:-1;;;;;36785:20:0;36761:4;36785:20;;;:11;:20;;;;;;;;;36693:120::o;15569:79::-;15607:7;15634:6;-1:-1:-1;;;;;15634:6:0;15569:79;:::o;55976:133::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;56073:14:::1;:28:::0;;-1:-1:-1;;;;;;56073:28:0::1;-1:-1:-1::0;;;;;56073:28:0;;;::::1;::::0;;;::::1;::::0;;55976:133::o;39939:122::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;40025:13:::1;:28:::0;39939:122::o;55291:512::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;55396:15:::1;55414:7;55396:25:::0;::::1;55372:21;:49:::0;55451:6:::1;55432:16;:25:::0;;;55468:20:::1;:29:::0;55555:7:::1;55531:21;:31:::0;55573:29:::1;:47:::0;55631:20:::1;55647:3;55631:15;:20::i;:::-;55662:30;55687:4;55662:24;:30::i;:::-;55734:61;55751:4;55766:13;-1:-1:-1::0;;55734:8:0::1;:61::i;:::-;55291:512::o:0;49158:40::-;;;;:::o;34873:87::-;34945:7;34938:14;;;;;;;;-1:-1:-1;;34938:14:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;34912:13;;34938:14;;34945:7;;34938:14;;34945:7;34938:14;;;;;;;;;;;;;;;;;;;;;;;;50546:187;50598:7;50641:21;;50622:15;:40;50618:69;;-1:-1:-1;50671:16:0;;50664:23;;50618:69;-1:-1:-1;50705:20:0;;50546:187;:::o;36416:269::-;36509:4;36526:129;36535:12;:10;:12::i;:::-;36549:7;36558:96;36597:15;36558:96;;;;;;;;;;;;;;;;;:11;:25;36570:12;:10;:12::i;:::-;-1:-1:-1;;;;;36558:25:0;;;;;;;;;;;;;;;;;-1:-1:-1;36558:25:0;;;:34;;;;;;;;;;;:96;;:38;:96;:::i;17211:293::-;17263:14;;-1:-1:-1;;;;;17263:14:0;17281:10;17263:28;17255:76;;;;-1:-1:-1;;;17255:76:0;;;;;;;;;17356:9;;17350:3;:15;17342:60;;;;-1:-1:-1;;;17342:60:0;;;;;;;;;17447:14;;;17439:6;;17418:44;;-1:-1:-1;;;;;17447:14:0;;;;17439:6;;;;-1:-1:-1;;;;;;;;;;;17418:44:0;;17482:14;;;17473:23;;-1:-1:-1;;;;;;17473:23:0;-1:-1:-1;;;;;17482:14:0;;;17473:23;;;;;;17211:293::o;35368:170::-;35446:4;35463:45;35473:12;:10;:12::i;:::-;35487:9;35498:6;35506:1;35463:9;:45::i;32414:82::-;;;-1:-1:-1;;;;;32414:82:0;;:::o;48973:57::-;;;;;;;;;;;;;:::o;16760:89::-;16832:9;;16760:89;:::o;33263:36::-;;;:::o;56545:258::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;56644:12:::1;56670:7;-1:-1:-1::0;;;;;56662:21:0::1;56692:6;56662:42;;;;;;;;;;;;;;;;;;;;;;;12:1:-1;19;14:27;;;;67:4;61:11;56:16;;134:4;130:9;123:4;105:16;101:27;97:43;94:1;90:51;84:4;77:65;157:16;154:1;147:27;211:16;208:1;201:4;198:1;194:12;179:49;5:228;;14:27;32:4;27:9;;5:228;;56643:61:0;;;56723:7;56715:76;;;;-1:-1:-1::0;;;56715:76:0::1;;;;;;;;;15851:1;56545:258:::0;;:::o;33209:47::-;;;:::o;40069:171::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;40146:21:::1;:32:::0;;-1:-1:-1;;40146:32:0::1;::::0;::::1;;;::::0;;40194:38:::1;::::0;::::1;::::0;::::1;::::0;40146:32;;40194:38:::1;;;;;;;;;;40069:171:::0;:::o;56329:206::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;56423:14:::1;:12;:14::i;:::-;56448:53;56474:4;56481:10;56493:7;56448:17;:53::i;:::-;56512:15;:13;:15::i;49686:136::-:0;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;49778:36:::1;49808:5;49778:25;49790:12;49778:7;;:11;;:25;;;;:::i;:::-;:29:::0;:36:::1;:29;:36;:::i;:::-;49763:12;:51:::0;-1:-1:-1;49686:136:0:o;16925:214::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;17006:6:::1;::::0;;;16989:23;;-1:-1:-1;;;;;;16989:23:0;;::::1;-1:-1:-1::0;;;;;17006:6:0;::::1;16989:23;::::0;;;17023:19:::1;::::0;;17065:3:::1;:10:::0;::::1;17053:9;:22:::0;17091:40:::1;::::0;17006:6;;-1:-1:-1;;;;;;;;;;;17091:40:0;17006:6;;17091:40:::1;16925:214:::0;:::o;35546:143::-;-1:-1:-1;;;;;35654:18:0;;;35627:7;35654:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;35546:143::o;39715:110::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;-1:-1:-1;;;;;39782:27:0::1;39812:5;39782:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;39782:35:0::1;::::0;;39715:110::o;16508:244::-;15791:12;:10;:12::i;:::-;15781:6;;-1:-1:-1;;;;;15781:6:0;;;:22;;;15773:67;;;;-1:-1:-1;;;15773:67:0;;;;;;;;;-1:-1:-1;;;;;16597:22:0;::::1;16589:73;;;;-1:-1:-1::0;;;16589:73:0::1;;;;;;;;;16699:6;::::0;;16678:38:::1;::::0;-1:-1:-1;;;;;16678:38:0;;::::1;::::0;16699:6;::::1;::::0;-1:-1:-1;;;;;;;;;;;16678:38:0;::::1;16727:6;:17:::0;;-1:-1:-1;;;;;;16727:17:0::1;-1:-1:-1::0;;;;;16727:17:0;;;::::1;::::0;;;::::1;::::0;;16508:244::o;49211:41::-;;;;;;:::o;48710:39::-;;;;:::o;4836:471::-;4894:7;5139:6;5135:47;;-1:-1:-1;5169:1:0;5162:8;;5135:47;5206:5;;;5210:1;5206;:5;:1;5230:5;;;;;:10;5222:56;;;;-1:-1:-1;;;5222:56:0;;;;;;;;;5298:1;4836:471;-1:-1:-1;;;4836:471:0:o;5783:132::-;5841:7;5868:39;5872:1;5875;5868:39;;;;;;;;;;;;;;;;;:3;:39::i;7975:106::-;8063:10;7975:106;:::o;44554:337::-;-1:-1:-1;;;;;44647:19:0;;44639:68;;;;-1:-1:-1;;;44639:68:0;;;;;;;;;-1:-1:-1;;;;;44726:21:0;;44718:68;;;;-1:-1:-1;;;44718:68:0;;;;;;;;;-1:-1:-1;;;;;44799:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;;:36;;;44851:32;;;;;44829:6;;44851:32;;;;;;;;;;44554:337;;;:::o;3946:136::-;4004:7;4031:43;4035:1;4038;4031:43;;;;;;;;;;;;;;;;;:3;:43::i;44899:917::-;-1:-1:-1;;;;;45045:18:0;;45037:68;;;;-1:-1:-1;;;45037:68:0;;;;;;;;;-1:-1:-1;;;;;45124:16:0;;45116:64;;;;-1:-1:-1;;;45116:64:0;;;;;;;;;45208:1;45199:6;:10;45191:64;;;;-1:-1:-1;;;45191:64:0;;;;;;;;;45268:42;45286:4;45292:2;45296:6;45304:5;45268:17;:42::i;:::-;45352:24;45367:4;45373:2;45352:14;:24::i;:::-;-1:-1:-1;;;;;45570:24:0;;45450:12;45570:24;;;:18;:24;;;;;;45465:4;;45570:24;;;:50;;-1:-1:-1;;;;;;45598:22:0;;;;;;:18;:22;;;;;;;;45570:50;:75;;;-1:-1:-1;45624:21:0;;;;45570:75;45566:123;;;-1:-1:-1;45672:5:0;45566:123;45767:41;45782:4;45788:2;45792:6;45800:7;45767:14;:41::i;:::-;44899:917;;;;;:::o;4385:192::-;4471:7;4507:12;4499:6;;;;4491:29;;;;-1:-1:-1;;;4491:29:0;;;;;;;;;;-1:-1:-1;;;4543:5:0;;;4385:192::o;41702:164::-;41744:7;41765:15;41782;41801:19;:17;:19::i;:::-;41764:56;;-1:-1:-1;41764:56:0;-1:-1:-1;41838:20:0;41764:56;;41838:20;:11;:20;:::i;:::-;41831:27;;;;41702:164;:::o;3482:181::-;3540:7;3572:5;;;3596:6;;;;3588:46;;;;-1:-1:-1;;;3588:46:0;;;;;;;;40498:419;40557:7;40566;40575;40584;40593;40602;40623:23;40648:12;40662:18;40684:20;40696:7;40684:11;:20::i;:::-;40622:82;;;;;;40716:15;40733:23;40758:12;40774:50;40786:7;40795:4;40801:10;40813;:8;:10::i;:::-;40774:11;:50::i;:::-;40715:109;;;;-1:-1:-1;40715:109:0;;-1:-1:-1;40875:15:0;;-1:-1:-1;40892:4:0;;-1:-1:-1;40898:10:0;;-1:-1:-1;40498:419:0;;-1:-1:-1;;;;;40498:419:0:o;43145:251::-;43192:7;;:12;:34;;;;-1:-1:-1;43208:13:0;;:18;43192:34;43188:47;;;43228:7;;43188:47;43265:7;;;43247:15;:25;43307:13;;;43283:21;:37;-1:-1:-1;43339:11:0;;;;43361:17;43145:251::o;46903:502::-;47002:15;47019:23;47044:12;47058:23;47083:12;47097:18;47119:19;47130:7;47119:10;:19::i;:::-;-1:-1:-1;;;;;47167:15:0;;;;;;:7;:15;;;;;;47001:137;;-1:-1:-1;47001:137:0;;-1:-1:-1;47001:137:0;;-1:-1:-1;47001:137:0;-1:-1:-1;47001:137:0;-1:-1:-1;47001:137:0;-1:-1:-1;47167:28:0;;47001:137;47167:28;:19;:28;:::i;:::-;-1:-1:-1;;;;;47149:15:0;;;;;;;:7;:15;;;;;;:46;;;;47227:18;;;;;;;:39;;47250:15;47227:39;:22;:39;:::i;:::-;-1:-1:-1;;;;;47206:18:0;;;;;;:7;:18;;;;;:60;47277:26;47292:10;47277:14;:26::i;:::-;47314:23;47326:4;47332;47314:11;:23::i;:::-;47370:9;-1:-1:-1;;;;;47353:44:0;47362:6;-1:-1:-1;;;;;47353:44:0;;47381:15;47353:44;;;;;;;;;;;;;;;46903:502;;;;;;;;;:::o;44280:134::-;44334:15;;44324:7;:25;44376:21;;44360:13;:37;44280:134::o;6411:278::-;6497:7;6532:12;6525:5;6517:28;;;;-1:-1:-1;;;6517:28:0;;;;;;;;;;;6556:9;6572:1;6568;:5;;;;;;;6411:278;-1:-1:-1;;;;;6411:278:0:o;52287:541::-;-1:-1:-1;;;;;52451:26:0;;;;;;:20;:26;;;;;;;;:35;;;:110;;-1:-1:-1;;;;;;52528:24:0;;;;;;:20;:24;;;;;;;;:33;52451:110;52433:388;;;52625:21;;52617:5;:29;:81;;;;;52669:29;;52650:15;:48;;52617:81;52613:197;;;52737:12;;52727:6;:22;;52719:75;;;;-1:-1:-1;;;52719:75:0;;;;;;;;;52287:541;;;;:::o;53031:2245::-;53382:28;53413:24;53431:4;53413:9;:24::i;:::-;53382:55;;53478:12;;53454:20;:36;53450:104;;-1:-1:-1;53530:12:0;;53450:104;53608:20;;53660:16;;53584:44;;;;;53660:16;;;;;53659:17;:40;;;;;53689:10;53659:40;:72;;;;;53720:11;-1:-1:-1;;;;;53712:19:0;:4;-1:-1:-1;;;;;53712:19:0;;;53659:72;:106;;;;-1:-1:-1;53744:21:0;;;;53659:106;:173;;;;-1:-1:-1;;;;;;53780:21:0;;53796:4;53780:21;:51;;;;;53819:11;-1:-1:-1;;;;;53805:26:0;:2;-1:-1:-1;;;;;53805:26:0;;53780:51;53778:54;53659:173;53641:1628;;;53976:20;;;-1:-1:-1;54100:17:0;54120:27;53976:20;54145:1;54120:27;:24;:27;:::i;:::-;54100:47;-1:-1:-1;54162:13:0;54178:42;54218:1;54178:35;:20;54100:47;54178:35;:24;:35;:::i;:42::-;54162:58;-1:-1:-1;54235:18:0;54256:31;:20;54162:58;54256:31;:24;:31;:::i;:::-;54235:52;-1:-1:-1;54304:30:0;54337:20;:9;54351:5;54337:20;:13;:20;:::i;:::-;54486:70;;-1:-1:-1;;;54486:70:0;;54304:53;;-1:-1:-1;54399:21:0;;54486:5;;:22;;:70;;54517:13;;54304:53;;54486:70;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;54486:70:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;54486:70:0;;;;54908:20;54931:41;54957:14;54931:21;:25;;:41;;;;:::i;:::-;54908:64;-1:-1:-1;54989:31:0;55023:19;54908:64;55040:1;55023:19;:16;:19;:::i;:::-;54989:53;;55100:5;:18;55127:13;55143:7;:5;:7::i;:::-;55152:10;55164:23;55100:88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;55100:88:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;55100:88:0;;;;55210:47;55225:5;55232:12;55246:10;55210:47;;;;;;;;;;;;;;;;;53641:1628;;;;;;;53031:2245;;;;:::o;45897:997::-;46010:7;46005:218;;46033:14;:12;:14::i;:::-;46091:47;46120:9;46131:6;46091:28;:47::i;:::-;46005:218;;;46180:31;46204:6;46180:23;:31::i;:::-;-1:-1:-1;;;;;46239:19:0;;;;;;:11;:19;;;;;;;;:46;;;;-1:-1:-1;;;;;;46263:22:0;;;;;;:11;:22;;;;;;;;46262:23;46239:46;46235:597;;;46302:48;46324:6;46332:9;46343:6;46302:21;:48::i;:::-;46235:597;;;-1:-1:-1;;;;;46373:19:0;;;;;;:11;:19;;;;;;;;46372:20;:46;;;;-1:-1:-1;;;;;;46396:22:0;;;;;;:11;:22;;;;;;;;46372:46;46368:464;;;46435:46;46455:6;46463:9;46474:6;46435:19;:46::i;46368:464::-;-1:-1:-1;;;;;46504:19:0;;;;;;:11;:19;;;;;;;;46503:20;:47;;;;-1:-1:-1;;;;;;46528:22:0;;;;;;:11;:22;;;;;;;;46527:23;46503:47;46499:333;;;46567:44;46585:6;46593:9;46604:6;46567:17;:44::i;46499:333::-;-1:-1:-1;;;;;46633:19:0;;;;;;:11;:19;;;;;;;;:45;;;;-1:-1:-1;;;;;;46656:22:0;;;;;;:11;:22;;;;;;;;46633:45;46629:203;;;46695:48;46717:6;46725:9;46736:6;46695:21;:48::i;46629:203::-;46776:44;46794:6;46802:9;46813:6;46776:17;:44::i;:::-;46849:7;46844:42;;46871:15;:13;:15::i;41874:556::-;41972:7;;42008;;41925;;;;;42026:289;42050:9;:16;42046:20;;42026:289;;;42116:7;42092;:21;42100:9;42110:1;42100:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42100:12:0;42092:21;;;;;;;;;;;;;:31;;:66;;;42151:7;42127;:21;42135:9;42145:1;42135:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42135:12:0;42127:21;;;;;;;;;;;;;:31;42092:66;42088:97;;;42168:7;;42177;;42160:25;;;;;;;;;42088:97;42210:34;42222:7;:21;42230:9;42240:1;42230:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42230:12:0;42222:21;;;;;;;;;;;;;42210:7;;:34;:11;:34;:::i;:::-;42200:44;;42269:34;42281:7;:21;42289:9;42299:1;42289:12;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;42289:12:0;42281:21;;;;;;;;;;;;;42269:7;;:34;:11;:34;:::i;:::-;42259:44;-1:-1:-1;42068:3:0;;42026:289;;;-1:-1:-1;42351:7:0;;42339;;:20;;;:11;:20;:::i;:::-;42329:7;:30;42325:61;;;42369:7;;42378;;42361:25;;;;;;;;42325:61;42405:7;;-1:-1:-1;42414:7:0;-1:-1:-1;41874:556:0;;;:::o;40925:330::-;40985:7;40994;41003;41023:12;41038:24;41054:7;41038:15;:24::i;:::-;41023:39;;41073:18;41094:30;41116:7;41094:21;:30::i;:::-;41073:51;-1:-1:-1;41135:23:0;41161:33;41073:51;41161:17;:7;41173:4;41161:17;:11;:17;:::i;:33::-;41135:59;41230:4;;-1:-1:-1;41236:10:0;;-1:-1:-1;40925:330:0;;-1:-1:-1;;;40925:330:0:o;41263:429::-;41378:7;;;;41434:24;:7;41446:11;41434:24;:11;:24;:::i;:::-;41416:42;-1:-1:-1;41469:12:0;41484:21;:4;41493:11;41484:21;:8;:21;:::i;:::-;41469:36;-1:-1:-1;41516:18:0;41537:27;:10;41552:11;41537:27;:14;:27;:::i;:::-;41516:48;-1:-1:-1;41575:23:0;41601:33;41516:48;41601:17;:7;41613:4;41601:17;:11;:17;:::i;:33::-;41653:7;;;;-1:-1:-1;41679:4:0;;-1:-1:-1;41263:429:0;;-1:-1:-1;;;;;;;41263:429:0:o;42438:355::-;42501:19;42523:10;:8;:10::i;:::-;42501:32;-1:-1:-1;42544:18:0;42565:27;:10;42501:32;42565:27;:14;:27;:::i;:::-;42644:4;42628:22;;;;:7;:22;;;;;;42544:48;;-1:-1:-1;42628:38:0;;42544:48;42628:38;:26;:38;:::i;:::-;42619:4;42603:22;;;;:7;:22;;;;;;;;:63;;;;42681:11;:26;;;;;;42677:108;;;42763:4;42747:22;;;;:7;:22;;;;;;:38;;42774:10;42747:38;:26;:38;:::i;:::-;42738:4;42722:22;;;;:7;:22;;;;;:63;42438:355;;;:::o;40340:147::-;40418:7;;:17;;40430:4;40418:17;:11;:17;:::i;:::-;40408:7;:27;40459:10;;:20;;40474:4;40459:20;:14;:20;:::i;:::-;40446:10;:33;-1:-1:-1;;40340:147:0:o;51811:468::-;51903:31;51937:20;51947:9;51937;:20::i;:::-;51903:54;;51968:29;52000:21;:19;:21::i;:::-;52220:19;;52106:165;;-1:-1:-1;;;52106:165:0;;51968:53;;-1:-1:-1;52106:5:0;;:25;;:165;;52146:23;;51968:53;;52254:6;;52106:165;;;;;;;;;;;;;;;;5:9:-1;2:2;;;27:1;24;17:12;2:2;52106:165:0;;;;8:9:-1;5:2;;;45:16;42:1;39;24:38;77:16;74:1;67:27;5:2;52106:165:0;;;;;;;101:4:-1;97:9;90:4;84;80:15;76:31;69:5;65:43;126:6;120:4;113:20;0:138;52106:165:0;;;;;;;;;-1:-1:-1;;;;;52070:33:0;;;;;;;:22;:33;;;;;;;:201;;;;52034:237;;;-1:-1:-1;;;51811:468:0:o;43447:813::-;43515:21;43552:66;43564:53;43574:42;43564:9;:53::i;43552:66::-;43515:103;-1:-1:-1;43631:11:0;;;;43724:36;43515:103;43724:17;:6;43735:5;43724:17;:10;:17;:::i;:36::-;43707:53;;43789:4;43779:6;:14;43775:342;;43816:2;43810:8;;43775:342;;;43850:4;43840:6;:14;43836:281;;43877:2;43871:8;;43836:281;;;43911:4;43901:6;:14;43897:220;;43938:2;43932:8;;43897:220;;;43972:4;43962:6;:14;43958:159;;43999:2;43993:8;;43958:159;;;44034:5;44024:6;:15;44020:97;;44062:2;44056:8;;44020:97;;;44103:2;44097:8;;44020:97;44137:18;44152:2;44137:10;:3;44145:1;44137:10;:7;:10;:::i;:18::-;44129:26;-1:-1:-1;44174:18:0;44189:2;44174:10;:3;44182:1;44174:10;:7;:10;:::i;:18::-;44205:7;:15;;;;-1:-1:-1;;44231:13:0;:21;-1:-1:-1;;;43447:813:0:o;47996:563::-;48099:15;48116:23;48141:12;48155:23;48180:12;48194:18;48216:19;48227:7;48216:10;:19::i;:::-;-1:-1:-1;;;;;48264:15:0;;;;;;:7;:15;;;;;;48098:137;;-1:-1:-1;48098:137:0;;-1:-1:-1;48098:137:0;;-1:-1:-1;48098:137:0;-1:-1:-1;48098:137:0;-1:-1:-1;48098:137:0;-1:-1:-1;48264:28:0;;48284:7;48264:28;:19;:28;:::i;:::-;-1:-1:-1;;;;;48246:15:0;;;;;;:7;:15;;;;;;;;:46;;;;48321:7;:15;;;;:28;;48341:7;48321:28;:19;:28;:::i;47413:575::-;47514:15;47531:23;47556:12;47570:23;47595:12;47609:18;47631:19;47642:7;47631:10;:19::i;:::-;-1:-1:-1;;;;;47679:15:0;;;;;;:7;:15;;;;;;47513:137;;-1:-1:-1;47513:137:0;;-1:-1:-1;47513:137:0;;-1:-1:-1;47513:137:0;-1:-1:-1;47513:137:0;-1:-1:-1;47513:137:0;-1:-1:-1;47679:28:0;;47513:137;47679:28;:19;:28;:::i;:::-;-1:-1:-1;;;;;47661:15:0;;;;;;;:7;:15;;;;;;;;:46;;;;47739:18;;;;;:7;:18;;;;;:39;;47762:15;47739:39;:22;:39;:::i;:::-;-1:-1:-1;;;;;47718:18:0;;;;;;:7;:18;;;;;;;;:60;;;;47810:7;:18;;;;:39;;47833:15;47810:39;:22;:39;:::i;38952:634::-;39055:15;39072:23;39097:12;39111:23;39136:12;39150:18;39172:19;39183:7;39172:10;:19::i;:::-;-1:-1:-1;;;;;39220:15:0;;;;;;:7;:15;;;;;;39054:137;;-1:-1:-1;39054:137:0;;-1:-1:-1;39054:137:0;;-1:-1:-1;39054:137:0;-1:-1:-1;39054:137:0;-1:-1:-1;39054:137:0;-1:-1:-1;39220:28:0;;39240:7;39220:28;:19;:28;:::i;:::-;-1:-1:-1;;;;;39202:15:0;;;;;;:7;:15;;;;;;;;:46;;;;39277:7;:15;;;;:28;;39297:7;39277:28;:19;:28;:::i;42801:156::-;42865:7;42892:57;42931:7;42892:20;42904:7;;42892;:11;;:20;;;;:::i;42965:168::-;43035:7;43062:63;43107:7;43062:26;43074:13;;43062:7;:11;;:26;;;;:::i;704:241:-1:-;;808:2;796:9;787:7;783:23;779:32;776:2;;;-1:-1;;814:12;776:2;85:6;72:20;97:33;124:5;97:33;;1216:382;;;1345:2;1333:9;1324:7;1320:23;1316:32;1313:2;;;-1:-1;;1351:12;1313:2;230:6;217:20;242:41;277:5;242:41;;;1403:71;1511:2;1550:22;;;;493:20;;-1:-1;;;1307:291;1605:366;;;1726:2;1714:9;1705:7;1701:23;1697:32;1694:2;;;-1:-1;;1732:12;1694:2;85:6;72:20;97:33;124:5;97:33;;;1784:63;-1:-1;1884:2;1923:22;;72:20;97:33;72:20;97:33;;;1892:63;;;;1688:283;;;;;;1978:491;;;;2116:2;2104:9;2095:7;2091:23;2087:32;2084:2;;;-1:-1;;2122:12;2084:2;85:6;72:20;97:33;124:5;97:33;;;2174:63;-1:-1;2274:2;2313:22;;72:20;97:33;72:20;97:33;;;2078:391;;2282:63;;-1:-1;;;2382:2;2421:22;;;;493:20;;2078:391;2476:360;;;2594:2;2582:9;2573:7;2569:23;2565:32;2562:2;;;-1:-1;;2600:12;2562:2;85:6;72:20;97:33;124:5;97:33;;;2652:63;-1:-1;2752:2;2788:22;;359:20;29660:13;;29653:21;31380:32;;31370:2;;-1:-1;;31416:12;2843:366;;;2964:2;2952:9;2943:7;2939:23;2935:32;2932:2;;;-1:-1;;2970:12;3216:235;;3317:2;3305:9;3296:7;3292:23;3288:32;3285:2;;;-1:-1;;3323:12;3285:2;372:6;359:20;384:30;408:5;384:30;;3458:241;;3562:2;3550:9;3541:7;3537:23;3533:32;3530:2;;;-1:-1;;3568:12;3530:2;-1:-1;493:20;;3524:175;-1:-1;3524:175;3706:263;;3821:2;3809:9;3800:7;3796:23;3792:32;3789:2;;;-1:-1;;3827:12;3789:2;-1:-1;641:13;;3783:186;-1:-1;3783:186;3976:360;;;4094:2;4082:9;4073:7;4069:23;4065:32;4062:2;;;-1:-1;;4100:12;4062:2;506:6;493:20;4152:63;;4252:2;4292:9;4288:22;359:20;384:30;408:5;384:30;;14666:222;-1:-1;;;;;29748:54;;;;4579:45;;14793:2;14778:18;;14764:124;15156:460;-1:-1;;;;;29748:54;;;;4422:58;;15519:2;15504:18;;13989:37;;;;15602:2;15587:18;;13989:37;15347:2;15332:18;;15318:298;15623:596;-1:-1;;;;;29748:54;;;4579:45;;29748:54;;;;16023:2;16008:18;;4579:45;16114:2;16099:18;;13989:37;16205:2;16190:18;;13989:37;;;;15842:3;15827:19;;15813:406;16226:357;-1:-1;;;;;29748:54;;;;4579:45;;16569:2;16554:18;;13989:37;16389:2;16374:18;;16360:223;16590:210;29660:13;;29653:21;4949:34;;16711:2;16696:18;;16682:118;17086:310;;17233:2;;17254:17;17247:47;5323:5;29024:12;29334:6;17233:2;17222:9;17218:18;29322:19;-1:-1;30751:101;30765:6;30762:1;30759:13;30751:101;;;30832:11;;;;;30826:18;30813:11;;;29362:14;30813:11;30806:39;30780:10;;30751:101;;;30867:6;30864:1;30861:13;30858:2;;;-1:-1;29362:14;30923:6;17222:9;30914:16;;30907:27;30858:2;-1:-1;31039:7;31023:14;-1:-1;;31019:28;5481:39;;;;29362:14;5481:39;;17204:192;-1:-1;;;17204:192;17403:416;17603:2;17617:47;;;5757:2;17588:18;;;29322:19;5793:34;29362:14;;;5773:55;-1:-1;;;5848:12;;;5841:25;5885:12;;;17574:245;17826:416;18026:2;18040:47;;;6136:2;18011:18;;;29322:19;6172:34;29362:14;;;6152:55;-1:-1;;;6227:12;;;6220:29;6268:12;;;17997:245;18249:416;18449:2;18463:47;;;6519:2;18434:18;;;29322:19;6555:34;29362:14;;;6535:55;-1:-1;;;6610:12;;;6603:28;6650:12;;;18420:245;18672:416;18872:2;18886:47;;;6901:2;18857:18;;;29322:19;6937:34;29362:14;;;6917:55;7006:26;6992:12;;;6985:48;7052:12;;;18843:245;19095:416;19295:2;19309:47;;;7303:2;19280:18;;;29322:19;7339:34;29362:14;;;7319:55;-1:-1;;;7394:12;;;7387:34;7440:12;;;19266:245;19518:416;19718:2;19732:47;;;7691:2;19703:18;;;29322:19;7727:34;29362:14;;;7707:55;-1:-1;;;7782:12;;;7775:30;7824:12;;;19689:245;19941:416;20141:2;20155:47;;;8075:2;20126:18;;;29322:19;8111:29;29362:14;;;8091:50;8160:12;;;20112:245;20364:416;20564:2;20578:47;;;8411:2;20549:18;;;29322:19;8447:29;29362:14;;;8427:50;8496:12;;;20535:245;20787:416;20987:2;21001:47;;;8747:2;20972:18;;;29322:19;8783:33;29362:14;;;8763:54;8836:12;;;20958:245;21210:416;21410:2;21424:47;;;9087:2;21395:18;;;29322:19;9123:34;29362:14;;;9103:55;-1:-1;;;9178:12;;;9171:32;9222:12;;;21381:245;21633:416;21833:2;21847:47;;;9473:2;21818:18;;;29322:19;-1:-1;;;29362:14;;;9489:40;9548:12;;;21804:245;22056:416;22256:2;22270:47;;;9799:2;22241:18;;;29322:19;9835:34;29362:14;;;9815:55;-1:-1;;;9890:12;;;9883:28;9930:12;;;22227:245;22479:416;22679:2;22693:47;;;10181:2;22664:18;;;29322:19;10217:34;29362:14;;;10197:55;-1:-1;;;10272:12;;;10265:25;10309:12;;;22650:245;22902:416;23102:2;23116:47;;;23087:18;;;29322:19;10596:34;29362:14;;;10576:55;10650:12;;;23073:245;23325:416;23525:2;23539:47;;;10901:2;23510:18;;;29322:19;10937:34;29362:14;;;10917:55;-1:-1;;;10992:12;;;10985:33;11037:12;;;23496:245;23748:416;23948:2;23962:47;;;11288:2;23933:18;;;29322:19;11324:34;29362:14;;;11304:55;-1:-1;;;11379:12;;;11372:27;11418:12;;;23919:245;24171:416;24371:2;24385:47;;;11974:2;24356:18;;;29322:19;12010:31;29362:14;;;11990:52;12061:12;;;24342:245;24594:416;24794:2;24808:47;;;12312:2;24779:18;;;29322:19;12348:33;29362:14;;;12328:54;12401:12;;;24765:245;25017:416;25217:2;25231:47;;;12652:2;25202:18;;;29322:19;12688:33;29362:14;;;12668:54;12741:12;;;25188:245;25440:416;25640:2;25654:47;;;12992:2;25625:18;;;29322:19;13028:34;29362:14;;;13008:55;-1:-1;;;13083:12;;;13076:36;13131:12;;;25611:245;25863:416;26063:2;26077:47;;;13382:2;26048:18;;;29322:19;13418:34;29362:14;;;13398:55;-1:-1;;;13473:12;;;13466:26;13511:12;;;26034:245;26286:416;26486:2;26500:47;;;13762:2;26471:18;;;29322:19;13798:34;29362:14;;;13778:55;-1:-1;;;13853:12;;;13846:27;13892:12;;;26457:245;26709:222;13989:37;;;26836:2;26821:18;;26807:124;26938:444;13989:37;;;27285:2;27270:18;;13989:37;;;;27368:2;27353:18;;13989:37;27121:2;27106:18;;27092:290;27389:596;13989:37;;;27789:2;27774:18;;13989:37;;;;27880:2;27865:18;;13989:37;27971:2;27956:18;;13989:37;27608:3;27593:19;;27579:406;27992:716;13989:37;;;28420:2;28405:18;;13989:37;;;;28511:2;28496:18;;13989:37;;;;28602:2;28587:18;;13989:37;-1:-1;;;;;29748:54;28693:3;28678:19;;4579:45;28239:3;28224:19;;28210:498;28715:214;29964:4;29953:16;;;;14233:35;;28838:2;28823:18;;28809:120;31060:117;-1:-1;;;;;29748:54;;31119:35;;31109:2;;31168:1;;31158:12;31109:2;31103:74;;31324:111;31405:5;29660:13;29653:21;31383:5;31380:32;31370:2;;31426:1;;31416:12

Swarm Source

ipfs://2e3452be645d9f06b7221cb3dd60a460a415f038583bb736f58ae4d5485eee50
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.