ETH Price: $3,304.09 (-0.34%)
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve193310192024-02-29 5:13:59332 days ago1709183639IN
0x96d9BE94...d01aa0301
0 ETH0.0026648257.09690678
Approve193310132024-02-29 5:12:47332 days ago1709183567IN
0x96d9BE94...d01aa0301
0 ETH0.0029805163.86077957
Approve191106162024-01-29 7:12:11363 days ago1706512331IN
0x96d9BE94...d01aa0301
0 ETH0.000418178.97138987
Approve191105942024-01-29 7:07:47363 days ago1706512067IN
0x96d9BE94...d01aa0301
0 ETH0.0004743810.23522099
Approve191105772024-01-29 7:04:23363 days ago1706511863IN
0x96d9BE94...d01aa0301
0 ETH0.0005427411.64397202
Approve191105672024-01-29 7:02:23363 days ago1706511743IN
0x96d9BE94...d01aa0301
0 ETH0.0005988512.84771759
Approve191105592024-01-29 7:00:35363 days ago1706511635IN
0x96d9BE94...d01aa0301
0 ETH0.0005383611.55
Approve191105582024-01-29 7:00:23363 days ago1706511623IN
0x96d9BE94...d01aa0301
0 ETH0.0005118311.03479495
Approve191105562024-01-29 6:59:59363 days ago1706511599IN
0x96d9BE94...d01aa0301
0 ETH0.0005362711.49019926
Approve191105472024-01-29 6:58:11363 days ago1706511491IN
0x96d9BE94...d01aa0301
0 ETH0.0005125211.04963749
Approve191105472024-01-29 6:58:11363 days ago1706511491IN
0x96d9BE94...d01aa0301
0 ETH0.0005577111.94963749
Approve191105452024-01-29 6:57:47363 days ago1706511467IN
0x96d9BE94...d01aa0301
0 ETH0.0005382311.53238235
Approve191105442024-01-29 6:57:35363 days ago1706511455IN
0x96d9BE94...d01aa0301
0 ETH0.0007083715.17779385
Approve191105422024-01-29 6:57:11363 days ago1706511431IN
0x96d9BE94...d01aa0301
0 ETH0.0006092713.05448014
Approve191105422024-01-29 6:57:11363 days ago1706511431IN
0x96d9BE94...d01aa0301
0 ETH0.0006092713.05448014
Approve191105392024-01-29 6:56:35363 days ago1706511395IN
0x96d9BE94...d01aa0301
0 ETH0.000485610.47742302
Approve191105392024-01-29 6:56:35363 days ago1706511395IN
0x96d9BE94...d01aa0301
0 ETH0.0005070110.87742302
Approve191105392024-01-29 6:56:35363 days ago1706511395IN
0x96d9BE94...d01aa0301
0 ETH0.0005390611.55
Approve191105392024-01-29 6:56:35363 days ago1706511395IN
0x96d9BE94...d01aa0301
0 ETH0.0007176915.37742302
Approve191105382024-01-29 6:56:23363 days ago1706511383IN
0x96d9BE94...d01aa0301
0 ETH0.0018724240.11871431
Approve191105362024-01-29 6:55:59363 days ago1706511359IN
0x96d9BE94...d01aa0301
0 ETH0.0004772510.22567116
Approve191105362024-01-29 6:55:59363 days ago1706511359IN
0x96d9BE94...d01aa0301
0 ETH0.0006126413.12667116
Approve191105362024-01-29 6:55:59363 days ago1706511359IN
0x96d9BE94...d01aa0301
0 ETH0.0007059915.12667116
Approve191105342024-01-29 6:55:35363 days ago1706511335IN
0x96d9BE94...d01aa0301
0 ETH0.0004853510.41264759
Approve191105302024-01-29 6:54:47363 days ago1706511287IN
0x96d9BE94...d01aa0301
0 ETH0.0006678414.30940063
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
145891512022-04-15 9:33:101017 days ago1650015190
0x96d9BE94...d01aa0301
0.02298104 ETH
145891512022-04-15 9:33:101017 days ago1650015190
0x96d9BE94...d01aa0301
0.00984902 ETH
145891512022-04-15 9:33:101017 days ago1650015190
0x96d9BE94...d01aa0301
0.03283007 ETH
145871892022-04-15 2:04:401017 days ago1649988280
0x96d9BE94...d01aa0301
0.02760801 ETH
145871892022-04-15 2:04:401017 days ago1649988280
0x96d9BE94...d01aa0301
0.011832 ETH
145871892022-04-15 2:04:401017 days ago1649988280
0x96d9BE94...d01aa0301
0.03944002 ETH
145866052022-04-14 23:55:421017 days ago1649980542
0x96d9BE94...d01aa0301
0.03375576 ETH
145866052022-04-14 23:55:421017 days ago1649980542
0x96d9BE94...d01aa0301
0.01446675 ETH
145866052022-04-14 23:55:421017 days ago1649980542
0x96d9BE94...d01aa0301
0.04822252 ETH
145823252022-04-14 7:54:361018 days ago1649922876
0x96d9BE94...d01aa0301
0.03772884 ETH
145823252022-04-14 7:54:361018 days ago1649922876
0x96d9BE94...d01aa0301
0.0161695 ETH
145823252022-04-14 7:54:361018 days ago1649922876
0x96d9BE94...d01aa0301
0.05389835 ETH
145808052022-04-14 2:16:281018 days ago1649902588
0x96d9BE94...d01aa0301
0.04602617 ETH
145808052022-04-14 2:16:281018 days ago1649902588
0x96d9BE94...d01aa0301
0.0197255 ETH
145808052022-04-14 2:16:281018 days ago1649902588
0x96d9BE94...d01aa0301
0.06575168 ETH
145802972022-04-14 0:16:151018 days ago1649895375
0x96d9BE94...d01aa0301
0.03330206 ETH
145802972022-04-14 0:16:151018 days ago1649895375
0x96d9BE94...d01aa0301
0.01427231 ETH
145802972022-04-14 0:16:151018 days ago1649895375
0x96d9BE94...d01aa0301
0.04757437 ETH
145792522022-04-13 20:23:521018 days ago1649881432
0x96d9BE94...d01aa0301
0.04446941 ETH
145792522022-04-13 20:23:521018 days ago1649881432
0x96d9BE94...d01aa0301
0.01905832 ETH
145792522022-04-13 20:23:521018 days ago1649881432
0x96d9BE94...d01aa0301
0.06352774 ETH
145791692022-04-13 20:06:441018 days ago1649880404
0x96d9BE94...d01aa0301
0.03973456 ETH
145791692022-04-13 20:06:441018 days ago1649880404
0x96d9BE94...d01aa0301
0.01702909 ETH
145791692022-04-13 20:06:441018 days ago1649880404
0x96d9BE94...d01aa0301
0.05676365 ETH
145791622022-04-13 20:04:571018 days ago1649880297
0x96d9BE94...d01aa0301
0.04710633 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
Orangutan

Compiler Version
v0.8.7+commit.e28d00a7

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-04-13
*/

/**
Welcome Home Apes

$RANG is the Community Token for Apes.

We started you off with 1 ETH in liquidity, a website and the tokenomics.

There is a 10% tax, 7% is for marketing, buybacks and burns which we will do throughout to help all the apes.  The other 3% is for development.

Development you ask?  What a smart ape.

That is up to you, the Orangutans!  Form a telegram and/or discord.  Create twitter and other socials.  Leave a comment on the deployer wallet and it will be added to the website.

Now about development.  This is a community project for apes.  Come together, brainstorm and sling some shit around.  We will be watching.  If you come together as a core group and discover a great utility then we will build it for you.  

That is all for now, we may leave you messages as it goes so please check around.

Website - https://rangutan.io/
*/

//SPDX-License-Identifier: UNLICENSED

pragma solidity 0.8.7;


library SafeMath {

    function tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

    function sub(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b <= a, errorMessage);
            return a - b;
        }
    }

    function div(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a / b;
        }
    }

    function mod(
        uint256 a,
        uint256 b,
        string memory errorMessage
    ) internal pure returns (uint256) {
        unchecked {
            require(b > 0, errorMessage);
            return a % b;
        }
    }
}

interface ERC20 {
    function totalSupply() external view returns (uint _totalSupply);
    function balanceOf(address _owner) external view returns (uint balance);
    function transfer(address _to, uint _value) external returns (bool success);
    function transferFrom(address _from, address _to, uint _value) external returns (bool success);
    function approve(address _spender, uint _value) external returns (bool success);
    function allowance(address _owner, address _spender) external view returns (uint remaining);
    event Transfer(address indexed _from, address indexed _to, uint _value);
    event Approval(address indexed _owner, address indexed _spender, uint _value);
}

interface IUniswapFactory {
    event PairCreated(address indexed token0, address indexed token1, address pair, uint);

    function feeTo() external view returns (address);
    function feeToSetter() external view returns (address);
    function getPair(address tokenA, address tokenB) external view returns (address pair);
    function allPairs(uint) external view returns (address pair);
    function allPairsLength() external view returns (uint);
    function createPair(address tokenA, address tokenB) external returns (address pair);
    function setFeeTo(address) external;
    function setFeeToSetter(address) external;
}

interface IUniswapRouter01 {
    function addLiquidity(
        address tokenA,
        address tokenB,
        uint amountADesired,
        uint amountBDesired,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(
        address tokenA,
        address tokenB,
        uint liquidity,
        uint amountAMin,
        uint amountBMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(
        uint amountOut,
        uint amountInMax,
        address[] calldata path,
        address to,
        uint deadline
    ) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline)
    external
    returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline)
    external
    payable
    returns (uint[] memory amounts);

    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getamountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getamountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getamountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getamountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);
}

interface IUniswapRouter02 is IUniswapRouter01 {
    function removeLiquidityETHSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(
        address token,
        uint liquidity,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline,
        bool approveMax, uint8 v, bytes32 r, bytes32 s
    ) external returns (uint amountETH);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
}


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

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

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

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

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

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

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

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

contract smart {
    using SafeMath for uint;

    address public router_address = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    IUniswapRouter02 public router = IUniswapRouter02(router_address);

    function create_weth_pair(address token) private returns (address, IUniswapV2Pair) {
       address pair_address = IUniswapFactory(router.factory()).createPair(token, router.WETH());
       return (pair_address, IUniswapV2Pair(pair_address));
    }

    function get_weth_reserve(address pair_address) private  view returns(uint, uint) {
        IUniswapV2Pair pair = IUniswapV2Pair(pair_address);
        uint112 token_reserve;
        uint112 native_reserve;
        uint32 last_timestamp;
        (token_reserve, native_reserve, last_timestamp) = pair.getReserves();
        return (token_reserve, native_reserve);
    }

    function get_weth_price_impact(address token, uint amount, bool sell) private view returns(uint) {
        address pair_address = IUniswapFactory(router.factory()).getPair(token, router.WETH());
        (uint res_token, uint res_weth) = get_weth_reserve(pair_address);
        uint impact;
        if(sell) {
            impact = (amount.mul(100)).div(res_token);
        } else {
            impact = (amount.mul(100)).div(res_weth);
        }
        return impact;
    }
}



contract protected {

    bool public bot_smasher = true;
    bool public trade_enabled = false;

    mapping (address => bool) public is_auth;

    function authorized(address addy) public view returns(bool) {
        return is_auth[addy];
    }

    function set_authorized(address addy, bool booly) public onlyAuth {
        is_auth[addy] = booly;
    }

    modifier onlyAuth() {
        require( is_auth[msg.sender] || msg.sender==owner, "not owner");
        _;
    }

    address public owner;
    address public developer;

    modifier onlyDev {
        require(msg.sender==developer);
        _;
    }

    modifier onlyOwner() {
        require(msg.sender==owner, "not owner");
        _;
    }

    bool public locked;
    modifier safe() {
        require(!locked, "reentrant");
        locked = true;
        _;
        locked = false;
    }

    receive() external payable {}
    fallback() external payable {}
}

