Contract 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da5 1

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xf90e660d41b43ab6484e98f4a3fe4f2311306aa3edfd7c5a950cc4c992ece94bApprove131025732021-12-01 11:50:002 days 17 hrs ago0x66acb1033aca72fb602b77197cbda35d39c58528 IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000310191
0xfada9378f4200a161cad664d4f6d75d53df8878c1de75210f3d56f31c2c83531Approve130370772021-11-29 0:34:255 days 4 hrs ago0xe0700f48409ae4d65f7d8b2dd6712177f235e899 IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000077460075
0x1be66f26d3a7140580e7bbab3c81ab19c71693f17659674c37de8cc75d762bccApprove130109642021-11-28 1:12:126 days 4 hrs ago0x05ff380fc40ba3c0000630aed6814fbf29d1c91e IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000221565
0xedf3eef54d634f96002720ecaa9b3be13c6c6d22c2c4122f1a82aa4c0fb2ee84Approve129024112021-11-23 23:28:1010 days 5 hrs ago0x91c423ef43c2764988fc385dea6a661f1033aae9 IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000072325
0xd94537b4622488677c33cda8f27ce9707cec1562f8162311e480a13fcba3d82fApprove128748152021-11-22 23:29:0611 days 5 hrs ago0x08dd7a7155e0fd4ce24334c21af2e2c66079293b IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000221565
0xe184735f6de7a600613061728e7bca700cb4163e6485dae0ce5e4a9c413aff7dApprove128319482021-11-21 10:44:2012 days 18 hrs ago0x7fd5aac46709f83fcb789bc7cb7a38aa59c1d291 IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000072325
0x4766aa04af303cd6f66941df6ac43c5e860d1d5a6a5ee6fa538543f0dd06903dApprove127304192021-11-17 18:57:5216 days 10 hrs ago0x22ed3edd3ffab2103340153271b5bf81024bcf77 IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000072325
0x6f75a550fe7f7ba93009be3637e38696d08e021adaef2425bf72b4544b3c7457Approve127304072021-11-17 18:57:0916 days 10 hrs ago0x8b9c00f584c6e36b483dfd1659017c51c8ddcd86 IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000072325
0xfc6a030acdec1e8c6348594b5b9d4d9e1e74bbb48ae88bc27dc2ea10b814d188Approve127114782021-11-17 1:47:5017 days 3 hrs ago0x053fd69755e63f90045440edf0e38febeaa9ba01 IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000072325
0xc29499a469d475f7de22ef55cf27766b52db192ebf34b8ec8873985249dd4bd2Approve127095262021-11-17 0:04:3717 days 5 hrs ago0x23d354dfa12e5f990f82ebf7fa1a61e66e9f2cf9 IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000221565
0xb26713d6ab9e34772cbaba9e191ebcb0fe3c18a29b20693284a90afd0f5e109aApprove126588402021-11-15 3:17:2619 days 2 hrs ago0xb5dac0677e780f398f07800789713c0c3a14a693 IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000072325
0x001ced99b02ec05e3360368b9bca05410309d315ced5cec54f4d93969dec32aaApprove125239972021-11-10 6:43:0923 days 22 hrs ago0x19614871921478e4df376e29988470d6d7969ccc IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000101255
0x85df46271996f10f5791e2492346b2896ac47d9ad178294271c7493f523a9338Approve124550322021-11-07 20:42:4326 days 8 hrs ago0xcc699bbee88cc670acb25b687ef1e7f41903c3cb IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000221565
0x5d58e59c8437d9b1dd25a9795c43e2e57a1634beaefcc20cf1e6e009afeb2d67Approve124423412021-11-07 10:04:1626 days 19 hrs ago0xb4d03da57197ed497bf8ca6592a2b51461d7514e IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.0000737715
0xc1d7bb865456e6b9cc6e0d55c6491235db631773b100d5496d55333ef0a5833fApprove124414262021-11-07 9:18:2426 days 20 hrs ago0x433a30f022c0798e657b86a2842df81e14551ba7 IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.0000737715
0xcee3148398b59f0a87b0e6d35abedd67209b959a50d958f2405eb85f6a221edbApprove124382862021-11-07 6:40:1326 days 22 hrs ago0x786c164f4d1c846569c2f2a68590099db6cc47af IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000072325
0xfb6275c01676eca5919fe504f77dee761d1c1bb74daff36b7804b4063181bee5Approve124000022021-11-05 22:29:3128 days 6 hrs ago0xc4f3863ae740139dc367ae8125bc8c4828d719df IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000072325
0x70d55a66c99f1628b674c514ad03c608b801ce1a93670ff7e00e983fd93ca2d3Approve123744582021-11-05 0:56:2729 days 4 hrs ago0x1b7b472c129b6962b00fe0db799856f1ef91a0ad IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.0000737715
0x16a2123e6ad4650b7ea396f27ed3878dcab264b7124df19c3ed24fd929260e8fApprove123737082021-11-05 0:18:5629 days 5 hrs ago0x7b34e461a963cdab03843e11b99dacd31a069286 IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000221565
0x6ea688a375055518e662f9879c4fac887817efae5e6ea86102ab012027b7f55bApprove123439962021-11-03 22:38:2330 days 6 hrs ago0x0f2b9ba8c54495d543dbd0c99611e1168716a88b IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000072325
0x4d74c17e67fd4f4c4e023111ea7746efc0f074d51e9bdafd6d67e595183c510aApprove123257062021-11-03 6:23:3130 days 22 hrs ago0x354029b0d5c417fed5f22522d3a1325b5397df8e IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000072325
0xaa855330034f6249d43b55fab3320f3cfd615229b56f0946d59a10bdb0c8631fApprove123076032021-11-02 14:58:5831 days 14 hrs ago0x58c344a1745917dc321803201d5b73db99058566 IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000072325
0x388411b06b85fae8e153122be7576d1292bdfd05494ddf98b966380052f872f5Approve123040982021-11-02 11:54:3431 days 17 hrs ago0x2388d48d773e360f1f10d2faa146044971748a7f IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000072325
0xb6bdc0a97d1bbb491b70e2fd73ff5e4b02821c9bd300e4e6e4025731ec2d3425Approve122741532021-11-01 10:21:1332 days 19 hrs ago0xf0c76b1818ba4dab7ff9d81aa823b77eb5280753 IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.000072325
0x6382948809a62c8f29adfb84a22581554031014bf70787be475431886b6a6c18Approve122630482021-11-01 0:44:2733 days 4 hrs ago0xa3a57cd98d4538c93c279e9aff41f9a6b261c203 IN  0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50 BNB0.0000737715
[ Download CSV Export 
Latest 25 internal transaction
Parent Txn Hash Block From To Value
0xdf71171942160ff7625c450352e91caae7ee1b06a735c4eb3f598ce08b08c6ef112851102021-09-27 17:21:5467 days 11 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50xf9f24b5ba8a1b23fcd305c48cab0de888316e3880.045069113016327193 BNB
0xbe0bb19ff88781a418e775efcfaa3b226feda1c0e2b6a2e20b9559b812c15f0c109702472021-09-16 17:30:0278 days 11 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50xf9f24b5ba8a1b23fcd305c48cab0de888316e3880.02584071275879475 BNB
0xbe0bb19ff88781a418e775efcfaa3b226feda1c0e2b6a2e20b9559b812c15f0c109702472021-09-16 17:30:0278 days 11 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da5 0x159b9bb97fdb0c8f69664fdbc2162c27e41ed6260.011074591182340607 BNB
0xbe0bb19ff88781a418e775efcfaa3b226feda1c0e2b6a2e20b9559b812c15f0c109702472021-09-16 17:30:0278 days 11 hrs ago PancakeSwap: Router v2 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50.047989895123475965 BNB
0xedd643b9d4f37c88cd10a3856a5667b7b9f6cf395c0222f8ef297504e5c5197a109702432021-09-16 17:29:5078 days 11 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50xf9f24b5ba8a1b23fcd305c48cab0de888316e3880.02584071275879475 BNB
0xedd643b9d4f37c88cd10a3856a5667b7b9f6cf395c0222f8ef297504e5c5197a109702432021-09-16 17:29:5078 days 11 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da5 0x159b9bb97fdb0c8f69664fdbc2162c27e41ed6260.011074591182340607 BNB
0xedd643b9d4f37c88cd10a3856a5667b7b9f6cf395c0222f8ef297504e5c5197a109702432021-09-16 17:29:5078 days 11 hrs ago PancakeSwap: Router v2 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50.047989895123475965 BNB
0x4fef9dbc752273effb827fc255e03293de623039a6dc41504fe55864381342ae109628352021-09-16 11:17:3178 days 18 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50xf9f24b5ba8a1b23fcd305c48cab0de888316e3880.026065671997541114 BNB
0x4fef9dbc752273effb827fc255e03293de623039a6dc41504fe55864381342ae109628352021-09-16 11:17:3178 days 18 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da5 0x159b9bb97fdb0c8f69664fdbc2162c27e41ed6260.011171002284660477 BNB
0x4fef9dbc752273effb827fc255e03293de623039a6dc41504fe55864381342ae109628352021-09-16 11:17:3178 days 18 hrs ago PancakeSwap: Router v2 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50.048407676566862069 BNB
0x7b1009bcce167104c10b075d7af67ccb4e7cf4fa9854a4781d13a5753798c52f109184772021-09-14 22:11:4180 days 7 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50xf9f24b5ba8a1b23fcd305c48cab0de888316e3880.026250481090572902 BNB
0x7b1009bcce167104c10b075d7af67ccb4e7cf4fa9854a4781d13a5753798c52f109184772021-09-14 22:11:4180 days 7 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da5 0x159b9bb97fdb0c8f69664fdbc2162c27e41ed6260.011250206181674101 BNB
0x7b1009bcce167104c10b075d7af67ccb4e7cf4fa9854a4781d13a5753798c52f109184772021-09-14 22:11:4180 days 7 hrs ago PancakeSwap: Router v2 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50.048750893453921105 BNB
0x7571079f095e9dd08a512e977146966b3849269deb42bce00686dd809818e695108550592021-09-12 17:13:4582 days 12 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50xf9f24b5ba8a1b23fcd305c48cab0de888316e3880.027004397857854674 BNB
0x7571079f095e9dd08a512e977146966b3849269deb42bce00686dd809818e695108550592021-09-12 17:13:4582 days 12 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da5 0x159b9bb97fdb0c8f69664fdbc2162c27e41ed6260.011573313367652003 BNB
0x7571079f095e9dd08a512e977146966b3849269deb42bce00686dd809818e695108550592021-09-12 17:13:4582 days 12 hrs ago PancakeSwap: Router v2 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50.050151024593158682 BNB
0x8cd8dbab3dddece3bf5238db28521544c5a7cc3bcdd06c6cc1df300f38c8b371108180462021-09-11 10:14:4383 days 19 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50xf9f24b5ba8a1b23fcd305c48cab0de888316e3880.1685644575772813 BNB
0xca9c564de02fe6338ec4b7a88aa2eadc212bb978d462c9e081113745c5e0d9e3107935172021-09-10 13:29:3384 days 15 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50xf9f24b5ba8a1b23fcd305c48cab0de888316e3880.02759781833049235 BNB
0xca9c564de02fe6338ec4b7a88aa2eadc212bb978d462c9e081113745c5e0d9e3107935172021-09-10 13:29:3384 days 15 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da5 0x159b9bb97fdb0c8f69664fdbc2162c27e41ed6260.011827636427353864 BNB
0xca9c564de02fe6338ec4b7a88aa2eadc212bb978d462c9e081113745c5e0d9e3107935172021-09-10 13:29:3384 days 15 hrs ago PancakeSwap: Router v2 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50.051253091185200079 BNB
0xec3c1b5ea813ac5ddc49dab199b0bd38cbccb8f6d0ed8408c44bc0e3d706cf46107934322021-09-10 13:25:1884 days 15 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50xf9f24b5ba8a1b23fcd305c48cab0de888316e3880.028386854067165392 BNB
0xec3c1b5ea813ac5ddc49dab199b0bd38cbccb8f6d0ed8408c44bc0e3d706cf46107934322021-09-10 13:25:1884 days 15 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da5 0x159b9bb97fdb0c8f69664fdbc2162c27e41ed6260.012165794600213739 BNB
0xec3c1b5ea813ac5ddc49dab199b0bd38cbccb8f6d0ed8408c44bc0e3d706cf46107934322021-09-10 13:25:1884 days 15 hrs ago PancakeSwap: Router v2 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50.052718443267592871 BNB
0xcfa38c2fcd7870093669ab224a67b34a0257e788b103b29b478ecbeceb5c201f107933752021-09-10 13:22:2784 days 15 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da50xf9f24b5ba8a1b23fcd305c48cab0de888316e3880.029392375825812891 BNB
0xcfa38c2fcd7870093669ab224a67b34a0257e788b103b29b478ecbeceb5c201f107933752021-09-10 13:22:2784 days 15 hrs ago 0x37f8e8d0cbd0b0959887424c13a01a7e73a19da5 0x159b9bb97fdb0c8f69664fdbc2162c27e41ed6260.012596732496776953 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BABYARABIA

Compiler Version
v0.6.12+commit.27d51765

Optimization Enabled:
Yes with 20000 runs

Other Settings:
default evmVersion

Contract Source Code (Solidity Standard Json-Input format)

File 1 of 6 : babyarabia.sol
//SPDX-License-Identifier: MIT

pragma solidity >=0.6.0;

import "@pancakeswap/pancake-swap-lib/contracts/token/BEP20/IBEP20.sol";
import "@pancakeswap/pancake-swap-lib/contracts/math/SafeMath.sol";
import "pancakeswap-peripheral/contracts/interfaces/IPancakeRouter02.sol";
import "@pancakeswap-libs/pancake-swap-core/contracts/interfaces/IPancakeFactory.sol";

abstract contract Auth {
    address internal owner;
    mapping (address => bool) internal authorizations;

    constructor(address _owner) internal {
        owner = _owner;
        authorizations[_owner] = true;
    }

    /**
     * Function modifier to require caller to be contract owner
     */
    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER"); _;
    }

    /**
     * Function modifier to require caller to be authorized
     */
    modifier authorized() {
        require(isAuthorized(msg.sender), "!AUTHORIZED"); _;
    }

    /**
     * Authorize address. Owner only
     */
    function authorize(address adr) public onlyOwner {
        authorizations[adr] = true;
    }

    /**
     * Remove address' authorization. Owner only
     */
    function unauthorize(address adr) public onlyOwner {
        authorizations[adr] = false;
    }

    /**
     * Check if address is owner
     */
    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    /**
     * Return address' authorization status
     */
    function isAuthorized(address adr) public view returns (bool) {
        return authorizations[adr];
    }

    /**
     * Transfer ownership to new address. Caller must be owner. Leaves old owner authorized
     */
    function transferOwnership(address payable adr) public onlyOwner {
        owner = adr;
        authorizations[adr] = true;
        emit OwnershipTransferred(adr);
    }

    event OwnershipTransferred(address owner);
}

