ETH Price: $3,308.02 (+1.95%)

Contract

0x777777785bdF1C2CAB889b2E697ada6eE0De759D
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve214468672024-12-20 22:58:232 days ago1734735503IN
0x77777778...eE0De759D
0 ETH0.0002789911.19303273
Approve214201672024-12-17 5:29:116 days ago1734413351IN
0x77777778...eE0De759D
0 ETH0.0004794710.22119762
Approve214056272024-12-15 4:47:118 days ago1734238031IN
0x77777778...eE0De759D
0 ETH0.000216328.67871381
Approve213800882024-12-11 15:13:5912 days ago1733930039IN
0x77777778...eE0De759D
0 ETH0.0014158829.991307
Transfer213493932024-12-07 8:22:1116 days ago1733559731IN
0x77777778...eE0De759D
0 ETH0.0008660419.42554152
Transfer213492352024-12-07 7:50:3516 days ago1733557835IN
0x77777778...eE0De759D
0 ETH0.0008132718.23692819
Transfer213478402024-12-07 3:10:1116 days ago1733541011IN
0x77777778...eE0De759D
0 ETH0.0005800313.02776378
Transfer213477572024-12-07 2:53:3516 days ago1733540015IN
0x77777778...eE0De759D
0 ETH0.000641114.3800197
Transfer213465352024-12-06 22:47:4716 days ago1733525267IN
0x77777778...eE0De759D
0 ETH0.0009357520.98329946
Transfer213433432024-12-06 12:05:5917 days ago1733486759IN
0x77777778...eE0De759D
0 ETH0.0008369518.77307035
Transfer213399572024-12-06 0:44:5917 days ago1733445899IN
0x77777778...eE0De759D
0 ETH0.001017422.81422118
Transfer213398412024-12-06 0:21:4717 days ago1733444507IN
0x77777778...eE0De759D
0 ETH0.001240920.11358898
Transfer211982792024-11-16 5:51:2337 days ago1731736283IN
0x77777778...eE0De759D
0 ETH0.0009787615.86454488
Transfer211980072024-11-16 4:56:4737 days ago1731733007IN
0x77777778...eE0De759D
0 ETH0.0012383820.07658147
Transfer211979142024-11-16 4:37:4737 days ago1731731867IN
0x77777778...eE0De759D
0 ETH0.0015150424.56184175
Approve211976792024-11-16 3:50:3537 days ago1731729035IN
0x77777778...eE0De759D
0 ETH0.0007294415.56972062
Transfer211976022024-11-16 3:35:1137 days ago1731728111IN
0x77777778...eE0De759D
0 ETH0.0028605246.36564977
Transfer211963692024-11-15 23:27:2337 days ago1731713243IN
0x77777778...eE0De759D
0 ETH0.001264620.50162267
Transfer211962042024-11-15 22:54:2337 days ago1731711263IN
0x77777778...eE0De759D
0 ETH0.0015286724.77800312
Transfer211960092024-11-15 22:15:2337 days ago1731708923IN
0x77777778...eE0De759D
0 ETH0.0017243727.98271833
Transfer211956882024-11-15 21:10:4737 days ago1731705047IN
0x77777778...eE0De759D
0 ETH0.0036468759.12278713
Approve211631712024-11-11 8:12:5942 days ago1731312779IN
0x77777778...eE0De759D
0 ETH0.0005488711.64095459
Approve211345792024-11-07 8:27:4746 days ago1730968067IN
0x77777778...eE0De759D
0 ETH0.0006868114.55185856
Approve211194062024-11-05 5:37:4748 days ago1730785067IN
0x77777778...eE0De759D
0 ETH0.00013952.95496694
Approve211192232024-11-05 5:01:1148 days ago1730782871IN
0x77777778...eE0De759D
0 ETH0.000133842.83511873
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block
From
To
209642892024-10-14 14:06:1170 days ago1728914771
0x77777778...eE0De759D
0.21283747 ETH
209642892024-10-14 14:06:1170 days ago1728914771
0x77777778...eE0De759D
0.21283747 ETH
209642872024-10-14 14:05:4770 days ago1728914747
0x77777778...eE0De759D
0.48187274 ETH
209642872024-10-14 14:05:4770 days ago1728914747
0x77777778...eE0De759D
0.48187274 ETH
209642852024-10-14 14:05:2370 days ago1728914723
0x77777778...eE0De759D
0.72886982 ETH
209642852024-10-14 14:05:2370 days ago1728914723
0x77777778...eE0De759D
0.72886982 ETH
209642842024-10-14 14:05:1170 days ago1728914711
0x77777778...eE0De759D
0.45559927 ETH
209642842024-10-14 14:05:1170 days ago1728914711
0x77777778...eE0De759D
0.45559927 ETH
209642822024-10-14 14:04:4770 days ago1728914687
0x77777778...eE0De759D
0.17205932 ETH
209642822024-10-14 14:04:4770 days ago1728914687
0x77777778...eE0De759D
0.17205932 ETH
209642822024-10-14 14:04:4770 days ago1728914687
0x77777778...eE0De759D
0.45034809 ETH
209642822024-10-14 14:04:4770 days ago1728914687
0x77777778...eE0De759D
0.45034809 ETH
209642812024-10-14 14:04:3570 days ago1728914675
0x77777778...eE0De759D
0.12882021 ETH
209642812024-10-14 14:04:3570 days ago1728914675
0x77777778...eE0De759D
0.12882021 ETH
209642752024-10-14 14:03:2370 days ago1728914603
0x77777778...eE0De759D
0.45462718 ETH
209642752024-10-14 14:03:2370 days ago1728914603
0x77777778...eE0De759D
0.45462718 ETH
209642702024-10-14 14:02:2370 days ago1728914543
0x77777778...eE0De759D
0.24216932 ETH
209642702024-10-14 14:02:2370 days ago1728914543
0x77777778...eE0De759D
0.24216932 ETH
209642652024-10-14 14:01:2370 days ago1728914483
0x77777778...eE0De759D
0.05786099 ETH
209642652024-10-14 14:01:2370 days ago1728914483
0x77777778...eE0De759D
0.05786099 ETH
209642602024-10-14 14:00:2370 days ago1728914423
0x77777778...eE0De759D
0.50750085 ETH
209642602024-10-14 14:00:2370 days ago1728914423
0x77777778...eE0De759D
0.50750085 ETH
209642582024-10-14 13:59:5970 days ago1728914399
0x77777778...eE0De759D
0.07357138 ETH
209642582024-10-14 13:59:5970 days ago1728914399
0x77777778...eE0De759D
0.07357138 ETH
209642572024-10-14 13:59:4770 days ago1728914387
0x77777778...eE0De759D
0.15734016 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
SHREK

