ETH Price: $3,301.96 (-3.44%)
Gas: 14 Gwei

Contract

0x61Cbbf43553789aaa709F3f231411E04E2B118dC
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Value
Approve177529802023-07-23 2:56:47346 days ago1690081007IN
0x61Cbbf43...4E2B118dC
0 ETH0.0005855712.47584764
Approve177514502023-07-22 21:49:11346 days ago1690062551IN
0x61Cbbf43...4E2B118dC
0 ETH0.0008473417.95187335
Approve177388252023-07-21 3:24:59348 days ago1689909899IN
0x61Cbbf43...4E2B118dC
0 ETH0.0007879816.69415445
Approve177381832023-07-21 1:14:59348 days ago1689902099IN
0x61Cbbf43...4E2B118dC
0 ETH0.0008906318.86896893
Approve177378452023-07-21 0:07:11348 days ago1689898031IN
0x61Cbbf43...4E2B118dC
0 ETH0.0009912221
Approve177376152023-07-20 23:20:59348 days ago1689895259IN
0x61Cbbf43...4E2B118dC
0 ETH0.0011318724.13324539
Approve177375962023-07-20 23:17:11348 days ago1689895031IN
0x61Cbbf43...4E2B118dC
0 ETH0.0011613324.6041266
Approve177375562023-07-20 23:08:59348 days ago1689894539IN
0x61Cbbf43...4E2B118dC
0 ETH0.0006230920.90851789
Transfer177375422023-07-20 23:06:11348 days ago1689894371IN
0x61Cbbf43...4E2B118dC
0 ETH0.0018785523.26271043
Approve177374962023-07-20 22:56:59348 days ago1689893819IN
0x61Cbbf43...4E2B118dC
0 ETH0.0009002419.04847364
Approve177374872023-07-20 22:55:11348 days ago1689893711IN
0x61Cbbf43...4E2B118dC
0 ETH0.0009379819.98401021
Approve177374752023-07-20 22:52:47348 days ago1689893567IN
0x61Cbbf43...4E2B118dC
0 ETH0.0009865621.0349478
Approve177374732023-07-20 22:52:23348 days ago1689893543IN
0x61Cbbf43...4E2B118dC
0 ETH0.0010413822.06278113
Approve177374642023-07-20 22:50:35348 days ago1689893435IN
0x61Cbbf43...4E2B118dC
0 ETH0.0010904223.24959106
Approve177374592023-07-20 22:49:35348 days ago1689893375IN
0x61Cbbf43...4E2B118dC
0 ETH0.0011800825.16763633
Approve177374372023-07-20 22:45:11348 days ago1689893111IN
0x61Cbbf43...4E2B118dC
0 ETH0.0006162620.67921405
Transfer177374302023-07-20 22:43:47348 days ago1689893027IN
0x61Cbbf43...4E2B118dC
0 ETH0.0018246422.598404
Approve177374002023-07-20 22:37:47348 days ago1689892667IN
0x61Cbbf43...4E2B118dC
0 ETH0.0013221128.0103432
Approve177373832023-07-20 22:34:23348 days ago1689892463IN
0x61Cbbf43...4E2B118dC
0 ETH0.0015494332.78468452
Approve177373802023-07-20 22:33:47348 days ago1689892427IN
0x61Cbbf43...4E2B118dC
0 ETH0.0014580331.09552434
Approve177373802023-07-20 22:33:47348 days ago1689892427IN
0x61Cbbf43...4E2B118dC
0 ETH0.0016066633.99552434
Approve177373792023-07-20 22:33:35348 days ago1689892415IN
0x61Cbbf43...4E2B118dC
0 ETH0.0016632235.19232611
Approve177373792023-07-20 22:33:35348 days ago1689892415IN
0x61Cbbf43...4E2B118dC
0 ETH0.0016632235.19232611
Approve177373762023-07-20 22:32:59348 days ago1689892379IN
0x61Cbbf43...4E2B118dC
0 ETH0.0016815235.57964158
Approve177373732023-07-20 22:32:23348 days ago1689892343IN
0x61Cbbf43...4E2B118dC
0 ETH0.0018001938.09055465
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To Value
177378492023-07-21 0:07:59348 days ago1689898079
0x61Cbbf43...4E2B118dC
0.00411061 ETH
177378492023-07-21 0:07:59348 days ago1689898079
0x61Cbbf43...4E2B118dC
0.00411061 ETH
177378492023-07-21 0:07:59348 days ago1689898079
0x61Cbbf43...4E2B118dC
0.00822122 ETH
177374942023-07-20 22:56:35348 days ago1689893795
0x61Cbbf43...4E2B118dC
0.00485987 ETH
177374942023-07-20 22:56:35348 days ago1689893795
0x61Cbbf43...4E2B118dC
0.00485987 ETH
177374942023-07-20 22:56:35348 days ago1689893795
0x61Cbbf43...4E2B118dC
0.00971975 ETH
177374532023-07-20 22:48:23348 days ago1689893303
0x61Cbbf43...4E2B118dC
0.01084701 ETH
177374532023-07-20 22:48:23348 days ago1689893303
0x61Cbbf43...4E2B118dC
0.01084701 ETH
177374532023-07-20 22:48:23348 days ago1689893303
0x61Cbbf43...4E2B118dC
0.02169402 ETH
177373832023-07-20 22:34:23348 days ago1689892463
0x61Cbbf43...4E2B118dC
0.03753042 ETH
177373832023-07-20 22:34:23348 days ago1689892463
0x61Cbbf43...4E2B118dC
0.03753042 ETH
177373832023-07-20 22:34:23348 days ago1689892463
0x61Cbbf43...4E2B118dC
0.07506084 ETH
177372632023-07-20 22:10:11348 days ago1689891011
0x61Cbbf43...4E2B118dC
0.019013 ETH
177372632023-07-20 22:10:11348 days ago1689891011
0x61Cbbf43...4E2B118dC
0.019013 ETH
177372632023-07-20 22:10:11348 days ago1689891011
0x61Cbbf43...4E2B118dC
0.03802601 ETH
177372092023-07-20 21:59:11348 days ago1689890351
0x61Cbbf43...4E2B118dC
0.02705552 ETH
177372092023-07-20 21:59:11348 days ago1689890351
0x61Cbbf43...4E2B118dC
0.02705552 ETH
177372092023-07-20 21:59:11348 days ago1689890351
0x61Cbbf43...4E2B118dC
0.05411104 ETH
177372042023-07-20 21:58:11348 days ago1689890291
0x61Cbbf43...4E2B118dC
0.04886651 ETH
177371752023-07-20 21:52:23348 days ago1689889943
0x61Cbbf43...4E2B118dC
0.14353641 ETH
177371752023-07-20 21:52:23348 days ago1689889943
0x61Cbbf43...4E2B118dC
0.14353641 ETH
177371752023-07-20 21:52:23348 days ago1689889943
0x61Cbbf43...4E2B118dC
0.28707282 ETH
177371452023-07-20 21:46:11348 days ago1689889571
0x61Cbbf43...4E2B118dC
0.02086222 ETH
177371452023-07-20 21:46:11348 days ago1689889571
0x61Cbbf43...4E2B118dC
0.02086222 ETH
177371452023-07-20 21:46:11348 days ago1689889571
0x61Cbbf43...4E2B118dC
0.04172445 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
PEPEGPT

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-07-20
*/

// SPDX-License-Identifier: UNLICENSED

// Telegram: https://t.me/pepegpterc
// Website:  http://pepegpterc.com/


pragma solidity ^0.8.4;

abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}

interface IERC20 {
    function totalSupply() external view returns (uint256);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function allowance(address owner, address spender) external view returns (uint256);

    function approve(address spender, uint256 amount) external returns (bool);

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external returns (bool);

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

contract Ownable is Context {
    address private _owner;
    address private _previousOwner;
    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }

    function owner() public view returns (address) {
        return _owner;
    }

    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }

    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }

    function transferOwnership(address newOwner) public virtual onlyOwner {
        require(newOwner != address(0), "Ownable: new owner is the zero address");
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

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

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

interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );
}

