Contract 0x02Cf88c64a4C9cEDe780B32B9e017Ee3D61897a9 1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xf20975f8a8ccc2b18ea41fa66a812dd2ddd79b257ea4c1a5924ed4c21ea9fd7bWithdraw Liquidi...82614162021-06-13 12:28:43135 days 3 hrs ago0x9eb03d6bb285a7037a8d903ed6c755f0b855224e IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00039536
0xde3c9a9514b3dd2436d7ec9a4901fead010fb91caac2f628581b92506ec8f4b2Withdraw Liquidi...82614052021-06-13 12:28:10135 days 3 hrs ago0x9eb03d6bb285a7037a8d903ed6c755f0b855224e IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00047042
0xc73e71503375d38d7a7e33348a264be97dbef4b9379d1a0f5593e6ccf3b2e532Withdraw Liquidi...77486412021-05-26 15:39:30152 days 23 hrs ago0x6ab765f6ab3ababf78d1552c7855376a0a8bd077 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00044664
0x91eec81706c02586f0993fed3a9bcc14dcbb8ee89d088a0212ac1348a0f22dc0Withdraw Liquidi...77486252021-05-26 15:38:42152 days 23 hrs ago0x6ab765f6ab3ababf78d1552c7855376a0a8bd077 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00052164
0x9a6f90bc47ada6906e15f76b8b9a10876a6348f2c08f9b733296cde59028fe53Withdraw Liquidi...75979932021-05-21 9:26:22158 days 6 hrs ago0x1cdbd387860e14664ad9a592edc18d4a908edfc7 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00039548
0x99faa57c8e29cbb2015424eea41e208799136d2b05a8acdadb55d9afb7b3aae2Withdraw Liquidi...75979792021-05-21 9:25:40158 days 6 hrs ago0x1cdbd387860e14664ad9a592edc18d4a908edfc7 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00047042
0x5b74485d96f9ecb3e61dd870046957b0593f449aaa37bbf90e3195d02b3cad5cAdd Liquidity BN...70747002021-05-02 14:20:12177 days 1 hr ago0x1613aea7f648822e10034d5f9da6fc7160b7f5c1 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90.1 BNB0.002958775
0x116edac520a40bc9d661b62d2d2e7fe79b1d02279dab815b5b216c15c1588f89Withdraw Liquidi...70368422021-05-01 6:34:30178 days 8 hrs ago0x56dcbf29a7a6eb0cc1e87ad8c25cb004dada3a46 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00047048
0x475c7e301b38c74cd853295d8f37ff6e8a2fc9926de82b66971cc1ce05dd02f5Withdraw Liquidi...70368262021-05-01 6:33:42178 days 8 hrs ago0x56dcbf29a7a6eb0cc1e87ad8c25cb004dada3a46 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00044475
0xd46168de1f36b4faffbcc98dcf83c73507909010a90c8fa5162608552bad381aWithdraw Liquidi...70200152021-04-30 16:24:23178 days 23 hrs ago0xd76cb19b28c6f695c37786a2b176b8bbde27e1b7 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00044475
0xbdf62f0e99bc672c648aa524526842effe26283224d06b613a886e7bc13a207eWithdraw Liquidi...70190832021-04-30 15:35:48178 days 23 hrs ago0x14455e1d3fd105b3974eac9db8fc5b7f0dab5295 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00044475
0x843ce40b3042e712a90ef58d0f33793211b8aa40ccb30d986637523c58328095Withdraw Liquidi...69933142021-04-29 17:42:20179 days 21 hrs ago0x6bf09f8c8bd17d5f5428ada05057f9aabe69b64e IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00044475
0xf868990f4f37c16da8c8c9946de755f59ce4d70d611c9e27f43098ce862800c7Withdraw Liquidi...69819872021-04-29 8:13:37180 days 7 hrs ago0x009a8d3fc5846fbf6ef69ea7a70d78902be46934 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00044475
0xa576add317a3be674f0ceeaace8241bba1fc5207ed15c459bf435a3a81489146Withdraw Liquidi...69776582021-04-29 4:34:46180 days 10 hrs ago0x27d055fbc51376e13400f7abe1fe81ed4f048745 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00044475
0xd8de2eb189d29149ca34b09a5654ff78be57bdda4c174174376d9654f2d36fedWithdraw Liquidi...69666502021-04-28 19:22:35180 days 20 hrs ago0x6ab765f6ab3ababf78d1552c7855376a0a8bd077 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00044664
0xe5093c8ffc628ced1e8cbbc4e6690a5737ea2422a544d0301d9ca00a1fa2aa41Withdraw Liquidi...69665772021-04-28 19:18:56180 days 20 hrs ago0x6ab765f6ab3ababf78d1552c7855376a0a8bd077 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00052158
0x3590d4afbeffd9ad2237ab70fbba1dbf11b81ca2435f234d911f2e66053c90f9Withdraw Liquidi...68779272021-04-25 16:55:50183 days 22 hrs ago0xc12a8f9b1fd05b1786a6dc6f2a3991927ed49a72 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00044475
0x27343ed21d4681088793833fe0012ec0195e8e96f8ea1c47aef61dec963fb1d8Withdraw Liquidi...68766382021-04-25 15:51:15183 days 23 hrs ago0xaab66cee7438bd5d5a3f4cd617baff107ba637be IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00042103
0x9501c0e3e6ead8b0ef5ad94942f316b8323f27a6ed666e763c0ed5280a0fae09Withdraw Liquidi...68766312021-04-25 15:50:54183 days 23 hrs ago0xaab66cee7438bd5d5a3f4cd617baff107ba637be IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00042103
0x96d792162e113706c3c1f9878834196ec36c517cda7f984e9bea841b62fd0bedWithdraw Liquidi...68766222021-04-25 15:50:27183 days 23 hrs ago0xaab66cee7438bd5d5a3f4cd617baff107ba637be IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00049597
0x36641eb354b761ae887d021546dd18020cbabe78b5ea973c5b3619b55616d917Withdraw Liquidi...68759442021-04-25 15:16:28184 days 12 mins ago0x999e9d075568861815726892f3722eea3df17942 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00039542
0x6628a922d00afdc678de8665039c373f35d5952e645bf005e69ad44ab6f4eabeWithdraw Liquidi...68759372021-04-25 15:16:07184 days 12 mins ago0x999e9d075568861815726892f3722eea3df17942 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00047036
0x6fec4a8ae72afcd39cc7a40a4457faa01903c1acdde18511a525b4014a5d784eAdd Liquidity To...67263552021-04-20 8:49:59189 days 6 hrs ago0x1cdbd387860e14664ad9a592edc18d4a908edfc7 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.00186581
0x55c03e184fd1fba313305aa01ab2ebc63013e04c95af323678795e21e5aeec63Add Liquidity To...67263222021-04-20 8:48:20189 days 6 hrs ago0x1cdbd387860e14664ad9a592edc18d4a908edfc7 IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90 BNB0.001711895
0x2457d7a1e8787821688a3f4a606962ab48e655fec9533231c8d942b6237a093aAdd Liquidity BN...66283452021-04-16 22:55:00192 days 16 hrs ago0x3892a0b50e94bc8ca98ba5bdaac636d2872035af IN  0x02cf88c64a4c9cede780b32b9e017ee3d61897a90.00967681 BNB0.001703215
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x5b74485d96f9ecb3e61dd870046957b0593f449aaa37bbf90e3195d02b3cad5c70747002021-05-02 14:20:12177 days 1 hr ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.1 BNB
0x2457d7a1e8787821688a3f4a606962ab48e655fec9533231c8d942b6237a093a66283452021-04-16 22:55:00192 days 16 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.00967681 BNB
0xf2e3852324ec910e1ae69af37a4ede84b9812e286984e303b7c887c61bfaa95f63170032021-04-06 0:50:18203 days 14 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token3 BNB
0xcaf8d99065cb4dc4fe76ffd7f62e6bf9774579b8940050620a24afc29338cb7d61634862021-03-31 15:19:02209 days 9 mins ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.95 BNB
0xc209ef4db08958230476bb0f9a7d24b3e0295fbc9cf8f83147088ee3c9f7f28b61261932021-03-30 8:01:46210 days 7 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.014 BNB
0xbda51e9d7dd2b03b15d4e0472fa623df9dafacd73aeaba58cfab0740b2f9a22860723752021-03-28 11:03:10212 days 4 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.3 BNB
0xa25c2765ea91407bb0b826a33299ad2a588325d492cc586b0894a0a07ec26c7360672102021-03-28 6:44:55212 days 8 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.15 BNB
0x48549528d6755d6a964f1438c1fe04b77bf2adfd6bcbbb5f6b118bc695df58ad60387522021-03-27 6:57:23213 days 8 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token1 BNB
0xdcf14121b8ce825cdd5f72a0e310821e7aa302e4069284cdff60a477972355bd59954532021-03-25 18:01:18214 days 21 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.0002 BNB
0xcd0a9e76065658708f529bc36ea6bd83658d46e5b998d4674dca7a79aac3c76259939802021-03-25 16:47:39214 days 22 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.000005 BNB
0xc2ff54eff6a4e4a57be93ddb67fc16c58bad03744c3a6d3f46bc3e73d1bf0c3359934622021-03-25 16:21:45214 days 23 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.00139013 BNB
0xbed0e3b9d4424c87dddbfed8feac114c5e49012433b45b4824fd0f34cd8b7cd159880492021-03-25 11:46:28215 days 3 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token1.6 BNB
0x212bb3ae8a6b2e2494337ed605d172d7b21018fa620be99ed277ea75c6cf662959851192021-03-25 9:19:57215 days 6 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.0001 BNB
0xa5645fa130f3daba40e83d6a9c8967bdb3cbda30f3a85a2d794c02c7e98956c059846782021-03-25 8:57:51215 days 6 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.02 BNB
0x173a21bd0bf30aac9c8112c0f7cc708747dae78dae447d5d2a50d68ac0191a7459845192021-03-25 8:49:54215 days 6 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.004 BNB
0x15cc37a79b2ee5579fdae87d0d3a732e5b470b50db40c5ef371ac9432fcef55459844232021-03-25 8:45:06215 days 6 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.001 BNB
0x6c0852ef34af28913997b29c30adacd87d8614402d475ebad6ff7fa8a10d275759842872021-03-25 8:38:18215 days 6 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.001 BNB
0xcbf91258f2b290af0c478ebda6bd767fd39836f0b1e0d8326fdc93745322f32a59838342021-03-25 8:15:39215 days 7 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.1 BNB
0x1a99b549c730e478f770692c98d691672d0d11afae6487079dea24f5709293f659832822021-03-25 7:48:03215 days 7 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.01 BNB
0x4a1c2c019ad9fb644a9cc91abd8937cf8b5f37c00b50c4f4e6b6fa4fd66eba1659826792021-03-25 7:17:09215 days 8 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.0001 BNB
0x3611e81fa0e0440604ede04448e17b8883ee1f1533a738a17db98719074e723b59825212021-03-25 7:09:13215 days 8 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.00001 BNB
0xdb8185421ee6ac1fb1dc2fa0c1ce887af87656cfa319c83e20e193d62560d36d59823652021-03-25 7:01:09215 days 8 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.001 BNB
0xfb76053a6d587eb773a18a70011e78dc83fd20fdeb9533c907ffc70189d2e21d59817952021-03-25 6:30:33215 days 8 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.005 BNB
0x914bb0471a24ba85f7c3f62ff18b408724dcd62c58da10726261760ff04db81659817532021-03-25 6:28:27215 days 9 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.05 BNB
0x783e5e8997c2a6db0010a0c91960e0030f0eecb836e038505750efa435c6941059815282021-03-25 6:17:12215 days 9 hrs ago 0x02cf88c64a4c9cede780b32b9e017ee3d61897a9 Binance: WBNB Token0.4 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
ProximaContributedLiquidity

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 7 : ProximaContributedLiquidity.sol
// SPDX-License-Identifier: MIT

