Contract 0x74f4ccdaEdb13b73754cf7Bb8CbABE74E2DD4B70 1

 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0x59f2fd57a0dd70eb9cf7d50a3b601cdfbf125d857952cdb9e6f3507c2e103a5dApprove118308032021-10-16 19:33:116 hrs 58 mins ago0xd5ee8c485c961eb58b982e25ca571188f10fb87e IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x7fac275d611f9e382d0039ea795597621ebc0218bf7b91bc3e7cf29918171873Approve118266422021-10-16 16:01:0110 hrs 31 mins ago0x9d2d170bcfb2e0082834ac22007c0e4164bb344a IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x42397e7280f7cebdd488d73746941cc08964fd22d76dde0ce1cc53e7532992f0Approve118266272021-10-16 16:00:1610 hrs 31 mins ago0x9d2d170bcfb2e0082834ac22007c0e4164bb344a IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x4d61f5f198ec7e4e1c2166399272b9d308d5c3413c1bf1362b64c5b1cde677b4Approve118247632021-10-16 14:25:5712 hrs 6 mins ago0x396f20d1ed152d8890b7ca34084d5258bf1d0e45 IN  StakeMars Protocol: STM Token0 BNB0.000072745
0x4278706cc691c9a7d1fa7345d6a8657bfbef206f4bc66867c91c64ec3a729bb5Approve118238642021-10-16 13:40:5612 hrs 51 mins ago0x7a1f63cac274c667cf4a214a5596c3e2851b736d IN  StakeMars Protocol: STM Token0 BNB0.000072745
0x284a49f3f8c041129c09b1e55fe8de917be9ff96642e543d1488f27bd4457842Approve118180822021-10-16 8:50:5917 hrs 41 mins ago0xc67dcead81b78f112bfa390772856538a0432bc6 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x9adfad1ff9a1b26bd77f692c9742d29b282ce244f447db839961e91375f9d12aApprove118131192021-10-16 4:41:5621 hrs 50 mins ago0x85d04289fce7b90c27e9f7a033ddfdcd9e7af3cf IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x780b055051393e2dc271ed99dd106e72b4d87450a645c47f5b83f257238a2ed6Approve118131042021-10-16 4:41:1121 hrs 50 mins ago0x85d04289fce7b90c27e9f7a033ddfdcd9e7af3cf IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x44664a5cba51bd40197bc7768586146725570199df015aa013f4b037b52cfe81Approve118096512021-10-16 1:48:291 day 43 mins ago0x0e7be4251d6c1adb75b1d9ed9572985f810f0911 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0xc840b0e75a44929a42ec2d5bff3e7894a478133ead4b634071aa43fe71344baeApprove118083092021-10-16 0:39:221 day 1 hr ago0x9593424869185faccf7c3738b1dfcfdef04c8919 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x04f3d147492b43d0edad607df11cb5a059ea771e1ee5466d10cf44c520527acbApprove118024432021-10-15 19:45:081 day 6 hrs ago0xf2a27097ff023f5a3cbcd87c09a8ca12b54b59e1 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x7c11a1ba6d48208d5086adb8e292aa0b37715fe1c509e7bd903d2330f5c885d2Approve118022482021-10-15 19:35:191 day 6 hrs ago0xee7ab211f9a5d423227e20444410f06194c3d820 IN  StakeMars Protocol: STM Token0 BNB0.000072745
0x4e6ef9fea940926e4d3378cd108cd3584902955106ee630924752abfef537b20Approve117920652021-10-15 11:05:071 day 15 hrs ago0xa38b435940ae893f49f5639bcc31b0493d4facc4 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0xe1f9bf5ddfff132a74cfd237f81203e6b2aab0cdf1efec0e405f1fdf1e8ea421Approve117832632021-10-15 3:43:381 day 22 hrs ago0xec077d44de6d143f6345d2e0364442601d0e628b IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x5ea7a2e75c9e048694e60d3fa7f0b947a8ee0f82266d004096d244d71790cb7fApprove117700982021-10-14 16:45:092 days 9 hrs ago0x8cec4da5857b6fd1eedd805a7399f5c4210021c9 IN  StakeMars Protocol: STM Token0 BNB0.000072745
0x5fa3bf57ec5d38084684481ddbed0ff77f257cce7b34d7536cd717589e6d9aaeApprove117653632021-10-14 12:46:412 days 13 hrs ago0x8e2f3c59bbc3a696d6772a60401700071074e805 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x74225bf6626f16fc4f8dc7e12a24329c9bd7dcb19b122a1a4326fa96248ae62dApprove117568132021-10-14 5:37:282 days 20 hrs ago0x877deed034b19680ccec2a4f43e306cb748c67f0 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x96c590e3aaba979b98b6f63deb0248fe622afa1eb2891e0f0ad27c9e70610f7fApprove117404292021-10-13 15:51:553 days 10 hrs ago0x1fd8fdf077fc58c1c6e081ec2070084b88f8b42b IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x160fde3dc9f00ad8a9e06a7710b07856a3028884edf169e2bb6aaceedfb0cd02Approve117394692021-10-13 15:03:533 days 11 hrs ago0x0ec37d8bc24b672ab21de6a6dc26b5fd35ea0834 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0xc1659fe861eb42706c52a8a1521e5f6c1c786e7f6dd409ec3dafd46c780d7415Approve117393292021-10-13 14:56:533 days 11 hrs ago0xa12b833d28b694d104537be7f2723ec6f87e9d45 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0xebbe9e7fdc8f2936370d8245659202f1c00bc95b9113f5860d0896f66a5d9868Approve117360672021-10-13 12:09:493 days 14 hrs ago0xc21eb84a060608c71ac759180c45f7c5874b85c5 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0xb599d2e87b946acde396e0113fd2910c27ca44883cccce9863b975805b5f4590Approve117328682021-10-13 9:27:243 days 17 hrs ago0xde402c852a446c378a1640980b027b234180b0e5 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0xd73f099c88662a4eb229ec1c009ee5605f97422079194d822f8d2601e01d3552Approve117282782021-10-13 5:21:403 days 21 hrs ago0x29759ff0254f4da8b528bb3ef1b3835692ae7b32 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0xd974473559b28007352ec5d90aaf4ca240e2837dc806314ff3d8956ac6eb6e0cApprove117253642021-10-13 2:55:213 days 23 hrs ago0xea88be5e31e6717f834b21f79297646ed8180186 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0xea2b394eab86fe6d3bddf4054937714c184f57835fda034b0169cf545fe45b62Approve117244382021-10-13 2:08:504 days 23 mins ago0x49e1a5f7c72fe8db79495006563721bc11c21480 IN  StakeMars Protocol: STM Token0 BNB0.000222405
[ Download CSV Export 

OVERVIEW

StakeMars Protocol (STM) is a deflationary yield farming protocols like traditional staking users earn rewards for staking the token and rewards users with BNB instead of STM.

Latest 25 internal transaction
Parent Txn Hash Block From To Value
0x70b002d5fef0bea2ac4f19b50fc9a4f346a7249bdb92783b19c000f68236b5ac118266502021-10-16 16:01:2510 hrs 30 mins ago StakeMars Protocol: STM Token PancakeSwap: Router v20.003368432071132073 BNB
0x70b002d5fef0bea2ac4f19b50fc9a4f346a7249bdb92783b19c000f68236b5ac118266502021-10-16 16:01:2510 hrs 30 mins ago StakeMars Protocol: STM Token 0xa1ba6503b4cfa962bbd3d7d8728f64cb89c40b570.006736864142264144 BNB
0x70b002d5fef0bea2ac4f19b50fc9a4f346a7249bdb92783b19c000f68236b5ac118266502021-10-16 16:01:2510 hrs 30 mins ago PancakeSwap: Router v2 StakeMars Protocol: STM Token0.010105296213396217 BNB
0x570e3210354740ed69d9212d84e3f9d1cc2036cda4e2f4d90db080e2b436dada117834722021-10-15 3:54:051 day 22 hrs ago StakeMars Protocol: STM Token PancakeSwap: Router v20.016936057408986172 BNB
0x570e3210354740ed69d9212d84e3f9d1cc2036cda4e2f4d90db080e2b436dada117834722021-10-15 3:54:051 day 22 hrs ago StakeMars Protocol: STM Token 0xa1ba6503b4cfa962bbd3d7d8728f64cb89c40b570.033872114817972343 BNB
0x570e3210354740ed69d9212d84e3f9d1cc2036cda4e2f4d90db080e2b436dada117834722021-10-15 3:54:051 day 22 hrs ago PancakeSwap: Router v2 StakeMars Protocol: STM Token0.050808172226958515 BNB
0x33da268a33662241fb3a39720d5add6e620b9315e762c8478aa0a00c7b718d12117704432021-10-14 17:02:252 days 9 hrs ago StakeMars Protocol: STM Token PancakeSwap: Router v20.018529584464706009 BNB
0x33da268a33662241fb3a39720d5add6e620b9315e762c8478aa0a00c7b718d12117704432021-10-14 17:02:252 days 9 hrs ago StakeMars Protocol: STM Token 0xa1ba6503b4cfa962bbd3d7d8728f64cb89c40b570.037059168929412018 BNB
0x33da268a33662241fb3a39720d5add6e620b9315e762c8478aa0a00c7b718d12117704432021-10-14 17:02:252 days 9 hrs ago PancakeSwap: Router v2 StakeMars Protocol: STM Token0.055588753394118027 BNB
0x1526c491f6f7faa7db5efdd34066eda1eef776213b6d311b34376146a2e2e572117614262021-10-14 9:28:332 days 17 hrs ago StakeMars Protocol: STM Token PancakeSwap: Router v20.006618299099041745 BNB
0x1526c491f6f7faa7db5efdd34066eda1eef776213b6d311b34376146a2e2e572117614262021-10-14 9:28:332 days 17 hrs ago StakeMars Protocol: STM Token 0xa1ba6503b4cfa962bbd3d7d8728f64cb89c40b570.01323659819808349 BNB
0x1526c491f6f7faa7db5efdd34066eda1eef776213b6d311b34376146a2e2e572117614262021-10-14 9:28:332 days 17 hrs ago PancakeSwap: Router v2 StakeMars Protocol: STM Token0.019854897297125235 BNB
0x3594e6c3f6f2c201a6ecd05de78b59a785385a6c025a94cb1802c2beb589b5cc117385342021-10-13 14:14:013 days 12 hrs ago StakeMars Protocol: STM Token PancakeSwap: Router v20.009727724898661959 BNB
0x3594e6c3f6f2c201a6ecd05de78b59a785385a6c025a94cb1802c2beb589b5cc117385342021-10-13 14:14:013 days 12 hrs ago StakeMars Protocol: STM Token 0xa1ba6503b4cfa962bbd3d7d8728f64cb89c40b570.019455449797323918 BNB
0x3594e6c3f6f2c201a6ecd05de78b59a785385a6c025a94cb1802c2beb589b5cc117385342021-10-13 14:14:013 days 12 hrs ago PancakeSwap: Router v2 StakeMars Protocol: STM Token0.029183174695985877 BNB
0xea892aaba3b7378f50dcc14e142dc85f8ce5e8bdb59c631eae2a9ba80a8c6a1d116568622021-10-10 17:00:066 days 9 hrs ago StakeMars Protocol: STM Token PancakeSwap: Router v20.002527207762009116 BNB
0xea892aaba3b7378f50dcc14e142dc85f8ce5e8bdb59c631eae2a9ba80a8c6a1d116568622021-10-10 17:00:066 days 9 hrs ago StakeMars Protocol: STM Token 0xa1ba6503b4cfa962bbd3d7d8728f64cb89c40b570.005054415524018231 BNB
0xea892aaba3b7378f50dcc14e142dc85f8ce5e8bdb59c631eae2a9ba80a8c6a1d116568622021-10-10 17:00:066 days 9 hrs ago PancakeSwap: Router v2 StakeMars Protocol: STM Token0.007581623286027347 BNB
0xd04ad1ae64e531e16392aac6a43ab16c574e3aa44719c839703d5a7ae7a8e643115836242021-10-08 3:44:348 days 22 hrs ago StakeMars Protocol: STM Token PancakeSwap: Router v20.003191148220138502 BNB
0xd04ad1ae64e531e16392aac6a43ab16c574e3aa44719c839703d5a7ae7a8e643115836242021-10-08 3:44:348 days 22 hrs ago StakeMars Protocol: STM Token 0xa1ba6503b4cfa962bbd3d7d8728f64cb89c40b570.006382296440277003 BNB
0xd04ad1ae64e531e16392aac6a43ab16c574e3aa44719c839703d5a7ae7a8e643115836242021-10-08 3:44:348 days 22 hrs ago PancakeSwap: Router v2 StakeMars Protocol: STM Token0.009573444660415505 BNB
0xe0b695021aa1dc30a04d6ae6cc7940034fe5d842cb4de5979fbe9f2f2c4cf6d5115600222021-10-07 8:02:469 days 18 hrs ago StakeMars Protocol: STM Token PancakeSwap: Router v20.003025295777317793 BNB
0xe0b695021aa1dc30a04d6ae6cc7940034fe5d842cb4de5979fbe9f2f2c4cf6d5115600222021-10-07 8:02:469 days 18 hrs ago StakeMars Protocol: STM Token 0xa1ba6503b4cfa962bbd3d7d8728f64cb89c40b570.006050591554635584 BNB
0xe0b695021aa1dc30a04d6ae6cc7940034fe5d842cb4de5979fbe9f2f2c4cf6d5115600222021-10-07 8:02:469 days 18 hrs ago PancakeSwap: Router v2 StakeMars Protocol: STM Token0.009075887331953377 BNB
0x4c2eb9f09fe3159ff6653d59fd7eec1ba9ad11d03d666daeb844863bedf1575d115158762021-10-05 19:12:4911 days 7 hrs ago StakeMars Protocol: STM Token PancakeSwap: Router v20.016406180461137474 BNB
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
StakeMars

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, Unlicense license

Contract Source Code (Solidity Multiple files format)

File 1 of 8: StakeMars.sol
/**
    StakeMars Protocol ("STM")

    This project was launched as a fairlaunch.

    Features:

    10% fees per transaction
    - 4% fee per transaction : auto add to the liquidity pool
    - 4% fee per transaction : allocate to STM stakers
    - 1% fee per transaction : burn to dead wallet
    - 1% fee per transaction : marketing and operational expenses

    100,000,000 total supply

    TELEGRAM: https://t.me/StakeMars
    WEBSITE: https://www.StakeMars.com/
*/

// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.4;

import "./IUniswapV2Pair.sol";
import "./IUniswapV2Factory.sol";
import "./IUniswapV2Router02.sol";
import "./BaseERC20.sol";

interface IStaking {
    function distribute() external payable;
}

contract StakeMars is BaseERC20 {
    mapping(address => bool) private _whitelist;

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    IStaking public stakingAddress;

    // Marketing wallet
    address public mktAddress;

    // Burn wallet
    address public constant burnTo = address(0x000000000000000000000000000000000000dEaD);

    // 10% tax, 4% to stake contract, 4% LP, 1% burn and 1% marketing expenses
    uint8 private constant swapPercentage = 10;
    uint256 private minSwapAmount;
    uint256 private maxSwapAmount;

    // Set Max transaction
    uint256 public maxTxAmountBuy = 100000 * 10**18;
    uint256 public maxTxAmountSell = 100000 * 10**18;

    //Transction types
    uint256 private buying = 0;
    uint256 private selling = 1;
    uint256 private transferring = 2;

    // Supply: 100,000,000 (10^8)
    constructor() BaseERC20("StakeMars Protocol", "STM", 18, 10**8) {
        _balances[_msgSender()] = _totalSupply;
        minSwapAmount = 1000 * 10**_decimals;
        maxSwapAmount = 12000 * 10**_decimals;

        // Pancakeswap (Testnet): 0xD99D1c33F9fC3444f8101754aBC46c52416550D1
        // Pancakeswap (Testnet2): 0x9Ac64Cc6e4415144C455BD8E4837Fea55603e5c3
        // Pancakeswap v2 (Mainnet): 0x10ED43C718714eb63d5aA57B78B54704E256024E
        IUniswapV2Router02 _uniswapV2Router =
        IUniswapV2Router02(0x10ED43C718714eb63d5aA57B78B54704E256024E);
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
        .createPair(address(this), _uniswapV2Router.WETH());

        uniswapV2Router = _uniswapV2Router;

        // Dead wallet, Contract and owner should always be whitelisted
        _whitelist[burnTo] = true;
        _whitelist[address(this)] = true;
        _whitelist[owner()] = true;

        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    /**
     * ERC20 functions & helpers
     */

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(
            _balances[sender] >= amount,
            "ERC20: transfer amount exceeds balance"
        );

        if (_isWhitelisted(sender, recipient)) {
            _noFeeTransfer(sender, recipient, amount);
        } else {
            uint256 tType = selling;
            if(sender != uniswapV2Pair && recipient != uniswapV2Pair) tType = transferring;
            else if(sender == uniswapV2Pair) tType = buying;
            if(tType == 0){ //Buy
                require(amount <= maxTxAmountBuy, "Transfer amount exceeds the maxTxAmountBuy.");
            }else if(tType == 1){ //Sell
                require(amount <= maxTxAmountSell, "Transfer amount exceeds the maxTxAmountSell.");
            }
            _feeTransfer(sender, recipient, amount);
        }

        emit Transfer(sender, recipient, amount);
    }

    function _feeTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        _swap(sender);
        uint256 tax = (amount * swapPercentage) / 100;
        uint256 mktAmount = tax / 10;
        uint256 addLpBurnAndStakeAmount = tax - (mktAmount * 2);
        _balances[address(this)] += addLpBurnAndStakeAmount;
        _balances[mktAddress] += mktAmount;
        _balances[burnTo] += mktAmount;
        _balances[sender] -= amount;
        _balances[recipient] += amount - tax;
    }

    function _noFeeTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) private {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
    }

    function _isWhitelisted(address address1, address address2)
    private
    view
    returns (bool)
    {
        return _whitelist[address1] || _whitelist[address2];
    }

    /**
     * Uniswap code & distribute method
     */

    receive() external payable {}

    function _swap(address sender) private {
        uint256 contractTokenBalance = _balances[address(this)];
        bool shouldSell = contractTokenBalance >= minSwapAmount;

        if (
            shouldSell &&
            sender != uniswapV2Pair
        ) {
            if(contractTokenBalance >= maxSwapAmount) contractTokenBalance = maxSwapAmount;
            uint256 stakingShare = contractTokenBalance / 2;
            uint256 liquidityShare = contractTokenBalance - stakingShare;
            uint256 swapShare =
            stakingShare + (liquidityShare / 2);
            swapTokensForEth(swapShare);
            uint256 balance = address(this).balance;

            uint256 stakingBnbShare = (4 * balance) / 6;
            uint256 liquidityBnbShare = balance - stakingBnbShare;

            stakingAddress.distribute{value: stakingBnbShare}();

            addLiquidity(liquidityShare / 2, liquidityBnbShare);
            emit Swap(contractTokenBalance, balance);
        }
    }

    function swapTokensForEth(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }

    event Swap(uint256 tokensSwapped, uint256 ethReceived);
    event Whitelist(address whitelisted, bool isWhitelisted);
    event UpdateStakingAddress(address stakingAddress);
    event UpdateMktAddress(address mktAddress);

    /**
     * Misc. functions
     */

    function setStakingAddress(address newAddress) external onlyOwner {
        require(
            address(stakingAddress) == address(0),
            "Staking address already set"
        );
        stakingAddress = IStaking(newAddress);
        _whitelist[address(newAddress)] = true;
        emit UpdateStakingAddress(newAddress);
    }

    function updateWhitelist(address addr, bool isWhitelisted)
    external
    onlyOwner
    {
        _whitelist[addr] = isWhitelisted;
        emit Whitelist(addr, isWhitelisted);
    }

    function setMktAddress(address newAddress) external onlyOwner {
        require(newAddress != address(0), "Mkt address is the zero address");
        mktAddress = address(newAddress);
        emit UpdateMktAddress(newAddress);
    }
}

