Contract 0x2789Da63fC511162d5c99540fDE63230DbCa90BF

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x432be70c42be43a1d14619df40ce4d049e7810dcfac675c85e8a72fa46f0f5caPause Public Sal...113761312021-09-30 22:00:3721 days 18 hrs ago0xb4d11f3e2c09753b06c3a459850aac1fc5896fd2 IN  0x2789da63fc511162d5c99540fde63230dbca90bf0 BNB0.0002212
0x45260a6488717a112a5a0c0d122eaffcebf6b95b1eca8f3562f611df49760774Public Sale113759242021-09-30 21:50:1621 days 18 hrs ago0x3fe65955ddd05a75022af4c241a9ff2fb33e4ef3 IN  0x2789da63fc511162d5c99540fde63230dbca90bf1.62075 BNB0.000470405
0xc1a6767818d050b1cf6186cd2e84e8ccfc41161806e2cb87c9a5222214206eb9Public Sale113720952021-09-30 18:37:5921 days 21 hrs ago0x5e1cf14bf64c64766d03022cfa4717a892a5e44e IN  0x2789da63fc511162d5c99540fde63230dbca90bf0.12966 BNB0.000470405
0x9e86f9a87f258b4bda245bb0cd62deb3f11d1dfcaab6084c86f84a49689012fcPublic Sale113718322021-09-30 18:24:4221 days 21 hrs ago0x55b3dce3615da8a7aad37acb309c1d6929152555 IN  0x2789da63fc511162d5c99540fde63230dbca90bf0.141999999999999 BNB0.000470405
0xef0354bc2d33637b8173505c79b9f01537d63e7d9f2b9f8495b79fcc4e1dd902Mint Half By Own...113707512021-09-30 17:30:3021 days 22 hrs ago0xb4d11f3e2c09753b06c3a459850aac1fc5896fd2 IN  0x2789da63fc511162d5c99540fde63230dbca90bf0 BNB0.00043633
0x30802b87f4cd5e0e1fdf9bfb8c808004d71c83ec9aaff6511dd6b7c38ffc38f6Public Sale113698792021-09-30 16:45:0821 days 23 hrs ago0x13eb496ed9e617157aed887b700971bea6beb2c4 IN  0x2789da63fc511162d5c99540fde63230dbca90bf13.19 BNB0.000545405
0x95e7971597950da42c268746e1a9f08db68ec763b0284f7f20421c2a26a82a94Public Sale113675762021-09-30 14:48:1722 days 1 hr ago0x2a9f0728027ed80cce9269eacf4f54276b5f4ee9 IN  0x2789da63fc511162d5c99540fde63230dbca90bf3 BNB0.000545405
0xe41c6e68ff85a0ad10960928c71557b38ba39fbdadad9821078d39a0b4240e09Public Sale113616452021-09-30 9:48:2722 days 6 hrs ago0x5e1cf14bf64c64766d03022cfa4717a892a5e44e IN  0x2789da63fc511162d5c99540fde63230dbca90bf0.12966 BNB0.000545405
0x37a595f7ae60ba05964a91c981f666fdf2508b7bc55ef8b8e1c6e2c8c760d976Public Sale113583302021-09-30 7:01:3422 days 8 hrs ago0x0687d9687c79a5b5e87571b874fa75d16edde958 IN  0x2789da63fc511162d5c99540fde63230dbca90bf0.085 BNB0.000470405
0x1fcf6908d82785d557825ebc0306a82ce5c165414a8b31f7ebaadc34869a53fePublic Sale113580662021-09-30 6:48:1522 days 9 hrs ago0x0687d9687c79a5b5e87571b874fa75d16edde958 IN  0x2789da63fc511162d5c99540fde63230dbca90bf2.5 BNB0.000470405
0x6b7671f9e9bcc696f077b140e73c2c258dd8ac9151229b41888894f13d3f5e16Public Sale113519412021-09-30 1:38:0122 days 14 hrs ago0x41ebfe51bad2a6a86a55575bcd8ba2bcc5e824bc IN  0x2789da63fc511162d5c99540fde63230dbca90bf2.614 BNB0.000545405
0xd8b043c4471af2e20a0d7d47b3333710768ac711d67eeda69791e6faf2288121Public Sale113481872021-09-29 22:29:2622 days 17 hrs ago0xcf7eed37ff08cf941b1f6acc50a4811c8b808490 IN  0x2789da63fc511162d5c99540fde63230dbca90bf0.12966 BNB0.000470405
0x57e7951e3d18a803d0f1a05c01227af5775c0e100e923a07e6fa550e312ae883Public Sale113419792021-09-29 17:16:2222 days 22 hrs ago0x77c847aeef41bdc25e47ecd1531773d1973ccca3 IN  0x2789da63fc511162d5c99540fde63230dbca90bf0.6470034 BNB0.000545405
0xd183d69f2e9a3cde600c73d70fdcc2631c59bf09f5c0a9f5ed5221e8563e0af6Public Sale113151182021-09-28 18:40:4123 days 21 hrs ago0xb8914773877d314143ba61214bbbfc255e69e0fc IN  0x2789da63fc511162d5c99540fde63230dbca90bf0.985416 BNB0.000545405
0x3ec35dfb7aac765fc9791b65fa141e09306ce11a2326b5a005743cb6dac241acPublic Sale112996982021-09-28 5:40:5524 days 10 hrs ago0xf811e68003532112dd13959cdf75b8259a88c01f IN  0x2789da63fc511162d5c99540fde63230dbca90bf16.2075 BNB0.000545405
0x01797d6679feff6d69fdb732fad24ef12e3dc5f9d44492b59e88a2fed835e8d0Public Sale112864232021-09-27 18:27:4324 days 21 hrs ago0xafb291e05db0f3c375cc1faa937b408ae41a67b7 IN  0x2789da63fc511162d5c99540fde63230dbca90bf0.1 BNB0.00188162
0x91bb3ad3043a67a9f54bb78e12bccc95c8d9ac2b0bacc19a6de2e3604db7fb98Public Sale112816042021-09-27 14:26:2225 days 1 hr ago0x23924dc6091bf986b32cae408e5cf0021f7b3250 IN  0x2789da63fc511162d5c99540fde63230dbca90bf0.103 BNB0.000545405
0xcf25b6e1ec43e2befc2fc95b4949a67bc9c682559fd58325f5853cbf3149e988Public Sale112547302021-09-26 15:46:5926 days 13 mins ago0x03f1468e38cdb580d3afb2f3c720943ccf99a301 IN  0x2789da63fc511162d5c99540fde63230dbca90bf0.061 BNB0.000545405
0xb1432fc6c259084502233f0ee00d75ec92a35e42b44b61e7d9c161df2e8da212Public Sale112516792021-09-26 13:13:4126 days 2 hrs ago0xcc30079d298fad025981e8bf1784fade2f297121 IN  0x2789da63fc511162d5c99540fde63230dbca90bf0.975 BNB0.000545405
0xf0e1920da77c175a625124306d9d1119092864a91a07753325af4a5d1918e721Public Sale111738482021-09-23 20:03:0228 days 19 hrs ago0x0687d9687c79a5b5e87571b874fa75d16edde958 IN  0x2789da63fc511162d5c99540fde63230dbca90bf0.99 BNB0.000545405
0xb0809654106890bbbc0bf53589dc4aa310d123f97c472cdcbe579ac0f5065576Public Sale111688972021-09-23 15:54:3829 days 6 mins ago0xd3275f3ea7cc4ffb992fa4e850976023dcb6d3fe IN  0x2789da63fc511162d5c99540fde63230dbca90bf0.95 BNB0.000470405
0x72737c41d553c1708afae6dcca9ad8611c38a266919f45436b7954b374c2483bPublic Sale111687532021-09-23 15:47:2629 days 13 mins ago0xd3275f3ea7cc4ffb992fa4e850976023dcb6d3fe IN  0x2789da63fc511162d5c99540fde63230dbca90bf0.03 BNB0.000545405
0xa6bd073dea38a4ed65befe643436b9b3debaad5ccd3d9e42a81342dae0f60597Public Sale110219262021-09-18 12:37:1534 days 3 hrs ago0x4a3e82bf771f74fafbf56000e1f5f812436d90ad IN  0x2789da63fc511162d5c99540fde63230dbca90bf0.14 BNB0.000545405
0xc7e1353d807b4582842c3307cab37125dce1ce6408810e557f35270b231c83e1Public Sale110020782021-09-17 20:03:0434 days 19 hrs ago0xafb291e05db0f3c375cc1faa937b408ae41a67b7 IN  0x2789da63fc511162d5c99540fde63230dbca90bf0.45381 BNB0.000470405
0xd3451360bd334bceb841a49028436370a57281eb85e7ff53f3704f43f775d7fdPublic Sale109912272021-09-17 10:59:4735 days 5 hrs ago0x6181fcbdb37c092d6c28ee7675a6ce1bde00e3a6 IN  0x2789da63fc511162d5c99540fde63230dbca90bf2.64 BNB0.000545405
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x45260a6488717a112a5a0c0d122eaffcebf6b95b1eca8f3562f611df49760774113759242021-09-30 21:50:1621 days 18 hrs ago 0x2789da63fc511162d5c99540fde63230dbca90bf0xb4d11f3e2c09753b06c3a459850aac1fc5896fd21.62075 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago PancakeSwap: Router v2 0x2789da63fc511162d5c99540fde63230dbca90bf0.000000011014380612 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago 0x2789da63fc511162d5c99540fde63230dbca90bf PancakeSwap: Router v20.000004405752256211 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago 0x2789da63fc511162d5c99540fde63230dbca90bf PancakeSwap: Router v20.000004405752256211 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago PancakeSwap: Router v2 0x2789da63fc511162d5c99540fde63230dbca90bf0.000000004405752139 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago 0x2789da63fc511162d5c99540fde63230dbca90bf PancakeSwap: Router v20.000001762300902484 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago 0x2789da63fc511162d5c99540fde63230dbca90bf PancakeSwap: Router v20.000001762300902484 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago PancakeSwap: Router v2 0x2789da63fc511162d5c99540fde63230dbca90bf0.000000015419985163 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago 0x2789da63fc511162d5c99540fde63230dbca90bf PancakeSwap: Router v20.000006168053158696 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago 0x2789da63fc511162d5c99540fde63230dbca90bf PancakeSwap: Router v20.000006168053158696 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago PancakeSwap: Router v2 0x2789da63fc511162d5c99540fde63230dbca90bf0.000000011430602979 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago 0x2789da63fc511162d5c99540fde63230dbca90bf PancakeSwap: Router v20.000003524601804969 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago 0x2789da63fc511162d5c99540fde63230dbca90bf PancakeSwap: Router v20.000003524601804969 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago PancakeSwap: Router v2 0x2789da63fc511162d5c99540fde63230dbca90bf0.000000004405751785 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago 0x2789da63fc511162d5c99540fde63230dbca90bf PancakeSwap: Router v20.000001762300902484 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago 0x2789da63fc511162d5c99540fde63230dbca90bf PancakeSwap: Router v20.000001762300902484 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago PancakeSwap: Router v2 0x2789da63fc511162d5c99540fde63230dbca90bf0.000035246018049695 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago PancakeSwap: Router v2 0x2789da63fc511162d5c99540fde63230dbca90bf0.000001110488713229 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago 0x2789da63fc511162d5c99540fde63230dbca90bf PancakeSwap: Router v20.000008177369979565 BNB
0x79d0b434507cd2bdad5dbfe4a3d0a6487b176bfb5455d0023cc58e43b707bb68113734782021-09-30 19:47:4921 days 20 hrs ago PancakeSwap: Router v2 0x2789da63fc511162d5c99540fde63230dbca90bf0.000008177369979565 BNB
0xc1a6767818d050b1cf6186cd2e84e8ccfc41161806e2cb87c9a5222214206eb9113720952021-09-30 18:37:5921 days 21 hrs ago 0x2789da63fc511162d5c99540fde63230dbca90bf0xb4d11f3e2c09753b06c3a459850aac1fc5896fd20.12966 BNB
0x9e86f9a87f258b4bda245bb0cd62deb3f11d1dfcaab6084c86f84a49689012fc113718322021-09-30 18:24:4221 days 21 hrs ago 0x2789da63fc511162d5c99540fde63230dbca90bf0xb4d11f3e2c09753b06c3a459850aac1fc5896fd20.141999999999999984 BNB
0x4fd5e4387fe485e38cd3d0a26ea1253635057ad36a1c576c8cc713f8bd30d6f0113715502021-09-30 18:10:3621 days 21 hrs ago PancakeSwap: Router v2 0x2789da63fc511162d5c99540fde63230dbca90bf0.000000451616142416 BNB
0x4fd5e4387fe485e38cd3d0a26ea1253635057ad36a1c576c8cc713f8bd30d6f0113715502021-09-30 18:10:3621 days 21 hrs ago 0x2789da63fc511162d5c99540fde63230dbca90bf PancakeSwap: Router v20.000180646476459672 BNB
0x4fd5e4387fe485e38cd3d0a26ea1253635057ad36a1c576c8cc713f8bd30d6f0113715502021-09-30 18:10:3621 days 21 hrs ago 0x2789da63fc511162d5c99540fde63230dbca90bf PancakeSwap: Router v20.000180646476459672 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PulseManager

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 11 : PulseManager.sol
// SPDX-License-Identifier: Unlicensed
pragma solidity ^0.6.12;
import "./IPulseManager.sol";
import "../openzeppelin/contracts/token/IToken.sol";
import "../openzeppelin/contracts/libraries/Ownable.sol";
import "../openzeppelin/contracts/libraries/SafeMath.sol";
import "../openzeppelin/contracts/token/IERC20.sol";
import "../pancakeswap/interfaces/IPancakeRouter02.sol";
import "../pancakeswap/interfaces/IPancakeFactory.sol";
import "../pancakeswap/interfaces/IPancakePair.sol";