pragma solidity 0.6.12;
pragma experimental ABIEncoderV2;

import "@openzeppelin/contracts/token/ERC20/SafeERC20.sol";
import "@openzeppelin/contracts/token/ERC20/IERC20.sol";
import "@openzeppelin/contracts/math/SafeMath.sol";
import "./interfaces/IUniswapV2Router.sol";
import "./interfaces/IWETH.sol";

/**
 * @title : ProximaContributedLiquidity
 * Developed by ProximusAlpha
 */

contract ProximaContributedLiquidity {
    using SafeMath for uint256;
    using SafeERC20 for IERC20;
    /// @dev Wrpped BNB
    IWETH public WBNB;
    /// @dev Proxima Token
    address public pxa;
    /// @dev Proxima Router
    address public router;
    /// @dev proxima Developer
    address public devaddr;
    /// @dev Total Proxima Contribution
    uint256 private totalContributedPxa;
    /// @dev Funds locking period
    uint256 private lockPeriod = 30 days;
    /// @dev Max Uint Value
    uint256 private MAX_INT =
        0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff;

    /// @dev User Information struct
    struct UserInfo {
        uint256 liquidity;
        uint256 depositedBaseToken;
        uint256 contributionReceived;
        uint256 depositTime;
        uint256 unlockTime;
        bool withdrawn;
    }

    /// @dev Pool Information struct
    struct PoolInfo {
        IERC20 lpToken;
        IERC20 baseToken;
        uint256 allocPxa;
        uint256 contributedPxa;
        uint256 depositedBaseToken;
    }

    /// @dev Pool array
    PoolInfo[] private poolInfo;
    /// @dev User Info mapping
    mapping(uint256 => mapping(address => UserInfo[])) private userInfo;

    /// @dev Event emitted when deposit
    event Deposit(address indexed user, uint256 indexed pid, uint256 liquidity);
    /// @dev Event emitted when withdraw
    event Withdraw(
        address indexed user,
        uint256 indexed pid,
        uint256 liquidity
    );

    /// @dev Sets pxa, wbnb and proxima dev address
    constructor(address _pxa, IWETH _WBNB) public {
        pxa = _pxa;
        WBNB = _WBNB;
        devaddr = msg.sender;
    }

    /// @dev Return total number of pools
    function poolLength() external view returns (uint256) {
        return poolInfo.length;
    }

    /// @dev Adds CL pairs, Value should be passed in wei
    function addContributedLiquidityPair(
        IERC20 _lpToken,
        IERC20 _baseToken,
        uint256 _allocPxa
    ) external returns (bool) {
        require(msg.sender == devaddr, "PCL: FORBIDDEN");
        totalContributedPxa = totalContributedPxa.add(_allocPxa);
        poolInfo.push(
            PoolInfo({
                lpToken: _lpToken,
                baseToken: _baseToken,
                allocPxa: _allocPxa,
                depositedBaseToken: 0,
                contributedPxa: 0
            })
        );
        return _baseToken.approve(router, MAX_INT);
    }

    /// @dev Adds liquidity token
    function addLiquidityToken(uint256 _pid, uint256 _amount) external {
        poolInfo[_pid].baseToken.safeTransferFrom(
            address(msg.sender),
            address(this),
            _amount
        );
        _addLiquidity(_pid, _amount);
    }

    /// @dev Adds liquidity BNB
    function addLiquidityBNB() external payable {
        require(msg.value > 0, "PCL: INSUFFIENT_SUPPLY");
        WBNB.deposit{value: msg.value}();
        _addLiquidity(0, msg.value);
    }

    function _addLiquidity(uint256 _pid, uint256 _amount) internal {
        PoolInfo storage pool = poolInfo[_pid];

        (uint256 amountA, uint256 amountB) =
            IUniswapV2Router(router).getOptimalAmount(
                address(pool.baseToken),
                address(pxa),
                _amount
            );
        require(
            amountB <= pool.allocPxa.sub(pool.contributedPxa),
            "PCL: INSUFFICIENT_CONTRIBUTION_LEFT"
        );

        (uint256 amount0, uint256 amount1, uint256 liquidity) =
            IUniswapV2Router(router).addLiquidity(
                address(pool.baseToken),
                address(pxa),
                amountA,
                amountB,
                amountA,
                amountB,
                address(this),
                block.timestamp.add(lockPeriod)
            );

        userInfo[_pid][msg.sender].push(
            UserInfo({
                liquidity: liquidity,
                depositedBaseToken: amount0,
                contributionReceived: amount1,
                depositTime: block.timestamp,
                unlockTime: block.timestamp.add(lockPeriod),
                withdrawn: false
            })
        );

        pool.contributedPxa = pool.contributedPxa.add(amount1);
        pool.depositedBaseToken = pool.depositedBaseToken.add(amount0);

        emit Deposit(msg.sender, _pid, liquidity);
    }

    /// @dev Withdraw LP tokens
    function withdrawLiquidity(uint256 _pid, uint256 _ulid) external {
        UserInfo[] memory user = userInfo[_pid][msg.sender];
        PoolInfo storage pool = poolInfo[_pid];
        require(_ulid < user.length, "PCL: OUT_OF_BOUNDS");
        require(user[_ulid].liquidity > 0, "PCL: NO_LIQUIDITY");
        require(
            user[_ulid].unlockTime <= block.timestamp,
            "PCL: TIME_UNDERBOUNDS"
        );
        require(user[_ulid].withdrawn == false, "PCL: ALREADY_WITHDRAWN");

        userInfo[_pid][msg.sender][_ulid].withdrawn = true;
        safeLiquidityTransfer(pool.lpToken, msg.sender, user[_ulid].liquidity);
        emit Withdraw(msg.sender, _pid, user[_ulid].liquidity);
    }

    /// @dev Safe transfer of LP
    function safeLiquidityTransfer(
        IERC20 _lpToken,
        address _to,
        uint256 _amount
    ) internal {
        uint256 clBal = _lpToken.balanceOf(address(this));
        if (_amount > clBal) {
            _lpToken.safeTransfer(_to, clBal);
        } else {
            _lpToken.safeTransfer(_to, _amount);
        }
    }

    /// @dev Pure Dapp function, Returns CL state
    function getStat()
        external
        view
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        return (
            totalContributedPxa,
            IERC20(pxa).balanceOf(address(this)),
            lockPeriod
        );
    }

    /// @dev Pure Dapp function, Returns user state
    function getUserStat(uint256 _pid, address _who)
        external
        view
        returns (UserInfo[] memory)
    {
        return userInfo[_pid][_who];
    }

    /// @dev Pure Dapp function, Returns pool state
    function getPoolStat(uint256 _pid) external view returns (PoolInfo memory) {
        return poolInfo[_pid];
    }

    /// @dev update proxima developer address
    function dev(address _devaddr) public {
        require(msg.sender == devaddr, "PCL: FORBIDDEN");
        devaddr = _devaddr;
    }

    /// @dev Sets router and approve contributed pxa utilization
    function setRouter(address _router) public {
        require(msg.sender == devaddr, "PCL: FORBIDDEN");
        router = _router;
        IERC20(pxa).approve(router, MAX_INT);
    }
}