File 2 of 8: BaseERC20.sol
// SPDX-License-Identifier: UNLICENSED
pragma solidity ^0.8.3;

import "./Context.sol";
import "./Ownable.sol";

contract BaseERC20 is Context, Ownable {
    mapping(address => uint256) internal _balances;
    mapping(address => mapping(address => uint256)) internal _allowances;

    string internal _name;
    string internal _symbol;

    uint8 internal _decimals;
    uint256 internal _totalSupply;

    constructor(
        string memory name_,
        string memory symbol_,
        uint8 decimals_,
        uint256 totalSupply_
    ) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
        _totalSupply = totalSupply_ * 10**_decimals;
    }

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

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

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

    function totalSupply() public view virtual returns (uint256) {
        return _totalSupply;
    }

    function balanceOf(address account) public view virtual returns (uint256) {
        return _balances[account];
    }

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");
        require(_balances[sender] >= amount, "ERC20: transfer amount exceeds balance");

        _balances[sender] -= amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

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

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

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

File 3 of 8: Context.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

/*
 * @dev Provides information about the current execution context, including the
 * sender of the transaction and its data. While these are generally available
 * via msg.sender and msg.data, they should not be accessed in such a direct
 * manner, since when dealing with meta-transactions the account sending and
 * paying for execution may not be the actual sender (as far as an application
 * is concerned).
 *
 * This contract is only required for intermediate, library-like contracts.
 */
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }

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

