Contract 0x74f4ccdaedb13b73754cf7bb8cbabe74e2dd4b70 1

 
 
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xa4d14d410fc3387394cfa121ba4c8db90c2b6649cfab929226887c7d47a5982aApprove111103502021-09-21 14:41:002 hrs 30 mins ago0x033e950a526288913aa078081164630f06cbeb2c IN  StakeMars Protocol: STM Token0 BNB0.000221085
0x55da9e6bcb5f59a9568cddd9aef552c29c9057517152b9036fc9d4be5a275fd2Approve111090282021-09-21 13:34:523 hrs 36 mins ago0x292837d623ff7ac045d56ce9114637a49372c44f IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x161452a86eefe74cfd186b7235a28db8150305b4991d75ea6582a7db0bbf76d6Approve111059872021-09-21 11:02:476 hrs 8 mins ago0x726a9240f667e64e98e233ed78d3785141528f99 IN  StakeMars Protocol: STM Token0 BNB0.000072745
0xf3985ca6baf7999f79429d0cd1eb8197af66e7d724a5cc1dddd7bfc8de120425Approve111050002021-09-21 10:13:256 hrs 58 mins ago0x43bdc07ef512853973bd51b6a8e4a2c868e516f4 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0xe98fbe721f4cec219f3f543a42e9d2cda82f54dd92b0af6883bb473db9a7ea6bApprove111035202021-09-21 8:59:258 hrs 12 mins ago0x171edeb5344af052d2a6ca79e3e5860b8dab4d0c IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x380b1d25f4ed3ab9da4a3850aee341f40cc10ca82b4d934500c2606d6c30a6edApprove111010972021-09-21 6:58:1110 hrs 13 mins ago0x08202400c59b04f0c72706012441734f8d374c60 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x70e8e36daaa5bf072c2b18a49926044caa72987b41a2d804c0c39e2ef6b6cac4Approve111008052021-09-21 6:43:3510 hrs 28 mins ago0x38ee91a593e8e8cf3e26f7077bae800386aea7d3 IN  StakeMars Protocol: STM Token0 BNB0.000126405
0xcedd5e9a76013116e63031180019c971004bd2f93369ecfd78ab0bd2e9bd2138Approve111007952021-09-21 6:43:0510 hrs 28 mins ago0x38ee91a593e8e8cf3e26f7077bae800386aea7d3 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x72747beb3422c7a094c0e0e3453cbd449c653464c91eafa924a459117c661917Approve111002472021-09-21 6:15:4110 hrs 55 mins ago0xb91f5cab742d3bcc12ca7069ad0de5379b229eed IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x6db3318b5d516aa47b2adc083b65c8f963da391a19a05dabd28a85b20ee524e1Approve110996602021-09-21 5:46:2011 hrs 25 mins ago0x9a7e17479b1a66bea8b97c86ce1cf1e7d0465c7d IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x4a7123147c312468b6f1a1373cfefb019816dd35d7b74ee28c6ea4e650ce427eApprove110995472021-09-21 5:40:4111 hrs 30 mins ago0x08c122e9446d0af05d49925f8de0f4dadec29840 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x61140251a46e2c7b82d5452937e2de7948c69a5c55805785875eb119c03e2de3Approve110983882021-09-21 4:42:4412 hrs 28 mins ago0xcdd7ef4ed44a7c5eed1f2764b0639c72078b7541 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0xa9ab04085a3bbd79c9c52060037e61df118f9803834cb38258a9be89b682edf9Approve110979482021-09-21 4:20:4412 hrs 50 mins ago0x42d1487b898c56fc8d9c4a40389e11b4b12556e3 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x50428d074d008f17535c0590e02cfab952c6d2620e956e1aec9ab9301f7a75f2Approve110972002021-09-21 3:43:2013 hrs 28 mins ago0xa1fe8fb22c5cc874ec1a75d6ab79350152e9db1b IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x812ea9ec4b85ac2d2436d165d7d4c817592f25fba2a681f8bc9aa2da2aac9158Approve110954852021-09-21 2:17:3514 hrs 54 mins ago0x01490c7702c1923ea522bb660fd393c476b6296c IN  StakeMars Protocol: STM Token0 BNB0.000222405
0xce9be4f356dc2f3bf4112b31a4d16d2e13868dc0e74d97be51235ec7a748c4eaApprove110945802021-09-21 1:31:4415 hrs 39 mins ago0xfd38dccecfac0b5a632c29dcb52070fff4044927 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0xc184612a4a39614eb6db1c2b379aaf0106adfeb51712e5e8e3a1763f837df253Approve110944382021-09-21 1:24:3815 hrs 47 mins ago0xff62f1a4d31f817cb6d19451ebebdb7c97bc0716 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x93db9bb99c145a1af3da7cf25a1f5040e1fc4e823bace53fc23fc4711f72ec19Approve110937572021-09-21 0:50:3516 hrs 21 mins ago0xf89962f81545eb49ff89c85c5874c0e1f82e58b4 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x41e17f0c5bc708a66bac3115544bd6f409fabe35689dfd49a5cb4aed561948efApprove110931562021-09-21 0:19:1416 hrs 52 mins ago0x31dcaa6e62506c0970e7ccc714104e3c1f5af9d6 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x00de9c842cd390c114e848eff5019797ab0018651590ca8cf06d34dc2e21abb9Approve110926522021-09-20 23:54:0217 hrs 17 mins ago0x02ca749317ddcef955771094470760e59832bb5e IN  StakeMars Protocol: STM Token0 BNB0.000222405
0xf103b2f016c7c7dff69f9ef4876407aab32a5b30dd8ddfd3893b10ff19440410Approve110899912021-09-20 21:40:1719 hrs 31 mins ago0x6aee5e1f32f03ac7dc6e5d9e126fac62d2981eb4 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0xb8aef1581668872c14b3b034c4adb754c385af1748bc11dcaf8fc60ad7b057c4Approve110894022021-09-20 21:10:5020 hrs ago0x7a216cc61f7d308dc4bff0eb8f9e91827ef2dc50 IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x47e543673a6f6b2c788e75529e74f9829648a11caecdd40d4fbb8725a65f7e88Approve110885772021-09-20 20:29:3320 hrs 42 mins ago0xae31704b1747f2e74a5083204d828bb14ca3612e IN  StakeMars Protocol: STM Token0 BNB0.000222405
0xed07cff49376a9a50330f7e31cc354550a14256e3b7ab373982d6f55a6c0195dApprove110872902021-09-20 19:25:1221 hrs 46 mins ago0xb7bcccbb66b6e2efd46d548939e0e07924e76fcc IN  StakeMars Protocol: STM Token0 BNB0.000222405
0x02678496f771f1f51e8a7511b14c4d5969bba04a2eb8b1ac66f179b414dd180fApprove110830772021-09-20 15:54:291 day 1 hr ago0xd35a37c410e3ad0dcd97684f7c33d4483cb98e98 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
0x61cef3d10244f1440fe6f80fc7a039a7aabc4fc627a87e182f43bcb76e4c4799111112602021-09-21 15:26:311 hr 45 mins ago StakeMars Protocol: STM Token PancakeSwap: Router v20.02277112154623224 BNB
0x61cef3d10244f1440fe6f80fc7a039a7aabc4fc627a87e182f43bcb76e4c4799111112602021-09-21 15:26:311 hr 45 mins ago StakeMars Protocol: STM Token 0xa1ba6503b4cfa962bbd3d7d8728f64cb89c40b570.045542243092464479 BNB
0x61cef3d10244f1440fe6f80fc7a039a7aabc4fc627a87e182f43bcb76e4c4799111112602021-09-21 15:26:311 hr 45 mins ago PancakeSwap: Router v2 StakeMars Protocol: STM Token0.068313364638696719 BNB
0x6d50088091a1fc4fa0b4f2bf1f40930e5937fb1860b246c8f5ec76a891f1f71b110687832021-09-20 3:57:241 day 13 hrs ago StakeMars Protocol: STM Token PancakeSwap: Router v20.022194129336044579 BNB
0x6d50088091a1fc4fa0b4f2bf1f40930e5937fb1860b246c8f5ec76a891f1f71b110687832021-09-20 3:57:241 day 13 hrs ago StakeMars Protocol: STM Token 0xa1ba6503b4cfa962bbd3d7d8728f64cb89c40b570.044388258672089157 BNB
0x6d50088091a1fc4fa0b4f2bf1f40930e5937fb1860b246c8f5ec76a891f1f71b110687832021-09-20 3:57:241 day 13 hrs ago PancakeSwap: Router v2 StakeMars Protocol: STM Token0.066582388008133736 BNB
0x6d50088091a1fc4fa0b4f2bf1f40930e5937fb1860b246c8f5ec76a891f1f71b110687832021-09-20 3:57:241 day 13 hrs ago StakeMars Protocol: STM Token PancakeSwap: Router v20.022219224016513033 BNB
0x6d50088091a1fc4fa0b4f2bf1f40930e5937fb1860b246c8f5ec76a891f1f71b110687832021-09-20 3:57:241 day 13 hrs ago StakeMars Protocol: STM Token 0xa1ba6503b4cfa962bbd3d7d8728f64cb89c40b570.044438448033026066 BNB
0x6d50088091a1fc4fa0b4f2bf1f40930e5937fb1860b246c8f5ec76a891f1f71b110687832021-09-20 3:57:241 day 13 hrs ago PancakeSwap: Router v2 StakeMars Protocol: STM Token0.066657672049539099 BNB
0x66105e20fc953c7012b1c7dbb9f19b07b089b02cf43bad4e4dd96b4854ee5cdc110603012021-09-19 20:53:151 day 20 hrs ago StakeMars Protocol: STM Token PancakeSwap: Router v20.019610902626890511 BNB
0x66105e20fc953c7012b1c7dbb9f19b07b089b02cf43bad4e4dd96b4854ee5cdc110603012021-09-19 20:53:151 day 20 hrs ago StakeMars Protocol: STM Token 0xa1ba6503b4cfa962bbd3d7d8728f64cb89c40b570.039221805253781021 BNB
0x66105e20fc953c7012b1c7dbb9f19b07b089b02cf43bad4e4dd96b4854ee5cdc110603012021-09-19 20:53:151 day 20 hrs ago PancakeSwap: Router v2 StakeMars Protocol: STM Token0.058832707880671532 BNB
0xe87d75209aa768deb3853844b5865b7604a7e71bcd49a777b73d03881d950b20110540662021-09-19 15:41:262 days 1 hr ago StakeMars Protocol: STM Token PancakeSwap: Router v20.019631754251644228 BNB
0xe87d75209aa768deb3853844b5865b7604a7e71bcd49a777b73d03881d950b20110540662021-09-19 15:41:262 days 1 hr ago StakeMars Protocol: STM Token 0xa1ba6503b4cfa962bbd3d7d8728f64cb89c40b570.039263508503288455 BNB
0xe87d75209aa768deb3853844b5865b7604a7e71bcd49a777b73d03881d950b20110540662021-09-19 15:41:262 days 1 hr ago PancakeSwap: Router v2 StakeMars Protocol: STM Token0.058895262754932683 BNB
0xaf9602285f7c0de09d9f1c8580f5c67dd9f112be583bfe3cd9a67cc12ba60607110478942021-09-19 10:24:342 days 6 hrs ago StakeMars Protocol: STM Token PancakeSwap: Router v20.019655227515574999 BNB
0xaf9602285f7c0de09d9f1c8580f5c67dd9f112be583bfe3cd9a67cc12ba60607110478942021-09-19 10:24:342 days 6 hrs ago StakeMars Protocol: STM Token 0xa1ba6503b4cfa962bbd3d7d8728f64cb89c40b570.039310455031149998 BNB
0xaf9602285f7c0de09d9f1c8580f5c67dd9f112be583bfe3cd9a67cc12ba60607110478942021-09-19 10:24:342 days 6 hrs ago PancakeSwap: Router v2 StakeMars Protocol: STM Token0.058965682546724997 BNB
0x5bf6ca24fada3f4f0f7d410d32227f8a4771450413e1b2cbcf4e99e6740aad7b109681342021-09-16 15:43:425 days 1 hr ago StakeMars Protocol: STM Token PancakeSwap: Router v20.018830553731122878 BNB
0x5bf6ca24fada3f4f0f7d410d32227f8a4771450413e1b2cbcf4e99e6740aad7b109681342021-09-16 15:43:425 days 1 hr ago StakeMars Protocol: STM Token 0xa1ba6503b4cfa962bbd3d7d8728f64cb89c40b570.037661107462245755 BNB
0x5bf6ca24fada3f4f0f7d410d32227f8a4771450413e1b2cbcf4e99e6740aad7b109681342021-09-16 15:43:425 days 1 hr ago PancakeSwap: Router v2 StakeMars Protocol: STM Token0.056491661193368633 BNB
0x0ebb2102255e4aee55b44e23486d8286112a95919790f0d27fc97bbc05a9a6f2109681112021-09-16 15:42:335 days 1 hr ago StakeMars Protocol: STM Token PancakeSwap: Router v20.019048171425967747 BNB
0x0ebb2102255e4aee55b44e23486d8286112a95919790f0d27fc97bbc05a9a6f2109681112021-09-16 15:42:335 days 1 hr ago StakeMars Protocol: STM Token 0xa1ba6503b4cfa962bbd3d7d8728f64cb89c40b570.038096342851935494 BNB
0x0ebb2102255e4aee55b44e23486d8286112a95919790f0d27fc97bbc05a9a6f2109681112021-09-16 15:42:335 days 1 hr ago PancakeSwap: Router v2 StakeMars Protocol: STM Token0.057144514277903241 BNB
0x54ef14950e9c6ed28e3e5dd4f5ddce9d595e23e03c150daf59f71df05c7f6fd4109609592021-09-16 9:43:255 days 7 hrs ago StakeMars Protocol: STM Token PancakeSwap: Router v20.019072534739302866 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.