File 2 of 7 : IUniswapV2Router.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.6.2;

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

    function WBNB() external pure returns (address);

    function governor() external pure returns (address);

    function pairGovernance() external pure returns (bool);

    function rewardVault() external pure returns (address);

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

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

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

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

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

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

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

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

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

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

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

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

    function setPairGovernanceState(bool) external;

    function reannounceGovernor(address) external;

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

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

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

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

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

    function getOptimalAmount(
        address tokenA,
        address tokenB,
        uint256 amountADesired
    ) external view returns (uint256 amountA, uint256 amountB);
}

File 3 of 7 : IWETH.sol
// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.5.0;

interface IWETH {
    function deposit() external payable;
    function transfer(address to, uint value) external returns (bool);
    function withdraw(uint) external;
}

File 4 of 7 : SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Wrappers over Solidity's arithmetic operations with added overflow
 * checks.
 *
 * Arithmetic operations in Solidity wrap on overflow. This can easily result
 * in bugs, because programmers usually assume that an overflow raises an
 * error, which is the standard behavior in high level programming languages.
 * `SafeMath` restores this intuition by reverting the transaction when an
 * operation overflows.
 *
 * Using this library instead of the unchecked operations eliminates an entire
 * class of bugs, so it's recommended to use it always.
 */
library SafeMath {
    /**
     * @dev Returns the addition of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        uint256 c = a + b;
        if (c < a) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the substraction of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b > a) return (false, 0);
        return (true, a - b);
    }

    /**
     * @dev Returns the multiplication of two unsigned integers, with an overflow flag.
     *
     * _Available since v3.4._
     */
    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) return (true, 0);
        uint256 c = a * b;
        if (c / a != b) return (false, 0);
        return (true, c);
    }

    /**
     * @dev Returns the division of two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a / b);
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers, with a division by zero flag.
     *
     * _Available since v3.4._
     */
    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        if (b == 0) return (false, 0);
        return (true, a % b);
    }

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

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

    /**
     * @dev Returns the multiplication of two unsigned integers, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `*` operator.
     *
     * Requirements:
     *
     * - Multiplication cannot overflow.
     */
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) return 0;
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

    /**
     * @dev Returns the subtraction of two unsigned integers, reverting with custom message on
     * overflow (when the result is negative).
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {trySub}.
     *
     * Counterpart to Solidity's `-` operator.
     *
     * Requirements:
     *
     * - Subtraction cannot overflow.
     */
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        return a - b;
    }

    /**
     * @dev Returns the integer division of two unsigned integers, reverting with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryDiv}.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a / b;
    }

    /**
     * @dev Returns the remainder of dividing two unsigned integers. (unsigned integer modulo),
     * reverting with custom message when dividing by zero.
     *
     * CAUTION: This function is deprecated because it requires allocating memory for the error
     * message unnecessarily. For custom revert reasons use {tryMod}.
     *
     * Counterpart to Solidity's `%` operator. This function uses a `revert`
     * opcode (which leaves remaining gas untouched) while Solidity uses an
     * invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        return a % b;
    }
}

File 5 of 7 : IERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

/**
 * @dev Interface of the ERC20 standard as defined in the EIP.
 */