Compiler Version
v0.8.24+commit.e11b9ed9

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion, MIT license
File 1 of 1 : SHREK.sol
// SPDX-License-Identifier: MIT

/*

$SHREK - SHREK is love! Shrek is life!
The OGs #meme

X:          https://x.com/shrek_on_erc
Website:    https://ShrekisloveShrekislife.fun
Telegram:   https://t.me/EthereumShrek

Sticker:
https://t.me/addstickers/ShrekErc20Stickers
https://t.me/addstickers/ShrekErc20VideoStickers
https://t.me/addemoji/ShrekErc20Emoji
*/

pragma solidity 0.8.24;

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);
}

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;
    }

}

contract Ownable is Context {
    address private _owner;

    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);
    }

}

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

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

    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

contract SHREK is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    mapping(address => bool) private _isExcludedFromFee;
    address payable private _taxWallet;

    uint256 private _initialBuyTax = 20;
    uint256 private _initialSellTax = 20;
    uint256 private _finalBuyTax = 0;
    uint256 private _finalSellTax = 0;
    uint256 private _reduceBuyTaxAt = 10;
    uint256 private _reduceSellTaxAt = 10;
    uint256 private _preventSwapBefore = 24;
    uint256 private _transferTax = 0;
    uint256 private _buyCount = 0;

    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 1_000_000_000 * 10 ** _decimals;
    string private constant _name = unicode"ETHEREUM SHREK";
    string private constant _symbol = unicode"SHREK";
    uint256 public _maxTxAmount = _tTotal * 2 / 100;
    uint256 public _maxWalletSize = _tTotal * 2 / 100;
    uint256 public _taxSwapThreshold = _tTotal / 200;
    uint256 public _maxTaxSwap = 1_000_000_000 * 10 ** _decimals;

    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
    uint256 private sellCount = 0;
    uint256 private lastSellBlock = 0;

    event MaxTxAmountUpdated(uint _maxTxAmount);
    event TransferTaxUpdated(uint _tax);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }

    constructor () {
        _taxWallet = payable(_msgSender());
        uint256 _dev = 5 * _tTotal / 100;
        _balances[_msgSender()] = _dev;
        _balances[address(this)] = _tTotal - _dev;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;

        emit Transfer(address(0), _msgSender(), _dev);
        emit Transfer(address(0), address(this), _tTotal - _dev);
        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 _balances[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 _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");
        uint256 taxAmount = 0;
        if (from != owner() && to != owner()) {
            if (_buyCount == 0) {
                taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
            }
            if (_buyCount > 0) {
                taxAmount = amount.mul(_transferTax).div(100);
            }

            if (from == uniswapV2Pair && to != address(uniswapV2Router) && !_isExcludedFromFee[to]) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                taxAmount = amount.mul((_buyCount > _reduceBuyTaxAt) ? _finalBuyTax : _initialBuyTax).div(100);
                _buyCount++;
            }

            if (to == uniswapV2Pair && from != address(this)) {
                taxAmount = amount.mul((_buyCount > _reduceSellTaxAt) ? _finalSellTax : _initialSellTax).div(100);
            }

            uint256 contractTokenBalance = balanceOf(address(this));
            if (!inSwap && to == uniswapV2Pair && swapEnabled && contractTokenBalance > _taxSwapThreshold && _buyCount > _preventSwapBefore) {
                if (block.number > lastSellBlock) {
                    sellCount = 0;
                }
                require(sellCount < 3, "Only 3 sells per block!");
                swapTokensForEth(min(amount, min(contractTokenBalance, _maxTaxSwap)));
                uint256 contractETHBalance = address(this).balance;
                if (contractETHBalance > 0) {
                    sendETHToFee(address(this).balance);
                }
                sellCount++;
                lastSellBlock = block.number;
            }
        }

        if (taxAmount > 0) {
            _balances[address(this)] = _balances[address(this)].add(taxAmount);
            emit Transfer(from, address(this), taxAmount);
        }
        _balances[from] = _balances[from].sub(amount);
        _balances[to] = _balances[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }


    function min(uint256 a, uint256 b) private pure returns (uint256){
        return (a > b) ? b : a;
    }

    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 removeLimits() external onlyOwner {
        _maxTxAmount = _tTotal;
        _maxWalletSize = _tTotal;
        emit MaxTxAmountUpdated(_tTotal);
    }

    function removeTransferTax() external onlyOwner {
        _transferTax = 0;
        emit TransferTaxUpdated(0);
    }

    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }

    function openTrading() external onlyOwner() {
        require(!tradingOpen, "trading is already open");
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this), balanceOf(address(this)), 0, 0, owner(), block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        swapEnabled = true;
        tradingOpen = true;
    }


    receive() external payable {}

    function manualSwap() external {
        require(_msgSender() == _taxWallet);
        uint256 tokenBalance = balanceOf(address(this));
        if (tokenBalance > 0) {
            swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance = address(this).balance;
        if (ethBalance > 0) {
            sendETHToFee(ethBalance);
        }
    }

    function resecureETH() external {
        require(address(this).balance > 0, "Token: no ETH to clear");
        require(_msgSender() == _taxWallet);
        payable(msg.sender).transfer(address(this).balance);
    }
}