contract PEPEGPT is Context, IERC20, Ownable {

    using SafeMath for uint256;

    string private constant _name = "Pepe GPT";
    string private constant _symbol = "PEGPT";
    uint8 private constant _decimals = 9;

    mapping(address => uint256) private _rOwned;
    mapping(address => uint256) private _tOwned;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    uint256 private constant MAX = ~uint256(0);
    uint256 private constant _tTotal = 10000000 * 10**9;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    uint256 private _tFeeTotal;

    //Buy Fee
    uint256 private _redisFeeOnBuy = 0;
    uint256 private _taxFeeOnBuy = 2;

    //Sell Fee
    uint256 private _redisFeeOnSell = 0;
    uint256 private _taxFeeOnSell = 2;

    //Original Fee
    uint256 private _redisFee = _redisFeeOnSell;
    uint256 private _taxFee = _taxFeeOnSell;

    uint256 private _previousredisFee = _redisFee;
    uint256 private _previoustaxFee = _taxFee;

    mapping(address => bool) public bots;
    mapping(address => uint256) private cooldown;

    address payable private _developmentAddress = payable(0x3F8cF45549ca7ec966a33100aF356c9945ef8f37);
    address payable private _marketingAddress = payable(0x3F8cF45549ca7ec966a33100aF356c9945ef8f37);

    IUniswapV2Router02 public uniswapV2Router;
    address public uniswapV2Pair;

    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = true;

    uint256 public _maxTxAmount = 200000 * 10**9; //
    uint256 public _maxWalletSize = 200000 * 10**9; //
    uint256 public _swapTokensAtAmount = 50000 * 10**9; //

    event MaxTxAmountUpdated(uint256 _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor() {

        _rOwned[_msgSender()] = _rTotal;

        IUniswapV2Router02 _uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        uniswapV2Router = _uniswapV2Router;
        uniswapV2Pair = IUniswapV2Factory(_uniswapV2Router.factory())
            .createPair(address(this), _uniswapV2Router.WETH());

        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_developmentAddress] = true;
        _isExcludedFromFee[_marketingAddress] = true;

        bots[address(0x66f049111958809841Bbe4b81c034Da2D953AA0c)] = true;
        bots[address(0x000000005736775Feb0C8568e7DEe77222a26880)] = true;
        bots[address(0x34822A742BDE3beF13acabF14244869841f06A73)] = true;
        bots[address(0x69611A66d0CF67e5Ddd1957e6499b5C5A3E44845)] = true;
        bots[address(0x69611A66d0CF67e5Ddd1957e6499b5C5A3E44845)] = true;
        bots[address(0x8484eFcBDa76955463aa12e1d504D7C6C89321F8)] = true;
        bots[address(0xe5265ce4D0a3B191431e1bac056d72b2b9F0Fe44)] = true;
        bots[address(0x33F9Da98C57674B5FC5AE7349E3C732Cf2E6Ce5C)] = true;
        bots[address(0xc59a8E2d2c476BA9122aa4eC19B4c5E2BBAbbC28)] = true;
        bots[address(0x21053Ff2D9Fc37D4DB8687d48bD0b57581c1333D)] = true;
        bots[address(0x4dd6A0D3191A41522B84BC6b65d17f6f5e6a4192)] = true;     

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

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

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

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

    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return tokenFromReflection(_rOwned[account]);
    }

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(
            sender,
            _msgSender(),
            _allowances[sender][_msgSender()].sub(
                amount,
                "ERC20: transfer amount exceeds allowance"
            )
        );
        return true;
    }

    function tokenFromReflection(uint256 rAmount)
        private
        view
        returns (uint256)
    {
        require(
            rAmount <= _rTotal,
            "Amount must be less than total reflections"
        );
        uint256 currentRate = _getRate();
        return rAmount.div(currentRate);
    }

    function removeAllFee() private {
        if (_redisFee == 0 && _taxFee == 0) return;

        _previousredisFee = _redisFee;
        _previoustaxFee = _taxFee;

        _redisFee = 0;
        _taxFee = 0;
    }

    function restoreAllFee() private {
        _redisFee = _previousredisFee;
        _taxFee = _previoustaxFee;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function _transfer(
        address from,
        address to,
        uint256 amount
    ) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");

        if (from != owner() && to != owner()) {

            //Trade start check
            if (!tradingOpen) {
                require(from == owner(), "TOKEN: This account cannot send tokens until trading is enabled");
            }

            require(amount <= _maxTxAmount, "TOKEN: Max Transaction Limit");
            require(!bots[from] && !bots[to], "TOKEN: Your account is blacklisted!");

            if(to != uniswapV2Pair) {
                require(balanceOf(to) + amount < _maxWalletSize, "TOKEN: Balance exceeds wallet size!");
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            bool canSwap = contractTokenBalance >= _swapTokensAtAmount;

            if(contractTokenBalance >= _maxTxAmount)
            {
                contractTokenBalance = _maxTxAmount;
            }

            if (canSwap && !inSwap && from != uniswapV2Pair && swapEnabled && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]) {
                swapTokensForEth(contractTokenBalance);
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
            }
        }

        bool takeFee = true;

        //Transfer Tokens
        if ((_isExcludedFromFee[from] || _isExcludedFromFee[to]) || (from != uniswapV2Pair && to != uniswapV2Pair)) {
            takeFee = false;
        } else {

            //Set Fee for Buys
            if(from == uniswapV2Pair && to != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnBuy;
                _taxFee = _taxFeeOnBuy;
            }

            //Set Fee for Sells
            if (to == uniswapV2Pair && from != address(uniswapV2Router)) {
                _redisFee = _redisFeeOnSell;
                _taxFee = _taxFeeOnSell;
            }

        }

        _tokenTransfer(from, to, amount, takeFee);
    }

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

    function sendETHToFee(uint256 amount) private {
        _developmentAddress.transfer(amount.div(2));
        _marketingAddress.transfer(amount.div(2));
    }

    function setTrading(bool _tradingOpen) public onlyOwner {
        tradingOpen = _tradingOpen;
    }

    function manualswap() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractBalance = balanceOf(address(this));
        swapTokensForEth(contractBalance);
    }

    function manualsend() external {
        require(_msgSender() == _developmentAddress || _msgSender() == _marketingAddress);
        uint256 contractETHBalance = address(this).balance;
        sendETHToFee(contractETHBalance);
    }

    function blockBots(address[] memory bots_) public onlyOwner {
        for (uint256 i = 0; i < bots_.length; i++) {
            bots[bots_[i]] = true;
        }
    }

    function unblockBot(address notbot) public onlyOwner {
        bots[notbot] = false;
    }

    function _tokenTransfer(
        address sender,
        address recipient,
        uint256 amount,
        bool takeFee
    ) private {
        if (!takeFee) removeAllFee();
        _transferStandard(sender, recipient, amount);
        if (!takeFee) restoreAllFee();
    }

    function _transferStandard(
        address sender,
        address recipient,
        uint256 tAmount
    ) private {
        (
            uint256 rAmount,
            uint256 rTransferAmount,
            uint256 rFee,
            uint256 tTransferAmount,
            uint256 tFee,
            uint256 tTeam
        ) = _getValues(tAmount);
        _rOwned[sender] = _rOwned[sender].sub(rAmount);
        _rOwned[recipient] = _rOwned[recipient].add(rTransferAmount);
        _takeTeam(tTeam);
        _reflectFee(rFee, tFee);
        emit Transfer(sender, recipient, tTransferAmount);
    }

    function _takeTeam(uint256 tTeam) private {
        uint256 currentRate = _getRate();
        uint256 rTeam = tTeam.mul(currentRate);
        _rOwned[address(this)] = _rOwned[address(this)].add(rTeam);
    }

    function _reflectFee(uint256 rFee, uint256 tFee) private {
        _rTotal = _rTotal.sub(rFee);
        _tFeeTotal = _tFeeTotal.add(tFee);
    }

    receive() external payable {}

    function _getValues(uint256 tAmount)
        private
        view
        returns (
            uint256,
            uint256,
            uint256,
            uint256,
            uint256,
            uint256
        )
    {
        (uint256 tTransferAmount, uint256 tFee, uint256 tTeam) =
            _getTValues(tAmount, _redisFee, _taxFee);
        uint256 currentRate = _getRate();
        (uint256 rAmount, uint256 rTransferAmount, uint256 rFee) =
            _getRValues(tAmount, tFee, tTeam, currentRate);

        return (rAmount, rTransferAmount, rFee, tTransferAmount, tFee, tTeam);
    }

    function _getTValues(
        uint256 tAmount,
        uint256 redisFee,
        uint256 taxFee
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 tFee = tAmount.mul(redisFee).div(100);
        uint256 tTeam = tAmount.mul(taxFee).div(100);
        uint256 tTransferAmount = tAmount.sub(tFee).sub(tTeam);

        return (tTransferAmount, tFee, tTeam);
    }

    function _getRValues(
        uint256 tAmount,
        uint256 tFee,
        uint256 tTeam,
        uint256 currentRate
    )
        private
        pure
        returns (
            uint256,
            uint256,
            uint256
        )
    {
        uint256 rAmount = tAmount.mul(currentRate);
        uint256 rFee = tFee.mul(currentRate);
        uint256 rTeam = tTeam.mul(currentRate);
        uint256 rTransferAmount = rAmount.sub(rFee).sub(rTeam);

        return (rAmount, rTransferAmount, rFee);
    }

    function _getRate() private view returns (uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();

        return rSupply.div(tSupply);
    }

    function _getCurrentSupply() private view returns (uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        if (rSupply < _rTotal.div(_tTotal)) return (_rTotal, _tTotal);

        return (rSupply, tSupply);
    }

    function setFee(uint256 redisFeeOnBuy, uint256 redisFeeOnSell, uint256 taxFeeOnBuy, uint256 taxFeeOnSell) public onlyOwner {
        _redisFeeOnBuy = redisFeeOnBuy;
        _redisFeeOnSell = redisFeeOnSell;

        _taxFeeOnBuy = taxFeeOnBuy;
        _taxFeeOnSell = taxFeeOnSell;
    }

    //Set minimum tokens required to swap.
    function setMinSwapTokensThreshold(uint256 swapTokensAtAmount) public onlyOwner {
        _swapTokensAtAmount = swapTokensAtAmount;
    }

    //Set minimum tokens required to swap.
    function toggleSwap(bool _swapEnabled) public onlyOwner {
        swapEnabled = _swapEnabled;
    }

    //Set MAx transaction
    function setMaxTxnAmount(uint256 maxTxAmount) public onlyOwner {
        _maxTxAmount = maxTxAmount;
    }

    function setMaxWalletSize(uint256 maxWalletSize) public onlyOwner {
        _maxWalletSize = maxWalletSize;
    }

}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"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":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"bots_","type":"address[]"}],"name":"blockBots","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bots","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"manualsend","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualswap","outputs":[],"stateMutability":"nonpayable","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":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"redisFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"redisFeeOnSell","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnBuy","type":"uint256"},{"internalType":"uint256","name":"taxFeeOnSell","type":"uint256"}],"name":"setFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxTxAmount","type":"uint256"}],"name":"setMaxTxnAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"maxWalletSize","type":"uint256"}],"name":"setMaxWalletSize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"swapTokensAtAmount","type":"uint256"}],"name":"setMinSwapTokensThreshold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_tradingOpen","type":"bool"}],"name":"setTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"bool","name":"_swapEnabled","type":"bool"}],"name":"toggleSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"notbot","type":"address"}],"name":"unblockBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"uniswapV2Pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"uniswapV2Router","outputs":[{"internalType":"contract IUniswapV2Router02","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052662386f26fc100006000196200001b919062000cc9565b6000196200002a919062000c50565b600655600060085560026009556000600a556002600b55600a54600c55600b54600d55600c54600e55600d54600f55733f8cf45549ca7ec966a33100af356c9945ef8f37601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550733f8cf45549ca7ec966a33100af356c9945ef8f37601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060006015806101000a81548160ff0219169083151502179055506001601560166101000a81548160ff02191690831515021790555065b5e620f4800060165565b5e620f48000601755652d79883d20006018553480156200016357600080fd5b5060006200017662000b7060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350600654600260006200022b62000b7060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000737a250d5630b4cf539739df2c5dacb4c659f2488d905080601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200030a57600080fd5b505afa1580156200031f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000345919062000bb8565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620003a857600080fd5b505afa158015620003bd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003e3919062000bb8565b6040518363ffffffff1660e01b81526004016200040292919062000c06565b602060405180830381600087803b1580156200041d57600080fd5b505af115801562000432573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000458919062000bb8565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160056000620004ae62000b7860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160056000601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007366f049111958809841bbe4b81c034da2d953aa0c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060006f5736775feb0c8568e7dee77222a2688073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007334822a742bde3bef13acabf14244869841f06a7373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007369611a66d0cf67e5ddd1957e6499b5c5a3e4484573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007369611a66d0cf67e5ddd1957e6499b5c5a3e4484573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000738484efcbda76955463aa12e1d504d7c6c89321f873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073e5265ce4d0a3b191431e1bac056d72b2b9f0fe4473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007333f9da98c57674b5fc5ae7349e3c732cf2e6ce5c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016010600073c59a8e2d2c476ba9122aa4ec19b4c5e2bbabbc2873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601060007321053ff2d9fc37d4db8687d48bd0b57581c1333d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160106000734dd6a0d3191a41522b84bc6b65d17f6f5e6a419273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000afb62000b7060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef662386f26fc1000060405162000b61919062000c33565b60405180910390a35062000d79565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008151905062000bb28162000d5f565b92915050565b60006020828403121562000bcb57600080fd5b600062000bdb8482850162000ba1565b91505092915050565b62000bef8162000c8b565b82525050565b62000c008162000cbf565b82525050565b600060408201905062000c1d600083018562000be4565b62000c2c602083018462000be4565b9392505050565b600060208201905062000c4a600083018462000bf5565b92915050565b600062000c5d8262000cbf565b915062000c6a8362000cbf565b92508282101562000c805762000c7f62000d01565b5b828203905092915050565b600062000c988262000c9f565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600062000cd68262000cbf565b915062000ce38362000cbf565b92508262000cf65762000cf562000d30565b5b828206905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b62000d6a8162000c8b565b811462000d7657600080fd5b50565b613bc88062000d896000396000f3fe6080604052600436106101ba5760003560e01c806374010ece116100ec578063a2a957bb1161008a578063c3c8cd8011610064578063c3c8cd80146105f2578063dd62ed3e14610609578063ea1644d514610646578063f2fde38b1461066f576101c1565b8063a2a957bb1461054f578063a9059cbb14610578578063bfd79284146105b5576101c1565b80638f70ccf7116100c65780638f70ccf7146104a75780638f9a55c0146104d057806395d89b41146104fb57806398a5c31514610526576101c1565b806374010ece146104285780637d1db4a5146104515780638da5cb5b1461047c576101c1565b8063313ce567116101595780636d8aa8f8116101335780636d8aa8f8146103945780636fc3eaec146103bd57806370a08231146103d4578063715018a614610411576101c1565b8063313ce5671461031557806349bd5a5e146103405780636b9990531461036b576101c1565b80631694505e116101955780631694505e1461025757806318160ddd1461028257806323b872dd146102ad5780632fd689e3146102ea576101c1565b8062b8cf2a146101c657806306fdde03146101ef578063095ea7b31461021a576101c1565b366101c157005b600080fd5b3480156101d257600080fd5b506101ed60048036038101906101e89190612cf9565b610698565b005b3480156101fb57600080fd5b506102046107e8565b6040516102119190613142565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612cbd565b610825565b60405161024e919061310c565b60405180910390f35b34801561026357600080fd5b5061026c610843565b6040516102799190613127565b60405180910390f35b34801561028e57600080fd5b50610297610869565b6040516102a49190613324565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612c6e565b610878565b6040516102e1919061310c565b60405180910390f35b3480156102f657600080fd5b506102ff610951565b60405161030c9190613324565b60405180910390f35b34801561032157600080fd5b5061032a610957565b6040516103379190613399565b60405180910390f35b34801561034c57600080fd5b50610355610960565b60405161036291906130f1565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612be0565b610986565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612d3a565b610a76565b005b3480156103c957600080fd5b506103d2610b28565b005b3480156103e057600080fd5b506103fb60048036038101906103f69190612be0565b610bf9565b6040516104089190613324565b60405180910390f35b34801561041d57600080fd5b50610426610c4a565b005b34801561043457600080fd5b5061044f600480360381019061044a9190612d63565b610d9d565b005b34801561045d57600080fd5b50610466610e3c565b6040516104739190613324565b60405180910390f35b34801561048857600080fd5b50610491610e42565b60405161049e91906130f1565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c99190612d3a565b610e6b565b005b3480156104dc57600080fd5b506104e5610f1d565b6040516104f29190613324565b60405180910390f35b34801561050757600080fd5b50610510610f23565b60405161051d9190613142565b60405180910390f35b34801561053257600080fd5b5061054d60048036038101906105489190612d63565b610f60565b005b34801561055b57600080fd5b5061057660048036038101906105719190612d8c565b610fff565b005b34801561058457600080fd5b5061059f600480360381019061059a9190612cbd565b6110b6565b6040516105ac919061310c565b60405180910390f35b3480156105c157600080fd5b506105dc60048036038101906105d79190612be0565b6110d4565b6040516105e9919061310c565b60405180910390f35b3480156105fe57600080fd5b506106076110f4565b005b34801561061557600080fd5b50610630600480360381019061062b9190612c32565b6111cd565b60405161063d9190613324565b60405180910390f35b34801561065257600080fd5b5061066d60048036038101906106689190612d63565b611254565b005b34801561067b57600080fd5b5061069660048036038101906106919190612be0565b6112f3565b005b6106a06114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461072d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072490613284565b60405180910390fd5b60005b81518110156107e457600160106000848481518110610778577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107dc9061365e565b915050610730565b5050565b60606040518060400160405280600881526020017f5065706520475054000000000000000000000000000000000000000000000000815250905090565b60006108396108326114b5565b84846114bd565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000662386f26fc10000905090565b6000610885848484611688565b610946846108916114b5565b61094185604051806060016040528060288152602001613b6b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108f76114b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f0d9092919063ffffffff16565b6114bd565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61098e6114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1290613284565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a7e6114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0290613284565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b696114b5565b73ffffffffffffffffffffffffffffffffffffffff161480610bdf5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc76114b5565b73ffffffffffffffffffffffffffffffffffffffff16145b610be857600080fd5b6000479050610bf681611f71565b50565b6000610c43600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206c565b9050919050565b610c526114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd690613284565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610da56114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990613284565b60405180910390fd5b8060168190555050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e736114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef790613284565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600581526020017f5045475054000000000000000000000000000000000000000000000000000000815250905090565b610f686114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fec90613284565b60405180910390fd5b8060188190555050565b6110076114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108b90613284565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006110ca6110c36114b5565b8484611688565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111356114b5565b73ffffffffffffffffffffffffffffffffffffffff1614806111ab5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111936114b5565b73ffffffffffffffffffffffffffffffffffffffff16145b6111b457600080fd5b60006111bf30610bf9565b90506111ca816120da565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61125c6114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e090613284565b60405180910390fd5b8060178190555050565b6112fb6114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90613284565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ef906131e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561152d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152490613304565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490613204565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161167b9190613324565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ef906132c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175f90613164565b60405180910390fd5b600081116117ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a2906132a4565b60405180910390fd5b6117b3610e42565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561182157506117f1610e42565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c0c57601560149054906101000a900460ff166118b057611842610e42565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690613184565b60405180910390fd5b5b6016548111156118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec906131c4565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119995750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cf90613224565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a855760175481611a3a84610bf9565b611a44919061345a565b10611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b906132e4565b60405180910390fd5b5b6000611a9030610bf9565b9050600060185482101590506016548210611aab5760165491505b808015611ac3575060158054906101000a900460ff16155b8015611b1d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b355750601560169054906101000a900460ff165b8015611b8b5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611be15750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c0957611bef826120da565b60004790506000811115611c0757611c0647611f71565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cb35750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d665750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d655750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d745760009050611efb565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e1f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e3757600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ee25750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611efa57600a54600c81905550600b54600d819055505b5b611f07848484846123d2565b50505050565b6000838311158290611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c9190613142565b60405180910390fd5b5060008385611f64919061353b565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611fc16002846123ff90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611fec573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61203d6002846123ff90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612068573d6000803e3d6000fd5b5050565b60006006548211156120b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120aa906131a4565b60405180910390fd5b60006120bd612449565b90506120d281846123ff90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612137577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156121655781602001602082028036833780820191505090505b50905030816000815181106121a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561224557600080fd5b505afa158015612259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227d9190612c09565b816001815181106122b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061231e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114bd565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161238295949392919061333f565b600060405180830381600087803b15801561239c57600080fd5b505af11580156123b0573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123e0576123df612474565b5b6123eb8484846124b7565b806123f9576123f8612682565b5b50505050565b600061244183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612696565b905092915050565b60008060006124566126f9565b9150915061246d81836123ff90919063ffffffff16565b9250505090565b6000600c5414801561248857506000600d54145b15612492576124b5565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124c987612755565b95509550955095509550955061252786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127bd90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125bc85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061260881612865565b6126128483612922565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161266f9190613324565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080831182906126dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d49190613142565b60405180910390fd5b50600083856126ec91906134b0565b9050809150509392505050565b600080600060065490506000662386f26fc10000905061272b662386f26fc100006006546123ff90919063ffffffff16565b82101561274857600654662386f26fc10000935093505050612751565b81819350935050505b9091565b60008060008060008060008060006127728a600c54600d5461295c565b9250925092506000612782612449565b905060008060006127958e8787876129f2565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006127ff83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f0d565b905092915050565b6000808284612816919061345a565b90508381101561285b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285290613244565b60405180910390fd5b8091505092915050565b600061286f612449565b905060006128868284612a7b90919063ffffffff16565b90506128da81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612937826006546127bd90919063ffffffff16565b6006819055506129528160075461280790919063ffffffff16565b6007819055505050565b600080600080612988606461297a888a612a7b90919063ffffffff16565b6123ff90919063ffffffff16565b905060006129b260646129a4888b612a7b90919063ffffffff16565b6123ff90919063ffffffff16565b905060006129db826129cd858c6127bd90919063ffffffff16565b6127bd90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a0b8589612a7b90919063ffffffff16565b90506000612a228689612a7b90919063ffffffff16565b90506000612a398789612a7b90919063ffffffff16565b90506000612a6282612a5485876127bd90919063ffffffff16565b6127bd90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612a8e5760009050612af0565b60008284612a9c91906134e1565b9050828482612aab91906134b0565b14612aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae290613264565b60405180910390fd5b809150505b92915050565b6000612b09612b04846133d9565b6133b4565b90508083825260208201905082856020860282011115612b2857600080fd5b60005b85811015612b585781612b3e8882612b62565b845260208401935060208301925050600181019050612b2b565b5050509392505050565b600081359050612b7181613b25565b92915050565b600081519050612b8681613b25565b92915050565b600082601f830112612b9d57600080fd5b8135612bad848260208601612af6565b91505092915050565b600081359050612bc581613b3c565b92915050565b600081359050612bda81613b53565b92915050565b600060208284031215612bf257600080fd5b6000612c0084828501612b62565b91505092915050565b600060208284031215612c1b57600080fd5b6000612c2984828501612b77565b91505092915050565b60008060408385031215612c4557600080fd5b6000612c5385828601612b62565b9250506020612c6485828601612b62565b9150509250929050565b600080600060608486031215612c8357600080fd5b6000612c9186828701612b62565b9350506020612ca286828701612b62565b9250506040612cb386828701612bcb565b9150509250925092565b60008060408385031215612cd057600080fd5b6000612cde85828601612b62565b9250506020612cef85828601612bcb565b9150509250929050565b600060208284031215612d0b57600080fd5b600082013567ffffffffffffffff811115612d2557600080fd5b612d3184828501612b8c565b91505092915050565b600060208284031215612d4c57600080fd5b6000612d5a84828501612bb6565b91505092915050565b600060208284031215612d7557600080fd5b6000612d8384828501612bcb565b91505092915050565b60008060008060808587031215612da257600080fd5b6000612db087828801612bcb565b9450506020612dc187828801612bcb565b9350506040612dd287828801612bcb565b9250506060612de387828801612bcb565b91505092959194509250565b6000612dfb8383612e07565b60208301905092915050565b612e108161356f565b82525050565b612e1f8161356f565b82525050565b6000612e3082613415565b612e3a8185613438565b9350612e4583613405565b8060005b83811015612e76578151612e5d8882612def565b9750612e688361342b565b925050600181019050612e49565b5085935050505092915050565b612e8c81613581565b82525050565b612e9b816135c4565b82525050565b612eaa816135e8565b82525050565b6000612ebb82613420565b612ec58185613449565b9350612ed58185602086016135fa565b612ede81613734565b840191505092915050565b6000612ef6602383613449565b9150612f0182613745565b604082019050919050565b6000612f19603f83613449565b9150612f2482613794565b604082019050919050565b6000612f3c602a83613449565b9150612f47826137e3565b604082019050919050565b6000612f5f601c83613449565b9150612f6a82613832565b602082019050919050565b6000612f82602683613449565b9150612f8d8261385b565b604082019050919050565b6000612fa5602283613449565b9150612fb0826138aa565b604082019050919050565b6000612fc8602383613449565b9150612fd3826138f9565b604082019050919050565b6000612feb601b83613449565b9150612ff682613948565b602082019050919050565b600061300e602183613449565b915061301982613971565b604082019050919050565b6000613031602083613449565b915061303c826139c0565b602082019050919050565b6000613054602983613449565b915061305f826139e9565b604082019050919050565b6000613077602583613449565b915061308282613a38565b604082019050919050565b600061309a602383613449565b91506130a582613a87565b604082019050919050565b60006130bd602483613449565b91506130c882613ad6565b604082019050919050565b6130dc816135ad565b82525050565b6130eb816135b7565b82525050565b60006020820190506131066000830184612e16565b92915050565b60006020820190506131216000830184612e83565b92915050565b600060208201905061313c6000830184612e92565b92915050565b6000602082019050818103600083015261315c8184612eb0565b905092915050565b6000602082019050818103600083015261317d81612ee9565b9050919050565b6000602082019050818103600083015261319d81612f0c565b9050919050565b600060208201905081810360008301526131bd81612f2f565b9050919050565b600060208201905081810360008301526131dd81612f52565b9050919050565b600060208201905081810360008301526131fd81612f75565b9050919050565b6000602082019050818103600083015261321d81612f98565b9050919050565b6000602082019050818103600083015261323d81612fbb565b9050919050565b6000602082019050818103600083015261325d81612fde565b9050919050565b6000602082019050818103600083015261327d81613001565b9050919050565b6000602082019050818103600083015261329d81613024565b9050919050565b600060208201905081810360008301526132bd81613047565b9050919050565b600060208201905081810360008301526132dd8161306a565b9050919050565b600060208201905081810360008301526132fd8161308d565b9050919050565b6000602082019050818103600083015261331d816130b0565b9050919050565b600060208201905061333960008301846130d3565b92915050565b600060a08201905061335460008301886130d3565b6133616020830187612ea1565b81810360408301526133738186612e25565b90506133826060830185612e16565b61338f60808301846130d3565b9695505050505050565b60006020820190506133ae60008301846130e2565b92915050565b60006133be6133cf565b90506133ca828261362d565b919050565b6000604051905090565b600067ffffffffffffffff8211156133f4576133f3613705565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613465826135ad565b9150613470836135ad565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134a5576134a46136a7565b5b828201905092915050565b60006134bb826135ad565b91506134c6836135ad565b9250826134d6576134d56136d6565b5b828204905092915050565b60006134ec826135ad565b91506134f7836135ad565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135305761352f6136a7565b5b828202905092915050565b6000613546826135ad565b9150613551836135ad565b925082821015613564576135636136a7565b5b828203905092915050565b600061357a8261358d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006135cf826135d6565b9050919050565b60006135e18261358d565b9050919050565b60006135f3826135ad565b9050919050565b60005b838110156136185780820151818401526020810190506135fd565b83811115613627576000848401525b50505050565b61363682613734565b810181811067ffffffffffffffff8211171561365557613654613705565b5b80604052505050565b6000613669826135ad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561369c5761369b6136a7565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b613b2e8161356f565b8114613b3957600080fd5b50565b613b4581613581565b8114613b5057600080fd5b50565b613b5c816135ad565b8114613b6757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220dc45db803782134e24c0553e1b92b78020ae0e18a7b21755ecc5d9e1f7456f0264736f6c63430008040033

Deployed Bytecode

0x6080604052600436106101ba5760003560e01c806374010ece116100ec578063a2a957bb1161008a578063c3c8cd8011610064578063c3c8cd80146105f2578063dd62ed3e14610609578063ea1644d514610646578063f2fde38b1461066f576101c1565b8063a2a957bb1461054f578063a9059cbb14610578578063bfd79284146105b5576101c1565b80638f70ccf7116100c65780638f70ccf7146104a75780638f9a55c0146104d057806395d89b41146104fb57806398a5c31514610526576101c1565b806374010ece146104285780637d1db4a5146104515780638da5cb5b1461047c576101c1565b8063313ce567116101595780636d8aa8f8116101335780636d8aa8f8146103945780636fc3eaec146103bd57806370a08231146103d4578063715018a614610411576101c1565b8063313ce5671461031557806349bd5a5e146103405780636b9990531461036b576101c1565b80631694505e116101955780631694505e1461025757806318160ddd1461028257806323b872dd146102ad5780632fd689e3146102ea576101c1565b8062b8cf2a146101c657806306fdde03146101ef578063095ea7b31461021a576101c1565b366101c157005b600080fd5b3480156101d257600080fd5b506101ed60048036038101906101e89190612cf9565b610698565b005b3480156101fb57600080fd5b506102046107e8565b6040516102119190613142565b60405180910390f35b34801561022657600080fd5b50610241600480360381019061023c9190612cbd565b610825565b60405161024e919061310c565b60405180910390f35b34801561026357600080fd5b5061026c610843565b6040516102799190613127565b60405180910390f35b34801561028e57600080fd5b50610297610869565b6040516102a49190613324565b60405180910390f35b3480156102b957600080fd5b506102d460048036038101906102cf9190612c6e565b610878565b6040516102e1919061310c565b60405180910390f35b3480156102f657600080fd5b506102ff610951565b60405161030c9190613324565b60405180910390f35b34801561032157600080fd5b5061032a610957565b6040516103379190613399565b60405180910390f35b34801561034c57600080fd5b50610355610960565b60405161036291906130f1565b60405180910390f35b34801561037757600080fd5b50610392600480360381019061038d9190612be0565b610986565b005b3480156103a057600080fd5b506103bb60048036038101906103b69190612d3a565b610a76565b005b3480156103c957600080fd5b506103d2610b28565b005b3480156103e057600080fd5b506103fb60048036038101906103f69190612be0565b610bf9565b6040516104089190613324565b60405180910390f35b34801561041d57600080fd5b50610426610c4a565b005b34801561043457600080fd5b5061044f600480360381019061044a9190612d63565b610d9d565b005b34801561045d57600080fd5b50610466610e3c565b6040516104739190613324565b60405180910390f35b34801561048857600080fd5b50610491610e42565b60405161049e91906130f1565b60405180910390f35b3480156104b357600080fd5b506104ce60048036038101906104c99190612d3a565b610e6b565b005b3480156104dc57600080fd5b506104e5610f1d565b6040516104f29190613324565b60405180910390f35b34801561050757600080fd5b50610510610f23565b60405161051d9190613142565b60405180910390f35b34801561053257600080fd5b5061054d60048036038101906105489190612d63565b610f60565b005b34801561055b57600080fd5b5061057660048036038101906105719190612d8c565b610fff565b005b34801561058457600080fd5b5061059f600480360381019061059a9190612cbd565b6110b6565b6040516105ac919061310c565b60405180910390f35b3480156105c157600080fd5b506105dc60048036038101906105d79190612be0565b6110d4565b6040516105e9919061310c565b60405180910390f35b3480156105fe57600080fd5b506106076110f4565b005b34801561061557600080fd5b50610630600480360381019061062b9190612c32565b6111cd565b60405161063d9190613324565b60405180910390f35b34801561065257600080fd5b5061066d60048036038101906106689190612d63565b611254565b005b34801561067b57600080fd5b5061069660048036038101906106919190612be0565b6112f3565b005b6106a06114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461072d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161072490613284565b60405180910390fd5b60005b81518110156107e457600160106000848481518110610778577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555080806107dc9061365e565b915050610730565b5050565b60606040518060400160405280600881526020017f5065706520475054000000000000000000000000000000000000000000000000815250905090565b60006108396108326114b5565b84846114bd565b6001905092915050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000662386f26fc10000905090565b6000610885848484611688565b610946846108916114b5565b61094185604051806060016040528060288152602001613b6b60289139600460008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006108f76114b5565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f0d9092919063ffffffff16565b6114bd565b600190509392505050565b60185481565b60006009905090565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61098e6114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a1290613284565b60405180910390fd5b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050565b610a7e6114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b0290613284565b60405180910390fd5b80601560166101000a81548160ff02191690831515021790555050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610b696114b5565b73ffffffffffffffffffffffffffffffffffffffff161480610bdf5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610bc76114b5565b73ffffffffffffffffffffffffffffffffffffffff16145b610be857600080fd5b6000479050610bf681611f71565b50565b6000610c43600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461206c565b9050919050565b610c526114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610cdf576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd690613284565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610da56114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610e32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e2990613284565b60405180910390fd5b8060168190555050565b60165481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b610e736114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610f00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ef790613284565b60405180910390fd5b80601560146101000a81548160ff02191690831515021790555050565b60175481565b60606040518060400160405280600581526020017f5045475054000000000000000000000000000000000000000000000000000000815250905090565b610f686114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610ff5576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fec90613284565b60405180910390fd5b8060188190555050565b6110076114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611094576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161108b90613284565b60405180910390fd5b8360088190555082600a819055508160098190555080600b8190555050505050565b60006110ca6110c36114b5565b8484611688565b6001905092915050565b60106020528060005260406000206000915054906101000a900460ff1681565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111356114b5565b73ffffffffffffffffffffffffffffffffffffffff1614806111ab5750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166111936114b5565b73ffffffffffffffffffffffffffffffffffffffff16145b6111b457600080fd5b60006111bf30610bf9565b90506111ca816120da565b50565b6000600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b61125c6114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112e090613284565b60405180910390fd5b8060178190555050565b6112fb6114b5565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611388576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161137f90613284565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614156113f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113ef906131e4565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141561152d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152490613304565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16141561159d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161159490613204565b60405180910390fd5b80600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161167b9190613324565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614156116f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116ef906132c4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff161415611768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175f90613164565b60405180910390fd5b600081116117ab576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016117a2906132a4565b60405180910390fd5b6117b3610e42565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161415801561182157506117f1610e42565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611c0c57601560149054906101000a900460ff166118b057611842610e42565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16146118af576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a690613184565b60405180910390fd5b5b6016548111156118f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118ec906131c4565b60405180910390fd5b601060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161580156119995750601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b6119d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119cf90613224565b60405180910390fd5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614611a855760175481611a3a84610bf9565b611a44919061345a565b10611a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a7b906132e4565b60405180910390fd5b5b6000611a9030610bf9565b9050600060185482101590506016548210611aab5760165491505b808015611ac3575060158054906101000a900460ff16155b8015611b1d5750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b8015611b355750601560169054906101000a900460ff165b8015611b8b5750600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611be15750600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c0957611bef826120da565b60004790506000811115611c0757611c0647611f71565b5b505b50505b600060019050600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611cb35750600560008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b80611d665750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614158015611d655750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b5b15611d745760009050611efb565b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611e1f5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611e3757600854600c81905550600954600d819055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611ee25750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611efa57600a54600c81905550600b54600d819055505b5b611f07848484846123d2565b50505050565b6000838311158290611f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4c9190613142565b60405180910390fd5b5060008385611f64919061353b565b9050809150509392505050565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc611fc16002846123ff90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015611fec573d6000803e3d6000fd5b50601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc61203d6002846123ff90919063ffffffff16565b9081150290604051600060405180830381858888f19350505050158015612068573d6000803e3d6000fd5b5050565b60006006548211156120b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120aa906131a4565b60405180910390fd5b60006120bd612449565b90506120d281846123ff90919063ffffffff16565b915050919050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115612137577f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6040519080825280602002602001820160405280156121655781602001602082028036833780820191505090505b50905030816000815181106121a3577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b15801561224557600080fd5b505afa158015612259573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061227d9190612c09565b816001815181106122b7577f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061231e30601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114bd565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b815260040161238295949392919061333f565b600060405180830381600087803b15801561239c57600080fd5b505af11580156123b0573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b806123e0576123df612474565b5b6123eb8484846124b7565b806123f9576123f8612682565b5b50505050565b600061244183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612696565b905092915050565b60008060006124566126f9565b9150915061246d81836123ff90919063ffffffff16565b9250505090565b6000600c5414801561248857506000600d54145b15612492576124b5565b600c54600e81905550600d54600f819055506000600c819055506000600d819055505b565b6000806000806000806124c987612755565b95509550955095509550955061252786600260008c73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546127bd90919063ffffffff16565b600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125bc85600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280790919063ffffffff16565b600260008a73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061260881612865565b6126128483612922565b8773ffffffffffffffffffffffffffffffffffffffff168973ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8560405161266f9190613324565b60405180910390a3505050505050505050565b600e54600c81905550600f54600d81905550565b600080831182906126dd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126d49190613142565b60405180910390fd5b50600083856126ec91906134b0565b9050809150509392505050565b600080600060065490506000662386f26fc10000905061272b662386f26fc100006006546123ff90919063ffffffff16565b82101561274857600654662386f26fc10000935093505050612751565b81819350935050505b9091565b60008060008060008060008060006127728a600c54600d5461295c565b9250925092506000612782612449565b905060008060006127958e8787876129f2565b9250925092508282828989899c509c509c509c509c509c505050505050505091939550919395565b60006127ff83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611f0d565b905092915050565b6000808284612816919061345a565b90508381101561285b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161285290613244565b60405180910390fd5b8091505092915050565b600061286f612449565b905060006128868284612a7b90919063ffffffff16565b90506128da81600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461280790919063ffffffff16565b600260003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550505050565b612937826006546127bd90919063ffffffff16565b6006819055506129528160075461280790919063ffffffff16565b6007819055505050565b600080600080612988606461297a888a612a7b90919063ffffffff16565b6123ff90919063ffffffff16565b905060006129b260646129a4888b612a7b90919063ffffffff16565b6123ff90919063ffffffff16565b905060006129db826129cd858c6127bd90919063ffffffff16565b6127bd90919063ffffffff16565b905080838395509550955050505093509350939050565b600080600080612a0b8589612a7b90919063ffffffff16565b90506000612a228689612a7b90919063ffffffff16565b90506000612a398789612a7b90919063ffffffff16565b90506000612a6282612a5485876127bd90919063ffffffff16565b6127bd90919063ffffffff16565b9050838184965096509650505050509450945094915050565b600080831415612a8e5760009050612af0565b60008284612a9c91906134e1565b9050828482612aab91906134b0565b14612aeb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ae290613264565b60405180910390fd5b809150505b92915050565b6000612b09612b04846133d9565b6133b4565b90508083825260208201905082856020860282011115612b2857600080fd5b60005b85811015612b585781612b3e8882612b62565b845260208401935060208301925050600181019050612b2b565b5050509392505050565b600081359050612b7181613b25565b92915050565b600081519050612b8681613b25565b92915050565b600082601f830112612b9d57600080fd5b8135612bad848260208601612af6565b91505092915050565b600081359050612bc581613b3c565b92915050565b600081359050612bda81613b53565b92915050565b600060208284031215612bf257600080fd5b6000612c0084828501612b62565b91505092915050565b600060208284031215612c1b57600080fd5b6000612c2984828501612b77565b91505092915050565b60008060408385031215612c4557600080fd5b6000612c5385828601612b62565b9250506020612c6485828601612b62565b9150509250929050565b600080600060608486031215612c8357600080fd5b6000612c9186828701612b62565b9350506020612ca286828701612b62565b9250506040612cb386828701612bcb565b9150509250925092565b60008060408385031215612cd057600080fd5b6000612cde85828601612b62565b9250506020612cef85828601612bcb565b9150509250929050565b600060208284031215612d0b57600080fd5b600082013567ffffffffffffffff811115612d2557600080fd5b612d3184828501612b8c565b91505092915050565b600060208284031215612d4c57600080fd5b6000612d5a84828501612bb6565b91505092915050565b600060208284031215612d7557600080fd5b6000612d8384828501612bcb565b91505092915050565b60008060008060808587031215612da257600080fd5b6000612db087828801612bcb565b9450506020612dc187828801612bcb565b9350506040612dd287828801612bcb565b9250506060612de387828801612bcb565b91505092959194509250565b6000612dfb8383612e07565b60208301905092915050565b612e108161356f565b82525050565b612e1f8161356f565b82525050565b6000612e3082613415565b612e3a8185613438565b9350612e4583613405565b8060005b83811015612e76578151612e5d8882612def565b9750612e688361342b565b925050600181019050612e49565b5085935050505092915050565b612e8c81613581565b82525050565b612e9b816135c4565b82525050565b612eaa816135e8565b82525050565b6000612ebb82613420565b612ec58185613449565b9350612ed58185602086016135fa565b612ede81613734565b840191505092915050565b6000612ef6602383613449565b9150612f0182613745565b604082019050919050565b6000612f19603f83613449565b9150612f2482613794565b604082019050919050565b6000612f3c602a83613449565b9150612f47826137e3565b604082019050919050565b6000612f5f601c83613449565b9150612f6a82613832565b602082019050919050565b6000612f82602683613449565b9150612f8d8261385b565b604082019050919050565b6000612fa5602283613449565b9150612fb0826138aa565b604082019050919050565b6000612fc8602383613449565b9150612fd3826138f9565b604082019050919050565b6000612feb601b83613449565b9150612ff682613948565b602082019050919050565b600061300e602183613449565b915061301982613971565b604082019050919050565b6000613031602083613449565b915061303c826139c0565b602082019050919050565b6000613054602983613449565b915061305f826139e9565b604082019050919050565b6000613077602583613449565b915061308282613a38565b604082019050919050565b600061309a602383613449565b91506130a582613a87565b604082019050919050565b60006130bd602483613449565b91506130c882613ad6565b604082019050919050565b6130dc816135ad565b82525050565b6130eb816135b7565b82525050565b60006020820190506131066000830184612e16565b92915050565b60006020820190506131216000830184612e83565b92915050565b600060208201905061313c6000830184612e92565b92915050565b6000602082019050818103600083015261315c8184612eb0565b905092915050565b6000602082019050818103600083015261317d81612ee9565b9050919050565b6000602082019050818103600083015261319d81612f0c565b9050919050565b600060208201905081810360008301526131bd81612f2f565b9050919050565b600060208201905081810360008301526131dd81612f52565b9050919050565b600060208201905081810360008301526131fd81612f75565b9050919050565b6000602082019050818103600083015261321d81612f98565b9050919050565b6000602082019050818103600083015261323d81612fbb565b9050919050565b6000602082019050818103600083015261325d81612fde565b9050919050565b6000602082019050818103600083015261327d81613001565b9050919050565b6000602082019050818103600083015261329d81613024565b9050919050565b600060208201905081810360008301526132bd81613047565b9050919050565b600060208201905081810360008301526132dd8161306a565b9050919050565b600060208201905081810360008301526132fd8161308d565b9050919050565b6000602082019050818103600083015261331d816130b0565b9050919050565b600060208201905061333960008301846130d3565b92915050565b600060a08201905061335460008301886130d3565b6133616020830187612ea1565b81810360408301526133738186612e25565b90506133826060830185612e16565b61338f60808301846130d3565b9695505050505050565b60006020820190506133ae60008301846130e2565b92915050565b60006133be6133cf565b90506133ca828261362d565b919050565b6000604051905090565b600067ffffffffffffffff8211156133f4576133f3613705565b5b602082029050602081019050919050565b6000819050602082019050919050565b600081519050919050565b600081519050919050565b6000602082019050919050565b600082825260208201905092915050565b600082825260208201905092915050565b6000613465826135ad565b9150613470836135ad565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156134a5576134a46136a7565b5b828201905092915050565b60006134bb826135ad565b91506134c6836135ad565b9250826134d6576134d56136d6565b5b828204905092915050565b60006134ec826135ad565b91506134f7836135ad565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156135305761352f6136a7565b5b828202905092915050565b6000613546826135ad565b9150613551836135ad565b925082821015613564576135636136a7565b5b828203905092915050565b600061357a8261358d565b9050919050565b60008115159050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000819050919050565b600060ff82169050919050565b60006135cf826135d6565b9050919050565b60006135e18261358d565b9050919050565b60006135f3826135ad565b9050919050565b60005b838110156136185780820151818401526020810190506135fd565b83811115613627576000848401525b50505050565b61363682613734565b810181811067ffffffffffffffff8211171561365557613654613705565b5b80604052505050565b6000613669826135ad565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82141561369c5761369b6136a7565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6000601f19601f8301169050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2054686973206163636f756e742063616e6e6f742073656e642060008201527f746f6b656e7320756e74696c2074726164696e6720697320656e61626c656400602082015250565b7f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260008201527f65666c656374696f6e7300000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a204d6178205472616e73616374696f6e204c696d697400000000600082015250565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a20596f7572206163636f756e7420697320626c61636b6c69737460008201527f6564210000000000000000000000000000000000000000000000000000000000602082015250565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b7f544f4b454e3a2042616c616e636520657863656564732077616c6c657420736960008201527f7a65210000000000000000000000000000000000000000000000000000000000602082015250565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b613b2e8161356f565b8114613b3957600080fd5b50565b613b4581613581565b8114613b5057600080fd5b50565b613b5c816135ad565b8114613b6757600080fd5b5056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a2646970667358221220dc45db803782134e24c0553e1b92b78020ae0e18a7b21755ecc5d9e1f7456f0264736f6c63430008040033

Deployed Bytecode Sourcemap

4149:14193:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13749:169;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;7516:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8441:193;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5531:41;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7793:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8642:446;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5831:50;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7702:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5579:28;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13926:92;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17970:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13506:235;;;;;;;;;;;;;:::i;:::-;;7896:138;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1636:148;;;;;;;;;;;;;:::i;:::-;;18106:108;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5721:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;1422:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13153:101;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5775:46;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7607:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;17779:139;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;17434:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8042:199;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5227:36;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;13262:236;;;;;;;;;;;;;:::i;:::-;;8249:184;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;18222:115;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1792:244;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;13749:169;1559:12;:10;:12::i;:::-;1549:22;;:6;;;;;;;;;;:22;;;1541:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13825:9:::1;13820:91;13844:5;:12;13840:1;:16;13820:91;;;13895:4;13878;:14;13883:5;13889:1;13883:8;;;;;;;;;;;;;;;;;;;;;;13878:14;;;;;;;;;;;;;;;;:21;;;;;;;;;;;;;;;;;;13858:3;;;;;:::i;:::-;;;;13820:91;;;;13749:169:::0;:::o;7516:83::-;7553:13;7586:5;;;;;;;;;;;;;;;;;7579:12;;7516:83;:::o;8441:193::-;8543:4;8565:39;8574:12;:10;:12::i;:::-;8588:7;8597:6;8565:8;:39::i;:::-;8622:4;8615:11;;8441:193;;;;:::o;5531:41::-;;;;;;;;;;;;;:::o;7793:95::-;7846:7;4696:16;7866:14;;7793:95;:::o;8642:446::-;8774:4;8791:36;8801:6;8809:9;8820:6;8791:9;:36::i;:::-;8838:220;8861:6;8882:12;:10;:12::i;:::-;8909:138;8965:6;8909:138;;;;;;;;;;;;;;;;;:11;:19;8921:6;8909:19;;;;;;;;;;;;;;;:33;8929:12;:10;:12::i;:::-;8909:33;;;;;;;;;;;;;;;;:37;;:138;;;;;:::i;:::-;8838:8;:220::i;:::-;9076:4;9069:11;;8642:446;;;;;:::o;5831:50::-;;;;:::o;7702:83::-;7743:5;4370:1;7761:16;;7702:83;:::o;5579:28::-;;;;;;;;;;;;;:::o;13926:92::-;1559:12;:10;:12::i;:::-;1549:22;;:6;;;;;;;;;;:22;;;1541:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;14005:5:::1;13990:4;:12;13995:6;13990:12;;;;;;;;;;;;;;;;:20;;;;;;;;;;;;;;;;;;13926:92:::0;:::o;17970:101::-;1559:12;:10;:12::i;:::-;1549:22;;:6;;;;;;;;;;:22;;;1541:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18051:12:::1;18037:11;;:26;;;;;;;;;;;;;;;;;;17970:101:::0;:::o;13506:235::-;13572:19;;;;;;;;;;;13556:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13611:17;;;;;;;;;;;13595:33;;:12;:10;:12::i;:::-;:33;;;13556:72;13548:81;;;;;;13640:26;13669:21;13640:50;;13701:32;13714:18;13701:12;:32::i;:::-;13506:235;:::o;7896:138::-;7962:7;7989:37;8009:7;:16;8017:7;8009:16;;;;;;;;;;;;;;;;7989:19;:37::i;:::-;7982:44;;7896:138;;;:::o;1636:148::-;1559:12;:10;:12::i;:::-;1549:22;;:6;;;;;;;;;;:22;;;1541:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1743:1:::1;1706:40;;1727:6;::::0;::::1;;;;;;;;1706:40;;;;;;;;;;;;1774:1;1757:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;1636:148::o:0;18106:108::-;1559:12;:10;:12::i;:::-;1549:22;;:6;;;;;;;;;;:22;;;1541:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18195:11:::1;18180:12;:26;;;;18106:108:::0;:::o;5721:44::-;;;;:::o;1422:79::-;1460:7;1487:6;;;;;;;;;;;1480:13;;1422:79;:::o;13153:101::-;1559:12;:10;:12::i;:::-;1549:22;;:6;;;;;;;;;;:22;;;1541:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;13234:12:::1;13220:11;;:26;;;;;;;;;;;;;;;;;;13153:101:::0;:::o;5775:46::-;;;;:::o;7607:87::-;7646:13;7679:7;;;;;;;;;;;;;;;;;7672:14;;7607:87;:::o;17779:139::-;1559:12;:10;:12::i;:::-;1549:22;;:6;;;;;;;;;;:22;;;1541:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17892:18:::1;17870:19;:40;;;;17779:139:::0;:::o;17434:293::-;1559:12;:10;:12::i;:::-;1549:22;;:6;;;;;;;;;;:22;;;1541:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;17585:13:::1;17568:14;:30;;;;17627:14;17609:15;:32;;;;17669:11;17654:12;:26;;;;17707:12;17691:13;:28;;;;17434:293:::0;;;;:::o;8042:199::-;8147:4;8169:42;8179:12;:10;:12::i;:::-;8193:9;8204:6;8169:9;:42::i;:::-;8229:4;8222:11;;8042:199;;;;:::o;5227:36::-;;;;;;;;;;;;;;;;;;;;;;:::o;13262:236::-;13328:19;;;;;;;;;;;13312:35;;:12;:10;:12::i;:::-;:35;;;:72;;;;13367:17;;;;;;;;;;;13351:33;;:12;:10;:12::i;:::-;:33;;;13312:72;13304:81;;;;;;13396:23;13422:24;13440:4;13422:9;:24::i;:::-;13396:50;;13457:33;13474:15;13457:16;:33::i;:::-;13262:236;:::o;8249:184::-;8366:7;8398:11;:18;8410:5;8398:18;;;;;;;;;;;;;;;:27;8417:7;8398:27;;;;;;;;;;;;;;;;8391:34;;8249:184;;;;:::o;18222:115::-;1559:12;:10;:12::i;:::-;1549:22;;:6;;;;;;;;;;:22;;;1541:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;18316:13:::1;18299:14;:30;;;;18222:115:::0;:::o;1792:244::-;1559:12;:10;:12::i;:::-;1549:22;;:6;;;;;;;;;;:22;;;1541:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;1901:1:::1;1881:22;;:8;:22;;;;1873:73;;;;;;;;;;;;:::i;:::-;;;;;;;;;1991:8;1962:38;;1983:6;::::0;::::1;;;;;;;;1962:38;;;;;;;;;;;;2020:8;2011:6;::::0;:17:::1;;;;;;;;;;;;;;;;;;1792:244:::0;:::o;181:98::-;234:7;261:10;254:17;;181:98;:::o;9779:369::-;9923:1;9906:19;;:5;:19;;;;9898:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10004:1;9985:21;;:7;:21;;;;9977:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10086:6;10056:11;:18;10068:5;10056:18;;;;;;;;;;;;;;;:27;10075:7;10056:27;;;;;;;;;;;;;;;:36;;;;10124:7;10108:32;;10117:5;10108:32;;;10133:6;10108:32;;;;;;:::i;:::-;;;;;;;;9779:369;;;:::o;10156:2330::-;10294:1;10278:18;;:4;:18;;;;10270:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;10371:1;10357:16;;:2;:16;;;;10349:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10441:1;10432:6;:10;10424:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;10513:7;:5;:7::i;:::-;10505:15;;:4;:15;;;;:32;;;;;10530:7;:5;:7::i;:::-;10524:13;;:2;:13;;;;10505:32;10501:1259;;;10594:11;;;;;;;;;;;10589:144;;10642:7;:5;:7::i;:::-;10634:15;;:4;:15;;;10626:91;;;;;;;;;;;;:::i;:::-;;;;;;;;;10589:144;10767:12;;10757:6;:22;;10749:63;;;;;;;;;;;;:::i;:::-;;;;;;;;;10836:4;:10;10841:4;10836:10;;;;;;;;;;;;;;;;;;;;;;;;;10835:11;:24;;;;;10851:4;:8;10856:2;10851:8;;;;;;;;;;;;;;;;;;;;;;;;;10850:9;10835:24;10827:72;;;;;;;;;;;;:::i;:::-;;;;;;;;;10925:13;;;;;;;;;;;10919:19;;:2;:19;;;10916:146;;10992:14;;10983:6;10967:13;10977:2;10967:9;:13::i;:::-;:22;;;;:::i;:::-;:39;10959:87;;;;;;;;;;;;:::i;:::-;;;;;;;;;10916:146;11078:28;11109:24;11127:4;11109:9;:24::i;:::-;11078:55;;11148:12;11187:19;;11163:20;:43;;11148:58;;11250:12;;11226:20;:36;11223:124;;11319:12;;11296:35;;11223:124;11367:7;:18;;;;;11379:6;;;;;;;;;;11378:7;11367:18;:43;;;;;11397:13;;;;;;;;;;;11389:21;;:4;:21;;;;11367:43;:58;;;;;11414:11;;;;;;;;;;;11367:58;:87;;;;;11430:18;:24;11449:4;11430:24;;;;;;;;;;;;;;;;;;;;;;;;;11429:25;11367:87;:114;;;;;11459:18;:22;11478:2;11459:22;;;;;;;;;;;;;;;;;;;;;;;;;11458:23;11367:114;11363:386;;;11502:38;11519:20;11502:16;:38::i;:::-;11559:26;11588:21;11559:50;;11653:1;11632:18;:22;11628:106;;;11679:35;11692:21;11679:12;:35::i;:::-;11628:106;11363:386;;10501:1259;;;11772:12;11787:4;11772:19;;11836:18;:24;11855:4;11836:24;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;11864:18;:22;11883:2;11864:22;;;;;;;;;;;;;;;;;;;;;;;;;11836:50;11835:102;;;;11900:13;;;;;;;;;;;11892:21;;:4;:21;;;;:44;;;;;11923:13;;;;;;;;;;;11917:19;;:2;:19;;;;11892:44;11835:102;11831:594;;;11964:5;11954:15;;11831:594;;;12047:13;;;;;;;;;;;12039:21;;:4;:21;;;:55;;;;;12078:15;;;;;;;;;;;12064:30;;:2;:30;;;;12039:55;12036:162;;;12127:14;;12115:9;:26;;;;12170:12;;12160:7;:22;;;;12036:162;12257:13;;;;;;;;;;;12251:19;;:2;:19;;;:55;;;;;12290:15;;;;;;;;;;;12274:32;;:4;:32;;;;12251:55;12247:165;;;12339:15;;12327:9;:27;;;;12383:13;;12373:7;:23;;;;12247:165;11831:594;12437:41;12452:4;12458:2;12462:6;12470:7;12437:14;:41::i;:::-;10156:2330;;;;:::o;2400:224::-;2520:7;2553:1;2548;:6;;2556:12;2540:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2580:9;2596:1;2592;:5;;;;:::i;:::-;2580:17;;2615:1;2608:8;;;2400:224;;;;;:::o;12985:160::-;13042:19;;;;;;;;;;;:28;;:43;13071:13;13082:1;13071:6;:10;;:13;;;;:::i;:::-;13042:43;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;13096:17;;;;;;;;;;;:26;;:41;13123:13;13134:1;13123:6;:10;;:13;;;;:::i;:::-;13096:41;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12985:160;:::o;9096:323::-;9191:7;9249;;9238;:18;;9216:110;;;;;;;;;;;;:::i;:::-;;;;;;;;;9337:19;9359:10;:8;:10::i;:::-;9337:32;;9387:24;9399:11;9387:7;:11;;:24;;;;:::i;:::-;9380:31;;;9096:323;;;:::o;12494:483::-;5987:4;5978:6;;:13;;;;;;;;;;;;;;;;;;12572:21:::1;12610:1;12596:16;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12572:40;;12641:4;12623;12628:1;12623:7;;;;;;;;;;;;;;;;;;;;;:23;;;;;;;;;::::0;::::1;12667:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;12657:4;12662:1;12657:7;;;;;;;;;;;;;;;;;;;;;:32;;;;;;;;;::::0;::::1;12700:62;12717:4;12732:15;;;;;;;;;;;12750:11;12700:8;:62::i;:::-;12773:15;;;;;;;;;;;:66;;;12854:11;12880:1;12896:4;12923;12943:15;12773:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;6002:1;6023:5:::0;6014:6;;:14;;;;;;;;;;;;;;;;;;12494:483;:::o;14026:282::-;14182:7;14177:28;;14191:14;:12;:14::i;:::-;14177:28;14216:44;14234:6;14242:9;14253:6;14216:17;:44::i;:::-;14276:7;14271:29;;14285:15;:13;:15::i;:::-;14271:29;14026:282;;;;:::o;2886:132::-;2944:7;2971:39;2975:1;2978;2971:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2964:46;;2886:132;;;;:::o;16993:166::-;17035:7;17056:15;17073;17092:19;:17;:19::i;:::-;17055:56;;;;17131:20;17143:7;17131;:11;;:20;;;;:::i;:::-;17124:27;;;;16993:166;:::o;9427:219::-;9487:1;9474:9;;:14;:30;;;;;9503:1;9492:7;;:12;9474:30;9470:43;;;9506:7;;9470:43;9545:9;;9525:17;:29;;;;9583:7;;9565:15;:25;;;;9615:1;9603:9;:13;;;;9637:1;9627:7;:11;;;;9427:219;:::o;14316:610::-;14463:15;14493:23;14531:12;14558:23;14596:12;14623:13;14650:19;14661:7;14650:10;:19::i;:::-;14448:221;;;;;;;;;;;;14698:28;14718:7;14698;:15;14706:6;14698:15;;;;;;;;;;;;;;;;:19;;:28;;;;:::i;:::-;14680:7;:15;14688:6;14680:15;;;;;;;;;;;;;;;:46;;;;14758:39;14781:15;14758:7;:18;14766:9;14758:18;;;;;;;;;;;;;;;;:22;;:39;;;;:::i;:::-;14737:7;:18;14745:9;14737:18;;;;;;;;;;;;;;;:60;;;;14808:16;14818:5;14808:9;:16::i;:::-;14835:23;14847:4;14853;14835:11;:23::i;:::-;14891:9;14874:44;;14883:6;14874:44;;;14902:15;14874:44;;;;;;:::i;:::-;;;;;;;;14316:610;;;;;;;;;:::o;9654:117::-;9710:17;;9698:9;:29;;;;9748:15;;9738:7;:25;;;;9654:117::o;3026:223::-;3146:7;3178:1;3174;:5;3181:12;3166:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;3205:9;3221:1;3217;:5;;;;:::i;:::-;3205:17;;3240:1;3233:8;;;3026:223;;;;;:::o;17167:259::-;17218:7;17227;17247:15;17265:7;;17247:25;;17283:15;4696:16;17283:25;;17333:20;4696:16;17333:7;;:11;;:20;;;;:::i;:::-;17323:7;:30;17319:61;;;17363:7;;4696:16;17355:25;;;;;;;;17319:61;17401:7;17410;17393:25;;;;;;17167:259;;;:::o;15345:617::-;15445:7;15467;15489;15511;15533;15555;15591:23;15616:12;15630:13;15660:40;15672:7;15681:9;;15692:7;;15660:11;:40::i;:::-;15590:110;;;;;;15711:19;15733:10;:8;:10::i;:::-;15711:32;;15755:15;15772:23;15797:12;15826:46;15838:7;15847:4;15853:5;15860:11;15826;:46::i;:::-;15754:118;;;;;;15893:7;15902:15;15919:4;15925:15;15942:4;15948:5;15885:69;;;;;;;;;;;;;;;;;;;15345:617;;;;;;;:::o;2256:136::-;2314:7;2341:43;2345:1;2348;2341:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;2334:50;;2256:136;;;;:::o;2069:179::-;2127:7;2147:9;2163:1;2159;:5;;;;:::i;:::-;2147:17;;2188:1;2183;:6;;2175:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;2239:1;2232:8;;;2069:179;;;;:::o;14934:211::-;14987:19;15009:10;:8;:10::i;:::-;14987:32;;15030:13;15046:22;15056:11;15046:5;:9;;:22;;;;:::i;:::-;15030:38;;15104:33;15131:5;15104:7;:22;15120:4;15104:22;;;;;;;;;;;;;;;;:26;;:33;;;;:::i;:::-;15079:7;:22;15095:4;15079:22;;;;;;;;;;;;;;;:58;;;;14934:211;;;:::o;15153:147::-;15231:17;15243:4;15231:7;;:11;;:17;;;;:::i;:::-;15221:7;:27;;;;15272:20;15287:4;15272:10;;:14;;:20;;;;:::i;:::-;15259:10;:33;;;;15153:147;;:::o;15970:471::-;16139:7;16161;16183;16218:12;16233:30;16259:3;16233:21;16245:8;16233:7;:11;;:21;;;;:::i;:::-;:25;;:30;;;;:::i;:::-;16218:45;;16274:13;16290:28;16314:3;16290:19;16302:6;16290:7;:11;;:19;;;;:::i;:::-;:23;;:28;;;;:::i;:::-;16274:44;;16329:23;16355:28;16377:5;16355:17;16367:4;16355:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16329:54;;16404:15;16421:4;16427:5;16396:37;;;;;;;;;15970:471;;;;;;;:::o;16449:536::-;16643:7;16665;16687;16722:15;16740:24;16752:11;16740:7;:11;;:24;;;;:::i;:::-;16722:42;;16775:12;16790:21;16799:11;16790:4;:8;;:21;;;;:::i;:::-;16775:36;;16822:13;16838:22;16848:11;16838:5;:9;;:22;;;;:::i;:::-;16822:38;;16871:23;16897:28;16919:5;16897:17;16909:4;16897:7;:11;;:17;;;;:::i;:::-;:21;;:28;;;;:::i;:::-;16871:54;;16946:7;16955:15;16972:4;16938:39;;;;;;;;;;16449:536;;;;;;;;:::o;2632:246::-;2690:7;2719:1;2714;:6;2710:47;;;2744:1;2737:8;;;;2710:47;2767:9;2783:1;2779;:5;;;;:::i;:::-;2767:17;;2812:1;2807;2803;:5;;;;:::i;:::-;:10;2795:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2869:1;2862:8;;;2632:246;;;;;:::o;24:655:1:-;120:5;145:81;161:64;218:6;161:64;:::i;:::-;145:81;:::i;:::-;136:90;;246:5;275:6;268:5;261:21;309:4;302:5;298:16;291:23;;335:6;385:3;377:4;369:6;365:17;360:3;356:27;353:36;350:2;;;414:1;411;404:12;350:2;450:1;435:238;460:6;457:1;454:13;435:238;;;528:3;557:37;590:3;578:10;557:37;:::i;:::-;552:3;545:50;624:4;619:3;615:14;608:21;;658:4;653:3;649:14;642:21;;495:178;482:1;479;475:9;470:14;;435:238;;;439:14;126:553;;;;;;;:::o;685:139::-;731:5;769:6;756:20;747:29;;785:33;812:5;785:33;:::i;:::-;737:87;;;;:::o;830:143::-;887:5;918:6;912:13;903:22;;934:33;961:5;934:33;:::i;:::-;893:80;;;;:::o;996:303::-;1067:5;1116:3;1109:4;1101:6;1097:17;1093:27;1083:2;;1134:1;1131;1124:12;1083:2;1174:6;1161:20;1199:94;1289:3;1281:6;1274:4;1266:6;1262:17;1199:94;:::i;:::-;1190:103;;1073:226;;;;;:::o;1305:133::-;1348:5;1386:6;1373:20;1364:29;;1402:30;1426:5;1402:30;:::i;:::-;1354:84;;;;:::o;1444:139::-;1490:5;1528:6;1515:20;1506:29;;1544:33;1571:5;1544:33;:::i;:::-;1496:87;;;;:::o;1589:262::-;1648:6;1697:2;1685:9;1676:7;1672:23;1668:32;1665:2;;;1713:1;1710;1703:12;1665:2;1756:1;1781:53;1826:7;1817:6;1806:9;1802:22;1781:53;:::i;:::-;1771:63;;1727:117;1655:196;;;;:::o;1857:284::-;1927:6;1976:2;1964:9;1955:7;1951:23;1947:32;1944:2;;;1992:1;1989;1982:12;1944:2;2035:1;2060:64;2116:7;2107:6;2096:9;2092:22;2060:64;:::i;:::-;2050:74;;2006:128;1934:207;;;;:::o;2147:407::-;2215:6;2223;2272:2;2260:9;2251:7;2247:23;2243:32;2240:2;;;2288:1;2285;2278:12;2240:2;2331:1;2356:53;2401:7;2392:6;2381:9;2377:22;2356:53;:::i;:::-;2346:63;;2302:117;2458:2;2484:53;2529:7;2520:6;2509:9;2505:22;2484:53;:::i;:::-;2474:63;;2429:118;2230:324;;;;;:::o;2560:552::-;2637:6;2645;2653;2702:2;2690:9;2681:7;2677:23;2673:32;2670:2;;;2718:1;2715;2708:12;2670:2;2761:1;2786:53;2831:7;2822:6;2811:9;2807:22;2786:53;:::i;:::-;2776:63;;2732:117;2888:2;2914:53;2959:7;2950:6;2939:9;2935:22;2914:53;:::i;:::-;2904:63;;2859:118;3016:2;3042:53;3087:7;3078:6;3067:9;3063:22;3042:53;:::i;:::-;3032:63;;2987:118;2660:452;;;;;:::o;3118:407::-;3186:6;3194;3243:2;3231:9;3222:7;3218:23;3214:32;3211:2;;;3259:1;3256;3249:12;3211:2;3302:1;3327:53;3372:7;3363:6;3352:9;3348:22;3327:53;:::i;:::-;3317:63;;3273:117;3429:2;3455:53;3500:7;3491:6;3480:9;3476:22;3455:53;:::i;:::-;3445:63;;3400:118;3201:324;;;;;:::o;3531:405::-;3615:6;3664:2;3652:9;3643:7;3639:23;3635:32;3632:2;;;3680:1;3677;3670:12;3632:2;3751:1;3740:9;3736:17;3723:31;3781:18;3773:6;3770:30;3767:2;;;3813:1;3810;3803:12;3767:2;3841:78;3911:7;3902:6;3891:9;3887:22;3841:78;:::i;:::-;3831:88;;3694:235;3622:314;;;;:::o;3942:256::-;3998:6;4047:2;4035:9;4026:7;4022:23;4018:32;4015:2;;;4063:1;4060;4053:12;4015:2;4106:1;4131:50;4173:7;4164:6;4153:9;4149:22;4131:50;:::i;:::-;4121:60;;4077:114;4005:193;;;;:::o;4204:262::-;4263:6;4312:2;4300:9;4291:7;4287:23;4283:32;4280:2;;;4328:1;4325;4318:12;4280:2;4371:1;4396:53;4441:7;4432:6;4421:9;4417:22;4396:53;:::i;:::-;4386:63;;4342:117;4270:196;;;;:::o;4472:698::-;4558:6;4566;4574;4582;4631:3;4619:9;4610:7;4606:23;4602:33;4599:2;;;4648:1;4645;4638:12;4599:2;4691:1;4716:53;4761:7;4752:6;4741:9;4737:22;4716:53;:::i;:::-;4706:63;;4662:117;4818:2;4844:53;4889:7;4880:6;4869:9;4865:22;4844:53;:::i;:::-;4834:63;;4789:118;4946:2;4972:53;5017:7;5008:6;4997:9;4993:22;4972:53;:::i;:::-;4962:63;;4917:118;5074:2;5100:53;5145:7;5136:6;5125:9;5121:22;5100:53;:::i;:::-;5090:63;;5045:118;4589:581;;;;;;;:::o;5176:179::-;5245:10;5266:46;5308:3;5300:6;5266:46;:::i;:::-;5344:4;5339:3;5335:14;5321:28;;5256:99;;;;:::o;5361:108::-;5438:24;5456:5;5438:24;:::i;:::-;5433:3;5426:37;5416:53;;:::o;5475:118::-;5562:24;5580:5;5562:24;:::i;:::-;5557:3;5550:37;5540:53;;:::o;5629:732::-;5748:3;5777:54;5825:5;5777:54;:::i;:::-;5847:86;5926:6;5921:3;5847:86;:::i;:::-;5840:93;;5957:56;6007:5;5957:56;:::i;:::-;6036:7;6067:1;6052:284;6077:6;6074:1;6071:13;6052:284;;;6153:6;6147:13;6180:63;6239:3;6224:13;6180:63;:::i;:::-;6173:70;;6266:60;6319:6;6266:60;:::i;:::-;6256:70;;6112:224;6099:1;6096;6092:9;6087:14;;6052:284;;;6056:14;6352:3;6345:10;;5753:608;;;;;;;:::o;6367:109::-;6448:21;6463:5;6448:21;:::i;:::-;6443:3;6436:34;6426:50;;:::o;6482:183::-;6595:63;6652:5;6595:63;:::i;:::-;6590:3;6583:76;6573:92;;:::o;6671:147::-;6766:45;6805:5;6766:45;:::i;:::-;6761:3;6754:58;6744:74;;:::o;6824:364::-;6912:3;6940:39;6973:5;6940:39;:::i;:::-;6995:71;7059:6;7054:3;6995:71;:::i;:::-;6988:78;;7075:52;7120:6;7115:3;7108:4;7101:5;7097:16;7075:52;:::i;:::-;7152:29;7174:6;7152:29;:::i;:::-;7147:3;7143:39;7136:46;;6916:272;;;;;:::o;7194:366::-;7336:3;7357:67;7421:2;7416:3;7357:67;:::i;:::-;7350:74;;7433:93;7522:3;7433:93;:::i;:::-;7551:2;7546:3;7542:12;7535:19;;7340:220;;;:::o;7566:366::-;7708:3;7729:67;7793:2;7788:3;7729:67;:::i;:::-;7722:74;;7805:93;7894:3;7805:93;:::i;:::-;7923:2;7918:3;7914:12;7907:19;;7712:220;;;:::o;7938:366::-;8080:3;8101:67;8165:2;8160:3;8101:67;:::i;:::-;8094:74;;8177:93;8266:3;8177:93;:::i;:::-;8295:2;8290:3;8286:12;8279:19;;8084:220;;;:::o;8310:366::-;8452:3;8473:67;8537:2;8532:3;8473:67;:::i;:::-;8466:74;;8549:93;8638:3;8549:93;:::i;:::-;8667:2;8662:3;8658:12;8651:19;;8456:220;;;:::o;8682:366::-;8824:3;8845:67;8909:2;8904:3;8845:67;:::i;:::-;8838:74;;8921:93;9010:3;8921:93;:::i;:::-;9039:2;9034:3;9030:12;9023:19;;8828:220;;;:::o;9054:366::-;9196:3;9217:67;9281:2;9276:3;9217:67;:::i;:::-;9210:74;;9293:93;9382:3;9293:93;:::i;:::-;9411:2;9406:3;9402:12;9395:19;;9200:220;;;:::o;9426:366::-;9568:3;9589:67;9653:2;9648:3;9589:67;:::i;:::-;9582:74;;9665:93;9754:3;9665:93;:::i;:::-;9783:2;9778:3;9774:12;9767:19;;9572:220;;;:::o;9798:366::-;9940:3;9961:67;10025:2;10020:3;9961:67;:::i;:::-;9954:74;;10037:93;10126:3;10037:93;:::i;:::-;10155:2;10150:3;10146:12;10139:19;;9944:220;;;:::o;10170:366::-;10312:3;10333:67;10397:2;10392:3;10333:67;:::i;:::-;10326:74;;10409:93;10498:3;10409:93;:::i;:::-;10527:2;10522:3;10518:12;10511:19;;10316:220;;;:::o;10542:366::-;10684:3;10705:67;10769:2;10764:3;10705:67;:::i;:::-;10698:74;;10781:93;10870:3;10781:93;:::i;:::-;10899:2;10894:3;10890:12;10883:19;;10688:220;;;:::o;10914:366::-;11056:3;11077:67;11141:2;11136:3;11077:67;:::i;:::-;11070:74;;11153:93;11242:3;11153:93;:::i;:::-;11271:2;11266:3;11262:12;11255:19;;11060:220;;;:::o;11286:366::-;11428:3;11449:67;11513:2;11508:3;11449:67;:::i;:::-;11442:74;;11525:93;11614:3;11525:93;:::i;:::-;11643:2;11638:3;11634:12;11627:19;;11432:220;;;:::o;11658:366::-;11800:3;11821:67;11885:2;11880:3;11821:67;:::i;:::-;11814:74;;11897:93;11986:3;11897:93;:::i;:::-;12015:2;12010:3;12006:12;11999:19;;11804:220;;;:::o;12030:366::-;12172:3;12193:67;12257:2;12252:3;12193:67;:::i;:::-;12186:74;;12269:93;12358:3;12269:93;:::i;:::-;12387:2;12382:3;12378:12;12371:19;;12176:220;;;:::o;12402:118::-;12489:24;12507:5;12489:24;:::i;:::-;12484:3;12477:37;12467:53;;:::o;12526:112::-;12609:22;12625:5;12609:22;:::i;:::-;12604:3;12597:35;12587:51;;:::o;12644:222::-;12737:4;12775:2;12764:9;12760:18;12752:26;;12788:71;12856:1;12845:9;12841:17;12832:6;12788:71;:::i;:::-;12742:124;;;;:::o;12872:210::-;12959:4;12997:2;12986:9;12982:18;12974:26;;13010:65;13072:1;13061:9;13057:17;13048:6;13010:65;:::i;:::-;12964:118;;;;:::o;13088:274::-;13207:4;13245:2;13234:9;13230:18;13222:26;;13258:97;13352:1;13341:9;13337:17;13328:6;13258:97;:::i;:::-;13212:150;;;;:::o;13368:313::-;13481:4;13519:2;13508:9;13504:18;13496:26;;13568:9;13562:4;13558:20;13554:1;13543:9;13539:17;13532:47;13596:78;13669:4;13660:6;13596:78;:::i;:::-;13588:86;;13486:195;;;;:::o;13687:419::-;13853:4;13891:2;13880:9;13876:18;13868:26;;13940:9;13934:4;13930:20;13926:1;13915:9;13911:17;13904:47;13968:131;14094:4;13968:131;:::i;:::-;13960:139;;13858:248;;;:::o;14112:419::-;14278:4;14316:2;14305:9;14301:18;14293:26;;14365:9;14359:4;14355:20;14351:1;14340:9;14336:17;14329:47;14393:131;14519:4;14393:131;:::i;:::-;14385:139;;14283:248;;;:::o;14537:419::-;14703:4;14741:2;14730:9;14726:18;14718:26;;14790:9;14784:4;14780:20;14776:1;14765:9;14761:17;14754:47;14818:131;14944:4;14818:131;:::i;:::-;14810:139;;14708:248;;;:::o;14962:419::-;15128:4;15166:2;15155:9;15151:18;15143:26;;15215:9;15209:4;15205:20;15201:1;15190:9;15186:17;15179:47;15243:131;15369:4;15243:131;:::i;:::-;15235:139;;15133:248;;;:::o;15387:419::-;15553:4;15591:2;15580:9;15576:18;15568:26;;15640:9;15634:4;15630:20;15626:1;15615:9;15611:17;15604:47;15668:131;15794:4;15668:131;:::i;:::-;15660:139;;15558:248;;;:::o;15812:419::-;15978:4;16016:2;16005:9;16001:18;15993:26;;16065:9;16059:4;16055:20;16051:1;16040:9;16036:17;16029:47;16093:131;16219:4;16093:131;:::i;:::-;16085:139;;15983:248;;;:::o;16237:419::-;16403:4;16441:2;16430:9;16426:18;16418:26;;16490:9;16484:4;16480:20;16476:1;16465:9;16461:17;16454:47;16518:131;16644:4;16518:131;:::i;:::-;16510:139;;16408:248;;;:::o;16662:419::-;16828:4;16866:2;16855:9;16851:18;16843:26;;16915:9;16909:4;16905:20;16901:1;16890:9;16886:17;16879:47;16943:131;17069:4;16943:131;:::i;:::-;16935:139;;16833:248;;;:::o;17087:419::-;17253:4;17291:2;17280:9;17276:18;17268:26;;17340:9;17334:4;17330:20;17326:1;17315:9;17311:17;17304:47;17368:131;17494:4;17368:131;:::i;:::-;17360:139;;17258:248;;;:::o;17512:419::-;17678:4;17716:2;17705:9;17701:18;17693:26;;17765:9;17759:4;17755:20;17751:1;17740:9;17736:17;17729:47;17793:131;17919:4;17793:131;:::i;:::-;17785:139;;17683:248;;;:::o;17937:419::-;18103:4;18141:2;18130:9;18126:18;18118:26;;18190:9;18184:4;18180:20;18176:1;18165:9;18161:17;18154:47;18218:131;18344:4;18218:131;:::i;:::-;18210:139;;18108:248;;;:::o;18362:419::-;18528:4;18566:2;18555:9;18551:18;18543:26;;18615:9;18609:4;18605:20;18601:1;18590:9;18586:17;18579:47;18643:131;18769:4;18643:131;:::i;:::-;18635:139;;18533:248;;;:::o;18787:419::-;18953:4;18991:2;18980:9;18976:18;18968:26;;19040:9;19034:4;19030:20;19026:1;19015:9;19011:17;19004:47;19068:131;19194:4;19068:131;:::i;:::-;19060:139;;18958:248;;;:::o;19212:419::-;19378:4;19416:2;19405:9;19401:18;19393:26;;19465:9;19459:4;19455:20;19451:1;19440:9;19436:17;19429:47;19493:131;19619:4;19493:131;:::i;:::-;19485:139;;19383:248;;;:::o;19637:222::-;19730:4;19768:2;19757:9;19753:18;19745:26;;19781:71;19849:1;19838:9;19834:17;19825:6;19781:71;:::i;:::-;19735:124;;;;:::o;19865:831::-;20128:4;20166:3;20155:9;20151:19;20143:27;;20180:71;20248:1;20237:9;20233:17;20224:6;20180:71;:::i;:::-;20261:80;20337:2;20326:9;20322:18;20313:6;20261:80;:::i;:::-;20388:9;20382:4;20378:20;20373:2;20362:9;20358:18;20351:48;20416:108;20519:4;20510:6;20416:108;:::i;:::-;20408:116;;20534:72;20602:2;20591:9;20587:18;20578:6;20534:72;:::i;:::-;20616:73;20684:3;20673:9;20669:19;20660:6;20616:73;:::i;:::-;20133:563;;;;;;;;:::o;20702:214::-;20791:4;20829:2;20818:9;20814:18;20806:26;;20842:67;20906:1;20895:9;20891:17;20882:6;20842:67;:::i;:::-;20796:120;;;;:::o;20922:129::-;20956:6;20983:20;;:::i;:::-;20973:30;;21012:33;21040:4;21032:6;21012:33;:::i;:::-;20963:88;;;:::o;21057:75::-;21090:6;21123:2;21117:9;21107:19;;21097:35;:::o;21138:311::-;21215:4;21305:18;21297:6;21294:30;21291:2;;;21327:18;;:::i;:::-;21291:2;21377:4;21369:6;21365:17;21357:25;;21437:4;21431;21427:15;21419:23;;21220:229;;;:::o;21455:132::-;21522:4;21545:3;21537:11;;21575:4;21570:3;21566:14;21558:22;;21527:60;;;:::o;21593:114::-;21660:6;21694:5;21688:12;21678:22;;21667:40;;;:::o;21713:99::-;21765:6;21799:5;21793:12;21783:22;;21772:40;;;:::o;21818:113::-;21888:4;21920;21915:3;21911:14;21903:22;;21893:38;;;:::o;21937:184::-;22036:11;22070:6;22065:3;22058:19;22110:4;22105:3;22101:14;22086:29;;22048:73;;;;:::o;22127:169::-;22211:11;22245:6;22240:3;22233:19;22285:4;22280:3;22276:14;22261:29;;22223:73;;;;:::o;22302:305::-;22342:3;22361:20;22379:1;22361:20;:::i;:::-;22356:25;;22395:20;22413:1;22395:20;:::i;:::-;22390:25;;22549:1;22481:66;22477:74;22474:1;22471:81;22468:2;;;22555:18;;:::i;:::-;22468:2;22599:1;22596;22592:9;22585:16;;22346:261;;;;:::o;22613:185::-;22653:1;22670:20;22688:1;22670:20;:::i;:::-;22665:25;;22704:20;22722:1;22704:20;:::i;:::-;22699:25;;22743:1;22733:2;;22748:18;;:::i;:::-;22733:2;22790:1;22787;22783:9;22778:14;;22655:143;;;;:::o;22804:348::-;22844:7;22867:20;22885:1;22867:20;:::i;:::-;22862:25;;22901:20;22919:1;22901:20;:::i;:::-;22896:25;;23089:1;23021:66;23017:74;23014:1;23011:81;23006:1;22999:9;22992:17;22988:105;22985:2;;;23096:18;;:::i;:::-;22985:2;23144:1;23141;23137:9;23126:20;;22852:300;;;;:::o;23158:191::-;23198:4;23218:20;23236:1;23218:20;:::i;:::-;23213:25;;23252:20;23270:1;23252:20;:::i;:::-;23247:25;;23291:1;23288;23285:8;23282:2;;;23296:18;;:::i;:::-;23282:2;23341:1;23338;23334:9;23326:17;;23203:146;;;;:::o;23355:96::-;23392:7;23421:24;23439:5;23421:24;:::i;:::-;23410:35;;23400:51;;;:::o;23457:90::-;23491:7;23534:5;23527:13;23520:21;23509:32;;23499:48;;;:::o;23553:126::-;23590:7;23630:42;23623:5;23619:54;23608:65;;23598:81;;;:::o;23685:77::-;23722:7;23751:5;23740:16;;23730:32;;;:::o;23768:86::-;23803:7;23843:4;23836:5;23832:16;23821:27;;23811:43;;;:::o;23860:178::-;23936:9;23969:63;24026:5;23969:63;:::i;:::-;23956:76;;23946:92;;;:::o;24044:139::-;24120:9;24153:24;24171:5;24153:24;:::i;:::-;24140:37;;24130:53;;;:::o;24189:121::-;24247:9;24280:24;24298:5;24280:24;:::i;:::-;24267:37;;24257:53;;;:::o;24316:307::-;24384:1;24394:113;24408:6;24405:1;24402:13;24394:113;;;24493:1;24488:3;24484:11;24478:18;24474:1;24469:3;24465:11;24458:39;24430:2;24427:1;24423:10;24418:15;;24394:113;;;24525:6;24522:1;24519:13;24516:2;;;24605:1;24596:6;24591:3;24587:16;24580:27;24516:2;24365:258;;;;:::o;24629:281::-;24712:27;24734:4;24712:27;:::i;:::-;24704:6;24700:40;24842:6;24830:10;24827:22;24806:18;24794:10;24791:34;24788:62;24785:2;;;24853:18;;:::i;:::-;24785:2;24893:10;24889:2;24882:22;24672:238;;;:::o;24916:233::-;24955:3;24978:24;24996:5;24978:24;:::i;:::-;24969:33;;25024:66;25017:5;25014:77;25011:2;;;25094:18;;:::i;:::-;25011:2;25141:1;25134:5;25130:13;25123:20;;24959:190;;;:::o;25155:180::-;25203:77;25200:1;25193:88;25300:4;25297:1;25290:15;25324:4;25321:1;25314:15;25341:180;25389:77;25386:1;25379:88;25486:4;25483:1;25476:15;25510:4;25507:1;25500:15;25527:180;25575:77;25572:1;25565:88;25672:4;25669:1;25662:15;25696:4;25693:1;25686:15;25713:102;25754:6;25805:2;25801:7;25796:2;25789:5;25785:14;25781:28;25771:38;;25761:54;;;:::o;25821:222::-;25961:34;25957:1;25949:6;25945:14;25938:58;26030:5;26025:2;26017:6;26013:15;26006:30;25927:116;:::o;26049:250::-;26189:34;26185:1;26177:6;26173:14;26166:58;26258:33;26253:2;26245:6;26241:15;26234:58;26155:144;:::o;26305:229::-;26445:34;26441:1;26433:6;26429:14;26422:58;26514:12;26509:2;26501:6;26497:15;26490:37;26411:123;:::o;26540:178::-;26680:30;26676:1;26668:6;26664:14;26657:54;26646:72;:::o;26724:225::-;26864:34;26860:1;26852:6;26848:14;26841:58;26933:8;26928:2;26920:6;26916:15;26909:33;26830:119;:::o;26955:221::-;27095:34;27091:1;27083:6;27079:14;27072:58;27164:4;27159:2;27151:6;27147:15;27140:29;27061:115;:::o;27182:222::-;27322:34;27318:1;27310:6;27306:14;27299:58;27391:5;27386:2;27378:6;27374:15;27367:30;27288:116;:::o;27410:177::-;27550:29;27546:1;27538:6;27534:14;27527:53;27516:71;:::o;27593:220::-;27733:34;27729:1;27721:6;27717:14;27710:58;27802:3;27797:2;27789:6;27785:15;27778:28;27699:114;:::o;27819:182::-;27959:34;27955:1;27947:6;27943:14;27936:58;27925:76;:::o;28007:228::-;28147:34;28143:1;28135:6;28131:14;28124:58;28216:11;28211:2;28203:6;28199:15;28192:36;28113:122;:::o;28241:224::-;28381:34;28377:1;28369:6;28365:14;28358:58;28450:7;28445:2;28437:6;28433:15;28426:32;28347:118;:::o;28471:222::-;28611:34;28607:1;28599:6;28595:14;28588:58;28680:5;28675:2;28667:6;28663:15;28656:30;28577:116;:::o;28699:223::-;28839:34;28835:1;28827:6;28823:14;28816:58;28908:6;28903:2;28895:6;28891:15;28884:31;28805:117;:::o;28928:122::-;29001:24;29019:5;29001:24;:::i;:::-;28994:5;28991:35;28981:2;;29040:1;29037;29030:12;28981:2;28971:79;:::o;29056:116::-;29126:21;29141:5;29126:21;:::i;:::-;29119:5;29116:32;29106:2;;29162:1;29159;29152:12;29106:2;29096:76;:::o;29178:122::-;29251:24;29269:5;29251:24;:::i;:::-;29244:5;29241:35;29231:2;;29290:1;29287;29280:12;29231:2;29221:79;:::o

Swarm Source

ipfs://dc45db803782134e24c0553e1b92b78020ae0e18a7b21755ecc5d9e1f7456f02

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.