interface IERC20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

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

File 6 of 7 : SafeERC20.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.0 <0.8.0;

import "./IERC20.sol";
import "../../math/SafeMath.sol";
import "../../utils/Address.sol";

/**
 * @title SafeERC20
 * @dev Wrappers around ERC20 operations that throw on failure (when the token
 * contract returns false). Tokens that return no value (and instead revert or
 * throw on failure) are also supported, non-reverting calls are assumed to be
 * successful.
 * To use this library you can add a `using SafeERC20 for IERC20;` statement to your contract,
 * which allows you to call the safe operations as `token.safeTransfer(...)`, etc.
 */
library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

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

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

    /**
     * @dev Deprecated. This function has issues similar to the ones found in
     * {IERC20-approve}, and its usage is discouraged.
     *
     * Whenever possible, use {safeIncreaseAllowance} and
     * {safeDecreaseAllowance} instead.
     */
    function safeApprove(IERC20 token, address spender, uint256 value) internal {
        // safeApprove should only be called when setting an initial allowance,
        // or when resetting it to zero. To increase and decrease it, use
        // 'safeIncreaseAllowance' and 'safeDecreaseAllowance'
        // solhint-disable-next-line max-line-length
        require((value == 0) || (token.allowance(address(this), spender) == 0),
            "SafeERC20: approve from non-zero to non-zero allowance"
        );
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function safeIncreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).add(value);
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    function safeDecreaseAllowance(IERC20 token, address spender, uint256 value) internal {
        uint256 newAllowance = token.allowance(address(this), spender).sub(value, "SafeERC20: decreased allowance below zero");
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, newAllowance));
    }

    /**
     * @dev Imitates a Solidity high-level call (i.e. a regular function call to a contract), relaxing the requirement
     * on the return value: the return value is optional (but if data is returned, it must not be false).
     * @param token The token targeted by the call.
     * @param data The call data (encoded using abi.encode or one of its variants).
     */
    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        // We need to perform a low level call here, to bypass Solidity's return data size checking mechanism, since
        // we're implementing it ourselves. We use {Address.functionCall} to perform this call, which verifies that
        // the target address contains contract code and also asserts for success in the low-level call.

        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