Settings
{
  "evmVersion": "paris",
  "libraries": {},
  "metadata": {
    "bytecodeHash": "ipfs",
    "useLiteralContent": true
  },
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "remappings": [],
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  }
}

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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_tax","type":"uint256"}],"name":"TransferTaxUpdated","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"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":"_taxSwapThreshold","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":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","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":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeTransferTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"resecureETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"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"},{"stateMutability":"payable","type":"receive"}]

60806040526014600555601460065560006007556000600855600a600955600a80556018600b556000600c556000600d55606460026009600a62000044919062000807565b633b9aca0062000055919062000858565b62000061919062000858565b6200006d9190620008d2565b600e55606460026009600a62000084919062000807565b633b9aca0062000095919062000858565b620000a1919062000858565b620000ad9190620008d2565b600f5560c86009600a620000c2919062000807565b633b9aca00620000d3919062000858565b620000df9190620008d2565b6010556009600a620000f2919062000807565b633b9aca0062000103919062000858565b6011556000601360156101000a81548160ff0219169083151502179055506000601360166101000a81548160ff021916908315150217905550600060145560006015553480156200015357600080fd5b506000620001666200063c60201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620002146200063c60201b60201c565b600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600060646009600a62000268919062000807565b633b9aca0062000279919062000858565b600562000287919062000858565b620002939190620008d2565b90508060016000620002aa6200063c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806009600a620002f9919062000807565b633b9aca006200030a919062000858565b6200031691906200090a565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360006200036f6200064460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004a26200063c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405162000501919062000956565b60405180910390a33073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836009600a6200056a919062000807565b633b9aca006200057b919062000858565b6200058791906200090a565b60405162000596919062000956565b60405180910390a3620005ae6200063c60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200060d919062000807565b633b9aca006200061e919062000858565b6040516200062d919062000956565b60405180910390a35062000973565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620006fb57808604811115620006d357620006d26200066d565b5b6001851615620006e35780820291505b8081029050620006f3856200069c565b9450620006b3565b94509492505050565b600082620007165760019050620007e9565b81620007265760009050620007e9565b81600181146200073f57600281146200074a5762000780565b6001915050620007e9565b60ff8411156200075f576200075e6200066d565b5b8360020a9150848211156200077957620007786200066d565b5b50620007e9565b5060208310610133831016604e8410600b8410161715620007ba5782820a905083811115620007b457620007b36200066d565b5b620007e9565b620007c98484846001620006a9565b92509050818404811115620007e357620007e26200066d565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200081482620007f0565b91506200082183620007fa565b9250620008507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000704565b905092915050565b60006200086582620007f0565b91506200087283620007f0565b92508282026200088281620007f0565b915082820484148315176200089c576200089b6200066d565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000620008df82620007f0565b9150620008ec83620007f0565b925082620008ff57620008fe620008a3565b5b828204905092915050565b60006200091782620007f0565b91506200092483620007f0565b92508282039050818111156200093f576200093e6200066d565b5b92915050565b6200095081620007f0565b82525050565b60006020820190506200096d600083018462000945565b92915050565b6131ae80620009836000396000f3fe6080604052600436106101235760003560e01c8063715018a6116100a057806395d89b411161006457806395d89b4114610386578063a9059cbb146103b1578063bf474bed146103ee578063c9567bf914610419578063dd62ed3e146104305761012a565b8063715018a6146102d7578063751039fc146102ee5780637d1db4a5146103055780638da5cb5b146103305780638f9a55c01461035b5761012a565b806323b872dd116100e757806323b872dd14610204578063313ce5671461024157806345996c321461026c57806351bc3c851461028357806370a082311461029a5761012a565b806306fdde031461012f578063095ea7b31461015a5780630faee56f14610197578063109daa99146101c257806318160ddd146101d95761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b5061014461046d565b60405161015191906121e9565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c91906122a4565b6104aa565b60405161018e91906122ff565b60405180910390f35b3480156101a357600080fd5b506101ac6104c8565b6040516101b99190612329565b60405180910390f35b3480156101ce57600080fd5b506101d76104ce565b005b3480156101e557600080fd5b506101ee6105a5565b6040516101fb9190612329565b60405180910390f35b34801561021057600080fd5b5061022b60048036038101906102269190612344565b6105c9565b60405161023891906122ff565b60405180910390f35b34801561024d57600080fd5b506102566106a2565b60405161026391906123b3565b60405180910390f35b34801561027857600080fd5b506102816106ab565b005b34801561028f57600080fd5b50610298610798565b005b3480156102a657600080fd5b506102c160048036038101906102bc91906123ce565b610835565b6040516102ce9190612329565b60405180910390f35b3480156102e357600080fd5b506102ec61087e565b005b3480156102fa57600080fd5b506103036109d1565b005b34801561031157600080fd5b5061031a610b01565b6040516103279190612329565b60405180910390f35b34801561033c57600080fd5b50610345610b07565b604051610352919061240a565b60405180910390f35b34801561036757600080fd5b50610370610b30565b60405161037d9190612329565b60405180910390f35b34801561039257600080fd5b5061039b610b36565b6040516103a891906121e9565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d391906122a4565b610b73565b6040516103e591906122ff565b60405180910390f35b3480156103fa57600080fd5b50610403610b91565b6040516104109190612329565b60405180910390f35b34801561042557600080fd5b5061042e610b97565b005b34801561043c57600080fd5b5061045760048036038101906104529190612425565b6110cf565b6040516104649190612329565b60405180910390f35b60606040518060400160405280600e81526020017f455448455245554d20534852454b000000000000000000000000000000000000815250905090565b60006104be6104b7611156565b848461115e565b6001905092915050565b60115481565b6104d6611156565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a906124b1565b60405180910390fd5b6000600c819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de3600060405161059b9190612516565b60405180910390a1565b60006009600a6105b59190612693565b633b9aca006105c491906126de565b905090565b60006105d6848484611327565b610697846105e2611156565b6106928560405180606001604052806028815260200161315160289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610648611156565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c289092919063ffffffff16565b61115e565b600190509392505050565b60006009905090565b600047116106ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e59061276c565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661072f611156565b73ffffffffffffffffffffffffffffffffffffffff161461074f57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610795573d6000803e3d6000fd5b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107d9611156565b73ffffffffffffffffffffffffffffffffffffffff16146107f957600080fd5b600061080430610835565b905060008111156108195761081881611c8c565b5b600047905060008111156108315761083081611f05565b5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610886611156565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a906124b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109d9611156565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5d906124b1565b60405180910390fd5b6009600a610a749190612693565b633b9aca00610a8391906126de565b600e819055506009600a610a979190612693565b633b9aca00610aa691906126de565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610adb9190612693565b633b9aca00610aea91906126de565b604051610af79190612329565b60405180910390a1565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600581526020017f534852454b000000000000000000000000000000000000000000000000000000815250905090565b6000610b87610b80611156565b8484611327565b6001905092915050565b60105481565b610b9f611156565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c23906124b1565b60405180910390fd5b601360149054906101000a900460ff1615610c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c73906127d8565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d1a30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610d069190612693565b633b9aca00610d1591906126de565b61115e565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dab919061280d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e58919061280d565b6040518363ffffffff1660e01b8152600401610e7592919061283a565b6020604051808303816000875af1158015610e94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb8919061280d565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f4130610835565b600080610f4c610b07565b426040518863ffffffff1660e01b8152600401610f6e96959493929190612863565b60606040518083038185885af1158015610f8c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610fb191906128d9565b505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161105392919061292c565b6020604051808303816000875af1158015611072573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110969190612981565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c490612a20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123390612ab2565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161131a9190612329565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d90612b44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc90612bd6565b60405180910390fd5b60008111611448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143f90612c68565b60405180910390fd5b6000611452610b07565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114c05750611490610b07565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561196b576000600d540361150e5761150b60646114fd600954600d54116114ea576005546114ee565b6007545b85611f7190919063ffffffff16565b611feb90919063ffffffff16565b90505b6000600d541115611544576115416064611533600c5485611f7190919063ffffffff16565b611feb90919063ffffffff16565b90505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115ef5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116455750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561173e57600e5482111561168f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168690612cd4565b60405180910390fd5b600f548261169c85610835565b6116a69190612cf4565b11156116e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116de90612d74565b60405180910390fd5b6117236064611715600954600d541161170257600554611706565b6007545b85611f7190919063ffffffff16565b611feb90919063ffffffff16565b9050600d600081548092919061173890612d94565b91905055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117c757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561180b5761180860646117fa600a54600d54116117e7576006546117eb565b6008545b85611f7190919063ffffffff16565b611feb90919063ffffffff16565b90505b600061181630610835565b9050601360159054906101000a900460ff161580156118825750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561189a5750601360169054906101000a900460ff165b80156118a7575060105481115b80156118b65750600b54600d54115b15611969576015544311156118ce5760006014819055505b600360145410611913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190a90612e28565b60405180910390fd5b61193061192b8461192684601154612035565b612035565b611c8c565b600047905060008111156119485761194747611f05565b5b6014600081548092919061195b90612d94565b919050555043601581905550505b505b6000811115611a6f576119c681600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204e90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a669190612329565b60405180910390a35b611ac182600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ac90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b68611b1a82846120ac90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204e90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c0d84866120ac90919063ffffffff16565b604051611c1a9190612329565b60405180910390a350505050565b6000838311158290611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6791906121e9565b60405180910390fd5b5060008385611c7f9190612e48565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611cc457611cc3612e7c565b5b604051908082528060200260200182016040528015611cf25781602001602082028036833780820191505090505b5090503081600081518110611d0a57611d09612eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd5919061280d565b81600181518110611de957611de8612eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e5030601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461115e565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611eb4959493929190612f98565b600060405180830381600087803b158015611ece57600080fd5b505af1158015611ee2573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f6d573d6000803e3d6000fd5b5050565b6000808303611f835760009050611fe5565b60008284611f9191906126de565b9050828482611fa09190613021565b14611fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd7906130c4565b60405180910390fd5b809150505b92915050565b600061202d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120f6565b905092915050565b60008183116120445782612046565b815b905092915050565b600080828461205d9190612cf4565b9050838110156120a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209990613130565b60405180910390fd5b8091505092915050565b60006120ee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c28565b905092915050565b6000808311829061213d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213491906121e9565b60405180910390fd5b506000838561214c9190613021565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612193578082015181840152602081019050612178565b60008484015250505050565b6000601f19601f8301169050919050565b60006121bb82612159565b6121c58185612164565b93506121d5818560208601612175565b6121de8161219f565b840191505092915050565b6000602082019050818103600083015261220381846121b0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061223b82612210565b9050919050565b61224b81612230565b811461225657600080fd5b50565b60008135905061226881612242565b92915050565b6000819050919050565b6122818161226e565b811461228c57600080fd5b50565b60008135905061229e81612278565b92915050565b600080604083850312156122bb576122ba61220b565b5b60006122c985828601612259565b92505060206122da8582860161228f565b9150509250929050565b60008115159050919050565b6122f9816122e4565b82525050565b600060208201905061231460008301846122f0565b92915050565b6123238161226e565b82525050565b600060208201905061233e600083018461231a565b92915050565b60008060006060848603121561235d5761235c61220b565b5b600061236b86828701612259565b935050602061237c86828701612259565b925050604061238d8682870161228f565b9150509250925092565b600060ff82169050919050565b6123ad81612397565b82525050565b60006020820190506123c860008301846123a4565b92915050565b6000602082840312156123e4576123e361220b565b5b60006123f284828501612259565b91505092915050565b61240481612230565b82525050565b600060208201905061241f60008301846123fb565b92915050565b6000806040838503121561243c5761243b61220b565b5b600061244a85828601612259565b925050602061245b85828601612259565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061249b602083612164565b91506124a682612465565b602082019050919050565b600060208201905081810360008301526124ca8161248e565b9050919050565b6000819050919050565b6000819050919050565b60006125006124fb6124f6846124d1565b6124db565b61226e565b9050919050565b612510816124e5565b82525050565b600060208201905061252b6000830184612507565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156125b75780860481111561259357612592612531565b5b60018516156125a25780820291505b80810290506125b085612560565b9450612577565b94509492505050565b6000826125d0576001905061268c565b816125de576000905061268c565b81600181146125f457600281146125fe5761262d565b600191505061268c565b60ff8411156126105761260f612531565b5b8360020a91508482111561262757612626612531565b5b5061268c565b5060208310610133831016604e8410600b84101617156126625782820a90508381111561265d5761265c612531565b5b61268c565b61266f848484600161256d565b9250905081840481111561268657612685612531565b5b81810290505b9392505050565b600061269e8261226e565b91506126a983612397565b92506126d67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846125c0565b905092915050565b60006126e98261226e565b91506126f48361226e565b92508282026127028161226e565b9150828204841483151761271957612718612531565b5b5092915050565b7f546f6b656e3a206e6f2045544820746f20636c65617200000000000000000000600082015250565b6000612756601683612164565b915061276182612720565b602082019050919050565b6000602082019050818103600083015261278581612749565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006127c2601783612164565b91506127cd8261278c565b602082019050919050565b600060208201905081810360008301526127f1816127b5565b9050919050565b60008151905061280781612242565b92915050565b6000602082840312156128235761282261220b565b5b6000612831848285016127f8565b91505092915050565b600060408201905061284f60008301856123fb565b61285c60208301846123fb565b9392505050565b600060c08201905061287860008301896123fb565b612885602083018861231a565b6128926040830187612507565b61289f6060830186612507565b6128ac60808301856123fb565b6128b960a083018461231a565b979650505050505050565b6000815190506128d381612278565b92915050565b6000806000606084860312156128f2576128f161220b565b5b6000612900868287016128c4565b9350506020612911868287016128c4565b9250506040612922868287016128c4565b9150509250925092565b600060408201905061294160008301856123fb565b61294e602083018461231a565b9392505050565b61295e816122e4565b811461296957600080fd5b50565b60008151905061297b81612955565b92915050565b6000602082840312156129975761299661220b565b5b60006129a58482850161296c565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612a0a602483612164565b9150612a15826129ae565b604082019050919050565b60006020820190508181036000830152612a39816129fd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a9c602283612164565b9150612aa782612a40565b604082019050919050565b60006020820190508181036000830152612acb81612a8f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612b2e602583612164565b9150612b3982612ad2565b604082019050919050565b60006020820190508181036000830152612b5d81612b21565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612bc0602383612164565b9150612bcb82612b64565b604082019050919050565b60006020820190508181036000830152612bef81612bb3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612c52602983612164565b9150612c5d82612bf6565b604082019050919050565b60006020820190508181036000830152612c8181612c45565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612cbe601983612164565b9150612cc982612c88565b602082019050919050565b60006020820190508181036000830152612ced81612cb1565b9050919050565b6000612cff8261226e565b9150612d0a8361226e565b9250828201905080821115612d2257612d21612531565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000612d5e601a83612164565b9150612d6982612d28565b602082019050919050565b60006020820190508181036000830152612d8d81612d51565b9050919050565b6000612d9f8261226e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612dd157612dd0612531565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b21000000000000000000600082015250565b6000612e12601783612164565b9150612e1d82612ddc565b602082019050919050565b60006020820190508181036000830152612e4181612e05565b9050919050565b6000612e538261226e565b9150612e5e8361226e565b9250828203905081811115612e7657612e75612531565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f0f81612230565b82525050565b6000612f218383612f06565b60208301905092915050565b6000602082019050919050565b6000612f4582612eda565b612f4f8185612ee5565b9350612f5a83612ef6565b8060005b83811015612f8b578151612f728882612f15565b9750612f7d83612f2d565b925050600181019050612f5e565b5085935050505092915050565b600060a082019050612fad600083018861231a565b612fba6020830187612507565b8181036040830152612fcc8186612f3a565b9050612fdb60608301856123fb565b612fe8608083018461231a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061302c8261226e565b91506130378361226e565b92508261304757613046612ff2565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006130ae602183612164565b91506130b982613052565b604082019050919050565b600060208201905081810360008301526130dd816130a1565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061311a601b83612164565b9150613125826130e4565b602082019050919050565b600060208201905081810360008301526131498161310d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122056ea1ea857eb16029392899afbfe745f1e1ad92ab697b7303cb36f3df1ace5ea64736f6c63430008180033