contract PulseManager is IPulseManager, Ownable {
    using SafeMath for uint256;

    uint256 private creationTime = 0;
    uint256 public tokenPrice = 100000000000000000;

    bool public publicSalePaused = true;
    uint256 public publicSaleMintedTokens = 0;

    uint256 private tokensMintedByOwnerFromHalf = 1000000000;
    uint256 private periodicMintedTokens = 0;

    address public pulseTokenAddress;
    IERC20 private pulseToken = IERC20(0x00);
    IPancakeRouter02 private pancakeSwapRouter;
    IPancakeFactory private factory;
    mapping(address => bool) public isTokenInReviveBasket;

    address private pancakeSwapRouterAddress = 0x10ED43C718714eb63d5aA57B78B54704E256024E;

    struct reviveBasketToken {
        address tokenAddress;
        uint256 weight;
    }

    reviveBasketToken[] public reviveBasketTokens;
    uint256 private reviveBasketWeight = 0;

    event SetTokenAddress(address indexed user, address _tokenAddress);
    event SetTokenPrice(address indexed user, uint256 _tokenPrice);
    event MintHalfByOwner(address indexed user, address _to, uint256 _amount);
    event InitPublicSale(address indexed user);
    event PausePublicSale(address indexed user);
    event PeriodicMint(address indexed user, uint256 _amountToBeMinted);
    event AddToken(address indexed user, address _tokenAddress, uint256 _tokenWeight);
    event RemoveToken(address indexed user, address _tokenAddress);
    event RedeemLpTokens(address indexed user, address _tokenAddress, uint256 _lpTokens);
    event RedeemLpTokensPulse(address indexed user, uint256 _lpTokens);
    event BurnRemainingBNB(address indexed user, uint256 _amount);
    event BurnRemainingPulse(address indexed user, uint256 _amount);

    constructor(address _pancakeSwapRouterAddress) public {
        creationTime = block.timestamp;
        pancakeSwapRouterAddress = _pancakeSwapRouterAddress;
        pancakeSwapRouter = IPancakeRouter02(
            _pancakeSwapRouterAddress
        );
        factory = IPancakeFactory(pancakeSwapRouter.factory());
    }

    //used to set the address of the PULSE token
    function setTokenAddress(address _tokenAddress) external onlyOwner {
        pulseToken = IERC20(_tokenAddress);
        pulseTokenAddress = _tokenAddress;
        emit SetTokenAddress(_msgSender(), _tokenAddress);
    }

    //used to set the price of the PULSE token
    function setTokenPrice(uint256 _tokenPrice) external onlyOwner {
        tokenPrice = _tokenPrice;
        emit SetTokenPrice(_msgSender(), _tokenPrice);
    }

    //converts percentage to amount from 1000000000
    function _percentageToAmountMintedToken(uint256 _percentage)
        private
        pure
        returns (uint256)
    {
        //maximum supply divided by 100
        uint256 maximumSupply = 10**16;
        maximumSupply = maximumSupply.mul(_percentage);
        return maximumSupply;
    }

    //used to mint half of the total tokens to the owner
    function mintHalfByOwner(address _to, uint256 _amount) external onlyOwner {
        require(
            _percentageToAmountMintedToken(50)  >= tokensMintedByOwnerFromHalf.add(_amount),
            "Mint: you can mint a maximum amount of 50% from total amount of tokens"
        );
        pulseToken.mint(_to, _amount);
        tokensMintedByOwnerFromHalf = tokensMintedByOwnerFromHalf.add(_amount);
        emit MintHalfByOwner(_msgSender(), _to, _amount);
    }

    //used to make publicSale function callable
    function initPublicSale() external onlyOwner {
        publicSalePaused = false;
        emit InitPublicSale(_msgSender());
    }

    //used to make publicSale function uncallable
    function pausePublicSale() external onlyOwner {
        publicSalePaused = true;
        emit PausePublicSale(_msgSender());
    }

    //used to buy tokens with BNB
    function publicSale() external payable {
        uint256 bnb = msg.value;
        uint256 pulseToBeBought = bnb.mul(10**9) / tokenPrice;
        uint256 maxMintablePs = _percentageToAmountMintedToken(10);
        require(
            publicSalePaused == false,
            "Public sale: public sale is paused or it has stopped"
        );
        require(
            publicSaleMintedTokens + pulseToBeBought <= maxMintablePs,
            "Public sale: you need to buy less Pulse"
        );
        payable(owner()).transfer(msg.value);
        pulseToken.mint(_msgSender(), pulseToBeBought);
        publicSaleMintedTokens = publicSaleMintedTokens.add(pulseToBeBought);
    }

    //used to redeem a specific amount of tokens after a period of months established below
    //if the max mintable amount of tokens is not claimed at the specified time, the remaining
    //amount will be able to the next reward so the owner does not need to claim all the tokens in one trance
    function periodicMint(uint256 _amountToBeMinted) external onlyOwner {
        require(
            _amountToBeMinted > 0,
            "Periodic mint: amount to be minted should be greater than 0"
        );
        uint256 month = 30 days;
        //stores the max amount of tokens that the owner can mint now
        uint256 canMint = 0;
        //used to store the max amount of tokens to be minted, for each reward
        uint256 amountLimit = 0;

        //1: 5% after 6 months
        if (creationTime + month.mul(6) <= block.timestamp) {
            amountLimit = _percentageToAmountMintedToken(5);
            //calculate the remaining amount that can be minted from this reward
            if (periodicMintedTokens < amountLimit) {
                canMint = canMint.add(amountLimit.sub(periodicMintedTokens));
            }
        }
        //2: 10% after 12 months
        if (creationTime + month.mul(12) <= block.timestamp) {
            amountLimit = _percentageToAmountMintedToken(10);
            //calculate the remaining amount that can be minted from this reward
            if (periodicMintedTokens < amountLimit) {
                canMint = canMint.add(amountLimit.sub(periodicMintedTokens));
            }
        }
        //3: 10% after 18 months
        if (creationTime + month.mul(18) <= block.timestamp) {
            amountLimit = _percentageToAmountMintedToken(10);
            //calculate the remaining amount that can be minted from this reward
            if (periodicMintedTokens < amountLimit) {
                canMint = canMint.add(amountLimit.sub(periodicMintedTokens));
            }
        }
        //4: 15% after 24 months
        if (creationTime + month.mul(24) <= block.timestamp) {
            amountLimit = _percentageToAmountMintedToken(15);
            //calculate the remaining amount that can be minted from this reward
            if (periodicMintedTokens < amountLimit) {
                canMint = canMint.add(amountLimit.sub(periodicMintedTokens));
            }
        }
        require(
            canMint >= _amountToBeMinted,
            "Pulse: you need to mint less tokens"
        );
        pulseToken.mint(_msgSender(), _amountToBeMinted);
        periodicMintedTokens = periodicMintedTokens.add(_amountToBeMinted);
        
        emit PeriodicMint(_msgSender(), _amountToBeMinted);
    }

    //returns the toal amount of minted tokens
    function getMintedTokensTotal() external view returns (uint256) {
        uint256 totalMinted = publicSaleMintedTokens.add(periodicMintedTokens);
        totalMinted = totalMinted.add(tokensMintedByOwnerFromHalf);
        return totalMinted;
    }

    receive() external payable {}

    //adds a token to the revive basket tokens array
    function addToken(address _tokenAddress, uint256 _tokenWeight)
        external
        onlyOwner
    {
        require(isTokenInReviveBasket[_tokenAddress] == false, "Token is already in revive basket!");
        reviveBasketWeight = reviveBasketWeight.add(_tokenWeight);
        reviveBasketToken memory token = reviveBasketToken(
            _tokenAddress,
            _tokenWeight
        );
        reviveBasketTokens.push(token);
        isTokenInReviveBasket[_tokenAddress] = true;
        emit AddToken(_msgSender(), _tokenAddress, _tokenWeight);
    }

    //removes a token from the revive basket tokens array
    function removeToken(address _tokenAddress) external onlyOwner {
        for (uint256 i = 0; i < reviveBasketTokens.length; i++) {
            if (reviveBasketTokens[i].tokenAddress == _tokenAddress) {
                reviveBasketWeight = reviveBasketWeight.sub(
                    reviveBasketTokens[i].weight
                );
                reviveBasketTokens[i] = reviveBasketTokens[
                    reviveBasketTokens.length.sub(1)
                ];
                reviveBasketTokens.pop();
                isTokenInReviveBasket[_tokenAddress] = false;
                emit RemoveToken(_msgSender(), _tokenAddress);
                break;
            }
        }
    }

    function getTokenWeight(address _tokenAddress)
        public
        view
        returns (uint256)
    {
        for (uint256 i = 0; i < reviveBasketTokens.length; i++) {
            if (reviveBasketTokens[i].tokenAddress == _tokenAddress) {
                return reviveBasketTokens[i].weight;
            }
        }
        return 0;
    }

    //returns the amount of bnb that can be used to buy a specific token based
    // on the total bnb amount (_totalBalance) and the token's weight (_tokenWeight)
    function _getBnbAmountToBeUsed(uint256 _totalBalance, uint256 _tokenWeight)
        private
        view
        returns (uint256)
    {
        uint256 amount = (_totalBalance).mul(_tokenWeight).div(reviveBasketWeight);
        return amount;
    }

    //used to swap "_tokenAmount" of tokens of the specified token (_tokenAddress)
    // into bnb and returns the resulted amount
    function _swapExactTokensForBnb(uint256 _tokenAmount, address _tokenAddress)
        private
        returns (uint256)
    {
        uint256 initialBalance = address(this).balance;

        IERC20 tokenContract = IERC20(_tokenAddress);

        tokenContract.approve(
            pancakeSwapRouterAddress,
            ~uint256(0)
        );

        // generate the uniswap pair path of token -> bnb
        address[] memory path = new address[](2);
        path[0] = _tokenAddress;
        path[1] = pancakeSwapRouter.WETH();

        pancakeSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            _tokenAmount,
            0, // accept any amount of bnb
            path,
            address(this),
            block.timestamp + 100 days
        );
        return address(this).balance.sub(initialBalance);
    }

    //swap half of the "_bnbAmount" into the specified token and add liquidity to the BNB -> token
    //pool with the remaining half of the "_bnbAmount"
    function _buyToken(reviveBasketToken memory _token, uint256 _bnbAmount)
        private
    {
        IERC20 tokenContract = IERC20(_token.tokenAddress);

        // generate the uniswap pair path of BNB -> token
        address[] memory path = new address[](2);
        path[0] = pancakeSwapRouter.WETH();
        path[1] = _token.tokenAddress;

        //get pair address of the BNB -> token pair
        address pairAddress = factory.getPair(pancakeSwapRouter.WETH(), _token.tokenAddress);

        //if pair don't exist
        if(pairAddress == address(0)) return;

        // capture the contract's current "token" balance.
        // this is so that we can capture exactly the amount of "token" that the
        // swap creates, and not make the liquidity event include any "token" that
        // has been manually sent to the contract
        uint256 tokenAmount = tokenContract.balanceOf(address(this));
        pancakeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: _bnbAmount / 2
        }(0, path, address(this), block.timestamp + 100 days);
        // how much "token" did we just swap into?
        tokenAmount = tokenContract.balanceOf(address(this)).sub(tokenAmount);

        tokenContract.approve(
            pancakeSwapRouterAddress,
            tokenAmount
        );
       //adds liquidity to the BNB -> token
       pancakeSwapRouter.addLiquidityETH{value: _bnbAmount / 2}(
            _token.tokenAddress,
            tokenAmount,
            0,
            0,
            address(this),
            block.timestamp + 100 days
        );
    }

    function handleReviveBasket(uint256 _pulseAmount)
        public
        override
        returns (bool)
    {
        require(_msgSender() == pulseTokenAddress, "Revive basket: this function can only be called by PULSE Token Contract");
        //swap all the received PULSE into BNB
        uint256 bnbAmount = _swapExactTokensForBnb(_pulseAmount, pulseTokenAddress);
        for (uint256 i = 0; i < reviveBasketTokens.length; i++) {
            _buyToken(
                reviveBasketTokens[i],
                _getBnbAmountToBeUsed(bnbAmount, reviveBasketTokens[i].weight)
            );
        }
        return true;
    }

    function _convertTokenLpsIntoBnb(address _tokenAddress, uint256 _lpTokens)
        private
        returns (uint256)
    {

        address pairAddress = factory.getPair(pancakeSwapRouter.WETH(), _tokenAddress);

        if(pairAddress == address(0)) return 0;

        IPancakePair pair = IPancakePair(pairAddress);

        IERC20 token = IERC20(_tokenAddress);

        if(_lpTokens > pair.balanceOf(address(this))) {
            return 0;
        }

        //approve the router to use all the lp's of this contract
        pair.approve(
            pancakeSwapRouterAddress,
            _lpTokens
        );

        //swap all the LP's into BNB and PULSE
        // capture the contract's current BNB and PULSE.
        // 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 and pulse that
        // has been manually sent to the contract
        uint256 amountBnb = address(this).balance;
        uint256 amountToken = token.balanceOf(address(this));
        
        pancakeSwapRouter.removeLiquidityETHSupportingFeeOnTransferTokens(
            _tokenAddress,
            _lpTokens,
            0,
            0,
            address(this),
            block.timestamp + 100 days
        );
        // how much PULSE did we just swap into?
        amountToken = token.balanceOf(address(this)).sub(amountToken);

        //swap the obtained PULSE tokens into BNB
        _swapExactTokensForBnb(amountToken, _tokenAddress);

        // how much BNB did we just swap into?
        amountBnb = address(this).balance.sub(amountBnb);
        return amountBnb;
    }

    //used to swap "_lpTokens" amount of 
    function redeemLpTokens(address _tokenAddress, uint256 _lpTokens) external onlyOwner {
        address pairAddress = factory.getPair(pancakeSwapRouter.WETH(), _tokenAddress);
        if(pairAddress == address(0)) return;
        IPancakePair pair = IPancakePair(pairAddress);
        require(pair.balanceOf(address(this)) >= _lpTokens, "Revive Basket: you don't have enough founds");
        uint256 amountBnb = _convertTokenLpsIntoBnb(_tokenAddress, _lpTokens);

        //generate the uniswap pair path of BNB -> PULSE
        address[] memory path = new address[](2);
        path[0] = pancakeSwapRouter.WETH();
        path[1] = pulseTokenAddress;

        uint256 balance = pulseToken.balanceOf(address(this));
        
        pancakeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: amountBnb
        }(0, path, address(this), block.timestamp + 100 days);

        balance = pulseToken.balanceOf(address(this)).sub(balance);
        IToken token = IToken(pulseTokenAddress);
        token.deliver(balance);

        emit RedeemLpTokens(_msgSender(), _tokenAddress, _lpTokens);
    }

    function redeemLpTokensPulse(uint256 _lpTokens) external onlyOwner returns(uint256) {
        
        address pairAddress = factory.getPair(pancakeSwapRouter.WETH(), pulseTokenAddress);
        if(pairAddress == address(0)) return 0;

        //get contract interafce of the pancakeSwapPairToken
        IPancakePair  bnbPulsePairContract = IPancakePair(pairAddress);

        //approve the router to use all the LP's of this contract
        bnbPulsePairContract.approve(
            pancakeSwapRouterAddress,
            _lpTokens
        );
        
        //swap all the LP's into BNB and PULSE
        uint256 amountBnb;
        uint256 amountPulse = pulseToken.balanceOf(address(this));
        (,amountBnb) = pancakeSwapRouter
        .removeLiquidityETH(
            pulseTokenAddress,
            _lpTokens,
            0,
            0,
            address(this),
            block.timestamp + 100 days
        );
        //generate the uniswap pair path of BNB -> PULSE
        address[] memory path = new address[](2);
        path[0] = pancakeSwapRouter.WETH();
        path[1] = pulseTokenAddress;

        //converts all of the BNB into PULSE tokens and transfers them to the owner
        pancakeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{
            value: amountBnb
        }(0, path, address(this), block.timestamp + 100 days);

        // how much BNB did we just swap into?
        amountPulse = pulseToken.balanceOf(address(this)).sub(amountPulse);  
        
        IToken pulse = IToken(pulseTokenAddress);

        pulse.burn(amountPulse);

        emit RedeemLpTokensPulse(_msgSender(), _lpTokens);
    }

    // function burnRemainingEth() external onlyOwner {
    //      //generate the uniswap pair path of BNB -> PULSE
    //     address[] memory path = new address[](2);
    //     path[0] = pancakeSwapRouter.WETH();
    //     path[1] = pulseTokenAddress;

    //     uint256 balance = pulseToken.balanceOf(address(this));
    //     uint256 bnbAmount = address(this).balance;

    //     pancakeSwapRouter.swapExactETHForTokensSupportingFeeOnTransferTokens{
    //         value: bnbAmount
    //     }(0, path, address(this), block.timestamp + 100 days);

    //     balance = pulseToken.balanceOf(address(this)).sub(balance);

    //     IToken pulse = IToken(pulseTokenAddress);
    //     pulse.burn(balance);
    //     emit BurnRemainingBNB(_msgSender(), bnbAmount);
    // }

    function burnRemainingPulse() external onlyOwner { 
        IToken pulse = IToken(pulseTokenAddress);
        uint256 pulseAmount = pulseToken.balanceOf(address(this));
        pulse.burn(pulseAmount);
        emit BurnRemainingPulse(_msgSender(), pulseAmount);
    }

    function swapAndLiquify(uint256 pulseAmount) external override{
        require(_msgSender() == pulseTokenAddress, "Revive basket: this function can only be called by PULSE Token Contract");
        // split the contract balance into halves
        uint256 half = pulseAmount.div(2);
        uint256 otherHalf = pulseAmount.sub(half);
        
        // 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 initialBnbBalance = address(this).balance;
        uint256 initialPulseBalance  = pulseToken.balanceOf(address(this));

        // swap tokens for BNB
        _swapTokensForBnb(half); // <- this breaks the BNB -> PULSE swap when swap+liquify is triggered
        // how much BNB did we just swap into?
        uint256 bnbAmount = address(this).balance.sub(initialBnbBalance);
        uint256 actualPulseSwapped = initialPulseBalance.sub(pulseToken.balanceOf(address(this)));
        otherHalf = otherHalf.add(half.sub(actualPulseSwapped));
        _addLiquidity(otherHalf, bnbAmount);        
    }

    function _swapTokensForBnb(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> Bnb
        address[] memory path = new address[](2);
        path[0] = pulseTokenAddress;
        path[1] = pancakeSwapRouter.WETH();

        //approve "tokenAmount" of tokens for the Uniswap Router to use
        pulseToken.approve(address(pancakeSwapRouter), tokenAmount);
        
        // make the swap
        pancakeSwapRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of BNB
            path,
            address(this),
            block.timestamp + 100 days
        );
    }

    function _addLiquidity(uint256 tokenAmount, uint256 bnbAmount) private {
        // approve token transfer to cover all possible scenarios
        pulseToken.approve(address(pancakeSwapRouter), tokenAmount);

        pancakeSwapRouter.addLiquidityETH{
            value: bnbAmount
        }(
            pulseTokenAddress,
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            address(this),
            block.timestamp + 100 days
        );
        
        // if(balanceOf(address(this)) > 0) {
        //     _transfer(address(this), minterAddress, balanceOf(address(this)));
        // }

        // if(address(this).balance > 0) { 
        //     payable(minterAddress).transfer(address(this).balance);
        // }
    }
}