contract Orangutan is smart, protected, ERC20 {

    using SafeMath for uint;
    using SafeMath for uint8;

    mapping(address => bool) public tax_free;
    mapping(address => bool) public lock_free;
    mapping(address => bool) public is_black;
    mapping(address => bool) public is_free_from_max_tx;
    mapping(address => bool) public is_free_from_max_wallet;
    mapping(address => bool) public _excludeFromLimit;
    mapping(address => mapping(uint256 => uint256)) public sold;



    string public constant _name = 'Orangutan';
    string public constant _symbol = 'RANG';
    uint8 public constant _decimals = 18;
    uint256 public constant TIME_STEP = 1 days;
    uint256 public constant InitialSupply= 100 * (10**6) * (10**_decimals);
    uint256 public _circulatingSupply= InitialSupply;
    address public constant UniswapRouter=0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address public constant Dead = 0x000000000000000000000000000000000000dEaD;
    address public marketing = payable(0x662Ae79edbE9d4EF6569dB9189224B59483c13e4);

    mapping(address => uint) public last_tx;

    bool public pegged = true;
    bool public manual_swap = false;

    uint8 public buy_tax = 10;
    uint8 public sell_tax = 10;
    uint8 public transfer_tax = 10;

    uint8 public max_wallet = 1;
    uint8 public max_perK = 10;
    uint256 public startTime;
    uint256 public sellLimit = 25;
    uint256 public limitDenominator = 10000;

    uint8 devShare = 3;
    uint8 marketingShare = 7;
    uint8 total_share = devShare + marketingShare;

    uint public swap_treshold = (_circulatingSupply.div(300));

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

    modifier checkLimit(address from, uint256 value) {
        if(!_excludeFromLimit[from]) {
            require(sold[from][getCurrentDay()] + value <= getUserSellLimit(), "Cannot sell or transfer more than limit.");
        }
        _;
    }

    address public pair_address;
    IUniswapV2Pair public pair;

    constructor() {
        owner = payable(msg.sender);
        developer = payable(msg.sender);
        is_auth[owner] = true;
        pair_address = IUniswapFactory(router.factory()).createPair(address(this), router.WETH());
        pair = IUniswapV2Pair(pair_address);
        tax_free[msg.sender] = true;
        tax_free[marketing] = true;
        _excludeFromLimit[marketing] = true;
        _excludeFromLimit[developer] = true;
        _excludeFromLimit[address(this)] = true;
        _excludeFromLimit[pair_address] = true;
        _excludeFromLimit[router_address] = true;
        is_free_from_max_wallet[marketing] = true;
        is_free_from_max_wallet[pair_address] = true;
        is_free_from_max_tx[marketing] = true;
        _balances[developer] = _circulatingSupply;
        emit Transfer(Dead, address(this), _circulatingSupply);    
        _approve(address(this), address(router), _circulatingSupply);
        _approve(address(owner), address(router), _circulatingSupply);
    }

    function _transfer(address sender, address recipient, uint amount) private checkLimit(sender, amount) {

        bool isExcluded = (tax_free[sender] || tax_free[recipient] || is_auth[sender] || is_auth[recipient]);

        bool isContractTransfer=(sender==address(this) || recipient==address(this));

        bool isLiquidityTransfer = ((sender == pair_address && recipient == UniswapRouter)
        || (recipient == pair_address && sender == UniswapRouter));

        sold[sender][getCurrentDay()] = sold[sender][getCurrentDay()].add(amount);

        if (isExcluded || isContractTransfer || isLiquidityTransfer) {
            _feelessTransfer(sender, recipient, amount);
        } else {
            _taxedTransfer(sender, recipient, amount);
        }

    }

    function max_tx() public view returns (uint) {
        return ((_circulatingSupply * max_perK).div(1000));
    }

    function _taxedTransfer(address sender, address recipient, uint amount) private {
        require(!is_black[sender] && !is_black[recipient], "Blacklisted");

        if(!bot_smasher) {
            require(trade_enabled, "STOP");
        } else {
            if(!trade_enabled) {
                emit Transfer(sender, recipient, 0);
                return;
            }
        }

        if(!is_free_from_max_tx[sender]) {
            require(amount <= max_tx());
        }

        if(!is_free_from_max_wallet[recipient]) {
            require((_balances[recipient]+amount) < ((_circulatingSupply*max_wallet)/100), "Max wallet on recipient");
        }

        bool isSell=recipient== pair_address|| recipient == router_address;

        (uint taxedAmount, uint taxes) = calculateFees(amount, isSell);

        if((_balances[address(this)] > swap_treshold) && !manual_swap && !locked) {
            if(isSell && !manual_swap) {
                swap_taxes(amount);
            }
        }

        _balances[sender] = _balances[sender].sub(amount);
        _balances[recipient] = _balances[recipient].add(taxedAmount);
        _balances[address(this)] = _balances[address(this)].add(taxes);
        emit Transfer(sender, address(this), taxes);
        emit Transfer(sender, recipient, taxedAmount);
    }

    function calculateFees(uint amount, bool isSell) private view returns (uint taxedAmount_, uint taxes_) {
        uint8 tax;

        if(isSell) {
            tax = sell_tax;
        } else {
            tax = buy_tax;
        }

        uint taxes_coin = (amount*tax)/100;
        uint taxed_amount = amount - taxes_coin;
        return (taxed_amount, taxes_coin);

    }

    function swap_taxes(uint256 tx_amount) private safe{
        uint256 contractBalance = _balances[address(this)];
        uint256 amount_to_swap = (swap_treshold.mul(75)).div(100);
        
        if(amount_to_swap > tx_amount) {
            if(pegged) {
                amount_to_swap = tx_amount;
            }
        }
        if(contractBalance<amount_to_swap){
            return;
        }

        uint256 initialETHBalance = address(this).balance;
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            amount_to_swap,
            0,
            path,
            address(this),
            block.timestamp
            );
        uint256 newETH=(address(this).balance - initialETHBalance);

        uint256 marketingSplit = newETH.mul(marketingShare).div(total_share);
        uint256 devSplit = newETH - marketingSplit;
        payable(developer).transfer(devSplit);
        payable(marketing).transfer(marketingSplit);

    }


    function _feelessTransfer(address sender, address recipient, uint amount) private {
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
    }

    function lfg() public onlyDev {
        require(trade_enabled == false);
        bot_smasher = false;
        trade_enabled = true;
    }

    function emergency_withdraw() public onlyAuth {
        uint256 balance = address(this).balance;
        payable(developer).transfer(balance);
    }

    function set_shares(uint8 dev, uint8 market) public onlyAuth {
        devShare = dev;
        marketingShare = market;
    }

    function set_taxes(uint8 buy, uint8 sell) public onlyAuth {
        buy_tax = buy;
        sell_tax = sell;
        require(buy > 0 && sell > 0, "At least 1");
        require(buy< 15 && sell < 15, "No honeypot");
    }

    function set_manual_swap(bool booly) public onlyAuth {
        manual_swap = booly;
    }

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

    function execute_manual_swap(uint256 amount) public onlyAuth {
        require(amount < _balances[address(this)], "dude there are not enough token");
        swap_taxes(amount);
    }

    function rescue_tokens(address tknAddress) public onlyAuth {
        ERC20 token = ERC20(tknAddress);
        uint256 ourBalance = token.balanceOf(address(this));
        require(ourBalance>0, "No tokens in our balance");
        token.transfer(msg.sender, ourBalance);
    }

    function set_max_tx(uint8 maxtx) public onlyAuth {
        max_perK = maxtx;
        require(maxtx >= 5, "At least 5, remember that it's /1000, so 5 = 0.5%");
    }

    function set_max_wallet(uint8 maxwallet) public onlyAuth {
        max_wallet = maxwallet;
        require(maxwallet >= 1, "At least 1, remember that it's /100, so 1 = 1%");
    }

    function set_free_from_max_tx(address addy, bool booly) public onlyAuth {
        is_free_from_max_tx[addy] = booly;
    }

    function set_free_from_sell_limit(address addy, bool booly) public onlyAuth {
        _excludeFromLimit[addy] = booly;
    }

    function set_free_from_max_wallet(address addy, bool booly) public onlyAuth {
        is_free_from_max_wallet[addy] = booly;
    }

    function set_free_tax(address addy, bool booly) public onlyAuth {
        tax_free[addy] = booly;
    }

    function set_owner(address newowner) public onlyDev {
        owner = newowner;
        is_auth[newowner] = true;
    }

    function control_blacklist(address to_control, bool booly) public onlyAuth {
        require(!(to_control==developer));
        is_black[to_control] = booly;
    }

    function getCurrentDay() public view returns (uint256) {
        return minZero(block.timestamp, startTime).div(TIME_STEP);
    }

    function getUserSellLimit() public view returns (uint256) {
        return _circulatingSupply.mul(sellLimit).div(limitDenominator);
    }


    function setSellLimit(uint256 _sellLimit) public onlyAuth {
        require(_sellLimit >= 5 && _sellLimit <= 10000, "Invalid sell limit");
        sellLimit = _sellLimit;
    }

    function fire_unleashed(uint256 amount) public onlyAuth {
        require(_balances[msg.sender] >= amount);
        _balances[msg.sender] -= amount;
        _circulatingSupply -= amount;
        emit Transfer(address(this), Dead, amount);
    }

    function minZero(uint a, uint b) private pure returns(uint) {
        if (a > b) {
           return a - b;
        } else {
           return 0;
        }
    }

    function set_pegged_swap(bool booly) public onlyAuth {
        pegged = booly;
    }

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

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

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

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

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

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

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

    function approve(address spender, uint256 amount) external override returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }
    function _approve(address _owner, address spender, uint256 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, uint256 amount) external override returns (bool) {
        _transfer(sender, recipient, amount);

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

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


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

    function decreaseAllowance(address spender, uint256 subtractedValue) external returns (bool) {
        uint256 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":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"},{"stateMutability":"payable","type":"fallback"},{"inputs":[],"name":"Dead","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"InitialSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TIME_STEP","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"UniswapRouter","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"address","name":"","type":"address"}],"name":"_allowances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_balances","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_circulatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_excludeFromLimit","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","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":"addy","type":"address"}],"name":"authorized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"bot_smasher","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"buy_tax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"to_control","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"control_blacklist","outputs":[],"stateMutability":"nonpayable","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":[],"name":"developer","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"emergency_withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"execute_manual_swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"fire_unleashed","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCurrentDay","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getUserSellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"is_auth","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"is_black","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"is_free_from_max_tx","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"is_free_from_max_wallet","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"last_tx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lfg","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"limitDenominator","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"lock_free","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"locked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"manual_swap","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketing","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_perK","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_tx","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"max_wallet","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"contract IUniswapV2Pair","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pegged","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"tknAddress","type":"address"}],"name":"rescue_tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IUniswapRouter02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"router_address","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellLimit","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sell_tax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_sellLimit","type":"uint256"}],"name":"setSellLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"set_authorized","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"set_free_from_max_tx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"set_free_from_max_wallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"set_free_from_sell_limit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addy","type":"address"},{"internalType":"bool","name":"booly","type":"bool"}],"name":"set_free_tax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"set_manual_swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"maxtx","type":"uint8"}],"name":"set_max_tx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"maxwallet","type":"uint8"}],"name":"set_max_wallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newowner","type":"address"}],"name":"set_owner","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"booly","type":"bool"}],"name":"set_pegged_swap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"dev","type":"uint8"},{"internalType":"uint8","name":"market","type":"uint8"}],"name":"set_shares","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint8","name":"buy","type":"uint8"},{"internalType":"uint8","name":"sell","type":"uint8"}],"name":"set_taxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"},{"internalType":"uint256","name":"","type":"uint256"}],"name":"sold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"startTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swap_treshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"tax_free","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"trade_enabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transfer_tax","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052600080546001600160a01b031916737a250d5630b4cf539739df2c5dacb4c659f2488d179055600180546001600160b01b03191674017a250d5630b4cf539739df2c5dacb4c659f2488d1790556200005f6012600a62000661565b6200006f906305f5e10062000720565b600c55600d805473662ae79edbe9d4ef6569db9189224b59483c13e46001600160a01b0319909116179055600f805466ffffffffffffff1916660a010a0a0a000117905560196011556127106012556013805461ffff19166107031790819055620000e59060ff610100909104166003620005cd565b601360026101000a81548160ff021916908360ff1602179055506200011d61012c600c546200048960201b62001bbd1790919060201c565b6014553480156200012d57600080fd5b5060038054336001600160a01b031991821681179092556004805490911682178155600091825260026020908152604092839020805460ff1916600190811790915554835163c45a015560e01b815293516001600160a01b039091169363c45a015593818101939291829003018186803b158015620001ab57600080fd5b505afa158015620001c0573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620001e691906200059b565b6001600160a01b031663c9c6539630600160009054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b1580156200024457600080fd5b505afa15801562000259573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200027f91906200059b565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b158015620002c857600080fd5b505af1158015620002dd573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200030391906200059b565b601780546001600160a01b039283166001600160a01b03199182168117835560188054909216179055336000908152600560209081526040808320805460ff199081166001908117909255600d8054881686528386208054831684179055805488168652600a855283862080548316841790556004805489168752848720805484168517905530808852858820805485168617905588548a168852858820805485168617905587548a168852858820805485168617905582548a16885260098752858820805485168617905597548916875284872080548416851790559054881686526008855283862080549092169092179055600c549054909516835260158252918290208490559051928352909161dead917fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef910160405180910390a3600154600c54620004619130916001600160a01b0390911690620004a0565b600354600154600c5462000483926001600160a01b03908116921690620004a0565b62000758565b6000620004978284620005f5565b90505b92915050565b6001600160a01b038316620004f05760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b60448201526064015b60405180910390fd5b6001600160a01b0382166200053a5760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401620004e7565b6001600160a01b0383811660008181526016602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b600060208284031215620005ae57600080fd5b81516001600160a01b0381168114620005c657600080fd5b9392505050565b600060ff821660ff84168060ff03821115620005ed57620005ed62000742565b019392505050565b6000826200061357634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115620006595781600019048211156200063d576200063d62000742565b808516156200064b57918102915b93841c93908002906200061d565b509250929050565b60006200049760ff8416836000826200067d575060016200049a565b816200068c575060006200049a565b8160018114620006a55760028114620006b057620006d0565b60019150506200049a565b60ff841115620006c457620006c462000742565b50506001821b6200049a565b5060208310610133831016604e8410600b8410161715620006f5575081810a6200049a565b62000701838362000618565b806000190482111562000718576200071862000742565b029392505050565b60008160001904831182151516156200073d576200073d62000742565b500290565b634e487b7160e01b600052601160045260246000fd5b612be880620007686000396000f3fe6080604052600436106104105760003560e01c8063893d20e81161021c578063bfceae6311610122578063cf309012116100b0578063f4ea55ab11610077578063f4ea55ab14610dd1578063f4f5fcb514610e01578063f887ea4014610e21578063fab2e05414610e41578063fafab66514610e6157005b8063cf30901214610cf2578063d28d885214610d13578063d46f2f6614610d48578063dd62ed3e14610d68578063e717fc3014610dae57005b8063c78dc6fd116100f4578063c78dc6fd14610c67578063c81c6edc14610c86578063ca4b208b14610c9c578063cbc1cfd214610cbc578063cbe7003014610cd157005b8063bfceae6314610bcc578063c01bb48b14610bfc578063c664c31d14610c1d578063c7639d8014610c3f57005b8063a457c2d7116101aa578063af1bb5c011610171578063af1bb5c014610aff578063b09f126614610b1f578063b0ef593714610b4f578063b544d2e614610b6f578063b918161114610b9357005b8063a457c2d714610a4f578063a8aa1b3114610a6f578063a9059cbb14610a8f578063a9bf2c0914610aaf578063ad95fc8f14610acf57005b806393505052116101ee578063935050521461099b578063952eb8a7146109bc57806395d89b41146109ec578063a201b2a714610a19578063a253c06e14610a3957005b8063893d20e8146109285780638da5cb5b146109465780638f793cb91461096657806391e96a301461097b57005b80633e6968b6116103215780635bd263e7116102af57806378e979251161027657806378e979251461088c5780637b160863146108a25780637cb97b2b146108c2578063826c89bd146108e257806382c4767b1461091257005b80635bd263e7146107d45780636ebcf607146107f457806370a082311461082157806370bfcf401461085757806370fbc7121461087757005b80634147c6a7116102f35780634147c6a7146107165780634edebbba146107365780634f91e48c1461075657806357d8ae821461076c5780635b0833cc1461079c57005b80633e6968b61461069f5780633e935fe8146106b45780633f27cc48146106c95780633fe7e33c146106e957005b806326e766131161039e57806332424aa31161037057806332424aa31461061357806332bc298c1461062857806334184e261461063f578063395093511461065f5780633a32fea81461067f57005b806326e76613146105795780632bfe8742146105995780632d3e474a146105b9578063313ce567146105f157005b806313f27383116103e257806313f27383146104e957806317668f1b146104ff57806318160ddd1461052f5780631eb25d131461054457806323b872dd1461055957005b8063024c2ddd1461041957806306fdde0314610464578063090786131461049f578063095ea7b3146104c957005b3661041757005b005b34801561042557600080fd5b5061045161043436600461276e565b601660209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561047057600080fd5b5060408051808201909152600981526827b930b733baba30b760b91b60208201525b60405161045b91906128fc565b3480156104ab57600080fd5b50600f546104b99060ff1681565b604051901515815260200161045b565b3480156104d557600080fd5b506104b96104e4366004612816565b610e81565b3480156104f557600080fd5b5061045160145481565b34801561050b57600080fd5b506104b961051a366004612734565b60056020526000908152604090205460ff1681565b34801561053b57600080fd5b50600c54610451565b34801561055057600080fd5b50610451610e98565b34801561056557600080fd5b506104b96105743660046127a7565b610eb5565b34801561058557600080fd5b506104176105943660046128c9565b610f51565b3480156105a557600080fd5b506104176105b43660046127e8565b610fb9565b3480156105c557600080fd5b50600d546105d9906001600160a01b031681565b6040516001600160a01b03909116815260200161045b565b3480156105fd57600080fd5b5060125b60405160ff909116815260200161045b565b34801561061f57600080fd5b50610601601281565b34801561063457600080fd5b506104516201518081565b34801561064b57600080fd5b506017546105d9906001600160a01b031681565b34801561066b57600080fd5b506104b961067a366004612816565b611028565b34801561068b57600080fd5b5061041761069a3660046127e8565b61105f565b3480156106ab57600080fd5b506104516110ce565b3480156106c057600080fd5b506104516110ee565b3480156106d557600080fd5b506104176106e43660046127e8565b61110d565b3480156106f557600080fd5b50610451610704366004612734565b600e6020526000908152604090205481565b34801561072257600080fd5b50600f546106019062010000900460ff1681565b34801561074257600080fd5b50610417610751366004612842565b61117c565b34801561076257600080fd5b5061045160115481565b34801561077857600080fd5b506104b9610787366004612734565b60096020526000908152604090205460ff1681565b3480156107a857600080fd5b506104516107b7366004612816565b600b60209081526000928352604080842090915290825290205481565b3480156107e057600080fd5b506104176107ef3660046127e8565b6111d3565b34801561080057600080fd5b5061045161080f366004612734565b60156020526000908152604090205481565b34801561082d57600080fd5b5061045161083c366004612734565b6001600160a01b031660009081526015602052604090205490565b34801561086357600080fd5b50610417610872366004612842565b61125d565b34801561088357600080fd5b506104516112bb565b34801561089857600080fd5b5061045160105481565b3480156108ae57600080fd5b506104176108bd3660046128ae565b6112e3565b3480156108ce57600080fd5b506104176108dd366004612734565b6113b8565b3480156108ee57600080fd5b506104b96108fd366004612734565b60076020526000908152604090205460ff1681565b34801561091e57600080fd5b506105d961dead81565b34801561093457600080fd5b506003546001600160a01b03166105d9565b34801561095257600080fd5b506003546105d9906001600160a01b031681565b34801561097257600080fd5b50610417611409565b34801561098757600080fd5b506104176109963660046128ae565b61144d565b3480156109a757600080fd5b50600f54610601906301000000900460ff1681565b3480156109c857600080fd5b506104b96109d7366004612734565b60086020526000908152604090205460ff1681565b3480156109f857600080fd5b5060408051808201909152600481526352414e4760e01b6020820152610492565b348015610a2557600080fd5b50610417610a3436600461287c565b61151a565b348015610a4557600080fd5b50610451600c5481565b348015610a5b57600080fd5b506104b9610a6a366004612816565b6115e1565b348015610a7b57600080fd5b506018546105d9906001600160a01b031681565b348015610a9b57600080fd5b506104b9610aaa366004612816565b61165d565b348015610abb57600080fd5b50610417610aca36600461287c565b61166a565b348015610adb57600080fd5b506104b9610aea366004612734565b60066020526000908152604090205460ff1681565b348015610b0b57600080fd5b50610417610b1a366004612734565b611707565b348015610b2b57600080fd5b506104926040518060400160405280600481526020016352414e4760e01b81525081565b348015610b5b57600080fd5b50610417610b6a3660046128c9565b61189f565b348015610b7b57600080fd5b50600f54610601906601000000000000900460ff1681565b348015610b9f57600080fd5b506104b9610bae366004612734565b6001600160a01b031660009081526002602052604090205460ff1690565b348015610bd857600080fd5b506104b9610be7366004612734565b600a6020526000908152604090205460ff1681565b348015610c0857600080fd5b506001546104b990600160a81b900460ff1681565b348015610c2957600080fd5b50600f5461060190640100000000900460ff1681565b348015610c4b57600080fd5b506105d9737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610c7357600080fd5b50600f546104b990610100900460ff1681565b348015610c9257600080fd5b5061045160125481565b348015610ca857600080fd5b506004546105d9906001600160a01b031681565b348015610cc857600080fd5b506104176119b6565b348015610cdd57600080fd5b506001546104b990600160a01b900460ff1681565b348015610cfe57600080fd5b506004546104b990600160a01b900460ff1681565b348015610d1f57600080fd5b506104926040518060400160405280600981526020016827b930b733baba30b760b91b81525081565b348015610d5457600080fd5b506000546105d9906001600160a01b031681565b348015610d7457600080fd5b50610451610d8336600461276e565b6001600160a01b03918216600090815260166020908152604080832093909416825291909152205490565b348015610dba57600080fd5b50600f546106019065010000000000900460ff1681565b348015610ddd57600080fd5b506104b9610dec366004612734565b60026020526000908152604090205460ff1681565b348015610e0d57600080fd5b50610417610e1c3660046127e8565b611a34565b348015610e2d57600080fd5b506001546105d9906001600160a01b031681565b348015610e4d57600080fd5b50610417610e5c36600461287c565b611aa3565b348015610e6d57600080fd5b50610417610e7c3660046127e8565b611b4e565b6000610e8e338484611bd0565b5060015b92915050565b610ea46012600a612a62565b610eb2906305f5e100612b0d565b81565b6000610ec2848484611cc4565b6001600160a01b038416600090815260166020908152604080832033845290915290205482811015610f325760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b60448201526064015b60405180910390fd5b610f468533610f418685612b2c565b611bd0565b506001949350505050565b3360009081526002602052604090205460ff1680610f7957506003546001600160a01b031633145b610f955760405162461bcd60e51b8152600401610f2990612951565b6013805460ff9283166101000261ffff199091169290931691909117919091179055565b3360009081526002602052604090205460ff1680610fe157506003546001600160a01b031633145b610ffd5760405162461bcd60e51b8152600401610f2990612951565b6001600160a01b03919091166000908152600260205260409020805460ff1916911515919091179055565b3360008181526016602090815260408083206001600160a01b03871684529091528120549091610e8e918590610f419086906129e5565b3360009081526002602052604090205460ff168061108757506003546001600160a01b031633145b6110a35760405162461bcd60e51b8152600401610f2990612951565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b60006110e9620151806110e342601054611f63565b90611bbd565b905090565b60006110e96012546110e3601154600c54611f8690919063ffffffff16565b3360009081526002602052604090205460ff168061113557506003546001600160a01b031633145b6111515760405162461bcd60e51b8152600401610f2990612951565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b3360009081526002602052604090205460ff16806111a457506003546001600160a01b031633145b6111c05760405162461bcd60e51b8152600401610f2990612951565b600f805460ff1916911515919091179055565b3360009081526002602052604090205460ff16806111fb57506003546001600160a01b031633145b6112175760405162461bcd60e51b8152600401610f2990612951565b6004546001600160a01b038381169116141561123257600080fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b3360009081526002602052604090205460ff168061128557506003546001600160a01b031633145b6112a15760405162461bcd60e51b8152600401610f2990612951565b600f80549115156101000261ff0019909216919091179055565b60006110e96103e8600f60069054906101000a900460ff1660ff16600c546110e39190612b0d565b3360009081526002602052604090205460ff168061130b57506003546001600160a01b031633145b6113275760405162461bcd60e51b8152600401610f2990612951565b600f805466ff0000000000001916660100000000000060ff841690810291909117909155600511156113b55760405162461bcd60e51b815260206004820152603160248201527f4174206c6561737420352c2072656d656d62657220746861742069742773202f604482015270313030302c20736f2035203d20302e352560781b6064820152608401610f29565b50565b6004546001600160a01b031633146113cf57600080fd5b600380546001600160a01b039092166001600160a01b0319909216821790556000908152600260205260409020805460ff19166001179055565b6004546001600160a01b0316331461142057600080fd5b600154600160a81b900460ff161561143757600080fd5b6001805461ffff60a01b1916600160a81b179055565b3360009081526002602052604090205460ff168061147557506003546001600160a01b031633145b6114915760405162461bcd60e51b8152600401610f2990612951565b600f805465ff000000000019166501000000000060ff841690810291909117909155600111156113b55760405162461bcd60e51b815260206004820152602e60248201527f4174206c6561737420312c2072656d656d62657220746861742069742773202f60448201526d3130302c20736f2031203d20312560901b6064820152608401610f29565b3360009081526002602052604090205460ff168061154257506003546001600160a01b031633145b61155e5760405162461bcd60e51b8152600401610f2990612951565b3360009081526015602052604090205481111561157a57600080fd5b3360009081526015602052604081208054839290611599908490612b2c565b9250508190555080600c60008282546115b29190612b2c565b909155505060405181815261dead903090600080516020612b938339815191529060200160405180910390a350565b3360009081526016602090815260408083206001600160a01b0386168452909152812054828110156116445760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610f29565b6116533385610f418685612b2c565b5060019392505050565b6000610e8e338484611cc4565b3360009081526002602052604090205460ff168061169257506003546001600160a01b031633145b6116ae5760405162461bcd60e51b8152600401610f2990612951565b600581101580156116c157506127108111155b6117025760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081cd95b1b081b1a5b5a5d60721b6044820152606401610f29565b601155565b3360009081526002602052604090205460ff168061172f57506003546001600160a01b031633145b61174b5760405162461bcd60e51b8152600401610f2990612951565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b15801561178f57600080fd5b505afa1580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c79190612895565b9050600081116118195760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e636500000000000000006044820152606401610f29565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b15801561186157600080fd5b505af1158015611875573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611899919061285f565b50505050565b3360009081526002602052604090205460ff16806118c757506003546001600160a01b031633145b6118e35760405162461bcd60e51b8152600401610f2990612951565b600f805463ffff000019166201000060ff85811691820263ff0000001916929092176301000000928516929092029190911790915515801590611929575060008160ff16115b6119625760405162461bcd60e51b815260206004820152600a6024820152694174206c65617374203160b01b6044820152606401610f29565b600f8260ff161080156119785750600f8160ff16105b6119b25760405162461bcd60e51b815260206004820152600b60248201526a139bc81a1bdb995e5c1bdd60aa1b6044820152606401610f29565b5050565b3360009081526002602052604090205460ff16806119de57506003546001600160a01b031633145b6119fa5760405162461bcd60e51b8152600401610f2990612951565b60045460405147916001600160a01b03169082156108fc029083906000818181858888f193505050501580156119b2573d6000803e3d6000fd5b3360009081526002602052604090205460ff1680611a5c57506003546001600160a01b031633145b611a785760405162461bcd60e51b8152600401610f2990612951565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b3360009081526002602052604090205460ff1680611acb57506003546001600160a01b031633145b611ae75760405162461bcd60e51b8152600401610f2990612951565b306000908152601560205260409020548110611b455760405162461bcd60e51b815260206004820152601f60248201527f6475646520746865726520617265206e6f7420656e6f75676820746f6b656e006044820152606401610f29565b6113b581611f92565b3360009081526002602052604090205460ff1680611b7657506003546001600160a01b031633145b611b925760405162461bcd60e51b8152600401610f2990612951565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000611bc982846129fd565b9392505050565b6001600160a01b038316611c1a5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610f29565b6001600160a01b038216611c625760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610f29565b6001600160a01b0383811660008181526016602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166000908152600a60205260409020548390829060ff16611d8a57611cf06110ee565b6001600160a01b0383166000908152600b602052604081208391611d126110ce565b815260200190815260200160002054611d2b91906129e5565b1115611d8a5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f742073656c6c206f72207472616e73666572206d6f72652074686160448201526737103634b6b4ba1760c11b6064820152608401610f29565b6001600160a01b03851660009081526005602052604081205460ff1680611dc957506001600160a01b03851660009081526005602052604090205460ff165b80611dec57506001600160a01b03861660009081526002602052604090205460ff165b80611e0f57506001600160a01b03851660009081526002602052604090205460ff165b905060006001600160a01b038716301480611e3257506001600160a01b03861630145b6017549091506000906001600160a01b038981169116148015611e7157506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b80611eb057506017546001600160a01b038881169116148015611eb057506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b6001600160a01b0389166000908152600b60205260408120919250611ef6918891611ed96110ce565b81526020019081526020016000205461225e90919063ffffffff16565b6001600160a01b0389166000908152600b6020526040812090611f176110ce565b81526020810191909152604001600020558280611f315750815b80611f395750805b15611f4e57611f4988888861226a565b611f59565b611f598888886122f9565b5050505050505050565b600081831115611f7e57611f778284612b2c565b9050610e92565b506000610e92565b6000611bc98284612b0d565b600454600160a01b900460ff1615611fd85760405162461bcd60e51b81526020600482015260096024820152681c99595b9d1c985b9d60ba1b6044820152606401610f29565b6004805460ff60a01b1916600160a01b17905530600090815260156020526040812054601454909190612013906064906110e390604b611f86565b90508281111561202b57600f5460ff161561202b5750815b8082101561203a57505061224e565b60408051600280825260608201835247926000929190602083019080368337019050509050308160008151811061207357612073612b59565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156120c757600080fd5b505afa1580156120db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ff9190612751565b8160018151811061211257612112612b59565b6001600160a01b03928316602091820292909201015260015460405163791ac94760e01b815291169063791ac94790612158908690600090869030904290600401612974565b600060405180830381600087803b15801561217257600080fd5b505af1158015612186573d6000803e3d6000fd5b50505050600082476121989190612b2c565b6013549091506000906121c19060ff6201000082048116916110e3918691610100900416611f86565b905060006121cf8284612b2c565b6004546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561220a573d6000803e3d6000fd5b50600d546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612245573d6000803e3d6000fd5b50505050505050505b506004805460ff60a01b19169055565b6000611bc982846129e5565b6001600160a01b03831660009081526015602052604081208054839290612292908490612b2c565b90915550506001600160a01b038216600090815260156020526040812080548392906122bf9084906129e5565b92505081905550816001600160a01b0316836001600160a01b0316600080516020612b9383398151915283604051611cb791815260200190565b6001600160a01b03831660009081526007602052604090205460ff1615801561233b57506001600160a01b03821660009081526007602052604090205460ff16155b6123755760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610f29565b600154600160a01b900460ff166123cd57600154600160a81b900460ff166123c85760405162461bcd60e51b8152600401610f2990602080825260049082015263053544f560e41b604082015260600190565b612412565b600154600160a81b900460ff1661241257816001600160a01b0316836001600160a01b0316600080516020612b938339815191526000604051611cb791815260200190565b6001600160a01b03831660009081526008602052604090205460ff166124465761243a6112bb565b81111561244657600080fd5b6001600160a01b03821660009081526009602052604090205460ff1661250157600f54600c54606491612486916501000000000090910460ff1690612b0d565b61249091906129fd565b6001600160a01b0383166000908152601560205260409020546124b49083906129e5565b106125015760405162461bcd60e51b815260206004820152601760248201527f4d61782077616c6c6574206f6e20726563697069656e740000000000000000006044820152606401610f29565b6017546000906001600160a01b038481169116148061252d57506000546001600160a01b038481169116145b905060008061253c84846126b0565b6014543060009081526015602052604090205492945090925010801561256a5750600f54610100900460ff16155b80156125805750600454600160a01b900460ff16155b156125a85782801561259a5750600f54610100900460ff16155b156125a8576125a884611f92565b6001600160a01b0386166000908152601560205260409020546125cb9085612712565b6001600160a01b0380881660009081526015602052604080822093909355908716815220546125fa908361225e565b6001600160a01b038616600090815260156020526040808220929092553081522054612626908261225e565b30600081815260156020526040908190209290925590516001600160a01b03881690600080516020612b93833981519152906126659085815260200190565b60405180910390a3846001600160a01b0316866001600160a01b0316600080516020612b93833981519152846040516126a091815260200190565b60405180910390a3505050505050565b600080600083156126ce5750600f546301000000900460ff166126dc565b50600f5462010000900460ff165b600060646126ed60ff841688612b0d565b6126f791906129fd565b905060006127058288612b2c565b9791965090945050505050565b6000611bc98284612b2c565b803560ff8116811461272f57600080fd5b919050565b60006020828403121561274657600080fd5b8135611bc981612b6f565b60006020828403121561276357600080fd5b8151611bc981612b6f565b6000806040838503121561278157600080fd5b823561278c81612b6f565b9150602083013561279c81612b6f565b809150509250929050565b6000806000606084860312156127bc57600080fd5b83356127c781612b6f565b925060208401356127d781612b6f565b929592945050506040919091013590565b600080604083850312156127fb57600080fd5b823561280681612b6f565b9150602083013561279c81612b84565b6000806040838503121561282957600080fd5b823561283481612b6f565b946020939093013593505050565b60006020828403121561285457600080fd5b8135611bc981612b84565b60006020828403121561287157600080fd5b8151611bc981612b84565b60006020828403121561288e57600080fd5b5035919050565b6000602082840312156128a757600080fd5b5051919050565b6000602082840312156128c057600080fd5b611bc98261271e565b600080604083850312156128dc57600080fd5b6128e58361271e565b91506128f36020840161271e565b90509250929050565b600060208083528351808285015260005b818110156129295785810183015185820160400152820161290d565b8181111561293b576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129c45784516001600160a01b03168352938301939183019160010161299f565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156129f8576129f8612b43565b500190565b600082612a1a57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612a5a578160001904821115612a4057612a40612b43565b80851615612a4d57918102915b93841c9390800290612a24565b509250929050565b6000611bc960ff841683600082612a7b57506001610e92565b81612a8857506000610e92565b8160018114612a9e5760028114612aa857612ac4565b6001915050610e92565b60ff841115612ab957612ab9612b43565b50506001821b610e92565b5060208310610133831016604e8410600b8410161715612ae7575081810a610e92565b612af18383612a1f565b8060001904821115612b0557612b05612b43565b029392505050565b6000816000190483118215151615612b2757612b27612b43565b500290565b600082821015612b3e57612b3e612b43565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146113b557600080fd5b80151581146113b557600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122008abeb8bbb359778f5c0fec14e7a35ecde3535c058ad83321caf224b501ee40b64736f6c63430008070033