File 4 of 8: IUniswapV2Factory.sol
pragma solidity >=0.5.0;

interface IUniswapV2Factory {
    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 5 of 8: IUniswapV2Pair.sol
pragma solidity >=0.5.0;

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

    function name() external pure returns (string memory);
    function symbol() external pure returns (string memory);
    function decimals() external pure returns (uint8);
    function totalSupply() external view returns (uint);
    function balanceOf(address owner) external view returns (uint);
    function allowance(address owner, address spender) external view returns (uint);

    function approve(address spender, uint value) external returns (bool);
    function transfer(address to, uint value) external returns (bool);
    function transferFrom(address from, address to, uint value) external returns (bool);

    function DOMAIN_SEPARATOR() external view returns (bytes32);
    function PERMIT_TYPEHASH() external pure returns (bytes32);
    function nonces(address owner) external view returns (uint);

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

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

    function MINIMUM_LIQUIDITY() external pure returns (uint);
    function factory() external view returns (address);
    function token0() external view returns (address);
    function token1() external view returns (address);
    function getReserves() external view returns (uint112 reserve0, uint112 reserve1, uint32 blockTimestampLast);
    function price0CumulativeLast() external view returns (uint);
    function price1CumulativeLast() external view returns (uint);
    function kLast() external view returns (uint);

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