interface IDividendDistributor {
    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external;
    function setShare(address shareholder, uint256 amount) external;
    function deposit() external payable;
    function process(uint256 gas) external;
}

contract DividendDistributor is IDividendDistributor {
    using SafeMath for uint256;

    address _token;

    struct Share {
        uint256 amount;
        uint256 totalExcluded;
        uint256 totalRealised;
    }

    IBEP20 BTCB = IBEP20(0x7130d2A12B9BCbFAe4f2634d864A1Ee1Ce3Ead9c);
    address WBNB = address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c);
    IPancakeRouter02 router;

    address[] shareholders;
    mapping (address => uint256) shareholderIndexes;
    mapping (address => uint256) shareholderClaims;

    mapping (address => Share) public shares;

    uint256 public totalShares;
    uint256 public totalDividends;
    uint256 public totalDistributed;
    uint256 public dividendsPerShare;
    uint256 public dividendsPerShareAccuracyFactor = 10 ** 36;

    uint256 public minPeriod = 15 * 60;
    uint256 public minDistribution = 10 ** 9;

    uint256 currentIndex;

    bool initialized;
    modifier initialization() {
        require(!initialized);
        _;
        initialized = true;
    }

    modifier onlyToken() {
        require(msg.sender == _token);
        _;
    }

    constructor (address _router) public {
        router = _router != address(0)
        ? IPancakeRouter02(_router)
        : IPancakeRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        _token = msg.sender;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external override onlyToken {
        minPeriod = _minPeriod;
        minDistribution = _minDistribution;
    }

    function setShare(address shareholder, uint256 amount) external override onlyToken {
        if(shares[shareholder].amount > 0){
            distributeDividend(shareholder);
        }

        if(amount > 0 && shares[shareholder].amount == 0){
            addShareholder(shareholder);
        }else if(amount == 0 && shares[shareholder].amount > 0){
            removeShareholder(shareholder);
        }

        totalShares = totalShares.sub(shares[shareholder].amount).add(amount);
        shares[shareholder].amount = amount;
        shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
    }

    function deposit() external payable override onlyToken {
        uint256 balanceBefore = BTCB.balanceOf(address(this));

        address[] memory path = new address[](2);
        path[0] = WBNB;
        path[1] = address(BTCB);

        router.swapExactETHForTokensSupportingFeeOnTransferTokens{value: msg.value}(
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amount = BTCB.balanceOf(address(this)).sub(balanceBefore);

        totalDividends = totalDividends.add(amount);
        dividendsPerShare = dividendsPerShare.add(dividendsPerShareAccuracyFactor.mul(amount).div(totalShares));
    }

    function process(uint256 gas) external override onlyToken {
        uint256 shareholderCount = shareholders.length;

        if(shareholderCount == 0) { return; }

        uint256 gasUsed = 0;
        uint256 gasLeft = gasleft();

        uint256 iterations = 0;

        while(gasUsed < gas && iterations < shareholderCount) {
            if(currentIndex >= shareholderCount){
                currentIndex = 0;
            }

            if(shouldDistribute(shareholders[currentIndex])){
                distributeDividend(shareholders[currentIndex]);
            }

            gasUsed = gasUsed.add(gasLeft.sub(gasleft()));
            gasLeft = gasleft();
            currentIndex++;
            iterations++;
        }
    }

    function shouldDistribute(address shareholder) internal view returns (bool) {
        return shareholderClaims[shareholder] + minPeriod < block.timestamp
        && getUnpaidEarnings(shareholder) > minDistribution;
    }

    function distributeDividend(address shareholder) internal {
        if(shares[shareholder].amount == 0){ return; }

        uint256 amount = getUnpaidEarnings(shareholder);
        if(amount > 0){
            totalDistributed = totalDistributed.add(amount);
            BTCB.transfer(shareholder, amount);
            shareholderClaims[shareholder] = block.timestamp;
            shares[shareholder].totalRealised = shares[shareholder].totalRealised.add(amount);
            shares[shareholder].totalExcluded = getCumulativeDividends(shares[shareholder].amount);
        }
    }

    function claimDividend() external {
        distributeDividend(msg.sender);
    }

    function getUnpaidEarnings(address shareholder) public view returns (uint256) {
        if(shares[shareholder].amount == 0){ return 0; }

        uint256 shareholderTotalDividends = getCumulativeDividends(shares[shareholder].amount);
        uint256 shareholderTotalExcluded = shares[shareholder].totalExcluded;

        if(shareholderTotalDividends <= shareholderTotalExcluded){ return 0; }

        return shareholderTotalDividends.sub(shareholderTotalExcluded);
    }

    function getCumulativeDividends(uint256 share) internal view returns (uint256) {
        return share.mul(dividendsPerShare).div(dividendsPerShareAccuracyFactor);
    }

    function addShareholder(address shareholder) internal {
        shareholderIndexes[shareholder] = shareholders.length;
        shareholders.push(shareholder);
    }

    function removeShareholder(address shareholder) internal {
        shareholders[shareholderIndexes[shareholder]] = shareholders[shareholders.length-1];
        shareholderIndexes[shareholders[shareholders.length-1]] = shareholderIndexes[shareholder];
        shareholders.pop();
    }
}

contract BABYARABIA is IBEP20, Auth {
    using SafeMath for uint256;

    address WBNB = address(0xbb4CdB9CBd36B01bD1cBaEBF2De08d9173bc095c);
    address deadAddress = 0x000000000000000000000000000000000000dEaD;

    string constant _name = "BABY ARABIA";
    string constant _symbol = "BABYARABIA";
    uint256 constant _decimals = 5;

    uint256 _totalSupply = 10**9 * (10 ** _decimals);
    uint256 public _maxTxAmount = _totalSupply.div(100);

    //max wallet holding of 2%
    uint256 public _maxWalletToken = _totalSupply.div(100);

    mapping (address => uint256) _balances;
    mapping (address => mapping (address => uint256)) _allowances;

    mapping (address => bool) isFeeExempt;
    mapping (address => bool) isTxLimitExempt;
    mapping (address => bool) isTimelockExempt;
    mapping (address => bool) isDividendExempt;
    mapping (address => bool) isTeamMember;

    uint256 liquidityFee = 5;
    uint256 reflectionFee = 5;
    uint256 marketingFee = 5;
    uint256 public totalFee = 15;
    uint256 feeDenominator = 100;
    uint256 additionalSellReflectionTax = 5;

    address public autoLiquidityReceiver;
    address public marketingFeeReceiver;

    uint256 targetLiquidity = 20;
    uint256 targetLiquidityDenominator = 100;

    IPancakeRouter02 public router;
    address public pair;

    bool public tradingOpen = false;
    uint256 private tradingOpenedAt;

    DividendDistributor distributor;
    uint256 distributorGas = 500000;

    // Cooldown & timer functionality
    bool public buyCooldownEnabled = true;
    uint8 public cooldownTimerInterval = 45;
    mapping (address => uint) private cooldownTimer;

    bool public swapEnabled = true;
    uint256 public swapThreshold = _totalSupply.div(1000);
    bool inSwap;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor (address OWNER) Auth(OWNER) public {
        router = IPancakeRouter02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        pair = IPancakeFactory(router.factory()).createPair(WBNB, address(this));
        _allowances[address(this)][address(router)] = uint256(-1);

        distributor = new DividendDistributor(address(router));

        isFeeExempt[msg.sender] = true;
        isTxLimitExempt[msg.sender] = true;
        isFeeExempt[OWNER] = true;
        isTxLimitExempt[OWNER] = true;

        // No timelock for these people
        isTimelockExempt[msg.sender] = true;
        isTimelockExempt[deadAddress] = true;
        isTimelockExempt[address(this)] = true;

        isDividendExempt[pair] = true;
        isDividendExempt[address(this)] = true;
        isDividendExempt[deadAddress] = true;

        autoLiquidityReceiver = deadAddress;
        marketingFeeReceiver = address(0xF9F24B5Ba8A1b23FcD305C48CaB0dE888316E388);
        uint256 twoPercent = _totalSupply.mul(2).div(100);
        uint256 fivePercent = _totalSupply.mul(5).div(100);
        _balances[0x107647714B82a5B3c8A8AA3333a0ab1c2B026ada] = twoPercent;
        _balances[0xe21eCe7826fDA0fc24dB4688908a77B74097eA7b] = twoPercent;
        _balances[0x59A0e119636aB550cC6940CA3e2560E731fB7d14] = twoPercent;
        _balances[0xD2Ed0c778ba9D1679E98cc516E26C93ba4F9179c] = twoPercent.div(2);
        _balances[marketingFeeReceiver] = fivePercent;

        _balances[OWNER] = _totalSupply.sub((fivePercent).mul(2).add(twoPercent));
        emit Transfer(address(0), msg.sender, _totalSupply);

        isTeamMember[0xd026B413369ba842d41EE443AAA060E1EaC563FC] = true;
        isTeamMember[0x87CD19C5c8A57f94b1CacD1C9bad8768e9bc0aD6] = true;
        isTeamMember[0x7Fd71A3bcE12AD3bf712AdEBd70016EE0B735912] = true;
        isTeamMember[0xd3b0a3a83106F2bfde9E7ba68F5AB13d0aF9Dd70] = true;
        isTeamMember[0xe4e4b7117636581a0A7C734B4ad85F539F302113] = true;
        isTeamMember[0xC0b909D88531C5E1A6c14fada4825B27ab928ae9] = true;
        isTeamMember[0xBf43fC858cfaa91C6357F9aBE1445dCEcA586394] = true;
        isTeamMember[0xD58172107b4524842aB51b0Ee8c5d8A6b72bF5fA] = true;
        isTeamMember[0xecff16DF9c27036ca5dD2416f72fD3C26aAdbF29] = true;
        isTeamMember[0xfD35D61C79b69e10d9487550e0D5Ecc608fB125d] = true;
        isTeamMember[0xc7e5B9BcD4170CCB9BD75a0a58669680D0133A5D] = true;
    }

    receive() external payable { }

    function totalSupply() external view override returns (uint256) { return _totalSupply; }
    function decimals() external view override returns (uint8) { return uint8(_decimals); }
    function symbol() external view override returns (string memory) { return _symbol; }
    function name() external view override returns (string memory) { return _name; }
    function getOwner() external view override returns (address) { return owner; }
    function balanceOf(address account) public view override returns (uint256) { return _balances[account]; }
    function allowance(address holder, address spender) external view override returns (uint256) { return _allowances[holder][spender]; }

    function approve(address spender, uint256 amount) public override returns (bool) {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function approveMax(address spender) external returns (bool) {
        return approve(spender, uint256(-1));
    }

    function transfer(address recipient, uint256 amount) external override returns (bool) {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(address sender, address recipient, uint256 amount) external override returns (bool) {
        if(_allowances[sender][msg.sender] != uint256(-1)){
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender].sub(amount, "Insufficient Allowance");
        }
        return _transferFrom(sender, recipient, amount);
    }

    //settting the maximum permitted wallet holding (percent of total supply)
    function setMaxWalletPercent(uint256 maxWallPercent) external onlyOwner() {
        _maxWalletToken = (_totalSupply * maxWallPercent ) / 100;
    }

    function _transferFrom(address sender, address recipient, uint256 amount) internal returns (bool) {
        if(inSwap){ return _basicTransfer(sender, recipient, amount); }

        if(!authorizations[sender] && !authorizations[recipient]){
            require(tradingOpen,"Trading not open yet");
            if(block.timestamp < tradingOpenedAt)
                require(isTeamMember[sender] || isTeamMember[recipient]);
        }

        // max wallet code
        if (!authorizations[sender] && recipient != address(this)  && recipient != address(deadAddress) && recipient != pair && recipient != marketingFeeReceiver && recipient != autoLiquidityReceiver){
            uint256 heldTokens = balanceOf(recipient);
            require((heldTokens + amount) <= _maxWalletToken,"Total Holding is currently limited, you can not buy that much.");
        }

        // cooldown timer, so a bot doesnt do quick trades! 1min gap between 2 trades.
        if (sender == pair &&
            buyCooldownEnabled &&
            !isTimelockExempt[recipient]) {
            require(cooldownTimer[recipient] < block.timestamp,"Please wait for 1min between two buys");
            cooldownTimer[recipient] = block.timestamp + cooldownTimerInterval;
        }

        checkTxLimit(sender, amount);

        if(shouldSwapBack()){ swapBack(); }

        //Exchange tokens
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");

        if(recipient == pair){
            reflectionFee = reflectionFee.add(additionalSellReflectionTax);
        }
        uint256 amountReceived = shouldTakeFee(sender) ? takeFee(sender, amount) : amount;
        _balances[recipient] = _balances[recipient].add(amountReceived);
        if(recipient == pair){
            reflectionFee = reflectionFee.sub(additionalSellReflectionTax);
        }
        // Dividend tracker
        if(!isDividendExempt[sender]) {
            try distributor.setShare(sender, _balances[sender]) {} catch {}
        }

        if(!isDividendExempt[recipient]) {
            try distributor.setShare(recipient, _balances[recipient]) {} catch {}
        }

        try distributor.process(distributorGas) {} catch {}

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(address sender, address recipient, uint256 amount) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(amount, "Insufficient Balance");
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function checkTxLimit(address sender, uint256 amount) internal view {
        require(amount <= _maxTxAmount || isTxLimitExempt[sender], "TX Limit Exceeded");
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

    function takeFee(address sender, uint256 amount) internal returns (uint256) {
        uint256 feeAmount = amount.mul(totalFee).div(feeDenominator);

        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);

        return amount.sub(feeAmount);
    }

    function shouldSwapBack() internal view returns (bool) {
        return msg.sender != pair
        && !inSwap
        && swapEnabled
        && _balances[address(this)] >= swapThreshold;
    }

    function clearStuckBalance(uint256 amountPercentage) external onlyOwner {
        uint256 amountBNB = address(this).balance;
        payable(marketingFeeReceiver).transfer(amountBNB * amountPercentage / 100);
    }

    function openTrading() public onlyOwner {
        tradingOpen = true;
        tradingOpenedAt = block.timestamp + 30 seconds;
    }

    function addToTeamList(address _teamMember, bool _isTeamMember) external onlyOwner {
        isTeamMember[_teamMember] = _isTeamMember;
    }

    function cooldownEnabled(bool _status, uint8 _interval) public onlyOwner {
        buyCooldownEnabled = _status;
        cooldownTimerInterval = _interval;
    }

    function swapBack() internal swapping {
        uint256 dynamicLiquidityFee = isOverLiquified(targetLiquidity, targetLiquidityDenominator) ? 0 : liquidityFee;
        uint256 amountToLiquify = swapThreshold.mul(dynamicLiquidityFee).div(totalFee).div(2);
        uint256 amountToSwap = swapThreshold.sub(amountToLiquify);

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WBNB;

        uint256 balanceBefore = address(this).balance;

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amountToSwap,
            0,
            path,
            address(this),
            block.timestamp
        );

        uint256 amountBNB = address(this).balance.sub(balanceBefore);

        uint256 totalBNBFee = totalFee.sub(dynamicLiquidityFee.div(2));

        uint256 amountBNBLiquidity = amountBNB.mul(dynamicLiquidityFee).div(totalBNBFee).div(2);
        uint256 amountBNBReflection = amountBNB.mul(reflectionFee).div(totalBNBFee);
        uint256 amountBNBMarketing = amountBNB.mul(marketingFee).div(totalBNBFee);

        try distributor.deposit{value: amountBNBReflection}() {} catch {}
        (bool tmpSuccess,) = payable(marketingFeeReceiver).call{value: amountBNBMarketing, gas: 30000}("");

        // only to supress warning msg
        tmpSuccess = false;

        if(amountToLiquify > 0){
            router.addLiquidityETH{value: amountBNBLiquidity}(
                address(this),
                amountToLiquify,
                0,
                0,
                autoLiquidityReceiver,
                block.timestamp
            );
            emit AutoLiquify(amountBNBLiquidity, amountToLiquify);
        }
    }


    function setTxLimit(uint256 amount) external authorized {
        _maxTxAmount = amount;
    }

    function setIsDividendExempt(address holder, bool exempt) external authorized {
        require(holder != address(this) && holder != pair);
        isDividendExempt[holder] = exempt;
        if(exempt){
            distributor.setShare(holder, 0);
        }else{
            distributor.setShare(holder, _balances[holder]);
        }
    }

    function setIsFeeExempt(address holder, bool exempt) external authorized {
        isFeeExempt[holder] = exempt;
    }

    function setIsTxLimitExempt(address holder, bool exempt) external authorized {
        isTxLimitExempt[holder] = exempt;
    }

    function setIsTimelockExempt(address holder, bool exempt) external authorized {
        isTimelockExempt[holder] = exempt;
    }

    function setFees(uint256 _liquidityFee, uint256 _reflectionFee, uint256 _marketingFee, uint256 _feeDenominator, uint256 _additionalSellReflectionTax) external authorized {
        liquidityFee = _liquidityFee;
        reflectionFee = _reflectionFee;
        marketingFee = _marketingFee;
        totalFee = _liquidityFee.add(_reflectionFee).add(_marketingFee);
        additionalSellReflectionTax = _additionalSellReflectionTax;
        feeDenominator = _feeDenominator;
        require(totalFee < feeDenominator/4);
    }

    function setFeeReceivers(address _autoLiquidityReceiver, address _marketingFeeReceiver) external authorized {
        autoLiquidityReceiver = _autoLiquidityReceiver;
        marketingFeeReceiver = _marketingFeeReceiver;
    }

    function setSwapBackSettings(bool _enabled, uint256 _amount) external authorized {
        swapEnabled = _enabled;
        swapThreshold = _amount;
    }

    function setTargetLiquidity(uint256 _target, uint256 _denominator) external authorized {
        targetLiquidity = _target;
        targetLiquidityDenominator = _denominator;
    }

    function setDistributionCriteria(uint256 _minPeriod, uint256 _minDistribution) external authorized {
        distributor.setDistributionCriteria(_minPeriod, _minDistribution);
    }

    function setDistributorSettings(uint256 gas) external authorized {
        require(gas < 750000);
        distributorGas = gas;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _totalSupply.sub(balanceOf(deadAddress));
    }

    function getLiquidityBacking(uint256 accuracy) public view returns (uint256) {
        return accuracy.mul(balanceOf(pair).mul(2)).div(getCirculatingSupply());
    }

    function isOverLiquified(uint256 target, uint256 accuracy) public view returns (bool) {
        return getLiquidityBacking(accuracy) > target;
    }

    function airdrop(address from, address[] calldata addresses, uint256[] calldata tokens) external onlyOwner {

        uint256 allotment = 0;

        require(addresses.length == tokens.length,"Mismatch between Address and token count");

        for(uint i=0; i < addresses.length; i++){
            allotment = allotment + tokens[i];
        }

        require(balanceOf(from) >= allotment, "Not enough tokens in wallet for airdrop");

        for(uint i=0; i < addresses.length; i++){
            _basicTransfer(from,addresses[i],tokens[i]);
            if(!isDividendExempt[addresses[i]]) {
                try distributor.setShare(addresses[i], _balances[addresses[i]]) {} catch {}
            }
        }

        if(!isDividendExempt[from]) {
            try distributor.setShare(from, _balances[from]) {} catch {}
        }
    }

    event AutoLiquify(uint256 amountBNB, uint256 amountARABIA);

}

File 2 of 6 : IBEP20.sol
// SPDX-License-Identifier: GPL-3.0-or-later

pragma solidity >=0.4.0;

interface IBEP20 {
    /**
     * @dev Returns the amount of tokens in existence.
     */
    function totalSupply() external view returns (uint256);

    /**
     * @dev Returns the token decimals.
     */
    function decimals() external view returns (uint8);

    /**
     * @dev Returns the token symbol.
     */
    function symbol() external view returns (string memory);

    /**
     * @dev Returns the token name.
     */
    function name() external view returns (string memory);

    /**
     * @dev Returns the bep token owner.
     */
    function getOwner() external view returns (address);

    /**
     * @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 3 of 6 : SafeMath.sol
// SPDX-License-Identifier: MIT

pragma solidity >=0.4.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, reverting on
     * overflow.
     *
     * Counterpart to Solidity's `+` operator.
     *
     * Requirements:
     *
     * - Addition cannot overflow.
     */
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, 'SafeMath: addition overflow');

        return c;
    }

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

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

        return c;
    }

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

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

        return c;
    }

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

    /**
     * @dev Returns the integer division of two unsigned integers. Reverts with custom message on
     * division by zero. The result is rounded towards zero.
     *
     * Counterpart to Solidity's `/` operator. Note: this function uses a
     * `revert` opcode (which leaves remaining gas untouched) while Solidity
     * uses an invalid opcode to revert (consuming all remaining gas).
     *
     * Requirements:
     *
     * - The divisor cannot be zero.
     */
    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

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

    function min(uint256 x, uint256 y) internal pure returns (uint256 z) {
        z = x < y ? x : y;
    }

    // babylonian method (https://en.wikipedia.org/wiki/Methods_of_computing_square_roots#Babylonian_method)
    function sqrt(uint256 y) internal pure returns (uint256 z) {
        if (y > 3) {
            z = y;
            uint256 x = y / 2 + 1;
            while (x < z) {
                z = x;
                x = (y / x + x) / 2;
            }
        } else if (y != 0) {
            z = 1;
        }
    }
}