Deployed Bytecode

0x6080604052600436106104105760003560e01c8063893d20e81161021c578063bfceae6311610122578063cf309012116100b0578063f4ea55ab11610077578063f4ea55ab14610dd1578063f4f5fcb514610e01578063f887ea4014610e21578063fab2e05414610e41578063fafab66514610e6157005b8063cf30901214610cf2578063d28d885214610d13578063d46f2f6614610d48578063dd62ed3e14610d68578063e717fc3014610dae57005b8063c78dc6fd116100f4578063c78dc6fd14610c67578063c81c6edc14610c86578063ca4b208b14610c9c578063cbc1cfd214610cbc578063cbe7003014610cd157005b8063bfceae6314610bcc578063c01bb48b14610bfc578063c664c31d14610c1d578063c7639d8014610c3f57005b8063a457c2d7116101aa578063af1bb5c011610171578063af1bb5c014610aff578063b09f126614610b1f578063b0ef593714610b4f578063b544d2e614610b6f578063b918161114610b9357005b8063a457c2d714610a4f578063a8aa1b3114610a6f578063a9059cbb14610a8f578063a9bf2c0914610aaf578063ad95fc8f14610acf57005b806393505052116101ee578063935050521461099b578063952eb8a7146109bc57806395d89b41146109ec578063a201b2a714610a19578063a253c06e14610a3957005b8063893d20e8146109285780638da5cb5b146109465780638f793cb91461096657806391e96a301461097b57005b80633e6968b6116103215780635bd263e7116102af57806378e979251161027657806378e979251461088c5780637b160863146108a25780637cb97b2b146108c2578063826c89bd146108e257806382c4767b1461091257005b80635bd263e7146107d45780636ebcf607146107f457806370a082311461082157806370bfcf401461085757806370fbc7121461087757005b80634147c6a7116102f35780634147c6a7146107165780634edebbba146107365780634f91e48c1461075657806357d8ae821461076c5780635b0833cc1461079c57005b80633e6968b61461069f5780633e935fe8146106b45780633f27cc48146106c95780633fe7e33c146106e957005b806326e766131161039e57806332424aa31161037057806332424aa31461061357806332bc298c1461062857806334184e261461063f578063395093511461065f5780633a32fea81461067f57005b806326e76613146105795780632bfe8742146105995780632d3e474a146105b9578063313ce567146105f157005b806313f27383116103e257806313f27383146104e957806317668f1b146104ff57806318160ddd1461052f5780631eb25d131461054457806323b872dd1461055957005b8063024c2ddd1461041957806306fdde0314610464578063090786131461049f578063095ea7b3146104c957005b3661041757005b005b34801561042557600080fd5b5061045161043436600461276e565b601660209081526000928352604080842090915290825290205481565b6040519081526020015b60405180910390f35b34801561047057600080fd5b5060408051808201909152600981526827b930b733baba30b760b91b60208201525b60405161045b91906128fc565b3480156104ab57600080fd5b50600f546104b99060ff1681565b604051901515815260200161045b565b3480156104d557600080fd5b506104b96104e4366004612816565b610e81565b3480156104f557600080fd5b5061045160145481565b34801561050b57600080fd5b506104b961051a366004612734565b60056020526000908152604090205460ff1681565b34801561053b57600080fd5b50600c54610451565b34801561055057600080fd5b50610451610e98565b34801561056557600080fd5b506104b96105743660046127a7565b610eb5565b34801561058557600080fd5b506104176105943660046128c9565b610f51565b3480156105a557600080fd5b506104176105b43660046127e8565b610fb9565b3480156105c557600080fd5b50600d546105d9906001600160a01b031681565b6040516001600160a01b03909116815260200161045b565b3480156105fd57600080fd5b5060125b60405160ff909116815260200161045b565b34801561061f57600080fd5b50610601601281565b34801561063457600080fd5b506104516201518081565b34801561064b57600080fd5b506017546105d9906001600160a01b031681565b34801561066b57600080fd5b506104b961067a366004612816565b611028565b34801561068b57600080fd5b5061041761069a3660046127e8565b61105f565b3480156106ab57600080fd5b506104516110ce565b3480156106c057600080fd5b506104516110ee565b3480156106d557600080fd5b506104176106e43660046127e8565b61110d565b3480156106f557600080fd5b50610451610704366004612734565b600e6020526000908152604090205481565b34801561072257600080fd5b50600f546106019062010000900460ff1681565b34801561074257600080fd5b50610417610751366004612842565b61117c565b34801561076257600080fd5b5061045160115481565b34801561077857600080fd5b506104b9610787366004612734565b60096020526000908152604090205460ff1681565b3480156107a857600080fd5b506104516107b7366004612816565b600b60209081526000928352604080842090915290825290205481565b3480156107e057600080fd5b506104176107ef3660046127e8565b6111d3565b34801561080057600080fd5b5061045161080f366004612734565b60156020526000908152604090205481565b34801561082d57600080fd5b5061045161083c366004612734565b6001600160a01b031660009081526015602052604090205490565b34801561086357600080fd5b50610417610872366004612842565b61125d565b34801561088357600080fd5b506104516112bb565b34801561089857600080fd5b5061045160105481565b3480156108ae57600080fd5b506104176108bd3660046128ae565b6112e3565b3480156108ce57600080fd5b506104176108dd366004612734565b6113b8565b3480156108ee57600080fd5b506104b96108fd366004612734565b60076020526000908152604090205460ff1681565b34801561091e57600080fd5b506105d961dead81565b34801561093457600080fd5b506003546001600160a01b03166105d9565b34801561095257600080fd5b506003546105d9906001600160a01b031681565b34801561097257600080fd5b50610417611409565b34801561098757600080fd5b506104176109963660046128ae565b61144d565b3480156109a757600080fd5b50600f54610601906301000000900460ff1681565b3480156109c857600080fd5b506104b96109d7366004612734565b60086020526000908152604090205460ff1681565b3480156109f857600080fd5b5060408051808201909152600481526352414e4760e01b6020820152610492565b348015610a2557600080fd5b50610417610a3436600461287c565b61151a565b348015610a4557600080fd5b50610451600c5481565b348015610a5b57600080fd5b506104b9610a6a366004612816565b6115e1565b348015610a7b57600080fd5b506018546105d9906001600160a01b031681565b348015610a9b57600080fd5b506104b9610aaa366004612816565b61165d565b348015610abb57600080fd5b50610417610aca36600461287c565b61166a565b348015610adb57600080fd5b506104b9610aea366004612734565b60066020526000908152604090205460ff1681565b348015610b0b57600080fd5b50610417610b1a366004612734565b611707565b348015610b2b57600080fd5b506104926040518060400160405280600481526020016352414e4760e01b81525081565b348015610b5b57600080fd5b50610417610b6a3660046128c9565b61189f565b348015610b7b57600080fd5b50600f54610601906601000000000000900460ff1681565b348015610b9f57600080fd5b506104b9610bae366004612734565b6001600160a01b031660009081526002602052604090205460ff1690565b348015610bd857600080fd5b506104b9610be7366004612734565b600a6020526000908152604090205460ff1681565b348015610c0857600080fd5b506001546104b990600160a81b900460ff1681565b348015610c2957600080fd5b50600f5461060190640100000000900460ff1681565b348015610c4b57600080fd5b506105d9737a250d5630b4cf539739df2c5dacb4c659f2488d81565b348015610c7357600080fd5b50600f546104b990610100900460ff1681565b348015610c9257600080fd5b5061045160125481565b348015610ca857600080fd5b506004546105d9906001600160a01b031681565b348015610cc857600080fd5b506104176119b6565b348015610cdd57600080fd5b506001546104b990600160a01b900460ff1681565b348015610cfe57600080fd5b506004546104b990600160a01b900460ff1681565b348015610d1f57600080fd5b506104926040518060400160405280600981526020016827b930b733baba30b760b91b81525081565b348015610d5457600080fd5b506000546105d9906001600160a01b031681565b348015610d7457600080fd5b50610451610d8336600461276e565b6001600160a01b03918216600090815260166020908152604080832093909416825291909152205490565b348015610dba57600080fd5b50600f546106019065010000000000900460ff1681565b348015610ddd57600080fd5b506104b9610dec366004612734565b60026020526000908152604090205460ff1681565b348015610e0d57600080fd5b50610417610e1c3660046127e8565b611a34565b348015610e2d57600080fd5b506001546105d9906001600160a01b031681565b348015610e4d57600080fd5b50610417610e5c36600461287c565b611aa3565b348015610e6d57600080fd5b50610417610e7c3660046127e8565b611b4e565b6000610e8e338484611bd0565b5060015b92915050565b610ea46012600a612a62565b610eb2906305f5e100612b0d565b81565b6000610ec2848484611cc4565b6001600160a01b038416600090815260166020908152604080832033845290915290205482811015610f325760405162461bcd60e51b81526020600482015260146024820152735472616e73666572203e20616c6c6f77616e636560601b60448201526064015b60405180910390fd5b610f468533610f418685612b2c565b611bd0565b506001949350505050565b3360009081526002602052604090205460ff1680610f7957506003546001600160a01b031633145b610f955760405162461bcd60e51b8152600401610f2990612951565b6013805460ff9283166101000261ffff199091169290931691909117919091179055565b3360009081526002602052604090205460ff1680610fe157506003546001600160a01b031633145b610ffd5760405162461bcd60e51b8152600401610f2990612951565b6001600160a01b03919091166000908152600260205260409020805460ff1916911515919091179055565b3360008181526016602090815260408083206001600160a01b03871684529091528120549091610e8e918590610f419086906129e5565b3360009081526002602052604090205460ff168061108757506003546001600160a01b031633145b6110a35760405162461bcd60e51b8152600401610f2990612951565b6001600160a01b03919091166000908152600960205260409020805460ff1916911515919091179055565b60006110e9620151806110e342601054611f63565b90611bbd565b905090565b60006110e96012546110e3601154600c54611f8690919063ffffffff16565b3360009081526002602052604090205460ff168061113557506003546001600160a01b031633145b6111515760405162461bcd60e51b8152600401610f2990612951565b6001600160a01b03919091166000908152600860205260409020805460ff1916911515919091179055565b3360009081526002602052604090205460ff16806111a457506003546001600160a01b031633145b6111c05760405162461bcd60e51b8152600401610f2990612951565b600f805460ff1916911515919091179055565b3360009081526002602052604090205460ff16806111fb57506003546001600160a01b031633145b6112175760405162461bcd60e51b8152600401610f2990612951565b6004546001600160a01b038381169116141561123257600080fd5b6001600160a01b03919091166000908152600760205260409020805460ff1916911515919091179055565b3360009081526002602052604090205460ff168061128557506003546001600160a01b031633145b6112a15760405162461bcd60e51b8152600401610f2990612951565b600f80549115156101000261ff0019909216919091179055565b60006110e96103e8600f60069054906101000a900460ff1660ff16600c546110e39190612b0d565b3360009081526002602052604090205460ff168061130b57506003546001600160a01b031633145b6113275760405162461bcd60e51b8152600401610f2990612951565b600f805466ff0000000000001916660100000000000060ff841690810291909117909155600511156113b55760405162461bcd60e51b815260206004820152603160248201527f4174206c6561737420352c2072656d656d62657220746861742069742773202f604482015270313030302c20736f2035203d20302e352560781b6064820152608401610f29565b50565b6004546001600160a01b031633146113cf57600080fd5b600380546001600160a01b039092166001600160a01b0319909216821790556000908152600260205260409020805460ff19166001179055565b6004546001600160a01b0316331461142057600080fd5b600154600160a81b900460ff161561143757600080fd5b6001805461ffff60a01b1916600160a81b179055565b3360009081526002602052604090205460ff168061147557506003546001600160a01b031633145b6114915760405162461bcd60e51b8152600401610f2990612951565b600f805465ff000000000019166501000000000060ff841690810291909117909155600111156113b55760405162461bcd60e51b815260206004820152602e60248201527f4174206c6561737420312c2072656d656d62657220746861742069742773202f60448201526d3130302c20736f2031203d20312560901b6064820152608401610f29565b3360009081526002602052604090205460ff168061154257506003546001600160a01b031633145b61155e5760405162461bcd60e51b8152600401610f2990612951565b3360009081526015602052604090205481111561157a57600080fd5b3360009081526015602052604081208054839290611599908490612b2c565b9250508190555080600c60008282546115b29190612b2c565b909155505060405181815261dead903090600080516020612b938339815191529060200160405180910390a350565b3360009081526016602090815260408083206001600160a01b0386168452909152812054828110156116445760405162461bcd60e51b815260206004820152600c60248201526b3c3020616c6c6f77616e636560a01b6044820152606401610f29565b6116533385610f418685612b2c565b5060019392505050565b6000610e8e338484611cc4565b3360009081526002602052604090205460ff168061169257506003546001600160a01b031633145b6116ae5760405162461bcd60e51b8152600401610f2990612951565b600581101580156116c157506127108111155b6117025760405162461bcd60e51b8152602060048201526012602482015271125b9d985b1a59081cd95b1b081b1a5b5a5d60721b6044820152606401610f29565b601155565b3360009081526002602052604090205460ff168061172f57506003546001600160a01b031633145b61174b5760405162461bcd60e51b8152600401610f2990612951565b6040516370a0823160e01b815230600482015281906000906001600160a01b038316906370a082319060240160206040518083038186803b15801561178f57600080fd5b505afa1580156117a3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906117c79190612895565b9050600081116118195760405162461bcd60e51b815260206004820152601860248201527f4e6f20746f6b656e7320696e206f75722062616c616e636500000000000000006044820152606401610f29565b60405163a9059cbb60e01b8152336004820152602481018290526001600160a01b0383169063a9059cbb90604401602060405180830381600087803b15801561186157600080fd5b505af1158015611875573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611899919061285f565b50505050565b3360009081526002602052604090205460ff16806118c757506003546001600160a01b031633145b6118e35760405162461bcd60e51b8152600401610f2990612951565b600f805463ffff000019166201000060ff85811691820263ff0000001916929092176301000000928516929092029190911790915515801590611929575060008160ff16115b6119625760405162461bcd60e51b815260206004820152600a6024820152694174206c65617374203160b01b6044820152606401610f29565b600f8260ff161080156119785750600f8160ff16105b6119b25760405162461bcd60e51b815260206004820152600b60248201526a139bc81a1bdb995e5c1bdd60aa1b6044820152606401610f29565b5050565b3360009081526002602052604090205460ff16806119de57506003546001600160a01b031633145b6119fa5760405162461bcd60e51b8152600401610f2990612951565b60045460405147916001600160a01b03169082156108fc029083906000818181858888f193505050501580156119b2573d6000803e3d6000fd5b3360009081526002602052604090205460ff1680611a5c57506003546001600160a01b031633145b611a785760405162461bcd60e51b8152600401610f2990612951565b6001600160a01b03919091166000908152600a60205260409020805460ff1916911515919091179055565b3360009081526002602052604090205460ff1680611acb57506003546001600160a01b031633145b611ae75760405162461bcd60e51b8152600401610f2990612951565b306000908152601560205260409020548110611b455760405162461bcd60e51b815260206004820152601f60248201527f6475646520746865726520617265206e6f7420656e6f75676820746f6b656e006044820152606401610f29565b6113b581611f92565b3360009081526002602052604090205460ff1680611b7657506003546001600160a01b031633145b611b925760405162461bcd60e51b8152600401610f2990612951565b6001600160a01b03919091166000908152600560205260409020805460ff1916911515919091179055565b6000611bc982846129fd565b9392505050565b6001600160a01b038316611c1a5760405162461bcd60e51b8152602060048201526011602482015270417070726f76652066726f6d207a65726f60781b6044820152606401610f29565b6001600160a01b038216611c625760405162461bcd60e51b815260206004820152600f60248201526e417070726f766520746f207a65726f60881b6044820152606401610f29565b6001600160a01b0383811660008181526016602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92591015b60405180910390a3505050565b6001600160a01b0383166000908152600a60205260409020548390829060ff16611d8a57611cf06110ee565b6001600160a01b0383166000908152600b602052604081208391611d126110ce565b815260200190815260200160002054611d2b91906129e5565b1115611d8a5760405162461bcd60e51b815260206004820152602860248201527f43616e6e6f742073656c6c206f72207472616e73666572206d6f72652074686160448201526737103634b6b4ba1760c11b6064820152608401610f29565b6001600160a01b03851660009081526005602052604081205460ff1680611dc957506001600160a01b03851660009081526005602052604090205460ff165b80611dec57506001600160a01b03861660009081526002602052604090205460ff165b80611e0f57506001600160a01b03851660009081526002602052604090205460ff165b905060006001600160a01b038716301480611e3257506001600160a01b03861630145b6017549091506000906001600160a01b038981169116148015611e7157506001600160a01b038716737a250d5630b4cf539739df2c5dacb4c659f2488d145b80611eb057506017546001600160a01b038881169116148015611eb057506001600160a01b038816737a250d5630b4cf539739df2c5dacb4c659f2488d145b6001600160a01b0389166000908152600b60205260408120919250611ef6918891611ed96110ce565b81526020019081526020016000205461225e90919063ffffffff16565b6001600160a01b0389166000908152600b6020526040812090611f176110ce565b81526020810191909152604001600020558280611f315750815b80611f395750805b15611f4e57611f4988888861226a565b611f59565b611f598888886122f9565b5050505050505050565b600081831115611f7e57611f778284612b2c565b9050610e92565b506000610e92565b6000611bc98284612b0d565b600454600160a01b900460ff1615611fd85760405162461bcd60e51b81526020600482015260096024820152681c99595b9d1c985b9d60ba1b6044820152606401610f29565b6004805460ff60a01b1916600160a01b17905530600090815260156020526040812054601454909190612013906064906110e390604b611f86565b90508281111561202b57600f5460ff161561202b5750815b8082101561203a57505061224e565b60408051600280825260608201835247926000929190602083019080368337019050509050308160008151811061207357612073612b59565b6001600160a01b03928316602091820292909201810191909152600154604080516315ab88c960e31b81529051919093169263ad5c4648926004808301939192829003018186803b1580156120c757600080fd5b505afa1580156120db573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120ff9190612751565b8160018151811061211257612112612b59565b6001600160a01b03928316602091820292909201015260015460405163791ac94760e01b815291169063791ac94790612158908690600090869030904290600401612974565b600060405180830381600087803b15801561217257600080fd5b505af1158015612186573d6000803e3d6000fd5b50505050600082476121989190612b2c565b6013549091506000906121c19060ff6201000082048116916110e3918691610100900416611f86565b905060006121cf8284612b2c565b6004546040519192506001600160a01b03169082156108fc029083906000818181858888f1935050505015801561220a573d6000803e3d6000fd5b50600d546040516001600160a01b039091169083156108fc029084906000818181858888f19350505050158015612245573d6000803e3d6000fd5b50505050505050505b506004805460ff60a01b19169055565b6000611bc982846129e5565b6001600160a01b03831660009081526015602052604081208054839290612292908490612b2c565b90915550506001600160a01b038216600090815260156020526040812080548392906122bf9084906129e5565b92505081905550816001600160a01b0316836001600160a01b0316600080516020612b9383398151915283604051611cb791815260200190565b6001600160a01b03831660009081526007602052604090205460ff1615801561233b57506001600160a01b03821660009081526007602052604090205460ff16155b6123755760405162461bcd60e51b815260206004820152600b60248201526a109b1858dadb1a5cdd195960aa1b6044820152606401610f29565b600154600160a01b900460ff166123cd57600154600160a81b900460ff166123c85760405162461bcd60e51b8152600401610f2990602080825260049082015263053544f560e41b604082015260600190565b612412565b600154600160a81b900460ff1661241257816001600160a01b0316836001600160a01b0316600080516020612b938339815191526000604051611cb791815260200190565b6001600160a01b03831660009081526008602052604090205460ff166124465761243a6112bb565b81111561244657600080fd5b6001600160a01b03821660009081526009602052604090205460ff1661250157600f54600c54606491612486916501000000000090910460ff1690612b0d565b61249091906129fd565b6001600160a01b0383166000908152601560205260409020546124b49083906129e5565b106125015760405162461bcd60e51b815260206004820152601760248201527f4d61782077616c6c6574206f6e20726563697069656e740000000000000000006044820152606401610f29565b6017546000906001600160a01b038481169116148061252d57506000546001600160a01b038481169116145b905060008061253c84846126b0565b6014543060009081526015602052604090205492945090925010801561256a5750600f54610100900460ff16155b80156125805750600454600160a01b900460ff16155b156125a85782801561259a5750600f54610100900460ff16155b156125a8576125a884611f92565b6001600160a01b0386166000908152601560205260409020546125cb9085612712565b6001600160a01b0380881660009081526015602052604080822093909355908716815220546125fa908361225e565b6001600160a01b038616600090815260156020526040808220929092553081522054612626908261225e565b30600081815260156020526040908190209290925590516001600160a01b03881690600080516020612b93833981519152906126659085815260200190565b60405180910390a3846001600160a01b0316866001600160a01b0316600080516020612b93833981519152846040516126a091815260200190565b60405180910390a3505050505050565b600080600083156126ce5750600f546301000000900460ff166126dc565b50600f5462010000900460ff165b600060646126ed60ff841688612b0d565b6126f791906129fd565b905060006127058288612b2c565b9791965090945050505050565b6000611bc98284612b2c565b803560ff8116811461272f57600080fd5b919050565b60006020828403121561274657600080fd5b8135611bc981612b6f565b60006020828403121561276357600080fd5b8151611bc981612b6f565b6000806040838503121561278157600080fd5b823561278c81612b6f565b9150602083013561279c81612b6f565b809150509250929050565b6000806000606084860312156127bc57600080fd5b83356127c781612b6f565b925060208401356127d781612b6f565b929592945050506040919091013590565b600080604083850312156127fb57600080fd5b823561280681612b6f565b9150602083013561279c81612b84565b6000806040838503121561282957600080fd5b823561283481612b6f565b946020939093013593505050565b60006020828403121561285457600080fd5b8135611bc981612b84565b60006020828403121561287157600080fd5b8151611bc981612b84565b60006020828403121561288e57600080fd5b5035919050565b6000602082840312156128a757600080fd5b5051919050565b6000602082840312156128c057600080fd5b611bc98261271e565b600080604083850312156128dc57600080fd5b6128e58361271e565b91506128f36020840161271e565b90509250929050565b600060208083528351808285015260005b818110156129295785810183015185820160400152820161290d565b8181111561293b576000604083870101525b50601f01601f1916929092016040019392505050565b6020808252600990820152683737ba1037bbb732b960b91b604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b818110156129c45784516001600160a01b03168352938301939183019160010161299f565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156129f8576129f8612b43565b500190565b600082612a1a57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b80851115612a5a578160001904821115612a4057612a40612b43565b80851615612a4d57918102915b93841c9390800290612a24565b509250929050565b6000611bc960ff841683600082612a7b57506001610e92565b81612a8857506000610e92565b8160018114612a9e5760028114612aa857612ac4565b6001915050610e92565b60ff841115612ab957612ab9612b43565b50506001821b610e92565b5060208310610133831016604e8410600b8410161715612ae7575081810a610e92565b612af18383612a1f565b8060001904821115612b0557612b05612b43565b029392505050565b6000816000190483118215151615612b2757612b27612b43565b500290565b600082821015612b3e57612b3e612b43565b500390565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052603260045260246000fd5b6001600160a01b03811681146113b557600080fd5b80151581146113b557600080fdfeddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3efa264697066735822122008abeb8bbb359778f5c0fec14e7a35ecde3535c058ad83321caf224b501ee40b64736f6c63430008070033

