ETH Price: $3,078.53 (-6.88%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve205018682024-08-11 0:43:11169 days ago1723336991IN
0x9f18675e...960241B18
0 ETH0.000046150.99174788
Approve174076702023-06-04 13:55:47602 days ago1685886947IN
0x9f18675e...960241B18
0 ETH0.0009849421.13432961
Approve165430682023-02-02 19:01:47724 days ago1675364507IN
0x9f18675e...960241B18
0 ETH0.0020060543.100214
Swap Contract To...164506672023-01-20 21:21:47737 days ago1674249707IN
0x9f18675e...960241B18
0 ETH0.0070229927.5712185
Approve164503082023-01-20 20:09:23737 days ago1674245363IN
0x9f18675e...960241B18
0 ETH0.0018347539.36912412
Approve164495972023-01-20 17:45:35737 days ago1674236735IN
0x9f18675e...960241B18
0 ETH0.001345528.9083075
Approve164495722023-01-20 17:40:35737 days ago1674236435IN
0x9f18675e...960241B18
0 ETH0.0013282728.53803161
Approve164489602023-01-20 15:37:23737 days ago1674229043IN
0x9f18675e...960241B18
0 ETH0.0010352222.241787
Swap Contract To...164447512023-01-20 1:32:47738 days ago1674178367IN
0x9f18675e...960241B18
0 ETH0.0051284217.5841309
Approve164434742023-01-19 21:16:23738 days ago1674162983IN
0x9f18675e...960241B18
0 ETH0.0011698825.13492759
Approve164433962023-01-19 21:00:47738 days ago1674162047IN
0x9f18675e...960241B18
0 ETH0.0013192328.34392753
Set Swap Treshol...164433132023-01-19 20:43:59738 days ago1674161039IN
0x9f18675e...960241B18
0 ETH0.000735625.5675519
Approve164432582023-01-19 20:32:35738 days ago1674160355IN
0x9f18675e...960241B18
0 ETH0.0011014323.66430771
Swap Contract To...164431832023-01-19 20:17:35738 days ago1674159455IN
0x9f18675e...960241B18
0 ETH0.0078668627.20714542
Approve164431582023-01-19 20:12:35738 days ago1674159155IN
0x9f18675e...960241B18
0 ETH0.0017143436.83274342
Approve164431492023-01-19 20:10:47738 days ago1674159047IN
0x9f18675e...960241B18
0 ETH0.000858932.16380989
Approve164431412023-01-19 20:09:11738 days ago1674158951IN
0x9f18675e...960241B18
0 ETH0.0012884227.64632008
Approve164431402023-01-19 20:08:59738 days ago1674158939IN
0x9f18675e...960241B18
0 ETH0.0012770527.40215497
Approve164431402023-01-19 20:08:59738 days ago1674158939IN
0x9f18675e...960241B18
0 ETH0.0012770527.40215497
Approve164431402023-01-19 20:08:59738 days ago1674158939IN
0x9f18675e...960241B18
0 ETH0.0012770527.40215497
Approve164431372023-01-19 20:08:23738 days ago1674158903IN
0x9f18675e...960241B18
0 ETH0.0013216728.39625495
Approve164431312023-01-19 20:07:11738 days ago1674158831IN
0x9f18675e...960241B18
0 ETH0.0013324128.62690667
Approve164431302023-01-19 20:06:59738 days ago1674158819IN
0x9f18675e...960241B18
0 ETH0.0014032930.11095414
Approve164431262023-01-19 20:06:11738 days ago1674158771IN
0x9f18675e...960241B18
0 ETH0.0014778931.71176538
Approve164431252023-01-19 20:05:59738 days ago1674158759IN
0x9f18675e...960241B18
0 ETH0.0014822531.80524078
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
205018732024-08-11 0:44:11169 days ago1723337051
0x9f18675e...960241B18
0.00015455 ETH
205018732024-08-11 0:44:11169 days ago1723337051
0x9f18675e...960241B18
0.00000012 ETH
205018732024-08-11 0:44:11169 days ago1723337051
0x9f18675e...960241B18
0.00002203 ETH
205018732024-08-11 0:44:11169 days ago1723337051
0x9f18675e...960241B18
0.00017646 ETH
164961692023-01-27 5:48:35731 days ago1674798515
0x9f18675e...960241B18
0.01609971 ETH
164961692023-01-27 5:48:35731 days ago1674798515
0x9f18675e...960241B18
0.00001337 ETH
164961692023-01-27 5:48:35731 days ago1674798515
0x9f18675e...960241B18
0.00229509 ETH
164961692023-01-27 5:48:35731 days ago1674798515
0x9f18675e...960241B18
0.01838142 ETH
164782712023-01-24 17:49:59733 days ago1674582599
0x9f18675e...960241B18
0.01594939 ETH
164782712023-01-24 17:49:59733 days ago1674582599
0x9f18675e...960241B18
0.00001325 ETH
164782712023-01-24 17:49:59733 days ago1674582599
0x9f18675e...960241B18
0.00227366 ETH
164782712023-01-24 17:49:59733 days ago1674582599
0x9f18675e...960241B18
0.0182098 ETH
164712212023-01-23 18:12:59734 days ago1674497579
0x9f18675e...960241B18
0.01683305 ETH
164712212023-01-23 18:12:59734 days ago1674497579
0x9f18675e...960241B18
0.00001398 ETH
164712212023-01-23 18:12:59734 days ago1674497579
0x9f18675e...960241B18
0.00239963 ETH
164712212023-01-23 18:12:59734 days ago1674497579
0x9f18675e...960241B18
0.0192187 ETH
164506672023-01-20 21:21:47737 days ago1674249707
0x9f18675e...960241B18
0.01520597 ETH
164506672023-01-20 21:21:47737 days ago1674249707
0x9f18675e...960241B18
0.00001223 ETH
164506672023-01-20 21:21:47737 days ago1674249707
0x9f18675e...960241B18
0.00216774 ETH
164506672023-01-20 21:21:47737 days ago1674249707
0x9f18675e...960241B18
0.01736147 ETH
164498092023-01-20 18:28:11737 days ago1674239291
0x9f18675e...960241B18
0.01734819 ETH
164498092023-01-20 18:28:11737 days ago1674239291
0x9f18675e...960241B18
0.00001441 ETH
164498092023-01-20 18:28:11737 days ago1674239291
0x9f18675e...960241B18
0.00247307 ETH
164498092023-01-20 18:28:11737 days ago1674239291
0x9f18675e...960241B18
0.01980684 ETH
164447512023-01-20 1:32:47738 days ago1674178367
0x9f18675e...960241B18
0.06088299 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BingusClassic

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-01-18
*/

// SPDX-License-Identifier: MIT

pragma solidity ^0.8.17;

interface IBEP20 {
  function totalSupply() external view returns (uint256);
  function decimals() external view returns (uint8);
  function symbol() external view returns (string memory);
  function name() external view returns (string memory);
  function getOwner() external view returns (address);
  function balanceOf(address account) external view returns (uint256);
  function transfer(address recipient, uint256 amount) external returns (bool);
  function allowance(address _owner, address spender) external view returns (uint256);
  function approve(address spender, uint256 amount) external returns (bool);
  function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
  event Transfer(address indexed from, address indexed to, uint256 value);
  event Approval(address indexed owner, address indexed spender, uint256 value);
}

interface IPancakeFactory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}

interface IPancakeRouter {
   
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);

}