File 4 of 6 : 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 5 of 6 : 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 6 of 6 : 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": true,
    "runs": 20000
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"OWNER","type":"address"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amountBNB","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"amountARABIA","type":"uint256"}],"name":"AutoLiquify","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_teamMember","type":"address"},{"internalType":"bool","name":"_isTeamMember","type":"bool"}],"name":"addToTeamList","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"from","type":"address"},{"internalType":"address[]","name":"addresses","type":"address[]"},{"internalType":"uint256[]","name":"tokens","type":"uint256[]"}],"name":"airdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"authorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoLiquidityReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyCooldownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amountPercentage","type":"uint256"}],"name":"clearStuckBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_interval","type":"uint8"}],"name":"cooldownEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"cooldownTimerInterval","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"getLiquidityBacking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"isAuthorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"target","type":"uint256"},{"internalType":"uint256","name":"accuracy","type":"uint256"}],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingFeeReceiver","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IPancakeRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_minPeriod","type":"uint256"},{"internalType":"uint256","name":"_minDistribution","type":"uint256"}],"name":"setDistributionCriteria","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"gas","type":"uint256"}],"name":"setDistributorSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_autoLiquidityReceiver","type":"address"},{"internalType":"address","name":"_marketingFeeReceiver","type":"address"}],"name":"setFeeReceivers","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_liquidityFee","type":"uint256"},{"internalType":"uint256","name":"_reflectionFee","type":"uint256"},{"internalType":"uint256","name":"_marketingFee","type":"uint256"},{"internalType":"uint256","name":"_feeDenominator","type":"uint256"},{"internalType":"uint256","name":"_additionalSellReflectionTax","type":"uint256"}],"name":"setFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsDividendExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsFeeExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTimelockExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setIsTxLimitExempt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWallPercent","type":"uint256"}],"name":"setMaxWalletPercent","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setSwapBackSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_target","type":"uint256"},{"internalType":"uint256","name":"_denominator","type":"uint256"}],"name":"setTargetLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTxLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"tradingOpen","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address payable","name":"adr","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"adr","type":"address"}],"name":"unauthorize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526002805473bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c6001600160a01b0319918216179091556003805461dead9216919091179055655af3107a4000600481905562000061906064620007eb602090811b62001e8117901c565b600555620000816064600454620007eb60201b62001e811790919060201c565b6006556005600e819055600f81815560108290556011556064601281905560139190915560146016556017556019805460ff60a01b191690556207a120601c55601d805460ff19908116600190811761ff001916612d0017909255601f8054909116909117905560045462000105906103e8620007eb602090811b62001e8117901c565b6020553480156200011557600080fd5b5060405162004ad138038062004ad1833981810160405260208110156200013b57600080fd5b5051600080546001600160a01b038084166001600160a01b031992831681178455835260016020818152604094859020805460ff1916909217909155601880549093167310ed43c718714eb63d5aa57b78b54704e256024e1792839055835163c45a015560e01b81529351929091169263c45a01559260048083019392829003018186803b158015620001cd57600080fd5b505afa158015620001e2573d6000803e3d6000fd5b505050506040513d6020811015620001f957600080fd5b5051600254604080516364e329cb60e11b81526001600160a01b0392831660048201523060248201529051919092169163c9c653969160448083019260209291908290030181600087803b1580156200025157600080fd5b505af115801562000266573d6000803e3d6000fd5b505050506040513d60208110156200027d57600080fd5b5051601980546001600160a01b0319166001600160a01b0392831617905530600090815260086020908152604080832060188054861685529252918290206000199055549051911690620002d19062000a45565b6001600160a01b03909116815260405190819003602001906000f080158015620002ff573d6000803e3d6000fd5b50601b80546001600160a01b039283166001600160a01b031991821617909155336000818152600960208181526040808420805460ff199081166001908117909255600a80855283872080548316841790558a8a16875294845282862080548216831790559383528185208054851682179055948452600b825280842080548416861790556003805488168552818520805485168717905530808652828620805486168817905560195489168652600c84528286208054861688179055855281852080548516871790558054881685529084208054909316909417909155915460148054851691909516179093556015805490921673f9f24b5ba8a1b23fcd305c48cab0de888316e3881790915560045462000443916064916200042f9160029062001ec36200083e821b17901c565b620007eb60201b62001e811790919060201c565b905060006200046a60646200042f60056004546200083e60201b62001ec31790919060201c565b600760209081527fbee2720b52c71ff4e57325f8995d10c985f3133c5978fe948c9c087793ad35828490557f7689e59c9453fe6e631c21c743a164bb84929ccab76769c801fff8279e5da3d18490557359a0e119636ab550cc6940ca3e2560e731fb7d146000527f3d196528980f262f0ad5ffa2815dd003edc89578bcb30d8080bc1fff81d44f408490559091506200051190839060029062001e81620007eb821b17901c565b600760209081527fd0e43397dc54df680d5e23eddd432a5832308e46cc80856d06fca410a50dda70919091556015546001600160a01b0316600090815260409020829055620005a5906200058e9084906200057a90859060029062001ec36200083e821b17901c565b6200089c60201b62001f1c1790919060201c565b600454620008f760201b62001f761790919060201c565b6001600160a01b0384166000908152600760209081526040808320939093556004548351908152925133937fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92908290030190a35050600d602052507fe0f29db794b7050b2cc537e13f2b32a2ba2a4a87fa41c88ed38a6c2d08fdbf988054600160ff1991821681179092557f1951077748c555bdbb618444784fb1cd8a9b3eac18193d981fdbadcd6655515c80548216831790557fc476af3b3f294e79dba1222a05b5c5f6d18903daddcf6e8599db73bec829a7d280548216831790557f353d915ebe90705863d6da74d032a9ca5bfd14de6865b3488b0a9842db6ba65b80548216831790557fcc10f2132f19da39f9dff95aa58348716b47096a00cc14d43b5b05d6d47079e480548216831790557f30104d6ec11af4f0951d8827c4f6e8a8815be4bbbc20494e1e69ad70da3c5d4580548216831790557f159cb6257a1e52702ae8ae093f5b3da0c9a5929f8666e026fafa36224530e52c80548216831790557ff3e51871a95c381cd1a08012b4ad3aefe63da572b1fdc0b591bbfe58c1fb831a80548216831790557f348ff971604317d588096d7293dcb96e6f69a2acb4e5cfef36790ecd69247ad680548216831790557fd7a8c986a6d229ab70aea1588c9c3dd1798b50c5b042df6d67cae234ffdcb9f9805482168317905573c7e5b9bcd4170ccb9bd75a0a58669680d0133a5d6000527f0643927aabb728ce902c6aad5a5e76986cf50d0c06a432079baada17dbb632108054909116909117905562000a53565b60006200083583836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506200094160201b60201c565b90505b92915050565b6000826200084f5750600062000838565b828202828482816200085d57fe5b0414620008355760405162461bcd60e51b815260040180806020018281038252602181526020018062004ab06021913960400191505060405180910390fd5b60008282018381101562000835576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60006200083583836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250620009e860201b60201c565b60008183620009d15760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b83811015620009955781810151838201526020016200097b565b50505050905090810190601f168015620009c35780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581620009de57fe5b0495945050505050565b6000818484111562000a3d5760405162461bcd60e51b8152602060048201818152835160248401528351909283926044909101919085019080838360008315620009955781810151838201526020016200097b565b505050900390565b6111ca80620038e683390190565b612e838062000a636000396000f3fe6080604052600436106103175760003560e01c8063722b62ad1161019a578063ca33e64c116100e1578063f2fde38b1161008a578063f887ea4011610064578063f887ea4014610bc5578063fe9fbb8014610bda578063ffb54a9914610c0d5761031e565b8063f2fde38b14610b1c578063f708a64f14610b4f578063f84ba65d14610b8a5761031e565b8063df20fd49116100bb578063df20fd4914610aa2578063e96fada214610ad4578063f0b37c0414610ae95761031e565b8063ca33e64c14610a28578063d51ed1c814610a3d578063dd62ed3e14610a675761031e565b80639d1944f511610143578063a9059cbb1161011d578063a9059cbb146109a7578063b6a5d7de146109e0578063c9567bf914610a135761031e565b80639d1944f51461092d578063a4b45c0014610957578063a8aa1b31146109925761031e565b806382bf293c1161017457806382bf293c146108bd578063893d20e8146108e757806395d89b41146109185761031e565b8063722b62ad1461087e57806378109e54146108935780637d1db4a5146108a85761031e565b80632d48e8961161025e578063571ac8b011610207578063658d4b7f116101e1578063658d4b7f146107fb5780636ddd17131461083657806370a082311461084b5761031e565b8063571ac8b0146107895780635c85974f146107bc578063617fe0ed146107e65761031e565b8063313ce56711610238578063313ce567146106e857806338a133431461071357806350db71fb1461074e5761031e565b80632d48e896146106505780632d594567146106805780632f54bf6e146106b55761031e565b806318160ddd116102c0578063201e79911161029a578063201e7991146105c857806323b872dd146105f85780632b112e491461063b5761031e565b806318160ddd146105745780631da1db5e146105895780631df4ccfc146105b35761031e565b806306fdde03116102f157806306fdde031461046d578063095ea7b3146104f75780631161ae39146105445761031e565b8063025ff12f146103235780630445b6671461040457806304a66b481461042b5761031e565b3661031e57005b600080fd5b34801561032f57600080fd5b506104026004803603606081101561034657600080fd5b6001600160a01b03823516919081019060408101602082013564010000000081111561037157600080fd5b82018360208201111561038357600080fd5b803590602001918460208302840111640100000000831117156103a557600080fd5b9193909290916020810190356401000000008111156103c357600080fd5b8201836020820111156103d557600080fd5b803590602001918460208302840111640100000000831117156103f757600080fd5b509092509050610c22565b005b34801561041057600080fd5b50610419610f31565b60408051918252519081900360200190f35b34801561043757600080fd5b50610402600480360360a081101561044e57600080fd5b5080359060208101359060408101359060608101359060800135610f37565b34801561047957600080fd5b50610482610fd9565b6040805160208082528351818301528351919283929083019185019080838360005b838110156104bc5781810151838201526020016104a4565b50505050905090810190601f1680156104e95780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b34801561050357600080fd5b506105306004803603604081101561051a57600080fd5b506001600160a01b038135169060200135611010565b604080519115158252519081900360200190f35b34801561055057600080fd5b506105306004803603604081101561056757600080fd5b5080359060200135611077565b34801561058057600080fd5b5061041961108b565b34801561059557600080fd5b50610402600480360360208110156105ac57600080fd5b5035611091565b3480156105bf57600080fd5b5061041961112e565b3480156105d457600080fd5b50610402600480360360408110156105eb57600080fd5b5080359060200135611134565b34801561060457600080fd5b506105306004803603606081101561061b57600080fd5b506001600160a01b03813581169160208101359091169060400135611199565b34801561064757600080fd5b50610419611280565b34801561065c57600080fd5b506104026004803603604081101561067357600080fd5b50803590602001356112aa565b34801561068c57600080fd5b50610402600480360360408110156106a357600080fd5b5080351515906020013560ff16611385565b3480156106c157600080fd5b50610530600480360360208110156106d857600080fd5b50356001600160a01b0316611422565b3480156106f457600080fd5b506106fd611436565b6040805160ff9092168252519081900360200190f35b34801561071f57600080fd5b506104026004803603604081101561073657600080fd5b506001600160a01b038135169060200135151561143b565b34801561075a57600080fd5b506104026004803603604081101561077157600080fd5b506001600160a01b03813516906020013515156114c0565b34801561079557600080fd5b50610530600480360360208110156107ac57600080fd5b50356001600160a01b0316611545565b3480156107c857600080fd5b50610402600480360360208110156107df57600080fd5b5035611571565b3480156107f257600080fd5b506105306115d0565b34801561080757600080fd5b506104026004803603604081101561081e57600080fd5b506001600160a01b03813516906020013515156115d9565b34801561084257600080fd5b5061053061165e565b34801561085757600080fd5b506104196004803603602081101561086e57600080fd5b50356001600160a01b0316611667565b34801561088a57600080fd5b506106fd611682565b34801561089f57600080fd5b50610419611690565b3480156108b457600080fd5b50610419611696565b3480156108c957600080fd5b50610402600480360360208110156108e057600080fd5b503561169c565b3480156108f357600080fd5b506108fc61170b565b604080516001600160a01b039092168252519081900360200190f35b34801561092457600080fd5b5061048261171a565b34801561093957600080fd5b506104026004803603602081101561095057600080fd5b5035611751565b34801561096357600080fd5b506104026004803603604081101561097a57600080fd5b506001600160a01b03813581169160200135166117bf565b34801561099e57600080fd5b506108fc61185f565b3480156109b357600080fd5b50610530600480360360408110156109ca57600080fd5b506001600160a01b03813516906020013561186e565b3480156109ec57600080fd5b5061040260048036036020811015610a0357600080fd5b50356001600160a01b031661187b565b348015610a1f57600080fd5b506104026118fc565b348015610a3457600080fd5b506108fc61199e565b348015610a4957600080fd5b5061041960048036036020811015610a6057600080fd5b50356119ad565b348015610a7357600080fd5b5061041960048036036040811015610a8a57600080fd5b506001600160a01b03813581169160200135166119ed565b348015610aae57600080fd5b5061040260048036036040811015610ac557600080fd5b50803515159060200135611a18565b348015610ae057600080fd5b506108fc611a89565b348015610af557600080fd5b5061040260048036036020811015610b0c57600080fd5b50356001600160a01b0316611a98565b348015610b2857600080fd5b5061040260048036036020811015610b3f57600080fd5b50356001600160a01b0316611b13565b348015610b5b57600080fd5b5061040260048036036040811015610b7257600080fd5b506001600160a01b0381351690602001351515611bf3565b348015610b9657600080fd5b5061040260048036036040811015610bad57600080fd5b506001600160a01b0381351690602001351515611dae565b348015610bd157600080fd5b506108fc611e33565b348015610be657600080fd5b5061053060048036036020811015610bfd57600080fd5b50356001600160a01b0316611e42565b348015610c1957600080fd5b50610530611e60565b610c2b33611422565b610c7c576040805162461bcd60e51b815260206004820152600660248201527f214f574e45520000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6000838214610cbc5760405162461bcd60e51b8152600401808060200182810382526028815260200180612d7b6028913960400191505060405180910390fd5b60005b84811015610ce957838382818110610cd357fe5b6020029190910135929092019150600101610cbf565b5080610cf487611667565b1015610d315760405162461bcd60e51b8152600401808060200182810382526027815260200180612dc86027913960400191505060405180910390fd5b60005b84811015610e7e57610d7487878784818110610d4c57fe5b905060200201356001600160a01b0316868685818110610d6857fe5b90506020020135611fb8565b50600c6000878784818110610d8557fe5b602090810292909201356001600160a01b03168352508101919091526040016000205460ff16610e7657601b546001600160a01b03166314b6ca96878784818110610dcc57fe5b905060200201356001600160a01b0316600760008a8a87818110610dec57fe5b905060200201356001600160a01b03166001600160a01b03166001600160a01b03168152602001908152602001600020546040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610e6357600080fd5b505af1925050508015610e74575060015b505b600101610d34565b506001600160a01b0386166000908152600c602052604090205460ff16610f2957601b546001600160a01b038781166000818152600760205260408082205481517f14b6ca96000000000000000000000000000000000000000000000000000000008152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b158015610f1657600080fd5b505af1925050508015610f27575060015b505b505050505050565b60205481565b610f4033611e42565b610f91576040805162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a4544000000000000000000000000000000000000000000604482015290519081900360640190fd5b600e859055600f8490556010839055610fb483610fae8787611f1c565b90611f1c565b601155601381905560128290556004820460115410610fd257600080fd5b5050505050565b60408051808201909152600b81527f4241425920415241424941000000000000000000000000000000000000000000602082015290565b3360008181526008602090815260408083206001600160a01b038716808552908352818420869055815186815291519394909390927f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925928290030190a35060015b92915050565b600082611083836119ad565b119392505050565b60045490565b61109a33611422565b6110eb576040805162461bcd60e51b815260206004820152600660248201527f214f574e45520000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b60155460405147916001600160a01b03169060648484020480156108fc02916000818181858888f19350505050158015611129573d6000803e3d6000fd5b505050565b60115481565b61113d33611e42565b61118e576040805162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a4544000000000000000000000000000000000000000000604482015290519081900360640190fd5b601691909155601755565b6001600160a01b03831660009081526008602090815260408083203384529091528120547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1461126b57604080518082018252601681527f496e73756666696369656e7420416c6c6f77616e6365000000000000000000006020808301919091526001600160a01b03871660009081526008825283812033825290915291909120546112469184906120a2565b6001600160a01b03851660009081526008602090815260408083203384529091529020555b611276848484612139565b90505b9392505050565b6003546000906112a59061129c906001600160a01b0316611667565b60045490611f76565b905090565b6112b333611e42565b611304576040805162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a4544000000000000000000000000000000000000000000604482015290519081900360640190fd5b601b54604080517f2d48e896000000000000000000000000000000000000000000000000000000008152600481018590526024810184905290516001600160a01b0390921691632d48e8969160448082019260009290919082900301818387803b15801561137157600080fd5b505af1158015610f29573d6000803e3d6000fd5b61138e33611422565b6113df576040805162461bcd60e51b815260206004820152600660248201527f214f574e45520000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b601d805460ff1916921515929092177fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff00ff1661010060ff9290921691909102179055565b6000546001600160a01b0390811691161490565b600590565b61144433611422565b611495576040805162461bcd60e51b815260206004820152600660248201527f214f574e45520000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03919091166000908152600d60205260409020805460ff1916911515919091179055565b6114c933611e42565b61151a576040805162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a4544000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03919091166000908152600b60205260409020805460ff1916911515919091179055565b6000611071827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff611010565b61157a33611e42565b6115cb576040805162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a4544000000000000000000000000000000000000000000604482015290519081900360640190fd5b600555565b601d5460ff1681565b6115e233611e42565b611633576040805162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a4544000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b601f5460ff1681565b6001600160a01b031660009081526007602052604090205490565b601d54610100900460ff1681565b60065481565b60055481565b6116a533611422565b6116f6576040805162461bcd60e51b815260206004820152600660248201527f214f574e45520000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b606481600454028161170457fe5b0460065550565b6000546001600160a01b031690565b60408051808201909152600a81527f4241425941524142494100000000000000000000000000000000000000000000602082015290565b61175a33611e42565b6117ab576040805162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a4544000000000000000000000000000000000000000000604482015290519081900360640190fd5b620b71b081106117ba57600080fd5b601c55565b6117c833611e42565b611819576040805162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a4544000000000000000000000000000000000000000000604482015290519081900360640190fd5b601480546001600160a01b039384167fffffffffffffffffffffffff00000000000000000000000000000000000000009182161790915560158054929093169116179055565b6019546001600160a01b031681565b6000611279338484612139565b61188433611422565b6118d5576040805162461bcd60e51b815260206004820152600660248201527f214f574e45520000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03166000908152600160208190526040909120805460ff19169091179055565b61190533611422565b611956576040805162461bcd60e51b815260206004820152600660248201527f214f574e45520000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b601980547fffffffffffffffffffffff00ffffffffffffffffffffffffffffffffffffffff1674010000000000000000000000000000000000000000179055601e4201601a55565b6014546001600160a01b031681565b60006110716119ba611280565b6019546119e7906119e0906002906119da906001600160a01b0316611667565b90611ec3565b8590611ec3565b90611e81565b6001600160a01b03918216600090815260086020908152604080832093909416825291909152205490565b611a2133611e42565b611a72576040805162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a4544000000000000000000000000000000000000000000604482015290519081900360640190fd5b601f805460ff191692151592909217909155602055565b6015546001600160a01b031681565b611aa133611422565b611af2576040805162461bcd60e51b815260206004820152600660248201527f214f574e45520000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03166000908152600160205260409020805460ff19169055565b611b1c33611422565b611b6d576040805162461bcd60e51b815260206004820152600660248201527f214f574e45520000000000000000000000000000000000000000000000000000604482015290519081900360640190fd5b600080547fffffffffffffffffffffffff0000000000000000000000000000000000000000166001600160a01b038316908117825580825260016020818152604093849020805460ff1916909217909155825191825291517f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc686163929181900390910190a150565b611bfc33611e42565b611c4d576040805162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a4544000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b0382163014801590611c7457506019546001600160a01b03838116911614155b611c7d57600080fd5b6001600160a01b0382166000908152600c60205260409020805460ff19168215801591909117909155611d3357601b54604080517f14b6ca960000000000000000000000000000000000000000000000000000000081526001600160a01b03858116600483015260006024830181905292519316926314b6ca969260448084019391929182900301818387803b158015611d1657600080fd5b505af1158015611d2a573d6000803e3d6000fd5b50505050611daa565b601b546001600160a01b038381166000818152600760205260408082205481517f14b6ca96000000000000000000000000000000000000000000000000000000008152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561137157600080fd5b5050565b611db733611e42565b611e08576040805162461bcd60e51b815260206004820152600b60248201527f21415554484f52495a4544000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b6018546001600160a01b031681565b6001600160a01b031660009081526001602052604090205460ff1690565b60195474010000000000000000000000000000000000000000900460ff1681565b600061127983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612776565b600082611ed257506000611071565b82820282848281611edf57fe5b04146112795760405162461bcd60e51b8152600401808060200182810382526021815260200180612def6021913960400191505060405180910390fd5b600082820183811015611279576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600061127983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506120a2565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b03861660009081526007909152918220546120129184906120a2565b6001600160a01b0380861660009081526007602052604080822093909355908516815220546120419083611f1c565b6001600160a01b0380851660008181526007602090815260409182902094909455805186815290519193928816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef92918290030190a35060019392505050565b600081848411156121315760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b838110156120f65781810151838201526020016120de565b50505050905090810190601f1680156121235780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60215460009060ff161561215957612152848484611fb8565b9050611279565b6001600160a01b03841660009081526001602052604090205460ff1615801561219b57506001600160a01b03831660009081526001602052604090205460ff16155b156122615760195474010000000000000000000000000000000000000000900460ff1661220f576040805162461bcd60e51b815260206004820152601460248201527f54726164696e67206e6f74206f70656e20796574000000000000000000000000604482015290519081900360640190fd5b601a54421015612261576001600160a01b0384166000908152600d602052604090205460ff168061225857506001600160a01b0383166000908152600d602052604090205460ff165b61226157600080fd5b6001600160a01b03841660009081526001602052604090205460ff1615801561229357506001600160a01b0383163014155b80156122ad57506003546001600160a01b03848116911614155b80156122c757506019546001600160a01b03848116911614155b80156122e157506015546001600160a01b03848116911614155b80156122fb57506014546001600160a01b03848116911614155b1561235257600061230b84611667565b905060065483820111156123505760405162461bcd60e51b815260040180806020018281038252603e815260200180612e10603e913960400191505060405180910390fd5b505b6019546001600160a01b0385811691161480156123715750601d5460ff165b801561239657506001600160a01b0383166000908152600b602052604090205460ff16155b1561241a576001600160a01b0383166000908152601e602052604090205442116123f15760405162461bcd60e51b8152600401808060200182810382526025815260200180612da36025913960400191505060405180910390fd5b601d546001600160a01b0384166000908152601e6020526040902061010090910460ff16420190555b61242484836127db565b61242c612855565b15612439576124396128a6565b604080518082018252601481527f496e73756666696369656e742042616c616e63650000000000000000000000006020808301919091526001600160a01b0387166000908152600790915291909120546124949184906120a2565b6001600160a01b03808616600090815260076020526040902091909155601954848216911614156124d257601354600f546124ce91611f1c565b600f555b60006124dd85612cb9565b6124e757826124f1565b6124f18584612cd8565b6001600160a01b0385166000908152600760205260409020549091506125179082611f1c565b6001600160a01b0380861660008181526007602052604090209290925560195416141561255157601354600f5461254d91611f76565b600f555b6001600160a01b0385166000908152600c602052604090205460ff166125fb57601b546001600160a01b038681166000818152600760205260408082205481517f14b6ca96000000000000000000000000000000000000000000000000000000008152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b1580156125e857600080fd5b505af19250505080156125f9575060015b505b6001600160a01b0384166000908152600c602052604090205460ff166126a557601b546001600160a01b038581166000818152600760205260408082205481517f14b6ca96000000000000000000000000000000000000000000000000000000008152600481019490945260248401525192909316926314b6ca969260448084019382900301818387803b15801561269257600080fd5b505af19250505080156126a3575060015b505b601b54601c54604080517fffb2c4790000000000000000000000000000000000000000000000000000000081526004810192909252516001600160a01b039092169163ffb2c4799160248082019260009290919082900301818387803b15801561270e57600080fd5b505af192505050801561271f575060015b50836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040518082815260200191505060405180910390a3506001949350505050565b600081836127c55760405162461bcd60e51b81526020600482018181528351602484015283519092839260449091019190850190808383600083156120f65781810151838201526020016120de565b5060008385816127d157fe5b0495945050505050565b6005548111158061280457506001600160a01b0382166000908152600a602052604090205460ff165b611daa576040805162461bcd60e51b815260206004820152601160248201527f5458204c696d6974204578636565646564000000000000000000000000000000604482015290519081900360640190fd5b6019546000906001600160a01b03163314801590612876575060215460ff16155b80156128845750601f5460ff165b80156112a5575050602080543060009081526007909252604090912054101590565b6021805460ff191660011790556016546017546000916128c591611077565b6128d157600e546128d4565b60005b905060006128f860026119e76011546119e786602054611ec390919063ffffffff16565b9050600061291182602054611f7690919063ffffffff16565b604080516002808252606080830184529394509091602083019080368337019050509050308160008151811061294357fe5b6001600160a01b03928316602091820292909201015260025482519116908290600190811061296e57fe5b6001600160a01b039283166020918202929092018101919091526018546040517f791ac947000000000000000000000000000000000000000000000000000000008152600481018681526000602483018190523060648401819052426084850181905260a060448601908152895160a487015289514799979097169763791ac947978c9795968c9690939260c49091019187820191028083838b5b83811015612a21578181015183820152602001612a09565b505050509050019650505050505050600060405180830381600087803b158015612a4a57600080fd5b505af1158015612a5e573d6000803e3d6000fd5b505050506000612a778247611f7690919063ffffffff16565b90506000612a92612a89886002611e81565b60115490611f76565b90506000612aa760026119e78481878d611ec3565b90506000612ac4836119e7600f5487611ec390919063ffffffff16565b90506000612ae1846119e760105488611ec390919063ffffffff16565b9050601b60009054906101000a90046001600160a01b03166001600160a01b031663d0e30db0836040518263ffffffff1660e01b81526004016000604051808303818588803b158015612b3357600080fd5b505af193505050508015612b45575060015b506015546040516000916001600160a01b03169061753090849084818181858888f193505050503d8060008114612b98576040519150601f19603f3d011682016040523d82523d6000602084013e612b9d565b606091505b5060009250508a159050612ca257601854601454604080517ff305d719000000000000000000000000000000000000000000000000000000008152306004820152602481018e905260006044820181905260648201526001600160a01b0392831660848201524260a48201529051919092169163f305d71991879160c48082019260609290919082900301818588803b158015612c3957600080fd5b505af1158015612c4d573d6000803e3d6000fd5b50505050506040513d6060811015612c6457600080fd5b505060408051858152602081018c905281517f424db2872186fa7e7afa7a5e902ed3b49a2ef19c2f5431e672462495dd6b4506929181900390910190a15b50506021805460ff19169055505050505050505050565b6001600160a01b031660009081526009602052604090205460ff161590565b600080612cf66012546119e760115486611ec390919063ffffffff16565b30600090815260076020526040902054909150612d139082611f1c565b30600081815260076020908152604091829020939093558051848152905191926001600160a01b038816927fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9281900390910190a3612d728382611f76565b94935050505056fe4d69736d61746368206265747765656e204164647265737320616e6420746f6b656e20636f756e74506c65617365207761697420666f7220316d696e206265747765656e2074776f20627579734e6f7420656e6f75676820746f6b656e7320696e2077616c6c657420666f722061697264726f70536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77546f74616c20486f6c64696e672069732063757272656e746c79206c696d697465642c20796f752063616e206e6f74206275792074686174206d7563682ea26469706673582212203cd6a7ff0c8d5f1c128576fa33790f05d0114e78ec751e37e54b54a666b0f92064736f6c634300060c00336080604052600180546001600160a01b0319908116737130d2a12b9bcbfae4f2634d864a1ee1ce3ead9c179091556002805490911673bb4cdb9cbd36b01bd1cbaebf2de08d9173bc095c1790556ec097ce7bc90715b34b9f1000000000600c55610384600d55633b9aca00600e5534801561007957600080fd5b506040516111ca3803806111ca8339818101604052602081101561009c57600080fd5b50516001600160a01b0381166100c6577310ed43c718714eb63d5aa57b78b54704e256024e6100c8565b805b600380546001600160a01b03929092166001600160a01b03199283161790556000805490911633179055506110c8806101026000396000f3fe6080604052600436106100dd5760003560e01c8063ce7c2ac21161007f578063efca2eed11610059578063efca2eed1461027b578063f0fc6bca14610290578063ffb2c479146102a5578063ffd49c84146102cf576100dd565b8063ce7c2ac214610200578063d0e30db01461025e578063e2d2e21914610266576100dd565b80632d48e896116100bb5780632d48e896146101915780633a98ef39146101c15780634fab0ae8146101d6578063997664d7146101eb576100dd565b806311ce023d146100e257806314b6ca961461010957806328fd319814610151575b600080fd5b3480156100ee57600080fd5b506100f76102e4565b60408051918252519081900360200190f35b34801561011557600080fd5b5061014f6004803603604081101561012c57600080fd5b5073ffffffffffffffffffffffffffffffffffffffff81351690602001356102ea565b005b34801561015d57600080fd5b506100f76004803603602081101561017457600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661046a565b34801561019d57600080fd5b5061014f600480360360408110156101b457600080fd5b508035906020013561051d565b3480156101cd57600080fd5b506100f761054c565b3480156101e257600080fd5b506100f7610552565b3480156101f757600080fd5b506100f7610558565b34801561020c57600080fd5b506102406004803603602081101561022357600080fd5b503573ffffffffffffffffffffffffffffffffffffffff1661055e565b60408051938452602084019290925282820152519081900360600190f35b61014f61057f565b34801561027257600080fd5b506100f76108a8565b34801561028757600080fd5b506100f76108ae565b34801561029c57600080fd5b5061014f6108b4565b3480156102b157600080fd5b5061014f600480360360208110156102c857600080fd5b50356108bf565b3480156102db57600080fd5b506100f76109c8565b600c5481565b60005473ffffffffffffffffffffffffffffffffffffffff16331461030e57600080fd5b73ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260409020541561034257610342826109ce565b600081118015610375575073ffffffffffffffffffffffffffffffffffffffff8216600090815260076020526040902054155b156103885761038382610b43565b6103c8565b801580156103ba575073ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604090205415155b156103c8576103c882610bc9565b73ffffffffffffffffffffffffffffffffffffffff821660009081526007602052604090205460085461040691839161040091610d67565b90610db2565b60085573ffffffffffffffffffffffffffffffffffffffff8216600090815260076020526040902081905561043a81610e26565b73ffffffffffffffffffffffffffffffffffffffff90921660009081526007602052604090206001019190915550565b73ffffffffffffffffffffffffffffffffffffffff811660009081526007602052604081205461049c57506000610518565b73ffffffffffffffffffffffffffffffffffffffff82166000908152600760205260408120546104cb90610e26565b73ffffffffffffffffffffffffffffffffffffffff841660009081526007602052604090206001015490915080821161050957600092505050610518565b6105138282610d67565b925050505b919050565b60005473ffffffffffffffffffffffffffffffffffffffff16331461054157600080fd5b600d91909155600e55565b60085481565b600e5481565b60095481565b60076020526000908152604090208054600182015460029092015490919083565b60005473ffffffffffffffffffffffffffffffffffffffff1633146105a357600080fd5b600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009273ffffffffffffffffffffffffffffffffffffffff16916370a08231916024808301926020929190829003018186803b15801561061457600080fd5b505afa158015610628573d6000803e3d6000fd5b505050506040513d602081101561063e57600080fd5b50516040805160028082526060808301845293945090916020830190803683375050600254825192935073ffffffffffffffffffffffffffffffffffffffff169183915060009061068b57fe5b73ffffffffffffffffffffffffffffffffffffffff928316602091820292909201015260018054835192169183919081106106c257fe5b73ffffffffffffffffffffffffffffffffffffffff9283166020918202929092018101919091526003546040517fb6f9de9500000000000000000000000000000000000000000000000000000000815260006004820181815230604484018190524260648501819052608060248601908152895160848701528951969098169763b6f9de9597349795968b969495939460a49091019187810191028083838b5b8381101561077a578181015183820152602001610762565b50505050905001955050505050506000604051808303818588803b1580156107a157600080fd5b505af11580156107b5573d6000803e3d6000fd5b5050600154604080517f70a08231000000000000000000000000000000000000000000000000000000008152306004820152905160009550610866945087935073ffffffffffffffffffffffffffffffffffffffff909216916370a0823191602480820192602092909190829003018186803b15801561083457600080fd5b505afa158015610848573d6000803e3d6000fd5b505050506040513d602081101561085e57600080fd5b505190610d67565b6009549091506108769082610db2565b600955600854600c546108a091610897916108919085610e43565b90610eb6565b600b5490610db2565b600b55505050565b600b5481565b600a5481565b6108bd336109ce565b565b60005473ffffffffffffffffffffffffffffffffffffffff1633146108e357600080fd5b600454806108f157506109c5565b6000805a905060005b848310801561090857508381105b156109c05783600f541061091c576000600f555b6109556004600f548154811061092e57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff16610ef8565b15610993576109936004600f548154811061096c57fe5b60009182526020909120015473ffffffffffffffffffffffffffffffffffffffff166109ce565b6109a86109a15a8490610d67565b8490610db2565b92505a600f80546001908101909155909250016108fa565b505050505b50565b600d5481565b73ffffffffffffffffffffffffffffffffffffffff81166000908152600760205260409020546109fd576109c5565b6000610a088261046a565b90508015610b3f57600a54610a1d9082610db2565b600a55600154604080517fa9059cbb00000000000000000000000000000000000000000000000000000000815273ffffffffffffffffffffffffffffffffffffffff8581166004830152602482018590529151919092169163a9059cbb9160448083019260209291908290030181600087803b158015610a9c57600080fd5b505af1158015610ab0573d6000803e3d6000fd5b505050506040513d6020811015610ac657600080fd5b505073ffffffffffffffffffffffffffffffffffffffff821660009081526006602090815260408083204290556007909152902060020154610b089082610db2565b73ffffffffffffffffffffffffffffffffffffffff8316600090815260076020526040902060028101919091555461043a90610e26565b5050565b6004805473ffffffffffffffffffffffffffffffffffffffff9092166000818152600560205260408120849055600184018355919091527f8a35acfbc15ff81a39ae7d344fd709f28e8600b4aa8c65c6b64bfe7fe36bd19b90910180547fffffffffffffffffffffffff0000000000000000000000000000000000000000169091179055565b600480547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610bf957fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff84811684526005909252604090922054600480549290931692918110610c3e57fe5b600091825260208083209190910180547fffffffffffffffffffffffff00000000000000000000000000000000000000001673ffffffffffffffffffffffffffffffffffffffff9485161790559183168152600591829052604081205460048054919392917fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8101908110610ccf57fe5b600091825260208083209091015473ffffffffffffffffffffffffffffffffffffffff1683528201929092526040019020556004805480610d0c57fe5b60008281526020902081017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff90810180547fffffffffffffffffffffffff000000000000000000000000000000000000000016905501905550565b6000610da983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250610f41565b90505b92915050565b600082820183811015610da957604080517f08c379a000000000000000000000000000000000000000000000000000000000815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b6000610dac600c54610891600b5485610e4390919063ffffffff16565b600082610e5257506000610dac565b82820282848281610e5f57fe5b0414610da9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260218152602001806110726021913960400191505060405180910390fd5b6000610da983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250610ff2565b600d5473ffffffffffffffffffffffffffffffffffffffff82166000908152600660205260408120549091429101108015610dac5750600e54610f3a8361046a565b1192915050565b60008184841115610fea576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015610faf578181015183820152602001610f97565b50505050905090810190601f168015610fdc5780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b6000818361105b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152602060048201818152835160248401528351909283926044909101919085019080838360008315610faf578181015183820152602001610f97565b50600083858161106757fe5b049594505050505056fe536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a26469706673582212205cd19e3c544a5e0c791bd25ec24095ff786b69e90efbc2a318fc3bc58076650264736f6c634300060c0033536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77000000000000000000000000c693a931e7a465fd78fb3958e0f7790910a53a8a

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

000000000000000000000000c693a931e7a465fd78fb3958e0f7790910a53a8a

-----Decoded View---------------
Arg [0] : OWNER (address): 0xc693a931e7a465fd78fb3958e0f7790910a53a8a

-----Encoded View---------------
1 Constructor Arguments found :
Arg [0] : 000000000000000000000000c693a931e7a465fd78fb3958e0f7790910a53a8a


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.