File 7 of 7 : Address.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.6.2 <0.8.0;

/**
 * @dev Collection of functions related to the address type
 */
library Address {
    /**
     * @dev Returns true if `account` is a contract.
     *
     * [IMPORTANT]
     * ====
     * It is unsafe to assume that an address for which this function returns
     * false is an externally-owned account (EOA) and not a contract.
     *
     * Among others, `isContract` will return false for the following
     * types of addresses:
     *
     *  - an externally-owned account
     *  - a contract in construction
     *  - an address where a contract will be created
     *  - an address where a contract lived, but was destroyed
     * ====
     */
    function isContract(address account) internal view returns (bool) {
        // This method relies on extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

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

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

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

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

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but also transferring `value` wei to `target`.
     *
     * Requirements:
     *
     * - the calling contract must have an ETH balance of at least `value`.
     * - the called Solidity function must be `payable`.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    /**
     * @dev Same as {xref-Address-functionCallWithValue-address-bytes-uint256-}[`functionCallWithValue`], but
     * with `errorMessage` as a fallback revert reason when `target` reverts.
     *
     * _Available since v3.1._
     */
    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a static call.
     *
     * _Available since v3.3._
     */
    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    /**
     * @dev Same as {xref-Address-functionCall-address-bytes-string-}[`functionCall`],
     * but performing a delegate call.
     *
     * _Available since v3.4._
     */
    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            // Look for revert reason and bubble it up if present
            if (returndata.length > 0) {
                // The easiest way to bubble the revert reason is using memory via assembly

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

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

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"_pxa","type":"address"},{"internalType":"contract IWETH","name":"_WBNB","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"user","type":"address"},{"indexed":true,"internalType":"uint256","name":"pid","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"Withdraw","type":"event"},{"inputs":[],"name":"WBNB","outputs":[{"internalType":"contract IWETH","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"contract IERC20","name":"_lpToken","type":"address"},{"internalType":"contract IERC20","name":"_baseToken","type":"address"},{"internalType":"uint256","name":"_allocPxa","type":"uint256"}],"name":"addContributedLiquidityPair","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"addLiquidityBNB","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"addLiquidityToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_devaddr","type":"address"}],"name":"dev","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"devaddr","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"}],"name":"getPoolStat","outputs":[{"components":[{"internalType":"contract IERC20","name":"lpToken","type":"address"},{"internalType":"contract IERC20","name":"baseToken","type":"address"},{"internalType":"uint256","name":"allocPxa","type":"uint256"},{"internalType":"uint256","name":"contributedPxa","type":"uint256"},{"internalType":"uint256","name":"depositedBaseToken","type":"uint256"}],"internalType":"struct ProximaContributedLiquidity.PoolInfo","name":"","type":"tuple"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getStat","outputs":[{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"},{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"address","name":"_who","type":"address"}],"name":"getUserStat","outputs":[{"components":[{"internalType":"uint256","name":"liquidity","type":"uint256"},{"internalType":"uint256","name":"depositedBaseToken","type":"uint256"},{"internalType":"uint256","name":"contributionReceived","type":"uint256"},{"internalType":"uint256","name":"depositTime","type":"uint256"},{"internalType":"uint256","name":"unlockTime","type":"uint256"},{"internalType":"bool","name":"withdrawn","type":"bool"}],"internalType":"struct ProximaContributedLiquidity.UserInfo[]","name":"","type":"tuple[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"poolLength","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pxa","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"setRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_pid","type":"uint256"},{"internalType":"uint256","name":"_ulid","type":"uint256"}],"name":"withdrawLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405262278d0060055560001960065534801561001d57600080fd5b50604051620017e3380380620017e383398101604081905261003e9161007f565b600180546001600160a01b039384166001600160a01b03199182161790915560008054929093169181169190911790915560038054909116331790556100d0565b60008060408385031215610091578182fd5b825161009c816100b8565b60208401519092506100ad816100b8565b809150509250929050565b6001600160a01b03811681146100cd57600080fd5b50565b61170380620000e06000396000f3fe6080604052600436106100dd5760003560e01c80638ce1ed201161007f578063c0d7865511610059578063c0d7865514610244578063ce509f8d14610264578063d49e77cd14610279578063f887ea401461028e576100dd565b80638ce1ed20146101d55780638d88a90e146102025780638dd9500214610222576100dd565b806341bffd0e116100bb57806341bffd0e1461015e5780634cbcccef1461018b5780637abf4272146101ad5780637ddced5a146101b5576100dd565b8063081e3eda146100e2578063101cad521461010d5780632b71b0e51461013a575b600080fd5b3480156100ee57600080fd5b506100f76102a3565b604051610104919061166a565b60405180910390f35b34801561011957600080fd5b5061012d6101283660046111d9565b6102a9565b604051610104919061132f565b34801561014657600080fd5b5061014f610361565b60405161010493929190611673565b34801561016a57600080fd5b5061017e610179366004611169565b6103fa565b60405161010491906113a9565b34801561019757600080fd5b506101ab6101a6366004611208565b6105f0565b005b6101ab610636565b3480156101c157600080fd5b506101ab6101d0366004611208565b6106ca565b3480156101e157600080fd5b506101f56101f03660046111a9565b610933565b6040516101049190611627565b34801561020e57600080fd5b506101ab61021d36600461112d565b6109a6565b34801561022e57600080fd5b506102376109f2565b6040516101049190611295565b34801561025057600080fd5b506101ab61025f36600461112d565b610a01565b34801561027057600080fd5b50610237610acb565b34801561028557600080fd5b50610237610ada565b34801561029a57600080fd5b50610237610ae9565b60075490565b60008281526008602090815260408083206001600160a01b03851684528252808320805482518185028101850190935280835260609492939192909184015b828210156103555760008481526020908190206040805160c08101825260068602909201805483526001808201548486015260028201549284019290925260038101546060840152600481015460808401526005015460ff16151560a083015290835290920191016102e8565b50505050905092915050565b600480546001546040516370a0823160e01b81526000938493849390926001600160a01b03909116916370a082319161039c91309101611295565b60206040518083038186803b1580156103b457600080fd5b505afa1580156103c8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103ec91906111c1565b600554925092509250909192565b6003546000906001600160a01b031633146104305760405162461bcd60e51b815260040161042790611449565b60405180910390fd5b60045461043d9083610af8565b60049081556040805160a0810182526001600160a01b0380881682528681166020830181815283850188815260006060860181815260808701828152600780546001810182559352965160059092027fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c688810180549388166001600160a01b031994851617905593517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68985018054918816919093161790915590517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68a830155517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68b82015592517fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c68c90930192909255600254600654935163095ea7b360e01b8152929463095ea7b3946105949492909316929101611316565b602060405180830381600087803b1580156105ae57600080fd5b505af11580156105c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906105e69190611149565b90505b9392505050565b6106283330836007868154811061060357fe5b60009182526020909120600160059092020101546001600160a01b0316929190610b1d565b6106328282610b7b565b5050565b600034116106565760405162461bcd60e51b8152600401610427906114d4565b60008054906101000a90046001600160a01b03166001600160a01b031663d0e30db0346040518263ffffffff1660e01b81526004016000604051808303818588803b1580156106a457600080fd5b505af11580156106b8573d6000803e3d6000fd5b50505050506106c8600034610b7b565b565b60008281526008602090815260408083203384528252808320805482518185028101850190935280835260609492939192909184015b8282101561076d5760008481526020908190206040805160c08101825260068602909201805483526001808201548486015260028201549284019290925260038101546060840152600481015460808401526005015460ff16151560a08301529083529092019101610700565b50505050905060006007848154811061078257fe5b90600052602060002090600502019050815183106107b25760405162461bcd60e51b8152600401610427906114a8565b60008284815181106107c057fe5b602002602001015160000151116107e95760405162461bcd60e51b8152600401610427906113e7565b428284815181106107f657fe5b60200260200101516080015111156108205760405162461bcd60e51b8152600401610427906115b5565b81838151811061082c57fe5b602090810291909101015160a00151156108585760405162461bcd60e51b815260040161042790611504565b600084815260086020908152604080832033845290915290208054600191908590811061088157fe5b60009182526020909120600690910201600501805460ff1916911515919091179055805482516108d4916001600160a01b03169033908590879081106108c357fe5b602002602001015160000151610e72565b83336001600160a01b03167ff279e6a1f5e320cca91135676d9cb6e44ca8a08c0b88342bcdb1144f6511b56884868151811061090c57fe5b602002602001015160000151604051610925919061166a565b60405180910390a350505050565b61093b6110ec565b6007828154811061094857fe5b60009182526020918290206040805160a081018252600590930290910180546001600160a01b039081168452600182015416938301939093526002830154908201526003820154606082015260049091015460808201529050919050565b6003546001600160a01b031633146109d05760405162461bcd60e51b815260040161042790611449565b600380546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031681565b6003546001600160a01b03163314610a2b5760405162461bcd60e51b815260040161042790611449565b600280546001600160a01b0319166001600160a01b03838116919091179182905560015460065460405163095ea7b360e01b81529183169363095ea7b393610a799391169190600401611316565b602060405180830381600087803b158015610a9357600080fd5b505af1158015610aa7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906106329190611149565b6001546001600160a01b031681565b6003546001600160a01b031681565b6002546001600160a01b031681565b6000828201838110156105e95760405162461bcd60e51b815260040161042790611412565b610b75846323b872dd60e01b858585604051602401610b3e939291906112a9565b60408051601f198184030181529190526020810180516001600160e01b03166001600160e01b031990931692909217909152610f28565b50505050565b600060078381548110610b8a57fe5b600091825260208220600254600592909202016001818101549054604051630ab7dd9360e21b815292955084936001600160a01b0390811693632adf764c93610bdd9390831692169089906004016112a9565b604080518083038186803b158015610bf457600080fd5b505afa158015610c08573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c2c9190611229565b91509150610c4b83600301548460020154610fbc90919063ffffffff16565b811115610c6a5760405162461bcd60e51b8152600401610427906115e4565b6002546001848101549054600554600093849384936001600160a01b039283169363e8e3370093928316929091169089908990829082903090610cae904290610af8565b6040518963ffffffff1660e01b8152600401610cd19897969594939291906112cd565b606060405180830381600087803b158015610ceb57600080fd5b505af1158015610cff573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610d23919061124c565b925092509250600860008981526020019081526020016000206000336001600160a01b03166001600160a01b031681526020019081526020016000206040518060c00160405280838152602001858152602001848152602001428152602001610d9760055442610af890919063ffffffff16565b81526000602091820181905283546001808201865594825290829020835160069092020190815590820151928101929092556040810151600283015560608101516003808401919091556080820151600484015560a0909101516005909201805460ff191692151592909217909155860154610e139083610af8565b60038701556004860154610e279084610af8565b6004870155604051889033907f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a1590610e6090859061166a565b60405180910390a35050505050505050565b6040516370a0823160e01b81526000906001600160a01b038516906370a0823190610ea1903090600401611295565b60206040518083038186803b158015610eb957600080fd5b505afa158015610ecd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ef191906111c1565b905080821115610f1457610f0f6001600160a01b0385168483610fe4565b610b75565b610b756001600160a01b0385168484610fe4565b6060610f7d826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166110039092919063ffffffff16565b805190915015610fb75780806020019051810190610f9b9190611149565b610fb75760405162461bcd60e51b81526004016104279061156b565b505050565b600082821115610fde5760405162461bcd60e51b815260040161042790611471565b50900390565b610fb78363a9059cbb60e01b8484604051602401610b3e929190611316565b60606105e6848460008585611017856110ad565b6110335760405162461bcd60e51b815260040161042790611534565b60006060866001600160a01b031685876040516110509190611279565b60006040518083038185875af1925050503d806000811461108d576040519150601f19603f3d011682016040523d82523d6000602084013e611092565b606091505b50915091506110a28282866110b3565b979650505050505050565b3b151590565b606083156110c25750816105e9565b8251156110d25782518084602001fd5b8160405162461bcd60e51b815260040161042791906113b4565b6040518060a0016040528060006001600160a01b0316815260200160006001600160a01b031681526020016000815260200160008152602001600081525090565b60006020828403121561113e578081fd5b81356105e9816116b5565b60006020828403121561115a578081fd5b815180151581146105e9578182fd5b60008060006060848603121561117d578182fd5b8335611188816116b5565b92506020840135611198816116b5565b929592945050506040919091013590565b6000602082840312156111ba578081fd5b5035919050565b6000602082840312156111d2578081fd5b5051919050565b600080604083850312156111eb578182fd5b8235915060208301356111fd816116b5565b809150509250929050565b6000806040838503121561121a578182fd5b50508035926020909101359150565b6000806040838503121561123b578182fd5b505080516020909101519092909150565b600080600060608486031215611260578283fd5b8351925060208401519150604084015190509250925092565b6000825161128b818460208701611689565b9190910192915050565b6001600160a01b0391909116815260200190565b6001600160a01b039384168152919092166020820152604081019190915260600190565b6001600160a01b039889168152968816602088015260408701959095526060860193909352608085019190915260a084015290921660c082015260e08101919091526101000190565b6001600160a01b03929092168252602082015260400190565b602080825282518282018190526000919060409081850190868401855b8281101561139c5781518051855286810151878601528581015186860152606080820151908601526080808201519086015260a09081015115159085015260c0909301929085019060010161134c565b5091979650505050505050565b901515815260200190565b60006020825282518060208401526113d3816040850160208701611689565b601f01601f19169190910160400192915050565b60208082526011908201527050434c3a204e4f5f4c495155494449545960781b604082015260600190565b6020808252601b908201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604082015260600190565b6020808252600e908201526d2821a61d102327a92124a22222a760911b604082015260600190565b6020808252601e908201527f536166654d6174683a207375627472616374696f6e206f766572666c6f770000604082015260600190565b60208082526012908201527150434c3a204f55545f4f465f424f554e445360701b604082015260600190565b60208082526016908201527550434c3a20494e5355464649454e545f535550504c5960501b604082015260600190565b6020808252601690820152752821a61d1020a62922a0a22cafaba4aa24222920aba760511b604082015260600190565b6020808252601d908201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604082015260600190565b6020808252602a908201527f5361666545524332303a204552433230206f7065726174696f6e20646964206e6040820152691bdd081cdd58d8d9595960b21b606082015260800190565b60208082526015908201527450434c3a2054494d455f554e444552424f554e445360581b604082015260600190565b60208082526023908201527f50434c3a20494e53554646494349454e545f434f4e545249425554494f4e5f4c60408201526211519560ea1b606082015260800190565b81516001600160a01b0390811682526020808401519091169082015260408083015190820152606080830151908201526080918201519181019190915260a00190565b90815260200190565b9283526020830191909152604082015260600190565b60005b838110156116a457818101518382015260200161168c565b83811115610b755750506000910152565b6001600160a01b03811681146116ca57600080fd5b5056fea2646970667358221220215c74509ced5f97f35dff8fdbb4e5ab6e66db0d6bb2a1bb5cfa294ced0af74264736f6c634300060c0033000000000000000000000000086b098699a219903f5a7df526ba2874f1637f30000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

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

000000000000000000000000086b098699a219903f5a7df526ba2874f1637f30000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

-----Decoded View---------------
Arg [0] : _pxa (address): 0x086b098699a219903f5a7df526ba2874f1637f30
Arg [1] : _WBNB (address): 0xbb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c

-----Encoded View---------------
2 Constructor Arguments found :
Arg [0] : 000000000000000000000000086b098699a219903f5a7df526ba2874f1637f30
Arg [1] : 000000000000000000000000bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c


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.