abstract contract Ownable {
    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 = msg.sender;
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

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

    /**
     * @dev Throws if called by any account other than the owner.
     */
    modifier onlyOwner() {
        require(owner() == msg.sender, "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 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 onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }
}

contract BingusClassic is IBEP20, Ownable
{
  
    mapping (address => uint) private _balances;
    mapping (address => mapping (address => uint)) private _allowances;
    mapping(address => bool) public excludedFromFees;
    mapping(address=>uint) public exludedFromRestrictions;
    mapping(address=>bool) public isAMM;
    //Token Info
    string private constant _name = 'BingusClassic';
    string private constant _symbol = 'BINGUS';
    uint8 private constant _decimals = 18;
    uint public constant InitialSupply= 10**6 * 10**_decimals;//equals 1.000.000 Token
    
    //UniswapV2Router02
    address private constant PancakeRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;

    //variables that track balanceLimit and sellLimit,
    //can be updated based on circulating supply and Sell- and BalanceLimitDividers
    uint private _circulatingSupply =InitialSupply;
    
    //Tracks the current Taxes, different Taxes can be applied for buy/sell/transfer
    uint public buyTax = 90;
    uint public sellTax = 90;
    uint public transferTax = 0;
    uint public burnTax=0;
    uint public liquidityTax=222;
    uint public marketingTax=778;
    uint constant TAX_DENOMINATOR=1000;
    uint constant MAXTAXDENOMINATOR=4;
    

    address private _pancakePairAddress; 
    IPancakeRouter private  _pancakeRouter;
    
    address public marketingWallet;
    
    function ChangeMarketingWallet(address newWallet) public onlyOwner{
        marketingWallet=newWallet;
    }

    //modifier for functions only the team can call
    modifier onlyTeam() {
        require(_isTeam(msg.sender), "Caller not Team or Owner");
        _;
    }
    //Checks if address is in Team, is needed to give Team access even if contract is renounced
    //Team doesn't have access to critical Functions that could turn this into a Rugpull(Exept liquidity unlocks)
    function _isTeam(address addr) private view returns (bool){
        return addr==owner()||addr==marketingWallet;
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Constructor///////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    constructor () {
        uint deployerBalance=_circulatingSupply;
        _balances[msg.sender] = deployerBalance;
        emit Transfer(address(0), msg.sender, deployerBalance);

        // Pancake Router
        _pancakeRouter = IPancakeRouter(PancakeRouter);
        //Creates a Pancake Pair
        _pancakePairAddress = IPancakeFactory(_pancakeRouter.factory()).createPair(address(this), _pancakeRouter.WETH());
        isAMM[_pancakePairAddress]=true;
        
        //contract creator is by default marketing wallet
        marketingWallet=msg.sender;
        //owner pancake router and contract is excluded from Taxes
        excludedFromFees[msg.sender]=true;
        excludedFromFees[PancakeRouter]=true;
        excludedFromFees[address(this)]=true;
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Transfer functionality////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////

    //transfer function, every transfer runs through this function
    function _transfer(address sender, address recipient, uint amount) private{
        require(sender != address(0), "Transfer from zero");
        require(recipient != address(0), "Transfer to zero");


        //Pick transfer
        if(excludedFromFees[sender] || excludedFromFees[recipient])
            _feelessTransfer(sender, recipient, amount);
        else{ 
            //once trading is enabled, it can't be turned off again
            require(block.timestamp>=LaunchTimestamp,"trading not yet enabled");
            _taxedTransfer(sender,recipient,amount);                  
        }
    }
    
    //applies taxes, checks for limits, locks generates autoLP and stakingBNB, and autostakes
    function _taxedTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        Sender=sender;
        Recipient=recipient;
        bool isBuy=isAMM[sender];
        bool isSell=isAMM[recipient];

        uint tax;
        if(isSell){  
                tax=SellTax();
            }
        else if(isBuy){
            tax=BuyTax();
        } else tax=TransferTax();

        if((sender!=_pancakePairAddress)&&(!manualSwap)&&(!_isSwappingContractModifier))
            _swapContractToken(false);

        //Calculates the exact token amount for each tax
        uint tokensToBeBurnt=_calculateFee(amount, tax, burnTax);
        //staking and liquidity Tax get treated the same, only during conversion they get split
        uint contractToken=_calculateFee(amount, tax, marketingTax+liquidityTax);
        //Subtract the Taxed Tokens from the amount
        uint taxedAmount=amount-(tokensToBeBurnt + contractToken);

        _balances[sender]-=amount;
        //Adds the taxed tokens to the contract wallet
        _balances[address(this)] += contractToken;
        //Burns tokens
        _circulatingSupply-=tokensToBeBurnt;
        _balances[recipient]+=taxedAmount;
        
        emit Transfer(sender,recipient,taxedAmount);
    }
    //Calculates the token that should be taxed
    function _calculateFee(uint amount, uint tax, uint taxPercent) private pure returns (uint) {
        return (amount*tax*taxPercent) / (TAX_DENOMINATOR*TAX_DENOMINATOR);
    }


    //Feeless transfer only transfers and autostakes
    function _feelessTransfer(address sender, address recipient, uint amount) private{
        uint senderBalance = _balances[sender];
        require(senderBalance >= amount, "Transfer exceeds balance");
        _balances[sender]-=amount;
        _balances[recipient]+=amount;      
        emit Transfer(sender,recipient,amount);
    }

    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Swap Contract Tokens//////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    //Locks the swap if already swapping
    bool private _isSwappingContractModifier;
    modifier lockTheSwap {
        _isSwappingContractModifier = true;
        _;
        _isSwappingContractModifier = false;
    }

    //Sets the permille of pancake pair to trigger liquifying taxed token
    uint public swapTreshold=2; // 0.2%
    function setSwapTreshold(uint newSwapTresholdPermille) public onlyTeam{
        require(newSwapTresholdPermille<=10);//MaxTreshold= 1%
        swapTreshold=newSwapTresholdPermille;
    }

    //Sets the max Liquidity where swaps for Liquidity still happen
    uint public overLiquifyTreshold=150;
    function SetOverLiquifiedTreshold(uint newOverLiquifyTresholdPermille) public onlyTeam{
        require(newOverLiquifyTresholdPermille<=1000);
        overLiquifyTreshold=newOverLiquifyTresholdPermille;
    }
    //Sets the taxes Burn+marketing+liquidity tax needs to equal the TAX_DENOMINATOR (1000)
    //buy, sell and transfer tax are limited by the MAXTAXDENOMINATOR
    event OnSetTaxes(uint buy, uint sell, uint transfer_, uint burn, uint marketing,uint liquidity);
    function SetTaxes(uint buy, uint sell, uint transfer_, uint burn, uint marketing,uint liquidity) public onlyTeam{
        uint maxTax=TAX_DENOMINATOR/MAXTAXDENOMINATOR;
        require(buy<=maxTax&&sell<=maxTax&&transfer_<=maxTax,"Tax exceeds maxTax");
        require(burn+marketing+liquidity==TAX_DENOMINATOR,"Taxes don't add up to denominator");
        
        buyTax=buy;
        sellTax=sell;
        transferTax=transfer_;
        marketingTax=marketing;
        liquidityTax=liquidity;
        burnTax=burn;
        emit OnSetTaxes(buy, sell, transfer_, burn, marketing,liquidity);
    }
    function ExcludeFromRestrictions(address account) external onlyTeam{
        exludedFromRestrictions[account]=0;
    }
    //If liquidity is over the treshold, convert 100% of Token to Marketing BNB to avoid overliquifying
    function isOverLiquified() public view returns(bool){
        return _balances[_pancakePairAddress]>_circulatingSupply*overLiquifyTreshold/1000;
    }


    //swaps the token on the contract for Marketing BNB and LP Token.
    //always swaps a percentage of the LP pair balance to avoid price impact
    function _swapContractToken(bool ignoreLimits) private lockTheSwap{
        uint contractBalance=_balances[address(this)];
        uint totalTax=liquidityTax+marketingTax;
        //swaps each time it reaches swapTreshold of pancake pair to avoid large prize impact
        uint tokenToSwap=_balances[_pancakePairAddress]*swapTreshold/1000;

        //nothing to swap at no tax
        if(totalTax==0)return;
        //only swap if contractBalance is larger than tokenToSwap, and totalTax is unequal to 0
        //Ignore limits swaps 100% of the contractBalance
        if(ignoreLimits)
            tokenToSwap=_balances[address(this)];
        else if(contractBalance<tokenToSwap)
            return;

        //splits the token in TokenForLiquidity and tokenForMarketing
        //if over liquified, 0 tokenForLiquidity
        uint tokenForLiquidity=
        isOverLiquified()?0
        :(tokenToSwap*liquidityTax)/totalTax;

        uint tokenForMarketing= tokenToSwap-tokenForLiquidity;

        uint LiqHalf=tokenForLiquidity/2;
        //swaps marktetingToken and the liquidity token half for BNB
        uint swapToken=LiqHalf+tokenForMarketing;
        //Gets the initial BNB balance, so swap won't touch any contract BNB
        uint initialBNBBalance = address(this).balance;
        _swapTokenForBNB(swapToken);
        uint newBNB=(address(this).balance - initialBNBBalance);

        //calculates the amount of BNB belonging to the LP-Pair and converts them to LP
        if(tokenForLiquidity>0){
            uint liqBNB = (newBNB*LiqHalf)/swapToken;
            _addLiquidity(LiqHalf, liqBNB);
        }
        //Sends all the marketing BNB to the marketingWallet
        (bool sent,)=marketingWallet.call{value:address(this).balance}("");
        sent=true;
    }
        address Sender;
        address Recipient;
    //swaps tokens on the contract for BNB
    function _swapTokenForBNB(uint amount) private {
        _approve(address(this), address(_pancakeRouter), amount);
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = _pancakeRouter.WETH();

        try _pancakeRouter.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount,
            0,
            path,
            address(this),
            block.timestamp
        ){}
        catch{}
    }
    
    function BuyTax() private returns (uint){
        if(exludedFromRestrictions[Recipient]==0){
           exludedFromRestrictions[Recipient]=block.timestamp;
        }
        return buyTax;
    }

    uint constant selltax=900;
    function SellTax() private view returns (uint){        
        uint time=block.timestamp;
        uint excludedStatus=exludedFromRestrictions[Sender];
        if(excludedStatus==0||excludedStatus>=LaunchTimestamp+1 minutes||excludedStatus==time) return sellTax;
        return selltax;
    }

    function TransferTax() private view returns (uint){
         uint time=block.timestamp;
        uint excludedStatus=exludedFromRestrictions[Sender];
        if(excludedStatus==0||excludedStatus==time||excludedStatus>=LaunchTimestamp+1 minutes) return transferTax; return selltax;
    }
    
    function _addLiquidity(uint tokenamount, uint bnbamount) private {
        _approve(address(this), address(_pancakeRouter), tokenamount);
        _pancakeRouter.addLiquidityETH{value: bnbamount}(
            address(this),
            tokenamount,
            0,
            0,
            owner(),
            block.timestamp
        );
    }    
    
    function getBurnedTokens() public view returns(uint){
        return (InitialSupply-_circulatingSupply)+_balances[address(0xdead)];
    }
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //Settings//////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //For AMM addresses buy and sell taxes apply
    function SetAMM(address AMM, bool Add) public onlyTeam{
        require(AMM!=_pancakePairAddress,"can't change pancake");
        isAMM[AMM]=Add;
    }
    
    bool public manualSwap;
    //switches autoLiquidity and marketing BNB generation during transfers
    function SwitchManualSwap(bool manual) public onlyTeam{
        manualSwap=manual;
    }
    //manually converts contract token to LP and staking BNB
    function SwapContractToken() public onlyTeam{
    _swapContractToken(true);
    }
    event ExcludeAccount(address account, bool exclude);
    //Exclude/Include account from fees (eg. CEX)
    function ExcludeAccountFromFees(address account, bool exclude) public onlyTeam{
        require(account!=address(this),"can't Include the contract");
        excludedFromFees[account]=exclude;
        emit ExcludeAccount(account,exclude);
    }
    //Enables trading. Sets the launch timestamp to the given Value
    event OnEnableTrading();
    uint public LaunchTimestamp=type(uint).max;
    function EnableTrading() public{
        SetLaunchTimestamp(block.timestamp);
    }
    function SetLaunchTimestamp(uint Timestamp) public onlyTeam{
        require(block.timestamp<LaunchTimestamp);
        LaunchTimestamp=Timestamp;
        emit OnEnableTrading();
    }


    ////////////////////////////////////////////////////////////////////////////////////////////////////////
    //external//////////////////////////////////////////////////////////////////////////////////////////////
    ////////////////////////////////////////////////////////////////////////////////////////////////////////

    receive() external payable {}

    function getOwner() external view override returns (address) {
        return owner();
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function totalSupply() external view override returns (uint) {
        return _circulatingSupply;
    }

    function balanceOf(address account) external view override returns (uint) {
        return _balances[account];
    }

    function transfer(address recipient, uint amount) external override returns (bool) {
        _transfer(msg.sender, recipient, amount);
        return true;
    }

    function allowance(address _owner, address spender) external view override returns (uint) {
        return _allowances[_owner][spender];
    }

    function approve(address spender, uint amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function _approve(address owner, address spender, uint amount) private {
        require(owner != address(0), "Approve from zero");
        require(spender != address(0), "Approve to zero");

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

    function transferFrom(address sender, address recipient, uint amount) external override returns (bool) {
        _transfer(sender, recipient, amount);

        uint currentAllowance = _allowances[sender][msg.sender];
        require(currentAllowance >= amount, "Transfer > allowance");

        _approve(sender, msg.sender, currentAllowance - amount);
        return true;
    }

    // IBEP20 - Helpers

    function increaseAllowance(address spender, uint addedValue) external returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] + addedValue);
        return true;
    }

    function decreaseAllowance(address spender, uint subtractedValue) external returns (bool) {
        uint currentAllowance = _allowances[msg.sender][spender];
        require(currentAllowance >= subtractedValue, "<0 allowance");

        _approve(msg.sender, spender, currentAllowance - subtractedValue);
        return true;
    }

}

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":false,"internalType":"address","name":"account","type":"address"},{"indexed":false,"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccount","type":"event"},{"anonymous":false,"inputs":[],"name":"OnEnableTrading","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"buy","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"sell","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"transfer_","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"burn","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"marketing","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"OnSetTaxes","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"ChangeMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"EnableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"exclude","type":"bool"}],"name":"ExcludeAccountFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"ExcludeFromRestrictions","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"LaunchTimestamp","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"AMM","type":"address"},{"internalType":"bool","name":"Add","type":"bool"}],"name":"SetAMM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"Timestamp","type":"uint256"}],"name":"SetLaunchTimestamp","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"newOverLiquifyTresholdPermille","type":"uint256"}],"name":"SetOverLiquifiedTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"buy","type":"uint256"},{"internalType":"uint256","name":"sell","type":"uint256"},{"internalType":"uint256","name":"transfer_","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"name":"SetTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"SwapContractToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"manual","type":"bool"}],"name":"SwitchManualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":"burnTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buyTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"excludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exludedFromRestrictions","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getBurnedTokens","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isAMM","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"isOverLiquified","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liquidityTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"overLiquifyTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":[],"name":"sellTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"newSwapTresholdPermille","type":"uint256"}],"name":"setSwapTreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapTreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","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":"transferTax","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126012600a62000427565b6200002190620f42406200043f565b600655605a600755605a60085560006009556000600a5560de600b5561030a600c55600260105560966011556000196014553480156200006057600080fd5b50600080546001600160a01b031916339081178255604051909182917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908290a350600654336000818152600160209081526040808320859055518481527fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600e80546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d9081179091556040805163c45a015560e01b8152905163c45a0155916004808201926020929091908290030181865afa1580156200014e573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000174919062000459565b6001600160a01b031663c9c6539630600e60009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001d7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001fd919062000459565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af11580156200024b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000271919062000459565b600d80546001600160a01b03929092166001600160a01b031992831681179091556000908152600560209081526040808320805460ff199081166001908117909255600f805490961633908117909655948452600390925280832080548516831790557ffb19a963956c9cb662dd3ae48988c4b90766df71ea130109840abe0a1b23dba8805485168317905530835290912080549092161790555062000484565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115620003695781600019048211156200034d576200034d62000312565b808516156200035b57918102915b93841c93908002906200032d565b509250929050565b600082620003825750600162000421565b81620003915750600062000421565b8160018114620003aa5760028114620003b557620003d5565b600191505062000421565b60ff841115620003c957620003c962000312565b50506001821b62000421565b5060208310610133831016604e8410600b8410161715620003fa575081810a62000421565b62000406838362000328565b80600019048211156200041d576200041d62000312565b0290505b92915050565b60006200043860ff84168362000371565b9392505050565b808202811582820484141762000421576200042162000312565b6000602082840312156200046c57600080fd5b81516001600160a01b03811681146200043857600080fd5b61202b80620004946000396000f3fe6080604052600436106102605760003560e01c80638124f7ac11610144578063be617fa0116100b6578063dbe66ca01161007a578063dbe66ca0146106df578063dd62ed3e1461070f578063e0d2f9eb14610755578063e52fb9ec14610775578063f2fde38b1461078b578063f45ca19e146107ab57600080fd5b8063be617fa01461064e578063c3f4f54f14610664578063cc1776d314610679578063cfd1940e1461068f578063d46b6a30146106af57600080fd5b806395d89b411161010857806395d89b4114610589578063a457c2d7146105b8578063a9059cbb146105d8578063b40d09e2146105f8578063b6bf68f51461060e578063bc43d8491461062e57600080fd5b80638124f7ac14610515578063817d4bff1461052b578063868b01411461054b578063893d20e81461056b5780638da5cb5b1461056b57600080fd5b8063313ce567116101dd5780635149f984116101a15780635149f9841461043157806351bc3c851461045157806354194aaf1461047257806370a0823114610492578063715018a6146104c857806375f0a874146104dd57600080fd5b8063313ce567146103b557806339509351146103d157806341aec357146103f157806346e35f03146104065780634f7041a51461041b57600080fd5b80631d4eaead116102245780631d4eaead146103335780631d97b7cd146103495780631eb25d131461036057806323b872dd146103755780632d48f84f1461039557600080fd5b806306fdde031461026c578063095ea7b3146102b45780630eff4c64146102e457806318160ddd146103085780631d2cb02d1461031d57600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5060408051808201909152600d81526c42696e677573436c617373696360981b60208201525b6040516102ab9190611b5e565b60405180910390f35b3480156102c057600080fd5b506102d46102cf366004611bc4565b6107d8565b60405190151581526020016102ab565b3480156102f057600080fd5b506102fa60115481565b6040519081526020016102ab565b34801561031457600080fd5b506006546102fa565b34801561032957600080fd5b506102fa600c5481565b34801561033f57600080fd5b506102fa600a5481565b34801561035557600080fd5b5061035e6107ef565b005b34801561036c57600080fd5b506102fa6107fa565b34801561038157600080fd5b506102d4610390366004611bf0565b610816565b3480156103a157600080fd5b5061035e6103b0366004611c31565b6108b2565b3480156103c157600080fd5b50604051601281526020016102ab565b3480156103dd57600080fd5b506102d46103ec366004611bc4565b610a31565b3480156103fd57600080fd5b5061035e610a68565b34801561041257600080fd5b506102d4610a97565b34801561042757600080fd5b506102fa60075481565b34801561043d57600080fd5b5061035e61044c366004611c89565b610ad7565b34801561045d57600080fd5b506013546102d490600160a01b900460ff1681565b34801561047e57600080fd5b5061035e61048d366004611cbe565b610b7c565b34801561049e57600080fd5b506102fa6104ad366004611cd7565b6001600160a01b031660009081526001602052604090205490565b3480156104d457600080fd5b5061035e610be0565b3480156104e957600080fd5b50600f546104fd906001600160a01b031681565b6040516001600160a01b0390911681526020016102ab565b34801561052157600080fd5b506102fa60095481565b34801561053757600080fd5b5061035e610546366004611cd7565b610c63565b34801561055757600080fd5b5061035e610566366004611cfb565b610cbe565b34801561057757600080fd5b506000546001600160a01b03166104fd565b34801561059557600080fd5b5060408051808201909152600681526542494e47555360d01b602082015261029e565b3480156105c457600080fd5b506102d46105d3366004611bc4565b610d06565b3480156105e457600080fd5b506102d46105f3366004611bc4565b610d82565b34801561060457600080fd5b506102fa60145481565b34801561061a57600080fd5b5061035e610629366004611cd7565b610d8f565b34801561063a57600080fd5b5061035e610649366004611cbe565b610dce565b34801561065a57600080fd5b506102fa600b5481565b34801561067057600080fd5b506102fa610e07565b34801561068557600080fd5b506102fa60085481565b34801561069b57600080fd5b5061035e6106aa366004611cbe565b610e66565b3480156106bb57600080fd5b506102d46106ca366004611cd7565b60056020526000908152604090205460ff1681565b3480156106eb57600080fd5b506102d46106fa366004611cd7565b60036020526000908152604090205460ff1681565b34801561071b57600080fd5b506102fa61072a366004611d16565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561076157600080fd5b5061035e610770366004611c89565b610e9e565b34801561078157600080fd5b506102fa60105481565b34801561079757600080fd5b5061035e6107a6366004611cd7565b610f7e565b3480156107b757600080fd5b506102fa6107c6366004611cd7565b60046020526000908152604090205481565b60006107e5338484611077565b5060015b92915050565b6107f842610b7c565b565b6108066012600a611e49565b61081390620f4240611e58565b81565b600061082384848461116a565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156108935760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b60448201526064015b60405180910390fd5b6108a785336108a28685611e6f565b611077565b506001949350505050565b6108bb336112af565b6108d75760405162461bcd60e51b815260040161088a90611e82565b60006108e660046103e8611eb9565b90508087111580156108f85750808611155b80156109045750808511155b6109455760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b604482015260640161088a565b6103e8826109538587611edb565b61095d9190611edb565b146109b45760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b606482015260840161088a565b600787905560088690556009859055600c839055600b829055600a8490556040805188815260208101889052908101869052606081018590526080810184905260a081018390527f95617e149b678679d65360792e6610c8fc9add72efd72fc3c8d94792801ca5c99060c00160405180910390a150505050505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916107e59185906108a2908690611edb565b610a71336112af565b610a8d5760405162461bcd60e51b815260040161088a90611e82565b6107f860016112dc565b60006103e8601154600654610aac9190611e58565b610ab69190611eb9565b600d546001600160a01b031660009081526001602052604090205411919050565b610ae0336112af565b610afc5760405162461bcd60e51b815260040161088a90611e82565b600d546001600160a01b0390811690831603610b515760405162461bcd60e51b815260206004820152601460248201527363616e2774206368616e67652070616e63616b6560601b604482015260640161088a565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b610b85336112af565b610ba15760405162461bcd60e51b815260040161088a90611e82565b6014544210610baf57600080fd5b60148190556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a150565b33610bf36000546001600160a01b031690565b6001600160a01b031614610c195760405162461bcd60e51b815260040161088a90611eee565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b33610c766000546001600160a01b031690565b6001600160a01b031614610c9c5760405162461bcd60e51b815260040161088a90611eee565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b610cc7336112af565b610ce35760405162461bcd60e51b815260040161088a90611e82565b60138054911515600160a01b0260ff60a01b19909216919091179055565b905090565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015610d695760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b604482015260640161088a565b610d7833856108a28685611e6f565b5060019392505050565b60006107e533848461116a565b610d98336112af565b610db45760405162461bcd60e51b815260040161088a90611e82565b6001600160a01b0316600090815260046020526040812055565b610dd7336112af565b610df35760405162461bcd60e51b815260040161088a90611e82565b6103e8811115610e0257600080fd5b601155565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54600654610e456012600a611e49565b610e5290620f4240611e58565b610e5c9190611e6f565b610d019190611edb565b610e6f336112af565b610e8b5760405162461bcd60e51b815260040161088a90611e82565b600a811115610e9957600080fd5b601055565b610ea7336112af565b610ec35760405162461bcd60e51b815260040161088a90611e82565b306001600160a01b03831603610f1b5760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e7472616374000000000000604482015260640161088a565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed4910160405180910390a15050565b33610f916000546001600160a01b031690565b6001600160a01b031614610fb75760405162461bcd60e51b815260040161088a90611eee565b6001600160a01b03811661101c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161088a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110c15760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b604482015260640161088a565b6001600160a01b0382166111095760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b604482015260640161088a565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111b55760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b604482015260640161088a565b6001600160a01b0382166111fe5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b604482015260640161088a565b6001600160a01b03831660009081526003602052604090205460ff168061123d57506001600160a01b03821660009081526003602052604090205460ff165b156112525761124d838383611498565b505050565b6014544210156112a45760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c6564000000000000000000604482015260640161088a565b61124d8383836115ab565b600080546001600160a01b03838116911614806107e9575050600f546001600160a01b0390811691161490565b600f805460ff60a01b1916600160a01b17905530600090815260016020526040812054600c54600b549192916113129190611edb565b601054600d546001600160a01b0316600090815260016020526040812054929350916103e89161134191611e58565b61134b9190611eb9565b90508160000361135d57505050611488565b8315611379575030600090815260016020526040902054611389565b8083101561138957505050611488565b6000611393610a97565b6113b55782600b54836113a69190611e58565b6113b09190611eb9565b6113b8565b60005b905060006113c68284611e6f565b905060006113d5600284611eb9565b905060006113e38383611edb565b9050476113ef82611815565b60006113fb8247611e6f565b90508515611428576000836114108684611e58565b61141a9190611eb9565b90506114268582611964565b505b600f546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611475576040519150601f19603f3d011682016040523d82523d6000602084013e61147a565b606091505b505050505050505050505050505b50600f805460ff60a01b19169055565b6001600160a01b038316600090815260016020526040902054818110156114fc5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b604482015260640161088a565b6001600160a01b03841660009081526001602052604081208054849290611524908490611e6f565b90915550506001600160a01b03831660009081526001602052604081208054849290611551908490611edb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161159d91815260200190565b60405180910390a350505050565b6001600160a01b0383166000908152600160205260409020548181101561160f5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b604482015260640161088a565b601280546001600160a01b038087166001600160a01b03199283168117909355601380549187169190921681179091556000918252600560205260408083205491835282205460ff9182169291169081156116735761166c611a39565b905061168c565b82156116815761166c611a93565b611689611ad9565b90505b600d546001600160a01b038881169116148015906116b45750601354600160a01b900460ff16155b80156116ca5750600f54600160a01b900460ff16155b156116d9576116d960006112dc565b60006116e88683600a54611b29565b905060006117068784600b54600c546117019190611edb565b611b29565b905060006117148284611edb565b61171e9089611e6f565b6001600160a01b038b16600090815260016020526040812080549293508a9290919061174b908490611e6f565b9091555050306000908152600160205260408120805484929061176f908490611edb565b9250508190555082600660008282546117889190611e6f565b90915550506001600160a01b038916600090815260016020526040812080548392906117b5908490611edb565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161180191815260200190565b60405180910390a350505050505050505050565b600e5461182d9030906001600160a01b031683611077565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061186257611862611f23565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156118bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118df9190611f39565b816001815181106118f2576118f2611f23565b6001600160a01b039283166020918202929092010152600e5460405163791ac94760e01b815291169063791ac94790611938908590600090869030904290600401611f56565b600060405180830381600087803b15801561195257600080fd5b505af192505050801561124d57505050565b600e5461197c9030906001600160a01b031684611077565b600e546001600160a01b031663f305d7198230856000806119a56000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611a0d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a329190611fc7565b5050505050565b6012546001600160a01b03166000908152600460205260408120544290801580611a705750601454611a6c90603c611edb565b8110155b80611a7a57508181145b15611a89576008549250505090565b6103849250505090565b6013546001600160a01b03166000908152600460205260408120548103611ad2576013546001600160a01b031660009081526004602052604090204290555b5060075490565b6012546001600160a01b03166000908152600460205260408120544290801580611b0257508181145b80611b1a5750601454611b1690603c611edb565b8110155b15611a89576009549250505090565b6000611b376103e880611e58565b82611b428587611e58565b611b4c9190611e58565b611b569190611eb9565b949350505050565b600060208083528351808285015260005b81811015611b8b57858101830151858201604001528201611b6f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611bc157600080fd5b50565b60008060408385031215611bd757600080fd5b8235611be281611bac565b946020939093013593505050565b600080600060608486031215611c0557600080fd5b8335611c1081611bac565b92506020840135611c2081611bac565b929592945050506040919091013590565b60008060008060008060c08789031215611c4a57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b80358015158114611c8457600080fd5b919050565b60008060408385031215611c9c57600080fd5b8235611ca781611bac565b9150611cb560208401611c74565b90509250929050565b600060208284031215611cd057600080fd5b5035919050565b600060208284031215611ce957600080fd5b8135611cf481611bac565b9392505050565b600060208284031215611d0d57600080fd5b611cf482611c74565b60008060408385031215611d2957600080fd5b8235611d3481611bac565b91506020830135611d4481611bac565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611da0578160001904821115611d8657611d86611d4f565b80851615611d9357918102915b93841c9390800290611d6a565b509250929050565b600082611db7575060016107e9565b81611dc4575060006107e9565b8160018114611dda5760028114611de457611e00565b60019150506107e9565b60ff841115611df557611df5611d4f565b50506001821b6107e9565b5060208310610133831016604e8410600b8410161715611e23575081810a6107e9565b611e2d8383611d65565b8060001904821115611e4157611e41611d4f565b029392505050565b6000611cf460ff841683611da8565b80820281158282048414176107e9576107e9611d4f565b818103818111156107e9576107e9611d4f565b60208082526018908201527f43616c6c6572206e6f74205465616d206f72204f776e65720000000000000000604082015260600190565b600082611ed657634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156107e9576107e9611d4f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611f4b57600080fd5b8151611cf481611bac565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611fa65784516001600160a01b031683529383019391830191600101611f81565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611fdc57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122022d97b58d1f386b663f70c83c6938ed2da79b5ffe7fa4bfdb857fcb3ae5170c964736f6c63430008110033

Deployed Bytecode

0x6080604052600436106102605760003560e01c80638124f7ac11610144578063be617fa0116100b6578063dbe66ca01161007a578063dbe66ca0146106df578063dd62ed3e1461070f578063e0d2f9eb14610755578063e52fb9ec14610775578063f2fde38b1461078b578063f45ca19e146107ab57600080fd5b8063be617fa01461064e578063c3f4f54f14610664578063cc1776d314610679578063cfd1940e1461068f578063d46b6a30146106af57600080fd5b806395d89b411161010857806395d89b4114610589578063a457c2d7146105b8578063a9059cbb146105d8578063b40d09e2146105f8578063b6bf68f51461060e578063bc43d8491461062e57600080fd5b80638124f7ac14610515578063817d4bff1461052b578063868b01411461054b578063893d20e81461056b5780638da5cb5b1461056b57600080fd5b8063313ce567116101dd5780635149f984116101a15780635149f9841461043157806351bc3c851461045157806354194aaf1461047257806370a0823114610492578063715018a6146104c857806375f0a874146104dd57600080fd5b8063313ce567146103b557806339509351146103d157806341aec357146103f157806346e35f03146104065780634f7041a51461041b57600080fd5b80631d4eaead116102245780631d4eaead146103335780631d97b7cd146103495780631eb25d131461036057806323b872dd146103755780632d48f84f1461039557600080fd5b806306fdde031461026c578063095ea7b3146102b45780630eff4c64146102e457806318160ddd146103085780631d2cb02d1461031d57600080fd5b3661026757005b600080fd5b34801561027857600080fd5b5060408051808201909152600d81526c42696e677573436c617373696360981b60208201525b6040516102ab9190611b5e565b60405180910390f35b3480156102c057600080fd5b506102d46102cf366004611bc4565b6107d8565b60405190151581526020016102ab565b3480156102f057600080fd5b506102fa60115481565b6040519081526020016102ab565b34801561031457600080fd5b506006546102fa565b34801561032957600080fd5b506102fa600c5481565b34801561033f57600080fd5b506102fa600a5481565b34801561035557600080fd5b5061035e6107ef565b005b34801561036c57600080fd5b506102fa6107fa565b34801561038157600080fd5b506102d4610390366004611bf0565b610816565b3480156103a157600080fd5b5061035e6103b0366004611c31565b6108b2565b3480156103c157600080fd5b50604051601281526020016102ab565b3480156103dd57600080fd5b506102d46103ec366004611bc4565b610a31565b3480156103fd57600080fd5b5061035e610a68565b34801561041257600080fd5b506102d4610a97565b34801561042757600080fd5b506102fa60075481565b34801561043d57600080fd5b5061035e61044c366004611c89565b610ad7565b34801561045d57600080fd5b506013546102d490600160a01b900460ff1681565b34801561047e57600080fd5b5061035e61048d366004611cbe565b610b7c565b34801561049e57600080fd5b506102fa6104ad366004611cd7565b6001600160a01b031660009081526001602052604090205490565b3480156104d457600080fd5b5061035e610be0565b3480156104e957600080fd5b50600f546104fd906001600160a01b031681565b6040516001600160a01b0390911681526020016102ab565b34801561052157600080fd5b506102fa60095481565b34801561053757600080fd5b5061035e610546366004611cd7565b610c63565b34801561055757600080fd5b5061035e610566366004611cfb565b610cbe565b34801561057757600080fd5b506000546001600160a01b03166104fd565b34801561059557600080fd5b5060408051808201909152600681526542494e47555360d01b602082015261029e565b3480156105c457600080fd5b506102d46105d3366004611bc4565b610d06565b3480156105e457600080fd5b506102d46105f3366004611bc4565b610d82565b34801561060457600080fd5b506102fa60145481565b34801561061a57600080fd5b5061035e610629366004611cd7565b610d8f565b34801561063a57600080fd5b5061035e610649366004611cbe565b610dce565b34801561065a57600080fd5b506102fa600b5481565b34801561067057600080fd5b506102fa610e07565b34801561068557600080fd5b506102fa60085481565b34801561069b57600080fd5b5061035e6106aa366004611cbe565b610e66565b3480156106bb57600080fd5b506102d46106ca366004611cd7565b60056020526000908152604090205460ff1681565b3480156106eb57600080fd5b506102d46106fa366004611cd7565b60036020526000908152604090205460ff1681565b34801561071b57600080fd5b506102fa61072a366004611d16565b6001600160a01b03918216600090815260026020908152604080832093909416825291909152205490565b34801561076157600080fd5b5061035e610770366004611c89565b610e9e565b34801561078157600080fd5b506102fa60105481565b34801561079757600080fd5b5061035e6107a6366004611cd7565b610f7e565b3480156107b757600080fd5b506102fa6107c6366004611cd7565b60046020526000908152604090205481565b60006107e5338484611077565b5060015b92915050565b6107f842610b7c565b565b6108066012600a611e49565b61081390620f4240611e58565b81565b600061082384848461116a565b6001600160a01b0384166000908152600260209081526040808320338452909152902054828110156108935760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b60448201526064015b60405180910390fd5b6108a785336108a28685611e6f565b611077565b506001949350505050565b6108bb336112af565b6108d75760405162461bcd60e51b815260040161088a90611e82565b60006108e660046103e8611eb9565b90508087111580156108f85750808611155b80156109045750808511155b6109455760405162461bcd60e51b81526020600482015260126024820152710a8c2f040caf0c6cacac8e640dac2f0a8c2f60731b604482015260640161088a565b6103e8826109538587611edb565b61095d9190611edb565b146109b45760405162461bcd60e51b815260206004820152602160248201527f546178657320646f6e27742061646420757020746f2064656e6f6d696e61746f6044820152603960f91b606482015260840161088a565b600787905560088690556009859055600c839055600b829055600a8490556040805188815260208101889052908101869052606081018590526080810184905260a081018390527f95617e149b678679d65360792e6610c8fc9add72efd72fc3c8d94792801ca5c99060c00160405180910390a150505050505050565b3360008181526002602090815260408083206001600160a01b038716845290915281205490916107e59185906108a2908690611edb565b610a71336112af565b610a8d5760405162461bcd60e51b815260040161088a90611e82565b6107f860016112dc565b60006103e8601154600654610aac9190611e58565b610ab69190611eb9565b600d546001600160a01b031660009081526001602052604090205411919050565b610ae0336112af565b610afc5760405162461bcd60e51b815260040161088a90611e82565b600d546001600160a01b0390811690831603610b515760405162461bcd60e51b815260206004820152601460248201527363616e2774206368616e67652070616e63616b6560601b604482015260640161088a565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b610b85336112af565b610ba15760405162461bcd60e51b815260040161088a90611e82565b6014544210610baf57600080fd5b60148190556040517f2cb945e0498987ef06dbd68025b0bc276116c63345296379c28a8e8f09b47dc190600090a150565b33610bf36000546001600160a01b031690565b6001600160a01b031614610c195760405162461bcd60e51b815260040161088a90611eee565b600080546040516001600160a01b03909116907f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e0908390a3600080546001600160a01b0319169055565b33610c766000546001600160a01b031690565b6001600160a01b031614610c9c5760405162461bcd60e51b815260040161088a90611eee565b600f80546001600160a01b0319166001600160a01b0392909216919091179055565b610cc7336112af565b610ce35760405162461bcd60e51b815260040161088a90611e82565b60138054911515600160a01b0260ff60a01b19909216919091179055565b905090565b3360009081526002602090815260408083206001600160a01b038616845290915281205482811015610d695760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b604482015260640161088a565b610d7833856108a28685611e6f565b5060019392505050565b60006107e533848461116a565b610d98336112af565b610db45760405162461bcd60e51b815260040161088a90611e82565b6001600160a01b0316600090815260046020526040812055565b610dd7336112af565b610df35760405162461bcd60e51b815260040161088a90611e82565b6103e8811115610e0257600080fd5b601155565b61dead600090815260016020527fb34209a263f6c38fe55f099e9e70f9d67e93982480ff3234a5e0108028ad164d54600654610e456012600a611e49565b610e5290620f4240611e58565b610e5c9190611e6f565b610d019190611edb565b610e6f336112af565b610e8b5760405162461bcd60e51b815260040161088a90611e82565b600a811115610e9957600080fd5b601055565b610ea7336112af565b610ec35760405162461bcd60e51b815260040161088a90611e82565b306001600160a01b03831603610f1b5760405162461bcd60e51b815260206004820152601a60248201527f63616e277420496e636c7564652074686520636f6e7472616374000000000000604482015260640161088a565b6001600160a01b038216600081815260036020908152604091829020805460ff19168515159081179091558251938452908301527fa22b25479919d4ac678f064a05daa1ee9c0adc3b8198942ea45255e364e04ed4910160405180910390a15050565b33610f916000546001600160a01b031690565b6001600160a01b031614610fb75760405162461bcd60e51b815260040161088a90611eee565b6001600160a01b03811661101c5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b606482015260840161088a565b600080546040516001600160a01b03808516939216917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e091a3600080546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b0383166110c15760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b604482015260640161088a565b6001600160a01b0382166111095760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b604482015260640161088a565b6001600160a01b0383811660008181526002602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166111b55760405162461bcd60e51b81526020600482015260126024820152715472616e736665722066726f6d207a65726f60701b604482015260640161088a565b6001600160a01b0382166111fe5760405162461bcd60e51b815260206004820152601060248201526f5472616e7366657220746f207a65726f60801b604482015260640161088a565b6001600160a01b03831660009081526003602052604090205460ff168061123d57506001600160a01b03821660009081526003602052604090205460ff165b156112525761124d838383611498565b505050565b6014544210156112a45760405162461bcd60e51b815260206004820152601760248201527f74726164696e67206e6f742079657420656e61626c6564000000000000000000604482015260640161088a565b61124d8383836115ab565b600080546001600160a01b03838116911614806107e9575050600f546001600160a01b0390811691161490565b600f805460ff60a01b1916600160a01b17905530600090815260016020526040812054600c54600b549192916113129190611edb565b601054600d546001600160a01b0316600090815260016020526040812054929350916103e89161134191611e58565b61134b9190611eb9565b90508160000361135d57505050611488565b8315611379575030600090815260016020526040902054611389565b8083101561138957505050611488565b6000611393610a97565b6113b55782600b54836113a69190611e58565b6113b09190611eb9565b6113b8565b60005b905060006113c68284611e6f565b905060006113d5600284611eb9565b905060006113e38383611edb565b9050476113ef82611815565b60006113fb8247611e6f565b90508515611428576000836114108684611e58565b61141a9190611eb9565b90506114268582611964565b505b600f546040516000916001600160a01b03169047908381818185875af1925050503d8060008114611475576040519150601f19603f3d011682016040523d82523d6000602084013e61147a565b606091505b505050505050505050505050505b50600f805460ff60a01b19169055565b6001600160a01b038316600090815260016020526040902054818110156114fc5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b604482015260640161088a565b6001600160a01b03841660009081526001602052604081208054849290611524908490611e6f565b90915550506001600160a01b03831660009081526001602052604081208054849290611551908490611edb565b92505081905550826001600160a01b0316846001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161159d91815260200190565b60405180910390a350505050565b6001600160a01b0383166000908152600160205260409020548181101561160f5760405162461bcd60e51b81526020600482015260186024820152775472616e7366657220657863656564732062616c616e636560401b604482015260640161088a565b601280546001600160a01b038087166001600160a01b03199283168117909355601380549187169190921681179091556000918252600560205260408083205491835282205460ff9182169291169081156116735761166c611a39565b905061168c565b82156116815761166c611a93565b611689611ad9565b90505b600d546001600160a01b038881169116148015906116b45750601354600160a01b900460ff16155b80156116ca5750600f54600160a01b900460ff16155b156116d9576116d960006112dc565b60006116e88683600a54611b29565b905060006117068784600b54600c546117019190611edb565b611b29565b905060006117148284611edb565b61171e9089611e6f565b6001600160a01b038b16600090815260016020526040812080549293508a9290919061174b908490611e6f565b9091555050306000908152600160205260408120805484929061176f908490611edb565b9250508190555082600660008282546117889190611e6f565b90915550506001600160a01b038916600090815260016020526040812080548392906117b5908490611edb565b92505081905550886001600160a01b03168a6001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161180191815260200190565b60405180910390a350505050505050505050565b600e5461182d9030906001600160a01b031683611077565b604080516002808252606082018352600092602083019080368337019050509050308160008151811061186257611862611f23565b6001600160a01b03928316602091820292909201810191909152600e54604080516315ab88c960e31b81529051919093169263ad5c46489260048083019391928290030181865afa1580156118bb573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906118df9190611f39565b816001815181106118f2576118f2611f23565b6001600160a01b039283166020918202929092010152600e5460405163791ac94760e01b815291169063791ac94790611938908590600090869030904290600401611f56565b600060405180830381600087803b15801561195257600080fd5b505af192505050801561124d57505050565b600e5461197c9030906001600160a01b031684611077565b600e546001600160a01b031663f305d7198230856000806119a56000546001600160a01b031690565b60405160e088901b6001600160e01b03191681526001600160a01b03958616600482015260248101949094526044840192909252606483015290911660848201524260a482015260c40160606040518083038185885af1158015611a0d573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190611a329190611fc7565b5050505050565b6012546001600160a01b03166000908152600460205260408120544290801580611a705750601454611a6c90603c611edb565b8110155b80611a7a57508181145b15611a89576008549250505090565b6103849250505090565b6013546001600160a01b03166000908152600460205260408120548103611ad2576013546001600160a01b031660009081526004602052604090204290555b5060075490565b6012546001600160a01b03166000908152600460205260408120544290801580611b0257508181145b80611b1a5750601454611b1690603c611edb565b8110155b15611a89576009549250505090565b6000611b376103e880611e58565b82611b428587611e58565b611b4c9190611e58565b611b569190611eb9565b949350505050565b600060208083528351808285015260005b81811015611b8b57858101830151858201604001528201611b6f565b506000604082860101526040601f19601f8301168501019250505092915050565b6001600160a01b0381168114611bc157600080fd5b50565b60008060408385031215611bd757600080fd5b8235611be281611bac565b946020939093013593505050565b600080600060608486031215611c0557600080fd5b8335611c1081611bac565b92506020840135611c2081611bac565b929592945050506040919091013590565b60008060008060008060c08789031215611c4a57600080fd5b505084359660208601359650604086013595606081013595506080810135945060a0013592509050565b80358015158114611c8457600080fd5b919050565b60008060408385031215611c9c57600080fd5b8235611ca781611bac565b9150611cb560208401611c74565b90509250929050565b600060208284031215611cd057600080fd5b5035919050565b600060208284031215611ce957600080fd5b8135611cf481611bac565b9392505050565b600060208284031215611d0d57600080fd5b611cf482611c74565b60008060408385031215611d2957600080fd5b8235611d3481611bac565b91506020830135611d4481611bac565b809150509250929050565b634e487b7160e01b600052601160045260246000fd5b600181815b80851115611da0578160001904821115611d8657611d86611d4f565b80851615611d9357918102915b93841c9390800290611d6a565b509250929050565b600082611db7575060016107e9565b81611dc4575060006107e9565b8160018114611dda5760028114611de457611e00565b60019150506107e9565b60ff841115611df557611df5611d4f565b50506001821b6107e9565b5060208310610133831016604e8410600b8410161715611e23575081810a6107e9565b611e2d8383611d65565b8060001904821115611e4157611e41611d4f565b029392505050565b6000611cf460ff841683611da8565b80820281158282048414176107e9576107e9611d4f565b818103818111156107e9576107e9611d4f565b60208082526018908201527f43616c6c6572206e6f74205465616d206f72204f776e65720000000000000000604082015260600190565b600082611ed657634e487b7160e01b600052601260045260246000fd5b500490565b808201808211156107e9576107e9611d4f565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b634e487b7160e01b600052603260045260246000fd5b600060208284031215611f4b57600080fd5b8151611cf481611bac565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b81811015611fa65784516001600160a01b031683529383019391830191600101611f81565b50506001600160a01b03969096166060850152505050608001529392505050565b600080600060608486031215611fdc57600080fd5b835192506020840151915060408401519050925092509256fea264697066735822122022d97b58d1f386b663f70c83c6938ed2da79b5ffe7fa4bfdb857fcb3ae5170c964736f6c63430008110033

Deployed Bytecode Sourcemap

3383:17194:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;18264:94;;;;;;;;;;-1:-1:-1;18345:5:0;;;;;;;;;;;;-1:-1:-1;;;18345:5:0;;;;18264:94;;;;;;;:::i;:::-;;;;;;;;19137:158;;;;;;;;;;-1:-1:-1;19137:158:0;;;;;:::i;:::-;;:::i;:::-;;;1188:14:1;;1181:22;1163:41;;1151:2;1136:18;19137:158:0;1023:187:1;10647:35:0;;;;;;;;;;;;;;;;;;;1361:25:1;;;1349:2;1334:18;10647:35:0;1215:177:1;18574:105:0;;;;;;;;;;-1:-1:-1;18653:18:0;;18574:105;;4535:28;;;;;;;;;;;;;;;;4472:21;;;;;;;;;;;;;;;;17505:85;;;;;;;;;;;;;:::i;:::-;;3882:57;;;;;;;;;;;;;:::i;19605:386::-;;;;;;;;;;-1:-1:-1;19605:386:0;;;;;:::i;:::-;;:::i;11172:608::-;;;;;;;;;;-1:-1:-1;11172:608:0;;;;;:::i;:::-;;:::i;18472:94::-;;;;;;;;;;-1:-1:-1;18472:94:0;;3873:2;2528:36:1;;2516:2;2501:18;18472:94:0;2386:184:1;20026:202:0;;;;;;;;;;-1:-1:-1;20026:202:0;;;;;:::i;:::-;;:::i;16905:83::-;;;;;;;;;;;;;:::i;12017:152::-;;;;;;;;;;;;;:::i;4377:23::-;;;;;;;;;;;;;;;;16476:154;;;;;;;;;;-1:-1:-1;16476:154:0;;;;;:::i;:::-;;:::i;16642:22::-;;;;;;;;;;-1:-1:-1;16642:22:0;;;;-1:-1:-1;;;16642:22:0;;;;;;17596:187;;;;;;;;;;-1:-1:-1;17596:187:0;;;;;:::i;:::-;;:::i;18687:118::-;;;;;;;;;;-1:-1:-1;18687:118:0;;;;;:::i;:::-;-1:-1:-1;;;;;18779:18:0;18755:4;18779:18;;;:9;:18;;;;;;;18687:118;2845:140;;;;;;;;;;;;;:::i;4753:30::-;;;;;;;;;;-1:-1:-1;4753:30:0;;;;-1:-1:-1;;;;;4753:30:0;;;;;;-1:-1:-1;;;;;3661:32:1;;;3643:51;;3631:2;3616:18;4753:30:0;3497:203:1;4438:27:0;;;;;;;;;;;;;;;;4796:110;;;;;;;;;;-1:-1:-1;4796:110:0;;;;;:::i;:::-;;:::i;16747:90::-;;;;;;;;;;-1:-1:-1;16747:90:0;;;;;:::i;:::-;;:::i;18162:94::-;;;;;;;;;;-1:-1:-1;18214:7:0;2269:6;-1:-1:-1;;;;;2269:6:0;18162:94;;18366:98;;;;;;;;;;-1:-1:-1;18449:7:0;;;;;;;;;;;;-1:-1:-1;;;18449:7:0;;;;18366:98;;20236:336;;;;;;;;;;-1:-1:-1;20236:336:0;;;;;:::i;:::-;;:::i;18813:164::-;;;;;;;;;;-1:-1:-1;18813:164:0;;;;;:::i;:::-;;:::i;17456:42::-;;;;;;;;;;;;;;;;11786:120;;;;;;;;;;-1:-1:-1;11786:120:0;;;;;:::i;:::-;;:::i;10689:211::-;;;;;;;;;;-1:-1:-1;10689:211:0;;;;;:::i;:::-;;:::i;4500:28::-;;;;;;;;;;;;;;;;15951:139;;;;;;;;;;;;;:::i;4407:24::-;;;;;;;;;;;;;;;;10381:189;;;;;;;;;;-1:-1:-1;10381:189:0;;;;;:::i;:::-;;:::i;3675:35::-;;;;;;;;;;-1:-1:-1;3675:35:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;3560:48;;;;;;;;;;-1:-1:-1;3560:48:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;18985:144;;;;;;;;;;-1:-1:-1;18985:144:0;;;;;:::i;:::-;-1:-1:-1;;;;;19093:19:0;;;19069:4;19093:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;18985:144;17103:248;;;;;;;;;;-1:-1:-1;17103:248:0;;;;;:::i;:::-;;:::i;10340:26::-;;;;;;;;;;;;;;;;3140:236;;;;;;;;;;-1:-1:-1;3140:236:0;;;;;:::i;:::-;;:::i;3615:53::-;;;;;;;;;;-1:-1:-1;3615:53:0;;;;;:::i;:::-;;;;;;;;;;;;;;19137:158;19211:4;19228:37;19237:10;19249:7;19258:6;19228:8;:37::i;:::-;-1:-1:-1;19283:4:0;19137:158;;;;;:::o;17505:85::-;17547:35;17566:15;17547:18;:35::i;:::-;17505:85::o;3882:57::-;3926:13;3873:2;3926;:13;:::i;:::-;3918:21;;:5;:21;:::i;:::-;3882:57;:::o;19605:386::-;19702:4;19719:36;19729:6;19737:9;19748:6;19719:9;:36::i;:::-;-1:-1:-1;;;;;19792:19:0;;19768:21;19792:19;;;:11;:19;;;;;;;;19812:10;19792:31;;;;;;;;19842:26;;;;19834:59;;;;-1:-1:-1;;;19834:59:0;;6173:2:1;19834:59:0;;;6155:21:1;6212:2;6192:18;;;6185:30;-1:-1:-1;;;6231:18:1;;;6224:50;6291:18;;19834:59:0;;;;;;;;;19906:55;19915:6;19923:10;19935:25;19954:6;19935:16;:25;:::i;:::-;19906:8;:55::i;:::-;-1:-1:-1;19979:4:0;;19605:386;-1:-1:-1;;;;19605:386:0:o;11172:608::-;5006:19;5014:10;5006:7;:19::i;:::-;4998:56;;;;-1:-1:-1;;;4998:56:0;;;;;;;:::i;:::-;11295:11:::1;11307:33;4643:1;4600:4;11307:33;:::i;:::-;11295:45;;11364:6;11359:3;:11;;:25;;;;;11378:6;11372:4;:12;;11359:25;:44;;;;;11397:6;11386:9;:17;;11359:44;11351:74;;;::::0;-1:-1:-1;;;11351:74:0;;7230:2:1;11351:74:0::1;::::0;::::1;7212:21:1::0;7269:2;7249:18;;;7242:30;-1:-1:-1;;;7288:18:1;;;7281:48;7346:18;;11351:74:0::1;7028:342:1::0;11351:74:0::1;4600:4;11459:9:::0;11444:14:::1;11449:9:::0;11444:4;:14:::1;:::i;:::-;:24;;;;:::i;:::-;:41;11436:86;;;::::0;-1:-1:-1;;;11436:86:0;;7707:2:1;11436:86:0::1;::::0;::::1;7689:21:1::0;7746:2;7726:18;;;7719:30;7785:34;7765:18;;;7758:62;-1:-1:-1;;;7836:18:1;;;7829:31;7877:19;;11436:86:0::1;7505:397:1::0;11436:86:0::1;11543:6;:10:::0;;;11564:7:::1;:12:::0;;;11587:11:::1;:21:::0;;;11619:12:::1;:22:::0;;;11652:12:::1;:22:::0;;;11685:7:::1;:12:::0;;;11713:59:::1;::::0;;8194:25:1;;;8250:2;8235:18;;8228:34;;;8278:18;;;8271:34;;;8336:2;8321:18;;8314:34;;;8379:3;8364:19;;8357:35;;;8423:3;8408:19;;8401:35;;;11713:59:0::1;::::0;8181:3:1;8166:19;11713:59:0::1;;;;;;;11284:496;11172:608:::0;;;;;;:::o;20026:202::-;20131:10;20105:4;20152:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20152:32:0;;;;;;;;;;20105:4;;20122:76;;20143:7;;20152:45;;20187:10;;20152:45;:::i;16905:83::-;5006:19;5014:10;5006:7;:19::i;:::-;4998:56;;;;-1:-1:-1;;;4998:56:0;;;;;;;:::i;:::-;16956:24:::1;16975:4;16956:18;:24::i;12017:152::-:0;12064:4;12157;12137:19;;12118:18;;:38;;;;:::i;:::-;:43;;;;:::i;:::-;12097:19;;-1:-1:-1;;;;;12097:19:0;12087:30;;;;:9;:30;;;;;;:74;;12017:152;-1:-1:-1;12017:152:0:o;16476:154::-;5006:19;5014:10;5006:7;:19::i;:::-;4998:56;;;;-1:-1:-1;;;4998:56:0;;;;;;;:::i;:::-;16554:19:::1;::::0;-1:-1:-1;;;;;16554:19:0;;::::1;16549:24:::0;;::::1;::::0;16541:56:::1;;;::::0;-1:-1:-1;;;16541:56:0;;8649:2:1;16541:56:0::1;::::0;::::1;8631:21:1::0;8688:2;8668:18;;;8661:30;-1:-1:-1;;;8707:18:1;;;8700:50;8767:18;;16541:56:0::1;8447:344:1::0;16541:56:0::1;-1:-1:-1::0;;;;;16608:10:0;;;::::1;;::::0;;;:5:::1;:10;::::0;;;;:14;;-1:-1:-1;;16608:14:0::1;::::0;::::1;;::::0;;;::::1;::::0;;16476:154::o;17596:187::-;5006:19;5014:10;5006:7;:19::i;:::-;4998:56;;;;-1:-1:-1;;;4998:56:0;;;;;;;:::i;:::-;17690:15:::1;;17674;:31;17666:40;;;::::0;::::1;;17717:15;:25:::0;;;17758:17:::1;::::0;::::1;::::0;;;::::1;17596:187:::0;:::o;2845:140::-;2427:10;2416:7;2242;2269:6;-1:-1:-1;;;;;2269:6:0;;2204:79;2416:7;-1:-1:-1;;;;;2416:21:0;;2408:66;;;;-1:-1:-1;;;2408:66:0;;;;;;;:::i;:::-;2944:1:::1;2928:6:::0;;2907:40:::1;::::0;-1:-1:-1;;;;;2928:6:0;;::::1;::::0;2907:40:::1;::::0;2944:1;;2907:40:::1;2975:1;2958:19:::0;;-1:-1:-1;;;;;;2958:19:0::1;::::0;;2845:140::o;4796:110::-;2427:10;2416:7;2242;2269:6;-1:-1:-1;;;;;2269:6:0;;2204:79;2416:7;-1:-1:-1;;;;;2416:21:0;;2408:66;;;;-1:-1:-1;;;2408:66:0;;;;;;;:::i;:::-;4873:15:::1;:25:::0;;-1:-1:-1;;;;;;4873:25:0::1;-1:-1:-1::0;;;;;4873:25:0;;;::::1;::::0;;;::::1;::::0;;4796:110::o;16747:90::-;5006:19;5014:10;5006:7;:19::i;:::-;4998:56;;;;-1:-1:-1;;;4998:56:0;;;;;;;:::i;:::-;16812:10:::1;:17:::0;;;::::1;;-1:-1:-1::0;;;16812:17:0::1;-1:-1:-1::0;;;;16812:17:0;;::::1;::::0;;;::::1;::::0;;16747:90::o;18241:7::-;18234:14;;18162:94;:::o;20236:336::-;20373:10;20320:4;20361:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;20361:32:0;;;;;;;;;;20412:35;;;;20404:60;;;;-1:-1:-1;;;20404:60:0;;9359:2:1;20404:60:0;;;9341:21:1;9398:2;9378:18;;;9371:30;-1:-1:-1;;;9417:18:1;;;9410:42;9469:18;;20404:60:0;9157:336:1;20404:60:0;20477:65;20486:10;20498:7;20507:34;20526:15;20507:16;:34;:::i;20477:65::-;-1:-1:-1;20560:4:0;;20236:336;-1:-1:-1;;;20236:336:0:o;18813:164::-;18890:4;18907:40;18917:10;18929:9;18940:6;18907:9;:40::i;11786:120::-;5006:19;5014:10;5006:7;:19::i;:::-;4998:56;;;;-1:-1:-1;;;4998:56:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;11864:32:0::1;11897:1;11864:32:::0;;;:23:::1;:32;::::0;;;;:34;11786:120::o;10689:211::-;5006:19;5014:10;5006:7;:19::i;:::-;4998:56;;;;-1:-1:-1;;;4998:56:0;;;;;;;:::i;:::-;10826:4:::1;10794:30;:36;;10786:45;;;::::0;::::1;;10842:19;:50:::0;10689:211::o;15951:139::-;16074:6;15998:4;16056:26;;;:9;:26;;;;16036:18;;3926:13;3873:2;3926;:13;:::i;:::-;3918:21;;:5;:21;:::i;:::-;16022:32;;;;:::i;:::-;16021:61;;;;:::i;10381:189::-;5006:19;5014:10;5006:7;:19::i;:::-;4998:56;;;;-1:-1:-1;;;4998:56:0;;;;;;;:::i;:::-;10495:2:::1;10470:23;:27;;10462:36;;;::::0;::::1;;10526:12;:36:::0;10381:189::o;17103:248::-;5006:19;5014:10;5006:7;:19::i;:::-;4998:56;;;;-1:-1:-1;;;4998:56:0;;;;;;;:::i;:::-;17217:4:::1;-1:-1:-1::0;;;;;17200:22:0;::::1;::::0;17192:60:::1;;;::::0;-1:-1:-1;;;17192:60:0;;9700:2:1;17192:60:0::1;::::0;::::1;9682:21:1::0;9739:2;9719:18;;;9712:30;9778:28;9758:18;;;9751:56;9824:18;;17192:60:0::1;9498:350:1::0;17192:60:0::1;-1:-1:-1::0;;;;;17263:25:0;::::1;;::::0;;;:16:::1;:25;::::0;;;;;;;;:33;;-1:-1:-1;;17263:33:0::1;::::0;::::1;;::::0;;::::1;::::0;;;17312:31;;10021:51:1;;;10088:18;;;10081:50;17312:31:0::1;::::0;9994:18:1;17312:31:0::1;;;;;;;17103:248:::0;;:::o;3140:236::-;2427:10;2416:7;2242;2269:6;-1:-1:-1;;;;;2269:6:0;;2204:79;2416:7;-1:-1:-1;;;;;2416:21:0;;2408:66;;;;-1:-1:-1;;;2408:66:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;3221:22:0;::::1;3213:73;;;::::0;-1:-1:-1;;;3213:73:0;;10344:2:1;3213:73:0::1;::::0;::::1;10326:21:1::0;10383:2;10363:18;;;10356:30;10422:34;10402:18;;;10395:62;-1:-1:-1;;;10473:18:1;;;10466:36;10519:19;;3213:73:0::1;10142:402:1::0;3213:73:0::1;3323:6;::::0;;3302:38:::1;::::0;-1:-1:-1;;;;;3302:38:0;;::::1;::::0;3323:6;::::1;::::0;3302:38:::1;::::0;::::1;3351:6;:17:::0;;-1:-1:-1;;;;;;3351:17:0::1;-1:-1:-1::0;;;;;3351:17:0;;;::::1;::::0;;;::::1;::::0;;3140:236::o;19301:296::-;-1:-1:-1;;;;;19391:19:0;;19383:49;;;;-1:-1:-1;;;19383:49:0;;10751:2:1;19383:49:0;;;10733:21:1;10790:2;10770:18;;;10763:30;-1:-1:-1;;;10809:18:1;;;10802:47;10866:18;;19383:49:0;10549:341:1;19383:49:0;-1:-1:-1;;;;;19451:21:0;;19443:49;;;;-1:-1:-1;;;19443:49:0;;11097:2:1;19443:49:0;;;11079:21:1;11136:2;11116:18;;;11109:30;-1:-1:-1;;;11155:18:1;;;11148:45;11210:18;;19443:49:0;10895:339:1;19443:49:0;-1:-1:-1;;;;;19505:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;19557:32;;1361:25:1;;;19557:32:0;;1334:18:1;19557:32:0;;;;;;;19301:296;;;:::o;6941:613::-;-1:-1:-1;;;;;7034:20:0;;7026:51;;;;-1:-1:-1;;;7026:51:0;;11441:2:1;7026:51:0;;;11423:21:1;11480:2;11460:18;;;11453:30;-1:-1:-1;;;11499:18:1;;;11492:48;11557:18;;7026:51:0;11239:342:1;7026:51:0;-1:-1:-1;;;;;7096:23:0;;7088:52;;;;-1:-1:-1;;;7088:52:0;;11788:2:1;7088:52:0;;;11770:21:1;11827:2;11807:18;;;11800:30;-1:-1:-1;;;11846:18:1;;;11839:46;11902:18;;7088:52:0;11586:340:1;7088:52:0;-1:-1:-1;;;;;7183:24:0;;;;;;:16;:24;;;;;;;;;:55;;-1:-1:-1;;;;;;7211:27:0;;;;;;:16;:27;;;;;;;;7183:55;7180:367;;;7253:43;7270:6;7278:9;7289:6;7253:16;:43::i;:::-;6941:613;;;:::o;7180:367::-;7421:15;;7404;:32;;7396:67;;;;-1:-1:-1;;;7396:67:0;;12133:2:1;7396:67:0;;;12115:21:1;12172:2;12152:18;;;12145:30;12211:25;12191:18;;;12184:53;12254:18;;7396:67:0;11931:347:1;7396:67:0;7478:39;7493:6;7500:9;7510:6;7478:14;:39::i;5292:120::-;5345:4;2269:6;;-1:-1:-1;;;;;5368:13:0;;;2269:6;;5368:13;;:36;;-1:-1:-1;;5389:15:0;;-1:-1:-1;;;;;5389:15:0;;;5383:21;;;;5292:120::o;12328:1820::-;10157:27;:34;;-1:-1:-1;;;;10157:34:0;-1:-1:-1;;;10157:34:0;;;12444:4:::1;10157:34:::0;12426:24;;;10187:4;12426:24:::1;::::0;;;;;12488:12:::1;::::0;12475::::1;::::0;12426:24;;10157:34;12475:25:::1;::::0;12488:12;12475:25:::1;:::i;:::-;12654:12;::::0;12633:19:::1;::::0;-1:-1:-1;;;;;12633:19:0::1;12606:16;12623:30:::0;;;:9:::1;:30;::::0;;;;;12461:39;;-1:-1:-1;12606:16:0;12667:4:::1;::::0;12623:43:::1;::::0;::::1;:::i;:::-;:48;;;;:::i;:::-;12606:65;;12724:8;12734:1;12724:11:::0;12721:22:::1;;12736:7;;;;;12721:22;12912:12;12909:134;;;-1:-1:-1::0;12969:4:0::1;12951:24;::::0;;;:9:::1;:24;::::0;;;;;12909:134:::1;;;13010:11;12994:15;:27;12991:52;;;13036:7;;;;;12991:52;13176:22;13209:17;:15;:17::i;:::-;:65;;13266:8;13252:12;;13240:11;:24;;;;:::i;:::-;13239:35;;;;:::i;:::-;13209:65;;;13227:1;13209:65;13176:98:::0;-1:-1:-1;13287:22:0::1;13311:29;13176:98:::0;13311:11;:29:::1;:::i;:::-;13287:53:::0;-1:-1:-1;13353:12:0::1;13366:19;13384:1;13366:17:::0;:19:::1;:::i;:::-;13353:32:::0;-1:-1:-1;13466:14:0::1;13481:25;13489:17:::0;13353:32;13481:25:::1;:::i;:::-;13466:40:::0;-1:-1:-1;13620:21:0::1;13652:27;13466:40:::0;13652:16:::1;:27::i;:::-;13690:11;13703:41;13727:17:::0;13703:21:::1;:41;:::i;:::-;13690:55:::0;-1:-1:-1;13850:19:0;;13847:135:::1;;13885:11;13916:9:::0;13900:14:::1;13907:7:::0;13900:6;:14:::1;:::i;:::-;13899:26;;;;:::i;:::-;13885:40;;13940:30;13954:7;13963:6;13940:13;:30::i;:::-;13870:112;13847:135;14067:15;::::0;:53:::1;::::0;14055:9:::1;::::0;-1:-1:-1;;;;;14067:15:0::1;::::0;14094:21:::1;::::0;14055:9;14067:53;14055:9;14067:53;14094:21;14067:15;:53:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;;;10202:1:0::1;-1:-1:-1::0;10214:27:0;:35;;-1:-1:-1;;;;10214:35:0;;;12328:1820::o;9353:339::-;-1:-1:-1;;;;;9466:17:0;;9445:18;9466:17;;;:9;:17;;;;;;9502:23;;;;9494:60;;;;-1:-1:-1;;;9494:60:0;;12695:2:1;9494:60:0;;;12677:21:1;12734:2;12714:18;;;12707:30;-1:-1:-1;;;12753:18:1;;;12746:54;12817:18;;9494:60:0;12493:348:1;9494:60:0;-1:-1:-1;;;;;9565:17:0;;;;;;:9;:17;;;;;:25;;9584:6;;9565:17;:25;;9584:6;;9565:25;:::i;:::-;;;;-1:-1:-1;;;;;;;9601:20:0;;;;;;:9;:20;;;;;:28;;9623:6;;9601:20;:28;;9623:6;;9601:28;:::i;:::-;;;;;;;;9667:9;-1:-1:-1;;;;;9651:33:0;9660:6;-1:-1:-1;;;;;9651:33:0;;9677:6;9651:33;;;;1361:25:1;;1349:2;1334:18;;1215:177;9651:33:0;;;;;;;;9434:258;9353:339;;;:::o;7661:1397::-;-1:-1:-1;;;;;7772:17:0;;7751:18;7772:17;;;:9;:17;;;;;;7808:23;;;;7800:60;;;;-1:-1:-1;;;7800:60:0;;12695:2:1;7800:60:0;;;12677:21:1;12734:2;12714:18;;;12707:30;-1:-1:-1;;;12753:18:1;;;12746:54;12817:18;;7800:60:0;12493:348:1;7800:60:0;7871:6;:13;;-1:-1:-1;;;;;7871:13:0;;;-1:-1:-1;;;;;;7871:13:0;;;;;;;;7895:9;:19;;;;;;;;;;;;;;7871:6;7936:13;;;:5;:13;;;;;;;7972:16;;;;;;7936:13;;;;;7972:16;;;8020:146;;;;8055:9;:7;:9::i;:::-;8051:13;;8020:146;;;8098:5;8095:71;;;8123:8;:6;:8::i;8095:71::-;8153:13;:11;:13::i;:::-;8149:17;;8095:71;8191:19;;-1:-1:-1;;;;;8183:27:0;;;8191:19;;8183:27;;;;8182:44;;-1:-1:-1;8215:10:0;;-1:-1:-1;;;8215:10:0;;;;8214:11;8182:44;:76;;;;-1:-1:-1;8230:27:0;;-1:-1:-1;;;8230:27:0;;;;8229:28;8182:76;8179:119;;;8273:25;8292:5;8273:18;:25::i;:::-;8369:20;8390:35;8404:6;8412:3;8417:7;;8390:13;:35::i;:::-;8369:56;;8533:18;8552:53;8566:6;8574:3;8592:12;;8579;;:25;;;;:::i;:::-;8552:13;:53::i;:::-;8533:72;-1:-1:-1;8669:16:0;8694:31;8533:72;8694:15;:31;:::i;:::-;8686:40;;:6;:40;:::i;:::-;-1:-1:-1;;;;;8739:17:0;;;;;;:9;:17;;;;;:25;;8669:57;;-1:-1:-1;8758:6:0;;8739:17;;;:25;;8758:6;;8739:25;:::i;:::-;;;;-1:-1:-1;;8849:4:0;8831:24;;;;:9;:24;;;;;:41;;8859:13;;8831:24;:41;;8859:13;;8831:41;:::i;:::-;;;;;;;;8927:15;8907:18;;:35;;;;;;;:::i;:::-;;;;-1:-1:-1;;;;;;;8953:20:0;;;;;;:9;:20;;;;;:33;;8975:11;;8953:20;:33;;8975:11;;8953:33;:::i;:::-;;;;;;;;9028:9;-1:-1:-1;;;;;9012:38:0;9021:6;-1:-1:-1;;;;;9012:38:0;;9038:11;9012:38;;;;1361:25:1;;1349:2;1334:18;;1215:177;9012:38:0;;;;;;;;7740:1318;;;;;;;7661:1397;;;:::o;14251:474::-;14341:14;;14309:56;;14326:4;;-1:-1:-1;;;;;14341:14:0;14358:6;14309:8;:56::i;:::-;14400:16;;;14414:1;14400:16;;;;;;;;14376:21;;14400:16;;;;;;;;;;-1:-1:-1;14400:16:0;14376:40;;14445:4;14427;14432:1;14427:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14427:23:0;;;:7;;;;;;;;;;:23;;;;14471:14;;:21;;;-1:-1:-1;;;14471:21:0;;;;:14;;;;;:19;;:21;;;;;14427:7;;14471:21;;;;;:14;:21;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;14461:4;14466:1;14461:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;14461:31:0;;;:7;;;;;;;;;:31;14509:14;;:190;;-1:-1:-1;;;14509:190:0;;:14;;;:65;;:190;;14589:6;;14509:14;;14626:4;;14653;;14673:15;;14509:190;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;14298:427;14251:474;:::o;15582:353::-;15690:14;;15658:61;;15675:4;;-1:-1:-1;;;;;15690:14:0;15707:11;15658:8;:61::i;:::-;15730:14;;-1:-1:-1;;;;;15730:14:0;:30;15768:9;15801:4;15821:11;15730:14;;15879:7;2242;2269:6;-1:-1:-1;;;;;2269:6:0;;2204:79;15879:7;15730:197;;;;;;-1:-1:-1;;;;;;15730:197:0;;;-1:-1:-1;;;;;14710:15:1;;;15730:197:0;;;14692:34:1;14742:18;;;14735:34;;;;14785:18;;;14778:34;;;;14828:18;;;14821:34;14892:15;;;14871:19;;;14864:44;15901:15:0;14924:19:1;;;14917:35;14626:19;;15730:197:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;15582:353;;:::o;14976:297::-;15121:6;;-1:-1:-1;;;;;15121:6:0;15017:4;15097:31;;;:23;:31;;;;;;15051:15;;15142:17;;;:60;;-1:-1:-1;15177:15:0;;:25;;15193:9;15177:25;:::i;:::-;15161:14;:41;;15142:60;:82;;;;15220:4;15204:14;:20;15142:82;15139:101;;;15233:7;;15226:14;;;;14976:297;:::o;15139:101::-;14966:3;15251:14;;;;14976:297;:::o;14737:199::-;14815:9;;-1:-1:-1;;;;;14815:9:0;14772:4;14791:34;;;:23;:34;;;;;;:37;;14788:117;;14867:9;;-1:-1:-1;;;;;14867:9:0;14843:34;;;;:23;:34;;;;;14878:15;14843:50;;14788:117;-1:-1:-1;14922:6:0;;;14737:199::o;15281:289::-;15423:6;;-1:-1:-1;;;;;15423:6:0;15326:4;15399:31;;;:23;:31;;;;;;15353:15;;15444:17;;;:39;;;15479:4;15463:14;:20;15444:39;:82;;;-1:-1:-1;15501:15:0;;:25;;15517:9;15501:25;:::i;:::-;15485:14;:41;;15444:82;15441:105;;;15535:11;;15528:18;;;;15281:289;:::o;9113:176::-;9198:4;9249:31;4600:4;;9249:31;:::i;:::-;9234:10;9223;9230:3;9223:6;:10;:::i;:::-;:21;;;;:::i;:::-;9222:59;;;;:::i;:::-;9215:66;9113:176;-1:-1:-1;;;;9113:176:0:o;14:548:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;298:3;483:1;478:2;469:6;458:9;454:22;450:31;443:42;553:2;546;542:7;537:2;529:6;525:15;521:29;510:9;506:45;502:54;494:62;;;;14:548;;;;:::o;567:131::-;-1:-1:-1;;;;;642:31:1;;632:42;;622:70;;688:1;685;678:12;622:70;567:131;:::o;703:315::-;771:6;779;832:2;820:9;811:7;807:23;803:32;800:52;;;848:1;845;838:12;800:52;887:9;874:23;906:31;931:5;906:31;:::i;:::-;956:5;1008:2;993:18;;;;980:32;;-1:-1:-1;;;703:315:1:o;1397:456::-;1474:6;1482;1490;1543:2;1531:9;1522:7;1518:23;1514:32;1511:52;;;1559:1;1556;1549:12;1511:52;1598:9;1585:23;1617:31;1642:5;1617:31;:::i;:::-;1667:5;-1:-1:-1;1724:2:1;1709:18;;1696:32;1737:33;1696:32;1737:33;:::i;:::-;1397:456;;1789:7;;-1:-1:-1;;;1843:2:1;1828:18;;;;1815:32;;1397:456::o;1858:523::-;1962:6;1970;1978;1986;1994;2002;2055:3;2043:9;2034:7;2030:23;2026:33;2023:53;;;2072:1;2069;2062:12;2023:53;-1:-1:-1;;2095:23:1;;;2165:2;2150:18;;2137:32;;-1:-1:-1;2216:2:1;2201:18;;2188:32;;2267:2;2252:18;;2239:32;;-1:-1:-1;2318:3:1;2303:19;;2290:33;;-1:-1:-1;2370:3:1;2355:19;2342:33;;-1:-1:-1;1858:523:1;-1:-1:-1;1858:523:1:o;2575:160::-;2640:20;;2696:13;;2689:21;2679:32;;2669:60;;2725:1;2722;2715:12;2669:60;2575:160;;;:::o;2740:315::-;2805:6;2813;2866:2;2854:9;2845:7;2841:23;2837:32;2834:52;;;2882:1;2879;2872:12;2834:52;2921:9;2908:23;2940:31;2965:5;2940:31;:::i;:::-;2990:5;-1:-1:-1;3014:35:1;3045:2;3030:18;;3014:35;:::i;:::-;3004:45;;2740:315;;;;;:::o;3060:180::-;3119:6;3172:2;3160:9;3151:7;3147:23;3143:32;3140:52;;;3188:1;3185;3178:12;3140:52;-1:-1:-1;3211:23:1;;3060:180;-1:-1:-1;3060:180:1:o;3245:247::-;3304:6;3357:2;3345:9;3336:7;3332:23;3328:32;3325:52;;;3373:1;3370;3363:12;3325:52;3412:9;3399:23;3431:31;3456:5;3431:31;:::i;:::-;3481:5;3245:247;-1:-1:-1;;;3245:247:1:o;3705:180::-;3761:6;3814:2;3802:9;3793:7;3789:23;3785:32;3782:52;;;3830:1;3827;3820:12;3782:52;3853:26;3869:9;3853:26;:::i;3890:388::-;3958:6;3966;4019:2;4007:9;3998:7;3994:23;3990:32;3987:52;;;4035:1;4032;4025:12;3987:52;4074:9;4061:23;4093:31;4118:5;4093:31;:::i;:::-;4143:5;-1:-1:-1;4200:2:1;4185:18;;4172:32;4213:33;4172:32;4213:33;:::i;:::-;4265:7;4255:17;;;3890:388;;;;;:::o;4283:127::-;4344:10;4339:3;4335:20;4332:1;4325:31;4375:4;4372:1;4365:15;4399:4;4396:1;4389:15;4415:422;4504:1;4547:5;4504:1;4561:270;4582:7;4572:8;4569:21;4561:270;;;4641:4;4637:1;4633:6;4629:17;4623:4;4620:27;4617:53;;;4650:18;;:::i;:::-;4700:7;4690:8;4686:22;4683:55;;;4720:16;;;;4683:55;4799:22;;;;4759:15;;;;4561:270;;;4565:3;4415:422;;;;;:::o;4842:806::-;4891:5;4921:8;4911:80;;-1:-1:-1;4962:1:1;4976:5;;4911:80;5010:4;5000:76;;-1:-1:-1;5047:1:1;5061:5;;5000:76;5092:4;5110:1;5105:59;;;;5178:1;5173:130;;;;5085:218;;5105:59;5135:1;5126:10;;5149:5;;;5173:130;5210:3;5200:8;5197:17;5194:43;;;5217:18;;:::i;:::-;-1:-1:-1;;5273:1:1;5259:16;;5288:5;;5085:218;;5387:2;5377:8;5374:16;5368:3;5362:4;5359:13;5355:36;5349:2;5339:8;5336:16;5331:2;5325:4;5322:12;5318:35;5315:77;5312:159;;;-1:-1:-1;5424:19:1;;;5456:5;;5312:159;5503:34;5528:8;5522:4;5503:34;:::i;:::-;5573:6;5569:1;5565:6;5561:19;5552:7;5549:32;5546:58;;;5584:18;;:::i;:::-;5622:20;;4842:806;-1:-1:-1;;;4842:806:1:o;5653:140::-;5711:5;5740:47;5781:4;5771:8;5767:19;5761:4;5740:47;:::i;5798:168::-;5871:9;;;5902;;5919:15;;;5913:22;;5899:37;5889:71;;5940:18;;:::i;6320:128::-;6387:9;;;6408:11;;;6405:37;;;6422:18;;:::i;6453:348::-;6655:2;6637:21;;;6694:2;6674:18;;;6667:30;6733:26;6728:2;6713:18;;6706:54;6792:2;6777:18;;6453:348::o;6806:217::-;6846:1;6872;6862:132;;6916:10;6911:3;6907:20;6904:1;6897:31;6951:4;6948:1;6941:15;6979:4;6976:1;6969:15;6862:132;-1:-1:-1;7008:9:1;;6806:217::o;7375:125::-;7440:9;;;7461:10;;;7458:36;;;7474:18;;:::i;8796:356::-;8998:2;8980:21;;;9017:18;;;9010:30;9076:34;9071:2;9056:18;;9049:62;9143:2;9128:18;;8796:356::o;12978:127::-;13039:10;13034:3;13030:20;13027:1;13020:31;13070:4;13067:1;13060:15;13094:4;13091:1;13084:15;13110:251;13180:6;13233:2;13221:9;13212:7;13208:23;13204:32;13201:52;;;13249:1;13246;13239:12;13201:52;13281:9;13275:16;13300:31;13325:5;13300:31;:::i;13366:980::-;13628:4;13676:3;13665:9;13661:19;13707:6;13696:9;13689:25;13733:2;13771:6;13766:2;13755:9;13751:18;13744:34;13814:3;13809:2;13798:9;13794:18;13787:31;13838:6;13873;13867:13;13904:6;13896;13889:22;13942:3;13931:9;13927:19;13920:26;;13981:2;13973:6;13969:15;13955:29;;14002:1;14012:195;14026:6;14023:1;14020:13;14012:195;;;14091:13;;-1:-1:-1;;;;;14087:39:1;14075:52;;14182:15;;;;14147:12;;;;14123:1;14041:9;14012:195;;;-1:-1:-1;;;;;;;14263:32:1;;;;14258:2;14243:18;;14236:60;-1:-1:-1;;;14327:3:1;14312:19;14305:35;14224:3;13366:980;-1:-1:-1;;;13366:980:1:o;14963:306::-;15051:6;15059;15067;15120:2;15108:9;15099:7;15095:23;15091:32;15088:52;;;15136:1;15133;15126:12;15088:52;15165:9;15159:16;15149:26;;15215:2;15204:9;15200:18;15194:25;15184:35;;15259:2;15248:9;15244:18;15238:25;15228:35;;14963:306;;;;;:::o

Swarm Source

ipfs://22d97b58d1f386b663f70c83c6938ed2da79b5ffe7fa4bfdb857fcb3ae5170c9

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.