File 2 of 11 : IPulseManager.sol
pragma solidity ^0.6.12;
// SPDX-License-Identifier: Unlicensed

interface IPulseManager {

    function handleReviveBasket(uint256 pulseAmount) external returns(bool);
    function swapAndLiquify(uint256 pulseAmount) external;

}

File 3 of 11 : IToken.sol
pragma solidity ^0.6.12;
// SPDX-License-Identifier: Unlicensed

interface IToken {

    //used to deliver a specific amount of tokens to the all balance holders
    function deliver(uint256 tAmount) external;

    //returns the number of decimals that the token has
    function decimals() external view returns(uint8);

    function burn(uint256 tokenAmount) external;
}

File 4 of 11 : Ownable.sol
pragma solidity ^0.6.12;
// SPDX-License-Identifier: Unlicensed

import "./Context.sol";

/**
 * @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 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 getUnlockTime() public view returns (uint256) {
        return _lockTime;
    }

    //Locks the contract for owner for the amount of time provided
    function lock(uint256 time) public virtual onlyOwner {
        _previousOwner = _owner;
        _owner = address(0);
        _lockTime = 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;
    }
}

File 5 of 11 : SafeMath.sol
pragma solidity ^0.6.12;
// SPDX-License-Identifier: Unlicensed

library SafeMath {

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

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        require(b <= a, "SafeMath: substraction overflow");
        uint256 c = a - b;

        return c;
    }

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

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

        return c;
    }

    function mod(
        uint256 a,
        uint256 b
    ) internal pure returns (uint256) {
        require(b > 0, "SafeMath: division with 0");
        return a % b;
    }

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

File 6 of 11 : IERC20.sol
pragma solidity ^0.6.12;
// SPDX-License-Identifier: Unlicensed

interface IERC20 {

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

    function mint(address to, uint256 amount) external;
    /**
     * @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.
 */