Deployed Bytecode Sourcemap

14161:12968:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;15876:68;;;;;;;;;;-1:-1:-1;15876:68:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;4854:25:1;;;4842:2;4827:18;15876:68:0;;;;;;;;24947:85;;;;;;;;;;-1:-1:-1;25019:5:0;;;;;;;;;;;;-1:-1:-1;;;25019:5:0;;;;24947:85;;;;;;;:::i;15290:25::-;;;;;;;;;;-1:-1:-1;15290:25:0;;;;;;;;;;;4210:14:1;;4203:22;4185:41;;4173:2;4158:18;15290:25:0;4045:187:1;25689:161:0;;;;;;;;;;-1:-1:-1;25689:161:0;;;;;:::i;:::-;;:::i;15758:57::-;;;;;;;;;;;;;;;;14279:40;;;;;;;;;;-1:-1:-1;14279:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22069:108;;;;;;;;;;-1:-1:-1;22151:18:0;;22069:108;;14856:70;;;;;;;;;;;;;:::i;26167:392::-;;;;;;;;;;-1:-1:-1;26167:392:0;;;;;:::i;:::-;;:::i;21602:128::-;;;;;;;;;;-1:-1:-1;21602:128:0;;;;;:::i;:::-;;:::i;13450:106::-;;;;;;;;;;-1:-1:-1;13450:106:0;;;;;:::i;:::-;;:::i;15155:78::-;;;;;;;;;;-1:-1:-1;15155:78:0;;;;-1:-1:-1;;;;;15155:78:0;;;;;;-1:-1:-1;;;;;3722:32:1;;;3704:51;;3692:2;3677:18;15155:78:0;3558:203:1;25137:85:0;;;;;;;;;;-1:-1:-1;14798:2:0;25137:85;;;12890:4:1;12878:17;;;12860:36;;12848:2;12833:18;25137:85:0;12718:184:1;14764:36:0;;;;;;;;;;;;14798:2;14764:36;;14807:42;;;;;;;;;;;;14843:6;14807:42;;16206:27;;;;;;;;;;-1:-1:-1;16206:27:0;;;;-1:-1:-1;;;;;16206:27:0;;;26569:205;;;;;;;;;;-1:-1:-1;26569:205:0;;;;;:::i;:::-;;:::i;23298:132::-;;;;;;;;;;-1:-1:-1;23298:132:0;;;;;:::i;:::-;;:::i;23855:131::-;;;;;;;;;;;;;:::i;23994:139::-;;;;;;;;;;;;;:::i;23032:124::-;;;;;;;;;;-1:-1:-1;23032:124:0;;;;;:::i;:::-;;:::i;15242:39::-;;;;;;;;;;-1:-1:-1;15242:39:0;;;;;:::i;:::-;;;;;;;;;;;;;;15362:25;;;;;;;;;;-1:-1:-1;15362:25:0;;;;;;;;;;;24762:86;;;;;;;;;;-1:-1:-1;24762:86:0;;;;;:::i;:::-;;:::i;15564:29::-;;;;;;;;;;;;;;;;14479:55;;;;;;;;;;-1:-1:-1;14479:55:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;14597:59;;;;;;;;;;-1:-1:-1;14597:59:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;23681:166;;;;;;;;;;-1:-1:-1;23681:166:0;;;;;:::i;:::-;;:::i;15824:45::-;;;;;;;;;;-1:-1:-1;15824:45:0;;;;;:::i;:::-;;;;;;;;;;;;;;25230:121;;;;;;;;;;-1:-1:-1;25230:121:0;;;;;:::i;:::-;-1:-1:-1;;;;;25325:18:0;25298:7;25325:18;;;:9;:18;;;;;;;25230:121;21970:91;;;;;;;;;;-1:-1:-1;21970:91:0;;;;;:::i;:::-;;:::i;18086:114::-;;;;;;;;;;;;;:::i;15533:24::-;;;;;;;;;;;;;;;;22667:167;;;;;;;;;;-1:-1:-1;22667:167:0;;;;;:::i;:::-;;:::i;23551:122::-;;;;;;;;;;-1:-1:-1;23551:122:0;;;;;:::i;:::-;;:::i;14374:40::-;;;;;;;;;;-1:-1:-1;14374:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;15075:73;;;;;;;;;;;;15106:42;15075:73;;24856:83;;;;;;;;;;-1:-1:-1;24926:5:0;;-1:-1:-1;;;;;24926:5:0;24856:83;;13686:20;;;;;;;;;;-1:-1:-1;13686:20:0;;;;-1:-1:-1;;;;;13686:20:0;;;21294:141;;;;;;;;;;;;;:::i;22842:182::-;;;;;;;;;;-1:-1:-1;22842:182:0;;;;;:::i;:::-;;:::i;15394:26::-;;;;;;;;;;-1:-1:-1;15394:26:0;;;;;;;;;;;14421:51;;;;;;;;;;-1:-1:-1;14421:51:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;25040:89;;;;;;;;;;-1:-1:-1;25114:7:0;;;;;;;;;;;;-1:-1:-1;;;25114:7:0;;;;25040:89;;24330:249;;;;;;;;;;-1:-1:-1;24330:249:0;;;;;:::i;:::-;;:::i;14933:48::-;;;;;;;;;;;;;;;;26782:342;;;;;;;;;;-1:-1:-1;26782:342:0;;;;;:::i;:::-;;:::i;16240:26::-;;;;;;;;;;-1:-1:-1;16240:26:0;;;;-1:-1:-1;;;;;16240:26:0;;;25359:167;;;;;;;;;;-1:-1:-1;25359:167:0;;;;;:::i;:::-;;:::i;24143:179::-;;;;;;;;;;-1:-1:-1;24143:179:0;;;;;:::i;:::-;;:::i;14326:41::-;;;;;;;;;;-1:-1:-1;14326:41:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;22379:280;;;;;;;;;;-1:-1:-1;22379:280:0;;;;;:::i;:::-;;:::i;14718:39::-;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14718:39:0;;;;;21738:224;;;;;;;;;;-1:-1:-1;21738:224:0;;;;;:::i;:::-;;:::i;15500:26::-;;;;;;;;;;-1:-1:-1;15500:26:0;;;;;;;;;;;13343:99;;;;;;;;;;-1:-1:-1;13343:99:0;;;;;:::i;:::-;-1:-1:-1;;;;;13421:13:0;13397:4;13421:13;;;:7;:13;;;;;;;;;13343:99;14541:49;;;;;;;;;;-1:-1:-1;14541:49:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;13252:33;;;;;;;;;;-1:-1:-1;13252:33:0;;;;-1:-1:-1;;;13252:33:0;;;;;;15427:30;;;;;;;;;;-1:-1:-1;15427:30:0;;;;;;;;;;;14988:80;;;;;;;;;;;;15026:42;14988:80;;15322:31;;;;;;;;;;-1:-1:-1;15322:31:0;;;;;;;;;;;15600:39;;;;;;;;;;;;;;;;13713:24;;;;;;;;;;-1:-1:-1;13713:24:0;;;;-1:-1:-1;;;;;13713:24:0;;;21443:151;;;;;;;;;;;;;:::i;13215:30::-;;;;;;;;;;-1:-1:-1;13215:30:0;;;;-1:-1:-1;;;13215:30:0;;;;;;13931:18;;;;;;;;;;-1:-1:-1;13931:18:0;;;;-1:-1:-1;;;13931:18:0;;;;;;14669:42;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;14669:42:0;;;;;11895:74;;;;;;;;;;-1:-1:-1;11895:74:0;;;;-1:-1:-1;;;;;11895:74:0;;;25534:147;;;;;;;;;;-1:-1:-1;25534:147:0;;;;;:::i;:::-;-1:-1:-1;;;;;25645:19:0;;;25618:7;25645:19;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;25534:147;15466:27;;;;;;;;;;-1:-1:-1;15466:27:0;;;;;;;;;;;13294:40;;;;;;;;;;-1:-1:-1;13294:40:0;;;;;:::i;:::-;;;;;;;;;;;;;;;;23164:126;;;;;;;;;;-1:-1:-1;23164:126:0;;;;;:::i;:::-;;:::i;11976:65::-;;;;;;;;;;-1:-1:-1;11976:65:0;;;;-1:-1:-1;;;;;11976:65:0;;;22185:186;;;;;;;;;;-1:-1:-1;22185:186:0;;;;;:::i;:::-;;:::i;23438:105::-;;;;;;;;;;-1:-1:-1;23438:105:0;;;;;:::i;:::-;;:::i;25689:161::-;25766:4;25783:37;25792:10;25804:7;25813:6;25783:8;:37::i;:::-;-1:-1:-1;25838:4:0;25689:161;;;;;:::o;14856:70::-;14912:13;14798:2;14912;:13;:::i;:::-;14895:31;;:13;:31;:::i;:::-;14856:70;:::o;26167:392::-;26267:4;26284:36;26294:6;26302:9;26313:6;26284:9;:36::i;:::-;-1:-1:-1;;;;;26360:19:0;;26333:24;26360:19;;;:11;:19;;;;;;;;26380:10;26360:31;;;;;;;;26410:26;;;;26402:59;;;;-1:-1:-1;;;26402:59:0;;6818:2:1;26402:59:0;;;6800:21:1;6857:2;6837:18;;;6830:30;-1:-1:-1;;;6876:18:1;;;6869:50;6936:18;;26402:59:0;;;;;;;;;26474:55;26483:6;26491:10;26503:25;26522:6;26503:16;:25;:::i;:::-;26474:8;:55::i;:::-;-1:-1:-1;26547:4:0;;26167:392;-1:-1:-1;;;;26167:392:0:o;21602:128::-;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;21674:8:::1;:14:::0;;::::1;21699:23:::0;;::::1;21674:14;21699:23;-1:-1:-1::0;;21699:23:0;;;21674:14;;;::::1;21699:23:::0;;;;;;;::::1;::::0;;21602:128::o;13450:106::-;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;13527:13:0;;;::::1;;::::0;;;:7:::1;:13;::::0;;;;:21;;-1:-1:-1;;13527:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;13450:106::o;26569:205::-;26677:10;26651:4;26698:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;26698:32:0;;;;;;;;;;26651:4;;26668:76;;26689:7;;26698:45;;26733:10;;26698:45;:::i;23298:132::-;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23385:29:0;;;::::1;;::::0;;;:23:::1;:29;::::0;;;;:37;;-1:-1:-1;;23385:37:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23298:132::o;23855:131::-;23901:7;23928:50;14843:6;23928:35;23936:15;23953:9;;23928:7;:35::i;:::-;:39;;:50::i;:::-;23921:57;;23855:131;:::o;23994:139::-;24043:7;24070:55;24108:16;;24070:33;24093:9;;24070:18;;:22;;:33;;;;:::i;23032:124::-;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23115:25:0;;;::::1;;::::0;;;:19:::1;:25;::::0;;;;:33;;-1:-1:-1;;23115:33:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23032:124::o;24762:86::-;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;24826:6:::1;:14:::0;;-1:-1:-1;;24826:14:0::1;::::0;::::1;;::::0;;;::::1;::::0;;24762:86::o;23681:166::-;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;23789:9:::1;::::0;-1:-1:-1;;;;;23777:21:0;;::::1;23789:9:::0;::::1;23777:21;23775:24;23767:33;;;::::0;::::1;;-1:-1:-1::0;;;;;23811:20:0;;;::::1;;::::0;;;:8:::1;:20;::::0;;;;:28;;-1:-1:-1;;23811:28:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23681:166::o;21970:91::-;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;22034:11:::1;:19:::0;;;::::1;;;;-1:-1:-1::0;;22034:19:0;;::::1;::::0;;;::::1;::::0;;21970:91::o;18086:114::-;18125:4;18150:41;18186:4;18172:8;;;;;;;;;;;18151:29;;:18;;:29;;;;:::i;22667:167::-;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;22727:8:::1;:16:::0;;-1:-1:-1;;22727:16:0::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;22771:1:::1;-1:-1:-1::0;22762:10:0::1;22754:72;;;::::0;-1:-1:-1;;;22754:72:0;;5694:2:1;22754:72:0::1;::::0;::::1;5676:21:1::0;5733:2;5713:18;;;5706:30;5772:34;5752:18;;;5745:62;-1:-1:-1;;;5823:18:1;;;5816:47;5880:19;;22754:72:0::1;5492:413:1::0;22754:72:0::1;22667:167:::0;:::o;23551:122::-;13794:9;;-1:-1:-1;;;;;13794:9:0;13782:10;:21;13774:30;;;;;;23614:5:::1;:16:::0;;-1:-1:-1;;;;;23614:16:0;;::::1;-1:-1:-1::0;;;;;;23614:16:0;;::::1;::::0;::::1;::::0;;:5:::1;23641:17:::0;;;:7:::1;:17;::::0;;;;:24;;-1:-1:-1;;23641:24:0::1;23614:16:::0;23641:24:::1;::::0;;23551:122::o;21294:141::-;13794:9;;-1:-1:-1;;;;;13794:9:0;13782:10;:21;13774:30;;;;;;21343:13:::1;::::0;-1:-1:-1;;;21343:13:0;::::1;;;:22;21335:31;;;::::0;::::1;;21377:11;:19:::0;;-1:-1:-1;;;;21407:20:0;-1:-1:-1;;;21407:20:0::1;::::0;;21294:141::o;22842:182::-;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;22910:10:::1;:22:::0;;-1:-1:-1;;22910:22:0::1;::::0;::::1;::::0;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;-1:-1:-1;;22951:14:0::1;22943:73;;;::::0;-1:-1:-1;;;22943:73:0;;7504:2:1;22943:73:0::1;::::0;::::1;7486:21:1::0;7543:2;7523:18;;;7516:30;7582:34;7562:18;;;7555:62;-1:-1:-1;;;7633:18:1;;;7626:44;7687:19;;22943:73:0::1;7302:410:1::0;24330:249:0;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;24415:10:::1;24405:21;::::0;;;:9:::1;:21;::::0;;;;;:31;-1:-1:-1;24405:31:0::1;24397:40;;;::::0;::::1;;24458:10;24448:21;::::0;;;:9:::1;:21;::::0;;;;:31;;24473:6;;24448:21;:31:::1;::::0;24473:6;;24448:31:::1;:::i;:::-;;;;;;;;24512:6;24490:18;;:28;;;;;;;:::i;:::-;::::0;;;-1:-1:-1;;24534:37:0::1;::::0;4854:25:1;;;15106:42:0::1;::::0;24551:4:::1;::::0;-1:-1:-1;;;;;;;;;;;24534:37:0;4842:2:1;4827:18;24534:37:0::1;;;;;;;24330:249:::0;:::o;26782:342::-;26925:10;26869:4;26913:23;;;:11;:23;;;;;;;;-1:-1:-1;;;;;26913:32:0;;;;;;;;;;26964:35;;;;26956:60;;;;-1:-1:-1;;;26956:60:0;;11072:2:1;26956:60:0;;;11054:21:1;11111:2;11091:18;;;11084:30;-1:-1:-1;;;11130:18:1;;;11123:42;11182:18;;26956:60:0;10870:336:1;26956:60:0;27029:65;27038:10;27050:7;27059:34;27078:15;27059:16;:34;:::i;27029:65::-;-1:-1:-1;27112:4:0;;26782:342;-1:-1:-1;;;26782:342:0:o;25359:167::-;25439:4;25456:40;25466:10;25478:9;25489:6;25456:9;:40::i;24143:179::-;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;24234:1:::1;24220:10;:15;;:38;;;;;24253:5;24239:10;:19;;24220:38;24212:69;;;::::0;-1:-1:-1;;;24212:69:0;;8616:2:1;24212:69:0::1;::::0;::::1;8598:21:1::0;8655:2;8635:18;;;8628:30;-1:-1:-1;;;8674:18:1;;;8667:48;8732:18;;24212:69:0::1;8414:342:1::0;24212:69:0::1;24292:9;:22:::0;24143:179::o;22379:280::-;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;22512:30:::1;::::0;-1:-1:-1;;;22512:30:0;;22536:4:::1;22512:30;::::0;::::1;3704:51:1::0;22469:10:0;;22449:11:::1;::::0;-1:-1:-1;;;;;22512:15:0;::::1;::::0;::::1;::::0;3677:18:1;;22512:30:0::1;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;22491:51;;22572:1;22561:10;:12;22553:49;;;::::0;-1:-1:-1;;;22553:49:0;;8263:2:1;22553:49:0::1;::::0;::::1;8245:21:1::0;8302:2;8282:18;;;8275:30;8341:26;8321:18;;;8314:54;8385:18;;22553:49:0::1;8061:348:1::0;22553:49:0::1;22613:38;::::0;-1:-1:-1;;;22613:38:0;;22628:10:::1;22613:38;::::0;::::1;3940:51:1::0;4007:18;;;4000:34;;;-1:-1:-1;;;;;22613:14:0;::::1;::::0;::::1;::::0;3913:18:1;;22613:38:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;22438:221;;22379:280:::0;:::o;21738:224::-;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;21807:7:::1;:13:::0;;-1:-1:-1;;21831:15:0;21807:13;::::1;::::0;;::::1;::::0;;::::1;-1:-1:-1::0;;21831:15:0;;;;;;;;::::1;::::0;;;::::1;::::0;;;::::1;::::0;;;21865:7;;;;:19:::1;;;21883:1;21876:4;:8;;;21865:19;21857:42;;;::::0;-1:-1:-1;;;21857:42:0;;9655:2:1;21857:42:0::1;::::0;::::1;9637:21:1::0;9694:2;9674:18;;;9667:30;-1:-1:-1;;;9713:18:1;;;9706:40;9763:18;;21857:42:0::1;9453:334:1::0;21857:42:0::1;21923:2;21918:3;:7;;;:20;;;;;21936:2;21929:4;:9;;;21918:20;21910:44;;;::::0;-1:-1:-1;;;21910:44:0;;9315:2:1;21910:44:0::1;::::0;::::1;9297:21:1::0;9354:2;9334:18;;;9327:30;-1:-1:-1;;;9373:18:1;;;9366:41;9424:18;;21910:44:0::1;9113:335:1::0;21910:44:0::1;21738:224:::0;;:::o;21443:151::-;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;21558:9:::1;::::0;21550:36:::1;::::0;21518:21:::1;::::0;-1:-1:-1;;;;;21558:9:0::1;::::0;21550:36;::::1;;;::::0;21518:21;;21500:15:::1;21550:36:::0;21500:15;21550:36;21518:21;21558:9;21550:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;23164:126:::0;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23251:23:0;;;::::1;;::::0;;;:17:::1;:23;::::0;;;;:31;;-1:-1:-1;;23251:31:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23164:126::o;22185:186::-;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;22292:4:::1;22274:24;::::0;;;:9:::1;:24;::::0;;;;;22265:33;::::1;22257:77;;;::::0;-1:-1:-1;;;22257:77:0;;6112:2:1;22257:77:0::1;::::0;::::1;6094:21:1::0;6151:2;6131:18;;;6124:30;6190:33;6170:18;;;6163:61;6241:18;;22257:77:0::1;5910:355:1::0;22257:77:0::1;22345:18;22356:6;22345:10;:18::i;23438:105::-:0;13612:10;13604:19;;;;:7;:19;;;;;;;;;:40;;-1:-1:-1;13639:5:0;;-1:-1:-1;;;;;13639:5:0;13627:10;:17;13604:40;13595:63;;;;-1:-1:-1;;;13595:63:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;23513:14:0;;;::::1;;::::0;;;:8:::1;:14;::::0;;;;:22;;-1:-1:-1;;23513:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;23438:105::o;2412:98::-;2470:7;2497:5;2501:1;2497;:5;:::i;:::-;2490:12;2412:98;-1:-1:-1;;;2412:98:0:o;25856:303::-;-1:-1:-1;;;;;25950:20:0;;25942:50;;;;-1:-1:-1;;;25942:50:0;;6472:2:1;25942:50:0;;;6454:21:1;6511:2;6491:18;;;6484:30;-1:-1:-1;;;6530:18:1;;;6523:47;6587:18;;25942:50:0;6270:341:1;25942:50:0;-1:-1:-1;;;;;26011:21:0;;26003:49;;;;-1:-1:-1;;;26003:49:0;;7919:2:1;26003:49:0;;;7901:21:1;7958:2;7938:18;;;7931:30;-1:-1:-1;;;7977:18:1;;;7970:45;8032:18;;26003:49:0;7717:339:1;26003:49:0;-1:-1:-1;;;;;26065:19:0;;;;;;;:11;:19;;;;;;;;:28;;;;;;;;;;;;;:37;;;26118:33;;4854:25:1;;;26118:33:0;;4827:18:1;26118:33:0;;;;;;;;25856:303;;;:::o;17299:779::-;-1:-1:-1;;;;;16017:23:0;;;;;;:17;:23;;;;;;17385:6;;17393;;16017:23;;16013:166;;16104:18;:16;:18::i;:::-;-1:-1:-1;;;;;16065:10:0;;;;;;:4;:10;;;;;16095:5;;16076:15;:13;:15::i;:::-;16065:27;;;;;;;;;;;;:35;;;;:::i;:::-;:57;;16057:110;;;;-1:-1:-1;;;16057:110:0;;10326:2:1;16057:110:0;;;10308:21:1;10365:2;10345:18;;;10338:30;10404:34;10384:18;;;10377:62;-1:-1:-1;;;10455:18:1;;;10448:38;10503:19;;16057:110:0;10124:404:1;16057:110:0;-1:-1:-1;;;;;17433:16:0;::::1;17414:15;17433:16:::0;;;:8:::1;:16;::::0;;;;;::::1;;::::0;:39:::1;;-1:-1:-1::0;;;;;;17453:19:0;::::1;;::::0;;;:8:::1;:19;::::0;;;;;::::1;;17433:39;:58;;;-1:-1:-1::0;;;;;;17476:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;;::::1;;17433:58;:80;;;-1:-1:-1::0;;;;;;17495:18:0;::::1;;::::0;;;:7:::1;:18;::::0;;;;;::::1;;17433:80;17414:100:::0;-1:-1:-1;17527:23:0::1;-1:-1:-1::0;;;;;17552:21:0;::::1;17568:4;17552:21;::::0;:49:::1;;-1:-1:-1::0;;;;;;17577:24:0;::::1;17596:4;17577:24;17552:49;17654:12;::::0;17527:75;;-1:-1:-1;17615:24:0::1;::::0;-1:-1:-1;;;;;17644:22:0;;::::1;17654:12:::0;::::1;17644:22;:52:::0;::::1;;;-1:-1:-1::0;;;;;;17670:26:0;::::1;15026:42;17670:26;17644:52;17643:121;;;-1:-1:-1::0;17724:12:0::1;::::0;-1:-1:-1;;;;;17711:25:0;;::::1;17724:12:::0;::::1;17711:25;:52:::0;::::1;;;-1:-1:-1::0;;;;;;17740:23:0;::::1;15026:42;17740:23;17711:52;-1:-1:-1::0;;;;;17810:12:0;::::1;;::::0;;;:4:::1;:12;::::0;;;;17615:150;;-1:-1:-1;17810:41:0::1;::::0;17844:6;;17823:15:::1;:13;:15::i;:::-;17810:29;;;;;;;;;;;;:33;;:41;;;;:::i;:::-;-1:-1:-1::0;;;;;17778:12:0;::::1;;::::0;;;:4:::1;:12;::::0;;;;;17791:15:::1;:13;:15::i;:::-;17778:29:::0;;::::1;::::0;::::1;::::0;;;;;;-1:-1:-1;17778:29:0;:73;17868:10;;:32:::1;;;17882:18;17868:32;:55;;;;17904:19;17868:55;17864:205;;;17940:43;17957:6;17965:9;17976:6;17940:16;:43::i;:::-;17864:205;;;18016:41;18031:6;18039:9;18050:6;18016:14;:41::i;:::-;17401:677;;;17299:779:::0;;;;;:::o;24587:167::-;24641:4;24666:1;24662;:5;24658:89;;;24690:5;24694:1;24690;:5;:::i;:::-;24683:12;;;;24658:89;-1:-1:-1;24734:1:0;24727:8;;2306:98;2364:7;2391:5;2395:1;2391;:5;:::i;19949:1107::-;13992:6;;-1:-1:-1;;;13992:6:0;;;;13991:7;13983:29;;;;-1:-1:-1;;;13983:29:0;;7167:2:1;13983:29:0;;;7149:21:1;7206:1;7186:18;;;7179:29;-1:-1:-1;;;7224:18:1;;;7217:39;7273:18;;13983:29:0;6965:332:1;13983:29:0;14023:6;:13;;-1:-1:-1;;;;14023:13:0;-1:-1:-1;;;14023:13:0;;;20055:4:::1;14023:13:::0;20037:24;;;:9:::1;:24;::::0;;;;;14023:6;20098:13;20037:24;;14023:13;20097:32:::1;::::0;20125:3:::1;::::0;20098:21:::1;::::0;20116:2:::1;20098:17;:21::i;20097:32::-;20072:57;;20170:9;20153:14;:26;20150:129;;;20199:6;::::0;::::1;;20196:72;;;-1:-1:-1::0;20243:9:0;20196:72:::1;20308:14;20292:15;:30;20289:67;;;20338:7;;;;20289:67;20452:16;::::0;;20466:1:::1;20452:16:::0;;;;;::::1;::::0;;20396:21:::1;::::0;20368:25:::1;::::0;20452:16;20466:1;20452:16:::1;::::0;::::1;::::0;;::::1;::::0;::::1;;::::0;-1:-1:-1;20452:16:0::1;20428:40;;20497:4;20479;20484:1;20479:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20479:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;;:23;;;;20523:6:::1;::::0;:13:::1;::::0;;-1:-1:-1;;;20523:13:0;;;;:6;;;::::1;::::0;:11:::1;::::0;:13:::1;::::0;;::::1;::::0;20479:7;;20523:13;;;;;:6;:13;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;20513:4;20518:1;20513:7;;;;;;;;:::i;:::-;-1:-1:-1::0;;;;;20513:23:0;;::::1;:7;::::0;;::::1;::::0;;;;;:23;20547:6:::1;::::0;:194:::1;::::0;-1:-1:-1;;;20547:194:0;;:6;::::1;::::0;:57:::1;::::0;:194:::1;::::0;20619:14;;20547:6:::1;::::0;20664:4;;20691::::1;::::0;20711:15:::1;::::0;20547:194:::1;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;20752:14;20792:17;20768:21;:41;;;;:::i;:::-;20879:11;::::0;20752:58;;-1:-1:-1;20823:22:0::1;::::0;20848:43:::1;::::0;20879:11:::1;::::0;;::::1;::::0;::::1;::::0;20848:26:::1;::::0;20752:58;;20879:11:::1;20859:14:::0;::::1;;20848:10;:26::i;:43::-;20823:68:::0;-1:-1:-1;20902:16:0::1;20921:23;20823:68:::0;20921:6;:23:::1;:::i;:::-;20963:9;::::0;20955:37:::1;::::0;20902:42;;-1:-1:-1;;;;;;20963:9:0::1;::::0;20955:37;::::1;;;::::0;20902:42;;20963:9:::1;20955:37:::0;20963:9;20955:37;20902:42;20963:9;20955:37;::::1;;;;;;;;;;;;;::::0;::::1;;;;;-1:-1:-1::0;21011:9:0::1;::::0;21003:43:::1;::::0;-1:-1:-1;;;;;21011:9:0;;::::1;::::0;21003:43;::::1;;;::::0;21031:14;;21011:9:::1;21003:43:::0;21011:9;21003:43;21031:14;21011:9;21003:43;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;20000:1056;;;;;;;14047:1;-1:-1:-1::0;14059:6:0;:14;;-1:-1:-1;;;;14059:14:0;;;19949:1107::o;2094:98::-;2152:7;2179:5;2183:1;2179;:5;:::i;21066:220::-;-1:-1:-1;;;;;21159:17:0;;;;;;:9;:17;;;;;:27;;21180:6;;21159:17;:27;;21180:6;;21159:27;:::i;:::-;;;;-1:-1:-1;;;;;;;21197:20:0;;;;;;:9;:20;;;;;:30;;21221:6;;21197:20;:30;;21221:6;;21197:30;:::i;:::-;;;;;;;;21260:9;-1:-1:-1;;;;;21243:35:0;21252:6;-1:-1:-1;;;;;21243:35:0;-1:-1:-1;;;;;;;;;;;21271:6:0;21243:35;;;;4854:25:1;;4842:2;4827:18;;4700:185;18208:1341:0;-1:-1:-1;;;;;18308:16:0;;;;;;:8;:16;;;;;;;;18307:17;:41;;;;-1:-1:-1;;;;;;18329:19:0;;;;;;:8;:19;;;;;;;;18328:20;18307:41;18299:65;;;;-1:-1:-1;;;18299:65:0;;11413:2:1;18299:65:0;;;11395:21:1;11452:2;11432:18;;;11425:30;-1:-1:-1;;;11471:18:1;;;11464:41;11522:18;;18299:65:0;11211:335:1;18299:65:0;18381:11;;-1:-1:-1;;;18381:11:0;;;;18377:220;;18417:13;;-1:-1:-1;;;18417:13:0;;;;18409:30;;;;-1:-1:-1;;;18409:30:0;;;;;;9994:2:1;9976:21;;;10033:1;10013:18;;;10006:29;-1:-1:-1;;;10066:2:1;10051:18;;10044:34;10110:2;10095:18;;9792:327;18409:30:0;18377:220;;;18476:13;;-1:-1:-1;;;18476:13:0;;;;18472:114;;18532:9;-1:-1:-1;;;;;18515:30:0;18524:6;-1:-1:-1;;;;;18515:30:0;-1:-1:-1;;;;;;;;;;;18543:1:0;18515:30;;;;4854:25:1;;4842:2;4827:18;;4700:185;18472:114:0;-1:-1:-1;;;;;18613:27:0;;;;;;:19;:27;;;;;;;;18609:87;;18675:8;:6;:8::i;:::-;18665:6;:18;;18657:27;;;;;;-1:-1:-1;;;;;18712:34:0;;;;;;:23;:34;;;;;;;;18708:172;;18824:10;;18805:18;;18836:3;;18805:29;;18824:10;;;;;;;18805:29;:::i;:::-;18804:35;;;;:::i;:::-;-1:-1:-1;;;;;18772:20:0;;;;;;:9;:20;;;;;;:27;;18793:6;;18772:27;:::i;:::-;18771:69;18763:105;;;;-1:-1:-1;;;18763:105:0;;8963:2:1;18763:105:0;;;8945:21:1;9002:2;8982:18;;;8975:30;9041:25;9021:18;;;9014:53;9084:18;;18763:105:0;8761:347:1;18763:105:0;18916:12;;18892:11;;-1:-1:-1;;;;;18904:24:0;;;18916:12;;18904:24;;:54;;-1:-1:-1;18944:14:0;;-1:-1:-1;;;;;18931:27:0;;;18944:14;;18931:27;18904:54;18892:66;;18972:16;18990:10;19004:29;19018:6;19026;19004:13;:29::i;:::-;19077:13;;19068:4;19050:24;;;;:9;:24;;;;;;18971:62;;-1:-1:-1;18971:62:0;;-1:-1:-1;;19049:58:0;;;;-1:-1:-1;19096:11:0;;;;;;;19095:12;19049:58;:69;;;;-1:-1:-1;19112:6:0;;-1:-1:-1;;;19112:6:0;;;;19111:7;19049:69;19046:180;;;19138:6;:22;;;;-1:-1:-1;19149:11:0;;;;;;;19148:12;19138:22;19135:80;;;19181:18;19192:6;19181:10;:18::i;:::-;-1:-1:-1;;;;;19258:17:0;;;;;;:9;:17;;;;;;:29;;19280:6;19258:21;:29::i;:::-;-1:-1:-1;;;;;19238:17:0;;;;;;;:9;:17;;;;;;:49;;;;19321:20;;;;;;;:37;;19346:11;19321:24;:37::i;:::-;-1:-1:-1;;;;;19298:20:0;;;;;;:9;:20;;;;;;:60;;;;19414:4;19396:24;;;;:35;;19425:5;19396:28;:35::i;:::-;19387:4;19369:24;;;;:9;:24;;;;;;;:62;;;;19447:38;;-1:-1:-1;;;;;19447:38:0;;;-1:-1:-1;;;;;;;;;;;19447:38:0;;;19479:5;4854:25:1;;4842:2;4827:18;;4700:185;19447:38:0;;;;;;;;19518:9;-1:-1:-1;;;;;19501:40:0;19510:6;-1:-1:-1;;;;;19501:40:0;-1:-1:-1;;;;;;;;;;;19529:11:0;19501:40;;;;4854:25:1;;4842:2;4827:18;;4700:185;19501:40:0;;;;;;;;18288:1261;;;18208:1341;;;:::o;19557:384::-;19628:17;19647:11;19671:9;19696:6;19693:98;;;-1:-1:-1;19725:8:0;;;;;;;19693:98;;;-1:-1:-1;19772:7:0;;;;;;;19693:98;19803:15;19834:3;19822:10;;;;:6;:10;:::i;:::-;19821:16;;;;:::i;:::-;19803:34;-1:-1:-1;19848:17:0;19868:19;19803:34;19868:6;:19;:::i;:::-;19848:39;19920:10;;-1:-1:-1;19557:384:0;;-1:-1:-1;;;;;19557:384:0:o;2200:98::-;2258:7;2285:5;2289:1;2285;:5;:::i;14:156:1:-;80:20;;140:4;129:16;;119:27;;109:55;;160:1;157;150:12;109:55;14:156;;;:::o;175:247::-;234:6;287:2;275:9;266:7;262:23;258:32;255:52;;;303:1;300;293:12;255:52;342:9;329:23;361:31;386:5;361:31;:::i;427:251::-;497:6;550:2;538:9;529:7;525:23;521:32;518:52;;;566:1;563;556:12;518:52;598:9;592:16;617:31;642:5;617:31;:::i;683:388::-;751:6;759;812:2;800:9;791:7;787:23;783:32;780:52;;;828:1;825;818:12;780:52;867:9;854:23;886:31;911:5;886:31;:::i;:::-;936:5;-1:-1:-1;993:2:1;978:18;;965:32;1006:33;965:32;1006:33;:::i;:::-;1058:7;1048:17;;;683:388;;;;;:::o;1076:456::-;1153:6;1161;1169;1222:2;1210:9;1201:7;1197:23;1193:32;1190:52;;;1238:1;1235;1228:12;1190:52;1277:9;1264:23;1296:31;1321:5;1296:31;:::i;:::-;1346:5;-1:-1:-1;1403:2:1;1388:18;;1375:32;1416:33;1375:32;1416:33;:::i;:::-;1076:456;;1468:7;;-1:-1:-1;;;1522:2:1;1507:18;;;;1494:32;;1076:456::o;1537:382::-;1602:6;1610;1663:2;1651:9;1642:7;1638:23;1634:32;1631:52;;;1679:1;1676;1669:12;1631:52;1718:9;1705:23;1737:31;1762:5;1737:31;:::i;:::-;1787:5;-1:-1:-1;1844:2:1;1829:18;;1816:32;1857:30;1816:32;1857:30;:::i;1924:315::-;1992:6;2000;2053:2;2041:9;2032:7;2028:23;2024:32;2021:52;;;2069:1;2066;2059:12;2021:52;2108:9;2095:23;2127:31;2152:5;2127:31;:::i;:::-;2177:5;2229:2;2214:18;;;;2201:32;;-1:-1:-1;;;1924:315:1:o;2244:241::-;2300:6;2353:2;2341:9;2332:7;2328:23;2324:32;2321:52;;;2369:1;2366;2359:12;2321:52;2408:9;2395:23;2427:28;2449:5;2427:28;:::i;2490:245::-;2557:6;2610:2;2598:9;2589:7;2585:23;2581:32;2578:52;;;2626:1;2623;2616:12;2578:52;2658:9;2652:16;2677:28;2699:5;2677:28;:::i;2740:180::-;2799:6;2852:2;2840:9;2831:7;2827:23;2823:32;2820:52;;;2868:1;2865;2858:12;2820:52;-1:-1:-1;2891:23:1;;2740:180;-1:-1:-1;2740:180:1:o;2925:184::-;2995:6;3048:2;3036:9;3027:7;3023:23;3019:32;3016:52;;;3064:1;3061;3054:12;3016:52;-1:-1:-1;3087:16:1;;2925:184;-1:-1:-1;2925:184:1:o;3114:182::-;3171:6;3224:2;3212:9;3203:7;3199:23;3195:32;3192:52;;;3240:1;3237;3230:12;3192:52;3263:27;3280:9;3263:27;:::i;3301:252::-;3365:6;3373;3426:2;3414:9;3405:7;3401:23;3397:32;3394:52;;;3442:1;3439;3432:12;3394:52;3465:27;3482:9;3465:27;:::i;:::-;3455:37;;3511:36;3543:2;3532:9;3528:18;3511:36;:::i;:::-;3501:46;;3301:252;;;;;:::o;4890:597::-;5002:4;5031:2;5060;5049:9;5042:21;5092:6;5086:13;5135:6;5130:2;5119:9;5115:18;5108:34;5160:1;5170:140;5184:6;5181:1;5178:13;5170:140;;;5279:14;;;5275:23;;5269:30;5245:17;;;5264:2;5241:26;5234:66;5199:10;;5170:140;;;5328:6;5325:1;5322:13;5319:91;;;5398:1;5393:2;5384:6;5373:9;5369:22;5365:31;5358:42;5319:91;-1:-1:-1;5471:2:1;5450:15;-1:-1:-1;;5446:29:1;5431:45;;;;5478:2;5427:54;;4890:597;-1:-1:-1;;;4890:597:1:o;10533:332::-;10735:2;10717:21;;;10774:1;10754:18;;;10747:29;-1:-1:-1;;;10807:2:1;10792:18;;10785:39;10856:2;10841:18;;10533:332::o;11733:980::-;11995:4;12043:3;12032:9;12028:19;12074:6;12063:9;12056:25;12100:2;12138:6;12133:2;12122:9;12118:18;12111:34;12181:3;12176:2;12165:9;12161:18;12154:31;12205:6;12240;12234:13;12271:6;12263;12256:22;12309:3;12298:9;12294:19;12287:26;;12348:2;12340:6;12336:15;12322:29;;12369:1;12379:195;12393:6;12390:1;12387:13;12379:195;;;12458:13;;-1:-1:-1;;;;;12454:39:1;12442:52;;12549:15;;;;12514:12;;;;12490:1;12408:9;12379:195;;;-1:-1:-1;;;;;;;12630:32:1;;;;12625:2;12610:18;;12603:60;-1:-1:-1;;;12694:3:1;12679:19;12672:35;12591:3;11733:980;-1:-1:-1;;;11733:980:1:o;12907:128::-;12947:3;12978:1;12974:6;12971:1;12968:13;12965:39;;;12984:18;;:::i;:::-;-1:-1:-1;13020:9:1;;12907:128::o;13040:217::-;13080:1;13106;13096:132;;13150:10;13145:3;13141:20;13138:1;13131:31;13185:4;13182:1;13175:15;13213:4;13210:1;13203:15;13096:132;-1:-1:-1;13242:9:1;;13040:217::o;13262:422::-;13351:1;13394:5;13351:1;13408:270;13429:7;13419:8;13416:21;13408:270;;;13488:4;13484:1;13480:6;13476:17;13470:4;13467:27;13464:53;;;13497:18;;:::i;:::-;13547:7;13537:8;13533:22;13530:55;;;13567:16;;;;13530:55;13646:22;;;;13606:15;;;;13408:270;;;13412:3;13262:422;;;;;:::o;13689:140::-;13747:5;13776:47;13817:4;13807:8;13803:19;13797:4;13883:5;13913:8;13903:80;;-1:-1:-1;13954:1:1;13968:5;;13903:80;14002:4;13992:76;;-1:-1:-1;14039:1:1;14053:5;;13992:76;14084:4;14102:1;14097:59;;;;14170:1;14165:130;;;;14077:218;;14097:59;14127:1;14118:10;;14141:5;;;14165:130;14202:3;14192:8;14189:17;14186:43;;;14209:18;;:::i;:::-;-1:-1:-1;;14265:1:1;14251:16;;14280:5;;14077:218;;14379:2;14369:8;14366:16;14360:3;14354:4;14351:13;14347:36;14341:2;14331:8;14328:16;14323:2;14317:4;14314:12;14310:35;14307:77;14304:159;;;-1:-1:-1;14416:19:1;;;14448:5;;14304:159;14495:34;14520:8;14514:4;14495:34;:::i;:::-;14565:6;14561:1;14557:6;14553:19;14544:7;14541:32;14538:58;;;14576:18;;:::i;:::-;14614:20;;13834:806;-1:-1:-1;;;13834:806:1:o;14645:168::-;14685:7;14751:1;14747;14743:6;14739:14;14736:1;14733:21;14728:1;14721:9;14714:17;14710:45;14707:71;;;14758:18;;:::i;:::-;-1:-1:-1;14798:9:1;;14645:168::o;14818:125::-;14858:4;14886:1;14883;14880:8;14877:34;;;14891:18;;:::i;:::-;-1:-1:-1;14928:9:1;;14818:125::o;14948:127::-;15009:10;15004:3;15000:20;14997:1;14990:31;15040:4;15037:1;15030:15;15064:4;15061:1;15054:15;15080:127;15141:10;15136:3;15132:20;15129:1;15122:31;15172:4;15169:1;15162:15;15196:4;15193:1;15186:15;15344:131;-1:-1:-1;;;;;15419:31:1;;15409:42;;15399:70;;15465:1;15462;15455:12;15480:118;15566:5;15559:13;15552:21;15545:5;15542:32;15532:60;;15588:1;15585;15578:12

Swarm Source

ipfs://08abeb8bbb359778f5c0fec14e7a35ecde3535c058ad83321caf224b501ee40b

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.