    function initialize(address, address) external;
}

File 6 of 8: IUniswapV2Router01.sol
pragma solidity >=0.6.2;

interface IUniswapV2Router01 {
    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);
}

File 7 of 8: IUniswapV2Router02.sol
pragma solidity >=0.6.2;

import "./IUniswapV2Router01.sol";

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

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

File 8 of 8: Ownable.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.0;

import "./Context.sol";

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

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

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

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

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

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

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"tokensSwapped","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"ethReceived","type":"uint256"}],"name":"Swap","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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"mktAddress","type":"address"}],"name":"UpdateMktAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"stakingAddress","type":"address"}],"name":"UpdateStakingAddress","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"whitelisted","type":"address"},{"indexed":false,"internalType":"bool","name":"isWhitelisted","type":"bool"}],"name":"Whitelist","type":"event"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"burnTo","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountBuy","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmountSell","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"mktAddress","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setMktAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newAddress","type":"address"}],"name":"setStakingAddress","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"stakingAddress","outputs":[{"internalType":"contract IStaking","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"addr","type":"address"},{"internalType":"bool","name":"isWhitelisted","type":"bool"}],"name":"updateWhitelist","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405269152d02c7e14af6800000600e5569152d02c7e14af6800000600f556000601055600160115560026012553480156200003c57600080fd5b506040518060400160405280601281526020017114dd185ad953585c9cc8141c9bdd1bd8dbdb60721b8152506040518060400160405280600381526020016253544d60e81b81525060126305f5e10060006200009d6200041960201b60201c565b600080546001600160a01b0319166001600160a01b0383169081178255604051929350917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a3508351620000fc9060039060208701906200041d565b508251620001129060049060208601906200041d565b506005805460ff191660ff84169081179091556200013290600a6200053c565b6200013e9082620005fd565b60068190553360009081526001602052604090205550506005546200016b925060ff169050600a6200053c565b62000179906103e8620005fd565b600c556005546200018f9060ff16600a6200053c565b6200019d90612ee0620005fd565b600d8190555060007310ed43c718714eb63d5aa57b78b54704e256024e9050806001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b158015620001f657600080fd5b505afa1580156200020b573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002319190620004c3565b6001600160a01b031663c9c6539630836001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027a57600080fd5b505afa1580156200028f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002b59190620004c3565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002fe57600080fd5b505af115801562000313573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003399190620004c3565b600980546001600160a01b03199081166001600160a01b03938416179091556008805490911683831617905560076020527fb0c2646e02af70b79e3fe9277b98373379f54150e4e26b2b5650139f7a75a65d805460ff1990811660019081179092553060009081526040808220805484168517905581549094168152929092208054909216179055336001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6006546040516200040a91815260200190565b60405180910390a35062000672565b3390565b8280546200042b906200061f565b90600052602060002090601f0160209004810192826200044f57600085556200049a565b82601f106200046a57805160ff19168380011785556200049a565b828001600101855582156200049a579182015b828111156200049a5782518255916020019190600101906200047d565b50620004a8929150620004ac565b5090565b5b80821115620004a85760008155600101620004ad565b600060208284031215620004d5578081fd5b81516001600160a01b0381168114620004ec578182fd5b9392505050565b600181815b80851115620005345781600019048211156200051857620005186200065c565b808516156200052657918102915b93841c9390800290620004f8565b509250929050565b6000620004ec60ff8416836000826200055857506001620005f7565b816200056757506000620005f7565b81600181146200058057600281146200058b57620005ab565b6001915050620005f7565b60ff8411156200059f576200059f6200065c565b50506001821b620005f7565b5060208310610133831016604e8410600b8410161715620005d0575081810a620005f7565b620005dc8383620004f3565b8060001904821115620005f357620005f36200065c565b0290505b92915050565b60008160001904831182151516156200061a576200061a6200065c565b500290565b600181811c908216806200063457607f821691505b602082108114156200065657634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b61168680620006826000396000f3fe6080604052600436106101395760003560e01c80638da5cb5b116100ab578063d6c180bf1161006f578063d6c180bf14610365578063d7b4be241461037b578063d85590341461039b578063dd62ed3e146103bb578063f2fde38b14610401578063f4e0d9ac1461042157600080fd5b80638da5cb5b146102dc57806395d89b41146102fa578063a9059cbb1461030f578063bf9eb5401461032f578063d44e586e1461034f57600080fd5b806323b872dd116100fd57806323b872dd14610219578063313ce567146102395780633ba061d91461025b57806349bd5a5e1461027157806370a0823114610291578063715018a6146102c757600080fd5b806306fdde0314610145578063095ea7b3146101705780630d392cd9146101a05780631694505e146101c257806318160ddd146101fa57600080fd5b3661014057005b600080fd5b34801561015157600080fd5b5061015a610441565b6040516101679190611481565b60405180910390f35b34801561017c57600080fd5b5061019061018b366004611429565b6104d3565b6040519015158152602001610167565b3480156101ac57600080fd5b506101c06101bb3660046113f8565b6104e9565b005b3480156101ce57600080fd5b506008546101e2906001600160a01b031681565b6040516001600160a01b039091168152602001610167565b34801561020657600080fd5b506006545b604051908152602001610167565b34801561022557600080fd5b506101906102343660046113b8565b61057f565b34801561024557600080fd5b5060055460405160ff9091168152602001610167565b34801561026757600080fd5b506101e261dead81565b34801561027d57600080fd5b506009546101e2906001600160a01b031681565b34801561029d57600080fd5b5061020b6102ac366004611348565b6001600160a01b031660009081526001602052604090205490565b3480156102d357600080fd5b506101c0610630565b3480156102e857600080fd5b506000546001600160a01b03166101e2565b34801561030657600080fd5b5061015a6106a4565b34801561031b57600080fd5b5061019061032a366004611429565b6106b3565b34801561033b57600080fd5b506101c061034a366004611348565b6106c0565b34801561035b57600080fd5b5061020b600f5481565b34801561037157600080fd5b5061020b600e5481565b34801561038757600080fd5b50600a546101e2906001600160a01b031681565b3480156103a757600080fd5b50600b546101e2906001600160a01b031681565b3480156103c757600080fd5b5061020b6103d6366004611380565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561040d57600080fd5b506101c061041c366004611348565b610795565b34801561042d57600080fd5b506101c061043c366004611348565b61087f565b606060038054610450906115e7565b80601f016020809104026020016040519081016040528092919081815260200182805461047c906115e7565b80156104c95780601f1061049e576101008083540402835291602001916104c9565b820191906000526020600020905b8154815290600101906020018083116104ac57829003601f168201915b5050505050905090565b60006104e033848461096a565b50600192915050565b6000546001600160a01b0316331461051c5760405162461bcd60e51b8152600401610513906114d4565b60405180910390fd5b6001600160a01b038216600081815260076020908152604091829020805460ff19168515159081179091558251938452908301527f5a25e09a5dba33161281055e015f1279b6b10204d8f90dd56a8ce2b82322d43d910160405180910390a15050565b600061058c848484610a8f565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156106115760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e74206578636565647320616044820152676c6c6f77616e636560c01b6064820152608401610513565b610625853361062086856115d0565b61096a565b506001949350505050565b6000546001600160a01b0316331461065a5760405162461bcd60e51b8152600401610513906114d4565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b606060048054610450906115e7565b60006104e0338484610a8f565b6000546001600160a01b031633146106ea5760405162461bcd60e51b8152600401610513906114d4565b6001600160a01b0381166107405760405162461bcd60e51b815260206004820152601f60248201527f4d6b74206164647265737320697320746865207a65726f2061646472657373006044820152606401610513565b600b80546001600160a01b0319166001600160a01b0383169081179091556040519081527fd439956a223ecbda889a5e264e02edb146cb29b435e3a5bfcf996e55be00667a906020015b60405180910390a150565b6000546001600160a01b031633146107bf5760405162461bcd60e51b8152600401610513906114d4565b6001600160a01b0381166108245760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610513565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146108a95760405162461bcd60e51b8152600401610513906114d4565b600a546001600160a01b0316156109025760405162461bcd60e51b815260206004820152601b60248201527f5374616b696e67206164647265737320616c72656164792073657400000000006044820152606401610513565b600a80546001600160a01b0319166001600160a01b038316908117909155600081815260076020908152604091829020805460ff1916600117905590519182527f30740e4c779c36103c49989d66d240626a100f163152c524345a280b5166834c910161078a565b6001600160a01b0383166109cc5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610513565b6001600160a01b038216610a2d5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610513565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b038316610af35760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610513565b6001600160a01b038216610b555760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610513565b6001600160a01b038316600090815260016020526040902054811115610bcc5760405162461bcd60e51b815260206004820152602660248201527f45524332303a207472616e7366657220616d6f756e7420657863656564732062604482015265616c616e636560d01b6064820152608401610513565b610bd68383610d75565b15610beb57610be6838383610dbb565b610d30565b6011546009546001600160a01b03858116911614801590610c1a57506009546001600160a01b03848116911614155b15610c285750601254610c43565b6009546001600160a01b0385811691161415610c4357506010545b80610cb357600e54821115610cae5760405162461bcd60e51b815260206004820152602b60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201526a3c20b6b7bab73a213abc9760a91b6064820152608401610513565b610d23565b8060011415610d2357600f54821115610d235760405162461bcd60e51b815260206004820152602c60248201527f5472616e7366657220616d6f756e74206578636565647320746865206d61785460448201526b3c20b6b7bab73a29b2b6361760a11b6064820152608401610513565b610d2e848484610e1a565b505b816001600160a01b0316836001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610a8291815260200190565b6001600160a01b03821660009081526007602052604081205460ff1680610db457506001600160a01b03821660009081526007602052604090205460ff165b9392505050565b6001600160a01b03831660009081526001602052604081208054839290610de39084906115d0565b90915550506001600160a01b03821660009081526001602052604081208054839290610e10908490611579565b9091555050505050565b610e2383610f6c565b60006064610e32600a846115b1565b610e3c9190611591565b90506000610e4b600a83611591565b90506000610e5a8260026115b1565b610e6490846115d0565b30600090815260016020526040812080549293508392909190610e88908490611579565b9091555050600b546001600160a01b031660009081526001602052604081208054849290610eb7908490611579565b909155505061dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d8054849290610efa908490611579565b90915550506001600160a01b03861660009081526001602052604081208054869290610f279084906115d0565b90915550610f37905083856115d0565b6001600160a01b03861660009081526001602052604081208054909190610f5f908490611579565b9091555050505050505050565b30600090815260016020526040902054600c5481108015908190610f9e57506009546001600160a01b03848116911614155b156110da57600d548210610fb257600d5491505b6000610fbf600284611591565b90506000610fcd82856115d0565b90506000610fdc600283611591565b610fe69084611579565b9050610ff1816110df565b47600060066110018360046115b1565b61100b9190611591565b9050600061101982846115d0565b9050600a60009054906101000a90046001600160a01b03166001600160a01b031663e4fc6b6d836040518263ffffffff1660e01b81526004016000604051808303818588803b15801561106b57600080fd5b505af115801561107f573d6000803e3d6000fd5b505050505061109a6002866110949190611591565b82611264565b60408051898152602081018590527f015fc8ee969fd902d9ebd12a31c54446400a2b512a405366fe14defd6081d220910160405180910390a15050505050505b505050565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061112257634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201810191909152600854604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b15801561117657600080fd5b505afa15801561118a573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906111ae9190611364565b816001815181106111cf57634e487b7160e01b600052603260045260246000fd5b6001600160a01b0392831660209182029290920101526008546111f5913091168461096a565b60085460405163791ac94760e01b81526001600160a01b039091169063791ac9479061122e908590600090869030904290600401611509565b600060405180830381600087803b15801561124857600080fd5b505af115801561125c573d6000803e3d6000fd5b505050505050565b60085461127c9030906001600160a01b03168461096a565b6008546001600160a01b031663f305d7198230856000806112a56000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c4016060604051808303818588803b15801561130857600080fd5b505af115801561131c573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906113419190611454565b5050505050565b600060208284031215611359578081fd5b8135610db481611638565b600060208284031215611375578081fd5b8151610db481611638565b60008060408385031215611392578081fd5b823561139d81611638565b915060208301356113ad81611638565b809150509250929050565b6000806000606084860312156113cc578081fd5b83356113d781611638565b925060208401356113e781611638565b929592945050506040919091013590565b6000806040838503121561140a578182fd5b823561141581611638565b9150602083013580151581146113ad578182fd5b6000806040838503121561143b578182fd5b823561144681611638565b946020939093013593505050565b600080600060608486031215611468578283fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b818110156114ad57858101830151858201604001528201611491565b818111156114be5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156115585784516001600160a01b031683529383019391830191600101611533565b50506001600160a01b03969096166060850152505050608001529392505050565b6000821982111561158c5761158c611622565b500190565b6000826115ac57634e487b7160e01b81526012600452602481fd5b500490565b60008160001904831182151516156115cb576115cb611622565b500290565b6000828210156115e2576115e2611622565b500390565b600181811c908216806115fb57607f821691505b6020821081141561161c57634e487b7160e01b600052602260045260246000fd5b50919050565b634e487b7160e01b600052601160045260246000fd5b6001600160a01b038116811461164d57600080fd5b5056fea264697066735822122039e3302b8d824f7f207e71d661fe00be3073383644e9f365e1cf806225c300d264736f6c63430008040033

Deployed ByteCode Sourcemap

733:6895:7:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;688:89:0;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1202:157;;;;;;;;;;-1:-1:-1;1202:157:0;;;;;:::i;:::-;;:::i;:::-;;;3782:14:8;;3775:22;3757:41;;3745:2;3730:18;1202:157:0;3712:92:8;7204:184:7;;;;;;;;;;-1:-1:-1;7204:184:7;;;;;:::i;:::-;;:::i;:::-;;821:41;;;;;;;;;;-1:-1:-1;821:41:7;;;;-1:-1:-1;;;;;821:41:7;;;;;;-1:-1:-1;;;;;2672:32:8;;;2654:51;;2642:2;2627:18;821:41:7;2609:102:8;977:97:0;;;;;;;;;;-1:-1:-1;1055:12:0;;977:97;;;9766:25:8;;;9754:2;9739:18;977:97:0;9721:76:8;1716:435:0;;;;;;;;;;-1:-1:-1;1716:435:0;;;;;:::i;:::-;;:::i;882:89::-;;;;;;;;;;-1:-1:-1;955:9:0;;882:89;;955:9;;;;11185:36:8;;11173:2;11158:18;882:89:0;11140:87:8;1015:84:7;;;;;;;;;;;;1056:42;1015:84;;868:28;;;;;;;;;;-1:-1:-1;868:28:7;;;;-1:-1:-1;;;;;868:28:7;;;1080:116:0;;;;;;;;;;-1:-1:-1;1080:116:0;;;;;:::i;:::-;-1:-1:-1;;;;;1171:18:0;1145:7;1171:18;;;:9;:18;;;;;;;1080:116;1694:145:6;;;;;;;;;;;;;:::i;1062:85::-;;;;;;;;;;-1:-1:-1;1108:7:6;1134:6;-1:-1:-1;;;;;1134:6:6;1062:85;;783:93:0;;;;;;;;;;;;;:::i;1547:163::-;;;;;;;;;;-1:-1:-1;1547:163:0;;;;;:::i;:::-;;:::i;7394:232:7:-;;;;;;;;;;-1:-1:-1;7394:232:7;;;;;:::i;:::-;;:::i;1384:48::-;;;;;;;;;;;;;;;;1331:47;;;;;;;;;;;;;;;;903:30;;;;;;;;;;-1:-1:-1;903:30:7;;;;-1:-1:-1;;;;;903:30:7;;;964:25;;;;;;;;;;-1:-1:-1;964:25:7;;;;-1:-1:-1;;;;;964:25:7;;;1365:176:0;;;;;;;;;;-1:-1:-1;1365:176:0;;;;;:::i;:::-;-1:-1:-1;;;;;1507:18:0;;;1477:7;1507:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;1365:176;1988:240:6;;;;;;;;;;-1:-1:-1;1988:240:6;;;;;:::i;:::-;;:::i;6862:336:7:-;;;;;;;;;;-1:-1:-1;6862:336:7;;;;;:::i;:::-;;:::i;688:89:0:-;733:13;765:5;758:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;688:89;:::o;1202:157::-;1276:4;1292:39;665:10:1;1315:7:0;1324:6;1292:8;:39::i;:::-;-1:-1:-1;1348:4:0;1202:157;;;;:::o;7204:184:7:-;1108:7:6;1134:6;-1:-1:-1;;;;;1134:6:6;665:10:1;1274:23:6;1266:68;;;;-1:-1:-1;;;1266:68:6;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;7304:16:7;::::1;;::::0;;;:10:::1;:16;::::0;;;;;;;;:32;;-1:-1:-1;;7304:32:7::1;::::0;::::1;;::::0;;::::1;::::0;;;7351:30;;2884:51:8;;;2951:18;;;2944:50;7351:30:7::1;::::0;2857:18:8;7351:30:7::1;;;;;;;7204:184:::0;;:::o;1716:435:0:-;1843:4;1859:36;1869:6;1877:9;1888:6;1859:9;:36::i;:::-;-1:-1:-1;;;;;1933:19:0;;1906:24;1933:19;;;:11;:19;;;;;;;;665:10:1;1933:33:0;;;;;;;;1984:26;;;;1976:79;;;;-1:-1:-1;;;1976:79:0;;7060:2:8;1976:79:0;;;7042:21:8;7099:2;7079:18;;;7072:30;7138:34;7118:18;;;7111:62;-1:-1:-1;;;7189:18:8;;;7182:38;7237:19;;1976:79:0;7032:230:8;1976:79:0;2065:57;2074:6;665:10:1;2096:25:0;2115:6;2096:16;:25;:::i;:::-;2065:8;:57::i;:::-;-1:-1:-1;2140:4:0;;1716:435;-1:-1:-1;;;;1716:435:0:o;1694:145:6:-;1108:7;1134:6;-1:-1:-1;;;;;1134:6:6;665:10:1;1274:23:6;1266:68;;;;-1:-1:-1;;;1266:68:6;;;;;;;:::i;:::-;1800:1:::1;1784:6:::0;;1763:40:::1;::::0;-1:-1:-1;;;;;1784:6:6;;::::1;::::0;1763:40:::1;::::0;1800:1;;1763:40:::1;1830:1;1813:19:::0;;-1:-1:-1;;;;;;1813:19:6::1;::::0;;1694:145::o;783:93:0:-;830:13;862:7;855:14;;;;;:::i;1547:163::-;1624:4;1640:42;665:10:1;1664:9:0;1675:6;1640:9;:42::i;7394:232:7:-;1108:7:6;1134:6;-1:-1:-1;;;;;1134:6:6;665:10:1;1274:23:6;1266:68;;;;-1:-1:-1;;;1266:68:6;;;;;;;:::i;:::-;-1:-1:-1;;;;;7474:24:7;::::1;7466:68;;;::::0;-1:-1:-1;;;7466:68:7;;6700:2:8;7466:68:7::1;::::0;::::1;6682:21:8::0;6739:2;6719:18;;;6712:30;6778:33;6758:18;;;6751:61;6829:18;;7466:68:7::1;6672:181:8::0;7466:68:7::1;7544:10;:32:::0;;-1:-1:-1;;;;;;7544:32:7::1;-1:-1:-1::0;;;;;7544:32:7;::::1;::::0;;::::1;::::0;;;7591:28:::1;::::0;2654:51:8;;;7591:28:7::1;::::0;2642:2:8;2627:18;7591:28:7::1;;;;;;;;7394:232:::0;:::o;1988:240:6:-;1108:7;1134:6;-1:-1:-1;;;;;1134:6:6;665:10:1;1274:23:6;1266:68;;;;-1:-1:-1;;;1266:68:6;;;;;;;:::i;:::-;-1:-1:-1;;;;;2076:22:6;::::1;2068:73;;;::::0;-1:-1:-1;;;2068:73:6;;5483:2:8;2068:73:6::1;::::0;::::1;5465:21:8::0;5522:2;5502:18;;;5495:30;5561:34;5541:18;;;5534:62;-1:-1:-1;;;5612:18:8;;;5605:36;5658:19;;2068:73:6::1;5455:228:8::0;2068:73:6::1;2177:6;::::0;;2156:38:::1;::::0;-1:-1:-1;;;;;2156:38:6;;::::1;::::0;2177:6;::::1;::::0;2156:38:::1;::::0;::::1;2204:6;:17:::0;;-1:-1:-1;;;;;;2204:17:6::1;-1:-1:-1::0;;;;;2204:17:6;;;::::1;::::0;;;::::1;::::0;;1988:240::o;6862:336:7:-;1108:7:6;1134:6;-1:-1:-1;;;;;1134:6:6;665:10:1;1274:23:6;1266:68;;;;-1:-1:-1;;;1266:68:6;;;;;;;:::i;:::-;6967:14:7::1;::::0;-1:-1:-1;;;;;6967:14:7::1;6959:37:::0;6938:111:::1;;;::::0;-1:-1:-1;;;6938:111:7;;8243:2:8;6938:111:7::1;::::0;::::1;8225:21:8::0;8282:2;8262:18;;;8255:30;8321:29;8301:18;;;8294:57;8368:18;;6938:111:7::1;8215:177:8::0;6938:111:7::1;7059:14;:37:::0;;-1:-1:-1;;;;;;7059:37:7::1;-1:-1:-1::0;;;;;7059:37:7;::::1;::::0;;::::1;::::0;;;-1:-1:-1;7106:31:7;;;:10:::1;:31;::::0;;;;;;;;:38;;-1:-1:-1;;7106:38:7::1;-1:-1:-1::0;7106:38:7::1;::::0;;7159:32;;2654:51:8;;;7159:32:7::1;::::0;2627:18:8;7159:32:7::1;2609:102:8::0;2665:370:0;-1:-1:-1;;;;;2796:19:0;;2788:68;;;;-1:-1:-1;;;2788:68:0;;9005:2:8;2788:68:0;;;8987:21:8;9044:2;9024:18;;;9017:30;9083:34;9063:18;;;9056:62;-1:-1:-1;;;9134:18:8;;;9127:34;9178:19;;2788:68:0;8977:226:8;2788:68:0;-1:-1:-1;;;;;2874:21:0;;2866:68;;;;-1:-1:-1;;;2866:68:0;;5890:2:8;2866:68:0;;;5872:21:8;5929:2;5909:18;;;5902:30;5968:34;5948:18;;;5941:62;-1:-1:-1;;;6019:18:8;;;6012:32;6061:19;;2866:68:0;5862:224:8;2866:68:0;-1:-1:-1;;;;;2945:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;2996:32;;9766:25:8;;;2996:32:0;;9739:18:8;2996:32:0;;;;;;;;2665:370;;;:::o;2648:1121:7:-;-1:-1:-1;;;;;2784:20:7;;2776:70;;;;-1:-1:-1;;;2776:70:7;;8599:2:8;2776:70:7;;;8581:21:8;8638:2;8618:18;;;8611:30;8677:34;8657:18;;;8650:62;-1:-1:-1;;;8728:18:8;;;8721:35;8773:19;;2776:70:7;8571:227:8;2776:70:7;-1:-1:-1;;;;;2864:23:7;;2856:71;;;;-1:-1:-1;;;2856:71:7;;5079:2:8;2856:71:7;;;5061:21:8;5118:2;5098:18;;;5091:30;5157:34;5137:18;;;5130:62;-1:-1:-1;;;5208:18:8;;;5201:33;5251:19;;2856:71:7;5051:225:8;2856:71:7;-1:-1:-1;;;;;2958:17:7;;;;;;:9;:17;;;;;;:27;-1:-1:-1;2958:27:7;2937:112;;;;-1:-1:-1;;;2937:112:7;;6293:2:8;2937:112:7;;;6275:21:8;6332:2;6312:18;;;6305:30;6371:34;6351:18;;;6344:62;-1:-1:-1;;;6422:18:8;;;6415:36;6468:19;;2937:112:7;6265:228:8;2937:112:7;3064:33;3079:6;3087:9;3064:14;:33::i;:::-;3060:652;;;3113:41;3128:6;3136:9;3147:6;3113:14;:41::i;:::-;3060:652;;;3201:7;;3235:13;;-1:-1:-1;;;;;3225:23:7;;;3235:13;;3225:23;;;;:53;;-1:-1:-1;3265:13:7;;-1:-1:-1;;;;;3252:26:7;;;3265:13;;3252:26;;3225:53;3222:139;;;-1:-1:-1;3288:12:7;;3222:139;;;3332:13;;-1:-1:-1;;;;;3322:23:7;;;3332:13;;3322:23;3319:42;;;-1:-1:-1;3355:6:7;;3319:42;3378:10;3375:274;;3431:14;;3421:6;:24;;3413:80;;;;-1:-1:-1;;;3413:80:7;;9410:2:8;3413:80:7;;;9392:21:8;9449:2;9429:18;;;9422:30;9488:34;9468:18;;;9461:62;-1:-1:-1;;;9539:18:8;;;9532:41;9590:19;;3413:80:7;9382:233:8;3413:80:7;3375:274;;;3516:5;3525:1;3516:10;3513:136;;;3570:15;;3560:6;:25;;3552:82;;;;-1:-1:-1;;;3552:82:7;;7830:2:8;3552:82:7;;;7812:21:8;7869:2;7849:18;;;7842:30;7908:34;7888:18;;;7881:62;-1:-1:-1;;;7959:18:8;;;7952:42;8011:19;;3552:82:7;7802:234:8;3552:82:7;3662:39;3675:6;3683:9;3694:6;3662:12;:39::i;:::-;3060:652;;3744:9;-1:-1:-1;;;;;3727:35:7;3736:6;-1:-1:-1;;;;;3727:35:7;;3755:6;3727:35;;;;9766:25:8;;9754:2;9739:18;;9721:76;4511:172:7;-1:-1:-1;;;;;4632:20:7;;4605:4;4632:20;;;:10;:20;;;;;;;;;:44;;-1:-1:-1;;;;;;4656:20:7;;;;;;:10;:20;;;;;;;;4632:44;4625:51;4511:172;-1:-1:-1;;;4511:172:7:o;4308:197::-;-1:-1:-1;;;;;4431:17:7;;;;;;:9;:17;;;;;:27;;4452:6;;4431:17;:27;;4452:6;;4431:27;:::i;:::-;;;;-1:-1:-1;;;;;;;4468:20:7;;;;;;:9;:20;;;;;:30;;4492:6;;4468:20;:30;;4492:6;;4468:30;:::i;:::-;;;;-1:-1:-1;;;;;4308:197:7:o;3775:527::-;3896:13;3902:6;3896:5;:13::i;:::-;3919:11;3961:3;3934:23;1225:2;3934:6;:23;:::i;:::-;3933:31;;;;:::i;:::-;3919:45;-1:-1:-1;3974:17:7;3994:8;4000:2;3919:45;3994:8;:::i;:::-;3974:28;-1:-1:-1;4012:31:7;4053:13;3974:28;4065:1;4053:13;:::i;:::-;4046:21;;:3;:21;:::i;:::-;4095:4;4077:24;;;;:9;:24;;;;;:51;;4012:55;;-1:-1:-1;4012:55:7;;4077:24;;;:51;;4012:55;;4077:51;:::i;:::-;;;;-1:-1:-1;;4148:10:7;;-1:-1:-1;;;;;4148:10:7;4138:21;;;;:9;:21;;;;;:34;;4163:9;;4138:21;:34;;4163:9;;4138:34;:::i;:::-;;;;-1:-1:-1;;1056:42:7;4182:17;;;;:9;:17;;;:30;;4203:9;;4182:17;:30;;4203:9;;4182:30;:::i;:::-;;;;-1:-1:-1;;;;;;;4222:17:7;;;;;;:9;:17;;;;;:27;;4243:6;;4222:17;:27;;4243:6;;4222:27;:::i;:::-;;;;-1:-1:-1;4283:12:7;;-1:-1:-1;4292:3:7;4283:6;:12;:::i;:::-;-1:-1:-1;;;;;4259:20:7;;;;;;:9;:20;;;;;:36;;:20;;;:36;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;;3775:527:7:o;4781:987::-;4879:4;4830:28;4861:24;;;:9;:24;;;;;;4937:13;;4913:37;;;;;;;4978:49;;-1:-1:-1;5014:13:7;;-1:-1:-1;;;;;5004:23:7;;;5014:13;;5004:23;;4978:49;4961:801;;;5079:13;;5055:20;:37;5052:78;;5117:13;;5094:36;;5052:78;5144:20;5167:24;5190:1;5167:20;:24;:::i;:::-;5144:47;-1:-1:-1;5205:22:7;5230:35;5144:47;5230:20;:35;:::i;:::-;5205:60;-1:-1:-1;5279:17:7;5327:18;5344:1;5205:60;5327:18;:::i;:::-;5311:35;;:12;:35;:::i;:::-;5279:67;;5360:27;5377:9;5360:16;:27::i;:::-;5419:21;5401:15;5497:1;5482:11;5419:21;5482:1;:11;:::i;:::-;5481:17;;;;:::i;:::-;5455:43;-1:-1:-1;5512:25:7;5540;5455:43;5540:7;:25;:::i;:::-;5512:53;;5580:14;;;;;;;;;-1:-1:-1;;;;;5580:14:7;-1:-1:-1;;;;;5580:25:7;;5613:15;5580:51;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5646;5676:1;5659:14;:18;;;;:::i;:::-;5679:17;5646:12;:51::i;:::-;5716:35;;;10964:25:8;;;11020:2;11005:18;;10998:34;;;5716:35:7;;10937:18:8;5716:35:7;;;;;;;4961:801;;;;;;;4781:987;;;:::o;5774:459::-;5863:16;;;5877:1;5863:16;;;;;;;;5839:21;;5863:16;;;;;;;;;;-1:-1:-1;5863:16:7;5839:40;;5907:4;5889;5894:1;5889:7;;;;;;-1:-1:-1;;;5889:7:7;;;;;;;;;-1:-1:-1;;;;;5889:23:7;;;:7;;;;;;;;;;:23;;;;5932:15;;:22;;;-1:-1:-1;;;5932:22:7;;;;:15;;;;;:20;;:22;;;;;5889:7;;5932:22;;;;;:15;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5922:4;5927:1;5922:7;;;;;;-1:-1:-1;;;5922:7:7;;;;;;;;;-1:-1:-1;;;;;5922:32:7;;;:7;;;;;;;;;:32;5996:15;;5964:62;;5981:4;;5996:15;6014:11;5964:8;:62::i;:::-;6036:15;;:190;;-1:-1:-1;;;6036:190:7;;-1:-1:-1;;;;;6036:15:7;;;;:66;;:190;;6116:11;;6036:15;;6156:4;;6182;;6201:15;;6036:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5774:459;;:::o;6239:350::-;6351:15;;6319:62;;6336:4;;-1:-1:-1;;;;;6351:15:7;6369:11;6319:8;:62::i;:::-;6391:15;;-1:-1:-1;;;;;6391:15:7;:31;6430:9;6462:4;6481:11;6391:15;;6536:7;1108::6;1134:6;-1:-1:-1;;;;;1134:6:6;;1062:85;6536:7:7;6391:191;;;;;;-1:-1:-1;;;;;;6391:191:7;;;-1:-1:-1;;;;;3364:15:8;;;6391:191:7;;;3346:34:8;3396:18;;;3389:34;;;;3439:18;;;3432:34;;;;3482:18;;;3475:34;3546:15;;;3525:19;;;3518:44;6557:15:7;3578:19:8;;;3571:35;3280:19;;6391:191:7;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;6239:350;;:::o;14:257:8:-;73:6;126:2;114:9;105:7;101:23;97:32;94:2;;;147:6;139;132:22;94:2;191:9;178:23;210:31;235:5;210:31;:::i;276:261::-;346:6;399:2;387:9;378:7;374:23;370:32;367:2;;;420:6;412;405:22;367:2;457:9;451:16;476:31;501:5;476:31;:::i;542:398::-;610:6;618;671:2;659:9;650:7;646:23;642:32;639:2;;;692:6;684;677:22;639:2;736:9;723:23;755:31;780:5;755:31;:::i;:::-;805:5;-1:-1:-1;862:2:8;847:18;;834:32;875:33;834:32;875:33;:::i;:::-;927:7;917:17;;;629:311;;;;;:::o;945:466::-;1022:6;1030;1038;1091:2;1079:9;1070:7;1066:23;1062:32;1059:2;;;1112:6;1104;1097:22;1059:2;1156:9;1143:23;1175:31;1200:5;1175:31;:::i;:::-;1225:5;-1:-1:-1;1282:2:8;1267:18;;1254:32;1295:33;1254:32;1295:33;:::i;:::-;1049:362;;1347:7;;-1:-1:-1;;;1401:2:8;1386:18;;;;1373:32;;1049:362::o;1416:436::-;1481:6;1489;1542:2;1530:9;1521:7;1517:23;1513:32;1510:2;;;1563:6;1555;1548:22;1510:2;1607:9;1594:23;1626:31;1651:5;1626:31;:::i;:::-;1676:5;-1:-1:-1;1733:2:8;1718:18;;1705:32;1775:15;;1768:23;1756:36;;1746:2;;1811:6;1803;1796:22;1857:325;1925:6;1933;1986:2;1974:9;1965:7;1961:23;1957:32;1954:2;;;2007:6;1999;1992:22;1954:2;2051:9;2038:23;2070:31;2095:5;2070:31;:::i;:::-;2120:5;2172:2;2157:18;;;;2144:32;;-1:-1:-1;;;1944:238:8:o;2187:316::-;2275:6;2283;2291;2344:2;2332:9;2323:7;2319:23;2315:32;2312:2;;;2365:6;2357;2350:22;2312:2;2399:9;2393:16;2383:26;;2449:2;2438:9;2434:18;2428:25;2418:35;;2493:2;2482:9;2478:18;2472:25;2462:35;;2302:201;;;;;:::o;4269:603::-;4381:4;4410:2;4439;4428:9;4421:21;4471:6;4465:13;4514:6;4509:2;4498:9;4494:18;4487:34;4539:4;4552:140;4566:6;4563:1;4560:13;4552:140;;;4661:14;;;4657:23;;4651:30;4627:17;;;4646:2;4623:26;4616:66;4581:10;;4552:140;;;4710:6;4707:1;4704:13;4701:2;;;4780:4;4775:2;4766:6;4755:9;4751:22;4747:31;4740:45;4701:2;-1:-1:-1;4856:2:8;4835:15;-1:-1:-1;;4831:29:8;4816:45;;;;4863:2;4812:54;;4390:482;-1:-1:-1;;;4390:482:8:o;7267:356::-;7469:2;7451:21;;;7488:18;;;7481:30;7547:34;7542:2;7527:18;;7520:62;7614:2;7599:18;;7441:182::o;9802:983::-;10064:4;10112:3;10101:9;10097:19;10143:6;10132:9;10125:25;10169:2;10207:6;10202:2;10191:9;10187:18;10180:34;10250:3;10245:2;10234:9;10230:18;10223:31;10274:6;10309;10303:13;10340:6;10332;10325:22;10378:3;10367:9;10363:19;10356:26;;10417:2;10409:6;10405:15;10391:29;;10438:4;10451:195;10465:6;10462:1;10459:13;10451:195;;;10530:13;;-1:-1:-1;;;;;10526:39:8;10514:52;;10621:15;;;;10586:12;;;;10562:1;10480:9;10451:195;;;-1:-1:-1;;;;;;;10702:32:8;;;;10697:2;10682:18;;10675:60;-1:-1:-1;;;10766:3:8;10751:19;10744:35;10663:3;10073:712;-1:-1:-1;;;10073:712:8:o;11232:128::-;11272:3;11303:1;11299:6;11296:1;11293:13;11290:2;;;11309:18;;:::i;:::-;-1:-1:-1;11345:9:8;;11280:80::o;11365:217::-;11405:1;11431;11421:2;;-1:-1:-1;;;11456:31:8;;11510:4;11507:1;11500:15;11538:4;11463:1;11528:15;11421:2;-1:-1:-1;11567:9:8;;11411:171::o;11587:168::-;11627:7;11693:1;11689;11685:6;11681:14;11678:1;11675:21;11670:1;11663:9;11656:17;11652:45;11649:2;;;11700:18;;:::i;:::-;-1:-1:-1;11740:9:8;;11639:116::o;11760:125::-;11800:4;11828:1;11825;11822:8;11819:2;;;11833:18;;:::i;:::-;-1:-1:-1;11870:9:8;;11809:76::o;11890:380::-;11969:1;11965:12;;;;12012;;;12033:2;;12087:4;12079:6;12075:17;12065:27;;12033:2;12140;12132:6;12129:14;12109:18;12106:38;12103:2;;;12186:10;12181:3;12177:20;12174:1;12167:31;12221:4;12218:1;12211:15;12249:4;12246:1;12239:15;12103:2;;11945:325;;;:::o;12275:127::-;12336:10;12331:3;12327:20;12324:1;12317:31;12367:4;12364:1;12357:15;12391:4;12388:1;12381:15;12407:131;-1:-1:-1;;;;;12482:31:8;;12472:42;;12462:2;;12528:1;12525;12518:12;12462:2;12452:86;:::o

Swarm Source

ipfs://39e3302b8d824f7f207e71d661fe00be3073383644e9f365e1cf806225c300d2
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.