File 7 of 11 : IPancakeRouter02.sol
pragma solidity >=0.6.2;

import './IPancakeRouter01.sol';

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 8 of 11 : IPancakeFactory.sol
pragma solidity >=0.5.0;

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

File 9 of 11 : IPancakePair.sol
pragma solidity >=0.5.0;

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

File 10 of 11 : Context.sol
pragma solidity ^0.6.12;
// SPDX-License-Identifier: Unlicensed

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

File 11 of 11 : IPancakeRouter01.sol
pragma solidity >=0.6.2;

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

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_pancakeSwapRouterAddress","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"_tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenWeight","type":"uint256"}],"name":"AddToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"BurnRemainingBNB","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"BurnRemainingPulse","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"InitPublicSale","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"_to","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"MintHalfByOwner","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"}],"name":"PausePublicSale","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_amountToBeMinted","type":"uint256"}],"name":"PeriodicMint","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"_tokenAddress","type":"address"},{"indexed":false,"internalType":"uint256","name":"_lpTokens","type":"uint256"}],"name":"RedeemLpTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_lpTokens","type":"uint256"}],"name":"RedeemLpTokensPulse","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"RemoveToken","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"SetTokenAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":false,"internalType":"uint256","name":"_tokenPrice","type":"uint256"}],"name":"SetTokenPrice","type":"event"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_tokenWeight","type":"uint256"}],"name":"addToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnRemainingPulse","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getMintedTokensTotal","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"getTokenWeight","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUnlockTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pulseAmount","type":"uint256"}],"name":"handleReviveBasket","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"initPublicSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isTokenInReviveBasket","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","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintHalfByOwner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pausePublicSale","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amountToBeMinted","type":"uint256"}],"name":"periodicMint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"publicSale","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"publicSaleMintedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"publicSalePaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pulseTokenAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"},{"internalType":"uint256","name":"_lpTokens","type":"uint256"}],"name":"redeemLpTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_lpTokens","type":"uint256"}],"name":"redeemLpTokensPulse","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"removeToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"reviveBasketTokens","outputs":[{"internalType":"address","name":"tokenAddress","type":"address"},{"internalType":"uint256","name":"weight","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_tokenAddress","type":"address"}],"name":"setTokenAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_tokenPrice","type":"uint256"}],"name":"setTokenPrice","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"pulseAmount","type":"uint256"}],"name":"swapAndLiquify","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"tokenPrice","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unlock","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600060035567016345785d8a00006004556001600560006101000a81548160ff0219169083151502179055506000600655633b9aca0060075560006008556000600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507310ed43c718714eb63d5aa57b78b54704e256024e600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000601055348015620000eb57600080fd5b5060405162005e1038038062005e10833981810160405260208110156200011157600080fd5b81019080805190602001909291905050506000620001346200034860201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3504260038190555080600e60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620002c457600080fd5b505afa158015620002d9573d6000803e3d6000fd5b505050506040513d6020811015620002f057600080fd5b8101908080519060200190929190505050600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505062000350565b600033905090565b615ab080620003606000396000f3fe6080604052600436106101a05760003560e01c80636b58003e116100ec578063af81c5b91161008a578063ccc95a6e11610064578063ccc95a6e146106ff578063da42aa261461075a578063dd467064146107a9578063f2fde38b146107e4576101a7565b8063af81c5b9146105ec578063c8dc232814610647578063ccaaf548146106ae576101a7565b80638da5cb5b116100c65780638da5cb5b146105285780639f4e5b8d14610569578063a69df4b514610594578063af231ad2146105ab576101a7565b80636b58003e146104975780637ff9b596146104d2578063807f7d2e146104fd576101a7565b806333bc1c5c116101595780635fa7b584116101335780635fa7b584146103c95780635fc1d4071461041a578063602bc62b146104315780636a61e5fc1461045c576101a7565b806333bc1c5c146102f857806341cf9202146103025780635a514bbc1461035d576101a7565b806303ed0d87146101ac578063069cd573146101c35780630c41f497146101f0578063173865ad14610207578063250aa6831461024257806326a4e8d2146102a7576101a7565b366101a757005b600080fd5b3480156101b857600080fd5b506101c1610835565b005b3480156101cf57600080fd5b506101d8610ab0565b60405180821515815260200191505060405180910390f35b3480156101fc57600080fd5b50610205610ac3565b005b34801561021357600080fd5b506102406004803603602081101561022a57600080fd5b8101908080359060200190929190505050610bf2565b005b34801561024e57600080fd5b506102916004803603602081101561026557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610ecf565b6040518082815260200191505060405180910390f35b3480156102b357600080fd5b506102f6600480360360208110156102ca57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610f95565b005b61030061114d565b005b34801561030e57600080fd5b5061035b6004803603604081101561032557600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919050505061136f565b005b34801561036957600080fd5b506103966004803603602081101561038057600080fd5b81019080803590602001909291905050506115ea565b604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390f35b3480156103d557600080fd5b50610418600480360360208110156103ec57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919050505061163b565b005b34801561042657600080fd5b5061042f6119ac565b005b34801561043d57600080fd5b50610446611adb565b6040518082815260200191505060405180910390f35b34801561046857600080fd5b506104956004803603602081101561047f57600080fd5b8101908080359060200190929190505050611ae5565b005b3480156104a357600080fd5b506104d0600480360360208110156104ba57600080fd5b8101908080359060200190929190505050611c0c565b005b3480156104de57600080fd5b506104e7612035565b6040518082815260200191505060405180910390f35b34801561050957600080fd5b5061051261203b565b6040518082815260200191505060405180910390f35b34801561053457600080fd5b5061053d612041565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561057557600080fd5b5061057e61206a565b6040518082815260200191505060405180910390f35b3480156105a057600080fd5b506105a96120a4565b005b3480156105b757600080fd5b506105c06122c1565b604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b3480156105f857600080fd5b506106456004803603604081101561060f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506122e7565b005b34801561065357600080fd5b506106966004803603602081101561066a57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506125f7565b60405180821515815260200191505060405180910390f35b3480156106ba57600080fd5b506106e7600480360360208110156106d157600080fd5b8101908080359060200190929190505050612617565b60405180821515815260200191505060405180910390f35b34801561070b57600080fd5b506107586004803603604081101561072257600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506127d4565b005b34801561076657600080fd5b506107936004803603602081101561077d57600080fd5b81019080803590602001909291905050506130bf565b6040518082815260200191505060405180910390f35b3480156107b557600080fd5b506107e2600480360360208110156107cc57600080fd5b8101908080359060200190929190505050613ab8565b005b3480156107f057600080fd5b506108336004803603602081101561080757600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050613ca9565b005b61083d613eb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156109af57600080fd5b505afa1580156109c3573d6000803e3d6000fd5b505050506040513d60208110156109d957600080fd5b810190808051906020019092919050505090508173ffffffffffffffffffffffffffffffffffffffff166342966c68826040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015610a3f57600080fd5b505af1158015610a53573d6000803e3d6000fd5b50505050610a5f613eb4565b73ffffffffffffffffffffffffffffffffffffffff167f501f1583b940899fd1616803d8418cd733606207d32e147e15ca5c931e002cef826040518082815260200191505060405180910390a25050565b600560009054906101000a900460ff1681565b610acb613eb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b8b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6001600560006101000a81548160ff021916908315150217905550610bae613eb4565b73ffffffffffffffffffffffffffffffffffffffff167f12260be6320b31a25b52c4ccb5f1199d22a44c7088bd3952e6dac6db4aa3a3c660405160405180910390a2565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610c33613eb4565b73ffffffffffffffffffffffffffffffffffffffff1614610c9f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260478152602001806159ee6047913960600191505060405180910390fd5b6000610cb5600283613ebc90919063ffffffff16565b90506000610ccc8284613f4590919063ffffffff16565b905060004790506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610d5e57600080fd5b505afa158015610d72573d6000803e3d6000fd5b505050506040513d6020811015610d8857600080fd5b81019080805190602001909291905050509050610da484613fce565b6000610db98347613f4590919063ffffffff16565b90506000610e93600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015610e4957600080fd5b505afa158015610e5d573d6000803e3d6000fd5b505050506040513d6020811015610e7357600080fd5b810190808051906020019092919050505084613f4590919063ffffffff16565b9050610eba610eab8288613f4590919063ffffffff16565b8661436d90919063ffffffff16565b9450610ec685836143f5565b50505050505050565b600080600090505b600f80549050811015610f8a578273ffffffffffffffffffffffffffffffffffffffff16600f8281548110610f0857fe5b906000526020600020906002020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161415610f7d57600f8181548110610f6357fe5b906000526020600020906002020160010154915050610f90565b8080600101915050610ed7565b50600090505b919050565b610f9d613eb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461105d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600960006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506110e7613eb4565b73ffffffffffffffffffffffffffffffffffffffff167f1afd2fbd87820e90f7fd536cc3da7004a6a6d7f06da7f35b995b505b1ccf6f0082604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a250565b6000349050600060045461116e633b9aca008461462e90919063ffffffff16565b8161117557fe5b0490506000611184600a6146b4565b905060001515600560009054906101000a900460ff161515146111f2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603481526020018061590a6034913960400191505060405180910390fd5b808260065401111561124f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260278152602001806159846027913960400191505060405180910390fd5b611257612041565b73ffffffffffffffffffffffffffffffffffffffff166108fc349081150290604051600060405180830381858888f1935050505015801561129c573d6000803e3d6000fd5b50600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f196112e3613eb4565b846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561133757600080fd5b505af115801561134b573d6000803e3d6000fd5b505050506113648260065461436d90919063ffffffff16565b600681905550505050565b611377613eb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611437576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b61144c8160075461436d90919063ffffffff16565b61145660326146b4565b10156114ad576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252604681526020018061593e6046913960600191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f1983836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b15801561154057600080fd5b505af1158015611554573d6000803e3d6000fd5b5050505061156d8160075461436d90919063ffffffff16565b60078190555061157b613eb4565b73ffffffffffffffffffffffffffffffffffffffff167fb6d9323cb99805d21758f26668bc0e51c165eb9675f445ae7080dc9ca9782d648383604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a25050565b600f81815481106115f757fe5b90600052602060002090600202016000915090508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154905082565b611643613eb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611703576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60005b600f805490508110156119a8578173ffffffffffffffffffffffffffffffffffffffff16600f828154811061173757fe5b906000526020600020906002020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16141561199b576117b8600f828154811061179557fe5b906000526020600020906002020160010154601054613f4590919063ffffffff16565b601081905550600f6117d96001600f80549050613f4590919063ffffffff16565b815481106117e357fe5b9060005260206000209060020201600f82815481106117fe57fe5b90600052602060002090600202016000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060018201548160010155905050600f80548061188b57fe5b6001900381819060005260206000209060020201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff02191690556001820160009055505090556000600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550611933613eb4565b73ffffffffffffffffffffffffffffffffffffffff167f39dcd754ec63af4b82c4c569ff1b6b4e55a8038e6545844747e54f2f2d4e8e5083604051808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390a26119a8565b8080600101915050611706565b5050565b6119b4613eb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611a74576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600560006101000a81548160ff021916908315150217905550611a97613eb4565b73ffffffffffffffffffffffffffffffffffffffff167f89166d5c43bd5b406d3f35e6304d8ea5616aa381b4a03a8c26b84c4df7c51d8a60405160405180910390a2565b6000600254905090565b611aed613eb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611bad576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b80600481905550611bbc613eb4565b73ffffffffffffffffffffffffffffffffffffffff167f3c30e8adb22bb7e4a3968ea6b4042ada6ca2adebac2bcde5ae55f3c7c70db1cd826040518082815260200191505060405180910390a250565b611c14613eb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cd4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008111611d2d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603b8152602001806158a4603b913960400191505060405180910390fd5b600062278d00905060008042611d4d60068561462e90919063ffffffff16565b6003540111611d9757611d6060056146b4565b9050806008541015611d9657611d93611d8460085483613f4590919063ffffffff16565b8361436d90919063ffffffff16565b91505b5b42611dac600c8561462e90919063ffffffff16565b6003540111611df657611dbf600a6146b4565b9050806008541015611df557611df2611de360085483613f4590919063ffffffff16565b8361436d90919063ffffffff16565b91505b5b42611e0b60128561462e90919063ffffffff16565b6003540111611e5557611e1e600a6146b4565b9050806008541015611e5457611e51611e4260085483613f4590919063ffffffff16565b8361436d90919063ffffffff16565b91505b5b42611e6a60188561462e90919063ffffffff16565b6003540111611eb457611e7d600f6146b4565b9050806008541015611eb357611eb0611ea160085483613f4590919063ffffffff16565b8361436d90919063ffffffff16565b91505b5b83821015611f0d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615a586023913960400191505060405180910390fd5b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166340c10f19611f53613eb4565b866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050600060405180830381600087803b158015611fa757600080fd5b505af1158015611fbb573d6000803e3d6000fd5b50505050611fd48460085461436d90919063ffffffff16565b600881905550611fe2613eb4565b73ffffffffffffffffffffffffffffffffffffffff167f933f69638a5b06341e8acd0a3edd56de766081c93729f67c1c01549baee8d642856040518082815260200191505060405180910390a250505050565b60045481565b60065481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008061208460085460065461436d90919063ffffffff16565b905061209b6007548261436d90919063ffffffff16565b90508091505090565b3373ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461214a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526023815260200180615a356023913960400191505060405180910390fd5b60025442116121c1576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f436f6e7472616374206973206c6f636b656420756e74696c203720646179730081525060200191505060405180910390fd5b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6122ef613eb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146123af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60001515600d60008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514612458576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260228152602001806159cc6022913960400191505060405180910390fd5b61246d8160105461436d90919063ffffffff16565b60108190555061247b61584d565b60405180604001604052808473ffffffffffffffffffffffffffffffffffffffff168152602001838152509050600f81908060018154018082558091505060019003906000526020600020906002020160009091909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506020820151816001015550506001600d60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550612587613eb4565b73ffffffffffffffffffffffffffffffffffffffff167f53a89160b3796e307a2aa213a1ecf5e68072462f9dde7f3828091b7bd79fc3b28484604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a2505050565b600d6020528060005260406000206000915054906101000a900460ff1681565b6000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661265a613eb4565b73ffffffffffffffffffffffffffffffffffffffff16146126c6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260478152602001806159ee6047913960600191505060405180910390fd5b60006126f483600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166146df565b905060005b600f805490508110156127c9576127bc600f828154811061271657fe5b90600052602060002090600202016040518060400160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020016001820154815250506127b784600f85815481106127a057fe5b906000526020600020906002020160010154614a61565b614a97565b80806001019150506126f9565b506001915050919050565b6127dc613eb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461289c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a43905600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561294457600080fd5b505afa158015612958573d6000803e3d6000fd5b505050506040513d602081101561296e57600080fd5b8101908080519060200190929190505050856040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156129e757600080fd5b505afa1580156129fb573d6000803e3d6000fd5b505050506040513d6020811015612a1157600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415612a5f57506130bb565b6000819050828173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612acc57600080fd5b505afa158015612ae0573d6000803e3d6000fd5b505050506040513d6020811015612af657600080fd5b81019080805190602001909291905050501015612b5e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602b8152602001806158df602b913960400191505060405180910390fd5b6000612b6a858561525c565b90506060600267ffffffffffffffff81118015612b8657600080fd5b50604051908082528060200260200182016040528015612bb55781602001602082028036833780820191505090505b509050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015612c2057600080fd5b505afa158015612c34573d6000803e3d6000fd5b505050506040513d6020811015612c4a57600080fd5b810190808051906020019092919050505081600081518110612c6857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681600181518110612cd257fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612d9757600080fd5b505afa158015612dab573d6000803e3d6000fd5b505050506040513d6020811015612dc157600080fd5b81019080805190602001909291905050509050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de9584600085306283d60042016040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015612e97578082015181840152602081019050612e7c565b50505050905001955050505050506000604051808303818588803b158015612ebe57600080fd5b505af1158015612ed2573d6000803e3d6000fd5b5050505050612fad81600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015612f6457600080fd5b505afa158015612f78573d6000803e3d6000fd5b505050506040513d6020811015612f8e57600080fd5b8101908080519060200190929190505050613f4590919063ffffffff16565b90506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff16633bd5d173836040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b15801561302957600080fd5b505af115801561303d573d6000803e3d6000fd5b50505050613049613eb4565b73ffffffffffffffffffffffffffffffffffffffff167fc61e79b087de46514b467cff03224d27d8f5a8fcb21e1d2e32d1f0a9f7d02a6f8989604051808373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019250505060405180910390a25050505050505b5050565b60006130c9613eb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613189576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a43905600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561323157600080fd5b505afa158015613245573d6000803e3d6000fd5b505050506040513d602081101561325b57600080fd5b8101908080519060200190929190505050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156132f657600080fd5b505afa15801561330a573d6000803e3d6000fd5b505050506040513d602081101561332057600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613372576000915050613ab3565b60008190508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561340a57600080fd5b505af115801561341e573d6000803e3d6000fd5b505050506040513d602081101561343457600080fd5b810190808051906020019092919050505050600080600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156134d257600080fd5b505afa1580156134e6573d6000803e3d6000fd5b505050506040513d60208110156134fc57600080fd5b81019080805190602001909291905050509050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166302751cec600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1688600080306283d60042016040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506040805180830381600087803b1580156135ff57600080fd5b505af1158015613613573d6000803e3d6000fd5b505050506040513d604081101561362957600080fd5b8101908080519060200190929190805190602001909291905050509050809250506060600267ffffffffffffffff8111801561366457600080fd5b506040519080825280602002602001820160405280156136935781602001602082028036833780820191505090505b509050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156136fe57600080fd5b505afa158015613712573d6000803e3d6000fd5b505050506040513d602081101561372857600080fd5b81019080805190602001909291905050508160008151811061374657fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16816001815181106137b057fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de9584600084306283d60042016040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b838110156138ad578082015181840152602081019050613892565b50505050905001955050505050506000604051808303818588803b1580156138d457600080fd5b505af11580156138e8573d6000803e3d6000fd5b50505050506139c382600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561397a57600080fd5b505afa15801561398e573d6000803e3d6000fd5b505050506040513d60208110156139a457600080fd5b8101908080519060200190929190505050613f4590919063ffffffff16565b91506000600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690508073ffffffffffffffffffffffffffffffffffffffff166342966c68846040518263ffffffff1660e01b815260040180828152602001915050600060405180830381600087803b158015613a3f57600080fd5b505af1158015613a53573d6000803e3d6000fd5b50505050613a5f613eb4565b73ffffffffffffffffffffffffffffffffffffffff167f382daebe1f70ad720933d512792a36ca61e09d918f06e7c1660915dc8ce80cf0896040518082815260200191505060405180910390a25050505050505b919050565b613ac0613eb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613b80576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550804201600281905550600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b613cb1613eb4565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614613d71576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260208152602001807f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657281525060200191505060405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415613df7576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252602681526020018061587e6026913960400191505060405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b6000808211613f33576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260178152602001807f536166654d6174683a206469766973696f6e206279203000000000000000000081525060200191505060405180910390fd5b818381613f3c57fe5b04905092915050565b600082821115613fbd576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601f8152602001807f536166654d6174683a20737562737472616374696f6e206f766572666c6f770081525060200191505060405180910390fd5b600082840390508091505092915050565b6060600267ffffffffffffffff81118015613fe857600080fd5b506040519080825280602002602001820160405280156140175781602001602082028036833780820191505090505b509050600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168160008151811061404a57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156140ec57600080fd5b505afa158015614100573d6000803e3d6000fd5b505050506040513d602081101561411657600080fd5b81019080805190602001909291905050508160018151811061413457fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561422357600080fd5b505af1158015614237573d6000803e3d6000fd5b505050506040513d602081101561424d57600080fd5b810190808051906020019092919050505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94783600084306283d60042016040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b8381101561432857808201518184015260208101905061430d565b505050509050019650505050505050600060405180830381600087803b15801561435157600080fd5b505af1158015614365573d6000803e3d6000fd5b505050505050565b6000808284019050838110156143eb576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156144aa57600080fd5b505af11580156144be573d6000803e3d6000fd5b505050506040513d60208110156144d457600080fd5b810190808051906020019092919050505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982600960009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1685600080306283d60042016040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b1580156145d757600080fd5b505af11580156145eb573d6000803e3d6000fd5b50505050506040513d606081101561460257600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050505050505050565b60008083141561464157600090506146ae565b600082840290508284828161465257fe5b04146146a9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806159ab6021913960400191505060405180910390fd5b809150505b92915050565b600080662386f26fc1000090506146d4838261462e90919063ffffffff16565b905080915050919050565b60008047905060008390508073ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166000196040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561477f57600080fd5b505af1158015614793573d6000803e3d6000fd5b505050506040513d60208110156147a957600080fd5b8101908080519060200190929190505050506060600267ffffffffffffffff811180156147d557600080fd5b506040519080825280602002602001820160405280156148045781602001602082028036833780820191505090505b509050848160008151811061481557fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156148b757600080fd5b505afa1580156148cb573d6000803e3d6000fd5b505050506040513d60208110156148e157600080fd5b8101908080519060200190929190505050816001815181106148ff57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac94787600084306283d60042016040518663ffffffff1660e01b815260040180868152602001858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614a025780820151818401526020810190506149e7565b505050509050019650505050505050600060405180830381600087803b158015614a2b57600080fd5b505af1158015614a3f573d6000803e3d6000fd5b50505050614a568347613f4590919063ffffffff16565b935050505092915050565b600080614a8b601054614a7d858761462e90919063ffffffff16565b613ebc90919063ffffffff16565b90508091505092915050565b6000826000015190506060600267ffffffffffffffff81118015614aba57600080fd5b50604051908082528060200260200182016040528015614ae95781602001602082028036833780820191505090505b509050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015614b5457600080fd5b505afa158015614b68573d6000803e3d6000fd5b505050506040513d6020811015614b7e57600080fd5b810190808051906020019092919050505081600081518110614b9c57fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050836000015181600181518110614be857fe5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250506000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a43905600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015614cca57600080fd5b505afa158015614cde573d6000803e3d6000fd5b505050506040513d6020811015614cf457600080fd5b810190808051906020019092919050505087600001516040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015614d7157600080fd5b505afa158015614d85573d6000803e3d6000fd5b505050506040513d6020811015614d9b57600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415614deb57505050615258565b60008373ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b158015614e5457600080fd5b505afa158015614e68573d6000803e3d6000fd5b505050506040513d6020811015614e7e57600080fd5b81019080805190602001909291905050509050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663b6f9de9560028781614ed957fe5b04600086306283d60042016040518663ffffffff1660e01b815260040180858152602001806020018473ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828103825285818151815260200191508051906020019060200280838360005b83811015614f5e578082015181840152602081019050614f43565b50505050905001955050505050506000604051808303818588803b158015614f8557600080fd5b505af1158015614f99573d6000803e3d6000fd5b5050505050615052818573ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561500957600080fd5b505afa15801561501d573d6000803e3d6000fd5b505050506040513d602081101561503357600080fd5b8101908080519060200190929190505050613f4590919063ffffffff16565b90508373ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156150e757600080fd5b505af11580156150fb573d6000803e3d6000fd5b505050506040513d602081101561511157600080fd5b810190808051906020019092919050505050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7196002878161516b57fe5b04886000015184600080306283d60042016040518863ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200196505050505050506060604051808303818588803b15801561520057600080fd5b505af1158015615214573d6000803e3d6000fd5b50505050506040513d606081101561522b57600080fd5b81019080805190602001909291908051906020019092919080519060200190929190505050505050505050505b5050565b600080600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663e6a43905600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561530557600080fd5b505afa158015615319573d6000803e3d6000fd5b505050506040513d602081101561532f57600080fd5b8101908080519060200190929190505050866040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b1580156153a857600080fd5b505afa1580156153bc573d6000803e3d6000fd5b505050506040513d60208110156153d257600080fd5b81019080805190602001909291905050509050600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415615424576000915050615847565b600081905060008590508173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561549557600080fd5b505afa1580156154a9573d6000803e3d6000fd5b505050506040513d60208110156154bf57600080fd5b81019080805190602001909291905050508511156154e35760009350505050615847565b8173ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600e60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16876040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561557657600080fd5b505af115801561558a573d6000803e3d6000fd5b505050506040513d60208110156155a057600080fd5b810190808051906020019092919050505050600047905060008273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b15801561562057600080fd5b505afa158015615634573d6000803e3d6000fd5b505050506040513d602081101561564a57600080fd5b81019080805190602001909291905050509050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663af2979eb8989600080306283d60042016040518763ffffffff1660e01b8152600401808773ffffffffffffffffffffffffffffffffffffffff1681526020018681526020018581526020018481526020018373ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019650505050505050602060405180830381600087803b15801561572c57600080fd5b505af1158015615740573d6000803e3d6000fd5b505050506040513d602081101561575657600080fd5b81019080805190602001909291905050505061581c818473ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b8152600401808273ffffffffffffffffffffffffffffffffffffffff16815260200191505060206040518083038186803b1580156157d357600080fd5b505afa1580156157e7573d6000803e3d6000fd5b505050506040513d60208110156157fd57600080fd5b8101908080519060200190929190505050613f4590919063ffffffff16565b905061582881896146df565b5061583c8247613f4590919063ffffffff16565b915081955050505050505b92915050565b6040518060400160405280600073ffffffffffffffffffffffffffffffffffffffff16815260200160008152509056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f2061646472657373506572696f646963206d696e743a20616d6f756e7420746f206265206d696e7465642073686f756c642062652067726561746572207468616e2030526576697665204261736b65743a20796f7520646f6e2774206861766520656e6f75676820666f756e64735075626c69632073616c653a207075626c69632073616c6520697320706175736564206f72206974206861732073746f707065644d696e743a20796f752063616e206d696e742061206d6178696d756d20616d6f756e74206f66203530252066726f6d20746f74616c20616d6f756e74206f6620746f6b656e735075626c69632073616c653a20796f75206e65656420746f20627579206c6573732050756c7365536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f6b656e20697320616c726561647920696e20726576697665206261736b657421526576697665206261736b65743a20746869732066756e6374696f6e2063616e206f6e6c792062652063616c6c65642062792050554c534520546f6b656e20436f6e7472616374596f7520646f6e27742068617665207065726d697373696f6e20746f20756e6c6f636b50756c73653a20796f75206e65656420746f206d696e74206c65737320746f6b656e73a26469706673582212205c89d1f7dc7966a931c455c19deb5e67c90cda6b58e57f76b298c571b22fdf7564736f6c634300060c003300000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e

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

00000000000000000000000010ed43c718714eb63d5aa57b78b54704e256024e

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

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


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.