Deployed Bytecode

0x6080604052600436106101235760003560e01c8063715018a6116100a057806395d89b411161006457806395d89b4114610386578063a9059cbb146103b1578063bf474bed146103ee578063c9567bf914610419578063dd62ed3e146104305761012a565b8063715018a6146102d7578063751039fc146102ee5780637d1db4a5146103055780638da5cb5b146103305780638f9a55c01461035b5761012a565b806323b872dd116100e757806323b872dd14610204578063313ce5671461024157806345996c321461026c57806351bc3c851461028357806370a082311461029a5761012a565b806306fdde031461012f578063095ea7b31461015a5780630faee56f14610197578063109daa99146101c257806318160ddd146101d95761012a565b3661012a57005b600080fd5b34801561013b57600080fd5b5061014461046d565b60405161015191906121e9565b60405180910390f35b34801561016657600080fd5b50610181600480360381019061017c91906122a4565b6104aa565b60405161018e91906122ff565b60405180910390f35b3480156101a357600080fd5b506101ac6104c8565b6040516101b99190612329565b60405180910390f35b3480156101ce57600080fd5b506101d76104ce565b005b3480156101e557600080fd5b506101ee6105a5565b6040516101fb9190612329565b60405180910390f35b34801561021057600080fd5b5061022b60048036038101906102269190612344565b6105c9565b60405161023891906122ff565b60405180910390f35b34801561024d57600080fd5b506102566106a2565b60405161026391906123b3565b60405180910390f35b34801561027857600080fd5b506102816106ab565b005b34801561028f57600080fd5b50610298610798565b005b3480156102a657600080fd5b506102c160048036038101906102bc91906123ce565b610835565b6040516102ce9190612329565b60405180910390f35b3480156102e357600080fd5b506102ec61087e565b005b3480156102fa57600080fd5b506103036109d1565b005b34801561031157600080fd5b5061031a610b01565b6040516103279190612329565b60405180910390f35b34801561033c57600080fd5b50610345610b07565b604051610352919061240a565b60405180910390f35b34801561036757600080fd5b50610370610b30565b60405161037d9190612329565b60405180910390f35b34801561039257600080fd5b5061039b610b36565b6040516103a891906121e9565b60405180910390f35b3480156103bd57600080fd5b506103d860048036038101906103d391906122a4565b610b73565b6040516103e591906122ff565b60405180910390f35b3480156103fa57600080fd5b50610403610b91565b6040516104109190612329565b60405180910390f35b34801561042557600080fd5b5061042e610b97565b005b34801561043c57600080fd5b5061045760048036038101906104529190612425565b6110cf565b6040516104649190612329565b60405180910390f35b60606040518060400160405280600e81526020017f455448455245554d20534852454b000000000000000000000000000000000000815250905090565b60006104be6104b7611156565b848461115e565b6001905092915050565b60115481565b6104d6611156565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610563576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161055a906124b1565b60405180910390fd5b6000600c819055507fe9b79e1a6c2dc43b4c0c6ff01ce9e3332d810e482270f464c0a21ad6c5fc6de3600060405161059b9190612516565b60405180910390a1565b60006009600a6105b59190612693565b633b9aca006105c491906126de565b905090565b60006105d6848484611327565b610697846105e2611156565b6106928560405180606001604052806028815260200161315160289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610648611156565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611c289092919063ffffffff16565b61115e565b600190509392505050565b60006009905090565b600047116106ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106e59061276c565b60405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661072f611156565b73ffffffffffffffffffffffffffffffffffffffff161461074f57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f19350505050158015610795573d6000803e3d6000fd5b50565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166107d9611156565b73ffffffffffffffffffffffffffffffffffffffff16146107f957600080fd5b600061080430610835565b905060008111156108195761081881611c8c565b5b600047905060008111156108315761083081611f05565b5b5050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610886611156565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161090a906124b1565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6109d9611156565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a66576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5d906124b1565b60405180910390fd5b6009600a610a749190612693565b633b9aca00610a8391906126de565b600e819055506009600a610a979190612693565b633b9aca00610aa691906126de565b600f819055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610adb9190612693565b633b9aca00610aea91906126de565b604051610af79190612329565b60405180910390a1565b600e5481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600f5481565b60606040518060400160405280600581526020017f534852454b000000000000000000000000000000000000000000000000000000815250905090565b6000610b87610b80611156565b8484611327565b6001905092915050565b60105481565b610b9f611156565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c2c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c23906124b1565b60405180910390fd5b601360149054906101000a900460ff1615610c7c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c73906127d8565b60405180910390fd5b737a250d5630b4cf539739df2c5dacb4c659f2488d601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610d1a30601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610d069190612693565b633b9aca00610d1591906126de565b61115e565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610d87573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dab919061280d565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e34573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610e58919061280d565b6040518363ffffffff1660e01b8152600401610e7592919061283a565b6020604051808303816000875af1158015610e94573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eb8919061280d565b601360006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7194730610f4130610835565b600080610f4c610b07565b426040518863ffffffff1660e01b8152600401610f6e96959493929190612863565b60606040518083038185885af1158015610f8c573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190610fb191906128d9565b505050601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b815260040161105392919061292c565b6020604051808303816000875af1158015611072573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110969190612981565b506001601360166101000a81548160ff0219169083151502179055506001601360146101000a81548160ff021916908315150217905550565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036111cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111c490612a20565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361123c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161123390612ab2565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161131a9190612329565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611396576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161138d90612b44565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611405576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113fc90612bd6565b60405180910390fd5b60008111611448576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143f90612c68565b60405180910390fd5b6000611452610b07565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16141580156114c05750611490610b07565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561196b576000600d540361150e5761150b60646114fd600954600d54116114ea576005546114ee565b6007545b85611f7190919063ffffffff16565b611feb90919063ffffffff16565b90505b6000600d541115611544576115416064611533600c5485611f7190919063ffffffff16565b611feb90919063ffffffff16565b90505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161480156115ef5750601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156116455750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b1561173e57600e5482111561168f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161168690612cd4565b60405180910390fd5b600f548261169c85610835565b6116a69190612cf4565b11156116e7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116de90612d74565b60405180910390fd5b6117236064611715600954600d541161170257600554611706565b6007545b85611f7190919063ffffffff16565b611feb90919063ffffffff16565b9050600d600081548092919061173890612d94565b91905055505b601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480156117c757503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b1561180b5761180860646117fa600a54600d54116117e7576006546117eb565b6008545b85611f7190919063ffffffff16565b611feb90919063ffffffff16565b90505b600061181630610835565b9050601360159054906101000a900460ff161580156118825750601360009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16145b801561189a5750601360169054906101000a900460ff165b80156118a7575060105481115b80156118b65750600b54600d54115b15611969576015544311156118ce5760006014819055505b600360145410611913576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161190a90612e28565b60405180910390fd5b61193061192b8461192684601154612035565b612035565b611c8c565b600047905060008111156119485761194747611f05565b5b6014600081548092919061195b90612d94565b919050555043601581905550505b505b6000811115611a6f576119c681600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204e90919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611a669190612329565b60405180910390a35b611ac182600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120ac90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611b68611b1a82846120ac90919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461204e90919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef611c0d84866120ac90919063ffffffff16565b604051611c1a9190612329565b60405180910390a350505050565b6000838311158290611c70576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c6791906121e9565b60405180910390fd5b5060008385611c7f9190612e48565b9050809150509392505050565b6001601360156101000a81548160ff0219169083151502179055506000600267ffffffffffffffff811115611cc457611cc3612e7c565b5b604051908082528060200260200182016040528015611cf25781602001602082028036833780820191505090505b5090503081600081518110611d0a57611d09612eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611db1573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611dd5919061280d565b81600181518110611de957611de8612eab565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050611e5030601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168461115e565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611eb4959493929190612f98565b600060405180830381600087803b158015611ece57600080fd5b505af1158015611ee2573d6000803e3d6000fd5b50505050506000601360156101000a81548160ff02191690831515021790555050565b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015611f6d573d6000803e3d6000fd5b5050565b6000808303611f835760009050611fe5565b60008284611f9191906126de565b9050828482611fa09190613021565b14611fe0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fd7906130c4565b60405180910390fd5b809150505b92915050565b600061202d83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506120f6565b905092915050565b60008183116120445782612046565b815b905092915050565b600080828461205d9190612cf4565b9050838110156120a2576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161209990613130565b60405180910390fd5b8091505092915050565b60006120ee83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611c28565b905092915050565b6000808311829061213d576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213491906121e9565b60405180910390fd5b506000838561214c9190613021565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612193578082015181840152602081019050612178565b60008484015250505050565b6000601f19601f8301169050919050565b60006121bb82612159565b6121c58185612164565b93506121d5818560208601612175565b6121de8161219f565b840191505092915050565b6000602082019050818103600083015261220381846121b0565b905092915050565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061223b82612210565b9050919050565b61224b81612230565b811461225657600080fd5b50565b60008135905061226881612242565b92915050565b6000819050919050565b6122818161226e565b811461228c57600080fd5b50565b60008135905061229e81612278565b92915050565b600080604083850312156122bb576122ba61220b565b5b60006122c985828601612259565b92505060206122da8582860161228f565b9150509250929050565b60008115159050919050565b6122f9816122e4565b82525050565b600060208201905061231460008301846122f0565b92915050565b6123238161226e565b82525050565b600060208201905061233e600083018461231a565b92915050565b60008060006060848603121561235d5761235c61220b565b5b600061236b86828701612259565b935050602061237c86828701612259565b925050604061238d8682870161228f565b9150509250925092565b600060ff82169050919050565b6123ad81612397565b82525050565b60006020820190506123c860008301846123a4565b92915050565b6000602082840312156123e4576123e361220b565b5b60006123f284828501612259565b91505092915050565b61240481612230565b82525050565b600060208201905061241f60008301846123fb565b92915050565b6000806040838503121561243c5761243b61220b565b5b600061244a85828601612259565b925050602061245b85828601612259565b9150509250929050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b600061249b602083612164565b91506124a682612465565b602082019050919050565b600060208201905081810360008301526124ca8161248e565b9050919050565b6000819050919050565b6000819050919050565b60006125006124fb6124f6846124d1565b6124db565b61226e565b9050919050565b612510816124e5565b82525050565b600060208201905061252b6000830184612507565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156125b75780860481111561259357612592612531565b5b60018516156125a25780820291505b80810290506125b085612560565b9450612577565b94509492505050565b6000826125d0576001905061268c565b816125de576000905061268c565b81600181146125f457600281146125fe5761262d565b600191505061268c565b60ff8411156126105761260f612531565b5b8360020a91508482111561262757612626612531565b5b5061268c565b5060208310610133831016604e8410600b84101617156126625782820a90508381111561265d5761265c612531565b5b61268c565b61266f848484600161256d565b9250905081840481111561268657612685612531565b5b81810290505b9392505050565b600061269e8261226e565b91506126a983612397565b92506126d67fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846125c0565b905092915050565b60006126e98261226e565b91506126f48361226e565b92508282026127028161226e565b9150828204841483151761271957612718612531565b5b5092915050565b7f546f6b656e3a206e6f2045544820746f20636c65617200000000000000000000600082015250565b6000612756601683612164565b915061276182612720565b602082019050919050565b6000602082019050818103600083015261278581612749565b9050919050565b7f74726164696e6720697320616c7265616479206f70656e000000000000000000600082015250565b60006127c2601783612164565b91506127cd8261278c565b602082019050919050565b600060208201905081810360008301526127f1816127b5565b9050919050565b60008151905061280781612242565b92915050565b6000602082840312156128235761282261220b565b5b6000612831848285016127f8565b91505092915050565b600060408201905061284f60008301856123fb565b61285c60208301846123fb565b9392505050565b600060c08201905061287860008301896123fb565b612885602083018861231a565b6128926040830187612507565b61289f6060830186612507565b6128ac60808301856123fb565b6128b960a083018461231a565b979650505050505050565b6000815190506128d381612278565b92915050565b6000806000606084860312156128f2576128f161220b565b5b6000612900868287016128c4565b9350506020612911868287016128c4565b9250506040612922868287016128c4565b9150509250925092565b600060408201905061294160008301856123fb565b61294e602083018461231a565b9392505050565b61295e816122e4565b811461296957600080fd5b50565b60008151905061297b81612955565b92915050565b6000602082840312156129975761299661220b565b5b60006129a58482850161296c565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612a0a602483612164565b9150612a15826129ae565b604082019050919050565b60006020820190508181036000830152612a39816129fd565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612a9c602283612164565b9150612aa782612a40565b604082019050919050565b60006020820190508181036000830152612acb81612a8f565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000612b2e602583612164565b9150612b3982612ad2565b604082019050919050565b60006020820190508181036000830152612b5d81612b21565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000612bc0602383612164565b9150612bcb82612b64565b604082019050919050565b60006020820190508181036000830152612bef81612bb3565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000612c52602983612164565b9150612c5d82612bf6565b604082019050919050565b60006020820190508181036000830152612c8181612c45565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b6000612cbe601983612164565b9150612cc982612c88565b602082019050919050565b60006020820190508181036000830152612ced81612cb1565b9050919050565b6000612cff8261226e565b9150612d0a8361226e565b9250828201905080821115612d2257612d21612531565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b6000612d5e601a83612164565b9150612d6982612d28565b602082019050919050565b60006020820190508181036000830152612d8d81612d51565b9050919050565b6000612d9f8261226e565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612dd157612dd0612531565b5b600182019050919050565b7f4f6e6c7920332073656c6c732070657220626c6f636b21000000000000000000600082015250565b6000612e12601783612164565b9150612e1d82612ddc565b602082019050919050565b60006020820190508181036000830152612e4181612e05565b9050919050565b6000612e538261226e565b9150612e5e8361226e565b9250828203905081811115612e7657612e75612531565b5b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f0f81612230565b82525050565b6000612f218383612f06565b60208301905092915050565b6000602082019050919050565b6000612f4582612eda565b612f4f8185612ee5565b9350612f5a83612ef6565b8060005b83811015612f8b578151612f728882612f15565b9750612f7d83612f2d565b925050600181019050612f5e565b5085935050505092915050565b600060a082019050612fad600083018861231a565b612fba6020830187612507565b8181036040830152612fcc8186612f3a565b9050612fdb60608301856123fb565b612fe8608083018461231a565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061302c8261226e565b91506130378361226e565b92508261304757613046612ff2565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006130ae602183612164565b91506130b982613052565b604082019050919050565b600060208201905081810360008301526130dd816130a1565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b600061311a601b83612164565b9150613125826130e4565b602082019050919050565b600060208201905081810360008301526131498161310d565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a264697066735822122056ea1ea857eb16029392899afbfe745f1e1ad92ab697b7303cb36f3df1ace5ea64736f6c63430008180033

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.