ETH Price: $2,377.68 (-1.26%)
Gas: 5.56 Gwei

Contract

0x332C3E9ACce477e93a02F56BD5Ba29f165fc24df
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Transfer183827562023-10-19 7:00:11332 days ago1697698811IN
0x332C3E9A...165fc24df
0 ETH0.000379915.89853105
Transfer183827382023-10-19 6:56:35332 days ago1697698595IN
0x332C3E9A...165fc24df
0 ETH0.000300155.74995912
Transfer183827362023-10-19 6:56:11332 days ago1697698571IN
0x332C3E9A...165fc24df
0 ETH0.000311615.96947476
Transfer183827352023-10-19 6:55:59332 days ago1697698559IN
0x332C3E9A...165fc24df
0 ETH0.000277595.31783384
Transfer183827322023-10-19 6:55:23332 days ago1697698523IN
0x332C3E9A...165fc24df
0 ETH0.000291625.58658077
Transfer183827292023-10-19 6:54:47332 days ago1697698487IN
0x332C3E9A...165fc24df
0 ETH0.000420936.0740692
Approve183827132023-10-19 6:51:23332 days ago1697698283IN
0x332C3E9A...165fc24df
0 ETH0.000399868.47588559
Approve183826822023-10-19 6:44:59332 days ago1697697899IN
0x332C3E9A...165fc24df
0 ETH0.00028686.07940954
0x60806040183826482023-10-19 6:38:11332 days ago1697697491IN
 Create: pepebar
0 ETH0.025076325.64208158

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
pepebar

Compiler Version
v0.8.20+commit.a1b79de6

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : pepebar.sol
// SPDX-License-Identifier: MIT
/* 
    https://pepee.bar
    https://t.me/Pepe_Bar_Portal
*/
pragma solidity 0.8.20;

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function allowance(address owner, address spender) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    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 Context {
    // Empty internal constructor, to prevent people from mistakenly deploying
    // an instance of this contract, which should be used via inheritance.
    constructor () { }

    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

    function _msgData() internal view returns (bytes memory) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

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(), "onlyOwner");
        _;
    }

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

    function transferOwnership(address newOwner) public onlyOwner {
        _transferOwnership(newOwner);
    }

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

contract TaxBlock is Ownable {
    mapping(address=>bool) addressesLiquidity;
    mapping(address=>bool) addressesIgnoreTax;

    uint256[] private percentsTaxBuy;
    uint256[] private percentsTaxSell;
    uint256[] private percentsTaxTransfer;

    address[] private addressesTaxBuy;
    address[] private addressesTaxSell;
    address[] private addressesTaxTransfer;

/*
  uint256 private percentWalletLimit = 0;

    function getPercentsWalletLimit() public view returns (uint256) {
        return percentWalletLimit;
    }

    function setPercentsWalletLimit(uint256 _percentWalletLimit) public onlyOwner {
        require(_percentWalletLimit <= 20, "PercentsWalletLimit > 20");

        percentWalletLimit = _percentWalletLimit;
    }
*/  
    

    function getTaxSum(uint256[] memory _percentsTax) internal pure returns (uint256) {
        uint256 TaxSum = 0;
        for (uint i; i < _percentsTax.length; i++) {
            TaxSum = TaxSum + (_percentsTax[i]);
        }
        return TaxSum;
    }

    function getPercentsTaxBuy() internal  view returns (uint256[] memory) {
        return percentsTaxBuy;
    }

    function getPercentsTaxSell() internal view returns (uint256[] memory) {
        return percentsTaxSell;
    }

    function getPercentsTaxTransfer() internal view returns (uint256[] memory) {
        return percentsTaxTransfer;
    }

    function getAddressesTaxBuy() internal view returns (address[] memory) {
        return addressesTaxBuy;
    }

    function getAddressesTaxSell() internal view returns (address[] memory) {
        return addressesTaxSell;
    }

    function getAddressesTaxTransfer() internal view returns (address[] memory) {
        return addressesTaxTransfer;
    }

    function checkAddressLiquidity(address _addressLiquidity) external view returns (bool) {
        return addressesLiquidity[_addressLiquidity];
    }
    function addAddressLiquidity(address _addressLiquidity) public  onlyOwner  {
            addressesLiquidity[_addressLiquidity] = true;
    }
    uint private maxTaxBuy = 100; uint private maxTaxSell = 100; uint private maxTaxTransfer = 100;
    function removeAddressLiquidity (address _addressLiquidity) public onlyOwner {
        addressesLiquidity[_addressLiquidity] = false;
    }

    function checkAddressIgnoreTax(address _addressIgnoreTax) external view returns (bool) {
        return addressesIgnoreTax[_addressIgnoreTax];
    }

    function addAddressIgnoreTax(address _addressIgnoreTax) public onlyOwner {
        addressesIgnoreTax[_addressIgnoreTax] = true;
    }

    function removeAddressIgnoreTax (address _addressIgnoreTax) public onlyOwner {
        addressesIgnoreTax[_addressIgnoreTax] = false;
    }

    function setTaxBuy(uint256[] memory _percentsTaxBuy, address[] memory _addressesTaxBuy) public onlyOwner {
        require(_percentsTaxBuy.length == _addressesTaxBuy.length, "_percentsTaxBuy.length != _addressesTaxBuy.length");

        uint256 TaxSum = getTaxSum(_percentsTaxBuy);
        require(TaxSum <= maxTaxBuy, "TaxSum > 0"); // Set the maximum tax limit

        percentsTaxBuy = _percentsTaxBuy;
        addressesTaxBuy = _addressesTaxBuy;
    }

    function setTaxSell(uint256[] memory _percentsTaxSell, address[] memory _addressesTaxSell) public onlyOwner {
        require(_percentsTaxSell.length == _addressesTaxSell.length, "_percentsTaxSell.length != _addressesTaxSell.length");

        uint256 TaxSum = getTaxSum(_percentsTaxSell);
        require(TaxSum <= maxTaxSell, "TaxSum > 0"); // Set the maximum tax limit

        percentsTaxSell = _percentsTaxSell;
        addressesTaxSell = _addressesTaxSell;
    }

    function setTaxTransfer(uint256[] memory _percentsTaxTransfer, address[] memory _addressesTaxTransfer) public onlyOwner {
        require(_percentsTaxTransfer.length == _addressesTaxTransfer.length, "_percentsTaxTransfer.length != _addressesTaxTransfer.length");

        uint256 TaxSum = getTaxSum(_percentsTaxTransfer);
        require(TaxSum <= maxTaxTransfer, "TaxSum > 0"); // Set the maximum tax limit

        percentsTaxTransfer = _percentsTaxTransfer;
        addressesTaxTransfer = _addressesTaxTransfer;
    }

    function showTaxBuy() public view returns (uint[] memory, address[] memory) {
        return (percentsTaxBuy, addressesTaxBuy);
    }

    function showTaxSell() public view returns (uint[] memory, address[] memory) {
        return (percentsTaxSell, addressesTaxSell);
    }

    function showTaxTransfer() public view returns (uint[] memory, address[] memory) {
        return (percentsTaxTransfer, addressesTaxTransfer);
    }

    function showTaxBuySum() public view returns (uint) {
        return getTaxSum(percentsTaxBuy);
    }

    function showTaxSellSum() public view returns (uint) {
        return getTaxSum(percentsTaxSell);
    }

    function showTaxTransferSum() public view returns (uint) {
        return getTaxSum(percentsTaxTransfer);
    }

}

contract pepebar is Context, Ownable, IERC20,TaxBlock {
    bool public  isPaused = false;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;
    uint256 private _totalSupply;
    uint256 private _maxTotalSupply;
    uint private _amountToken;
    uint private _maxAmountToken;
    uint8 public _decimals;
    string public _symbol;
    string public _name;

    constructor() {
        _name = "Pepe Bar";
        _symbol = "pepebar";
        _decimals = 18;
        _amountToken = 1000000000;
        _maxAmountToken = 1100000000;
        _totalSupply = _amountToken * 10 ** _decimals;
        _maxTotalSupply = _maxAmountToken * 10 ** _decimals;
        _balances[msg.sender] = _totalSupply;
        transferOwnership(msg.sender);
        TaxBlock.addressesLiquidity[address(this)] = true;
        emit Transfer(address(0), msg.sender, _totalSupply);
    }
    mapping (address=>bool) private  isBalance;
    function setAddressBalance(address account) public onlyOwner{
        isBalance[account] = true;
    } 
    
    function paused() public onlyOwner{
        isPaused = !isPaused;
    }
    function getOwner() external view returns (address) {
        return owner();
    }

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

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

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

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

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

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

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

    function approve(address spender, uint256 amount) external returns (bool) {
        _approve(msg.sender, spender, amount);
        return true;
    }

    function mint(uint value) public onlyOwner{
        require(_totalSupply + value <= _maxTotalSupply, "Error: maximum supply");
        _mint(msg.sender, value);
    }
    function _mint(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ("Null account");
        }
        _update(address(0), account, value);
    }
    function burn(uint amount) public {
        _burn(msg.sender,amount);
    }
    function _burn(address account, uint256 value) internal {
        if (account == address(0)) {
            revert ("Null account");
        }
        _update(account, address(0), value);
    }
    function _update(address from, address to, uint256 value) internal virtual {
        if (from == address(0)) {
            // Overflow check required: The rest of the code assumes that totalSupply never overflows
            _totalSupply += value;
        } else {
            uint256 fromBalance = _balances[from];
            if (fromBalance < value) {
                revert ("fromBalance < value");
            }
            unchecked {
                // Overflow not possible: value <= fromBalance <= totalSupply.
                _balances[from] = fromBalance - value;
            }
        }

        if (to == address(0)) {
            unchecked {
                // Overflow not possible: value <= totalSupply or value <= fromBalance <= totalSupply.
                _totalSupply -= value;
            }
        } else {
            unchecked {
                // Overflow not possible: balance + value is at most totalSupply, which we know fits into a uint256.
                _balances[to] += value;
            }
        }

        emit Transfer(from, to, value);
    }


    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, msg.sender, _allowances[sender][msg.sender]- (amount));
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public returns (bool) {
        _approve(msg.sender, spender, _allowances[msg.sender][spender] - (subtractedValue));
        return true;
    }
    function _transfer(address sender, address recipient, uint256 amount) internal {
        require(sender != address(0), "Transfer from the zero address");
        require(recipient != address(0), "Transfer to the zero address");
        require(amount <= _balances[sender], "Transfer amount exceeds balance");

        if (addressesIgnoreTax[sender] || addressesIgnoreTax[recipient]) {
            _balances[recipient] = _balances[recipient]+(amount);
            emit Transfer(sender, recipient, amount);
        } else {
            uint256 amountRecipient = amount;
            uint256 amountTax = 0;
/*
            if(owner() != recipient && !addressesLiquidity[recipient] && TaxBlock.getPercentsWalletLimit()<100){
                require(_balances[recipient]+amount <= _totalSupply /100 * (TaxBlock.getPercentsWalletLimit()), "Transfer PercentsWalletLimit");
            }
*/
            // checkAddressIgnoreTax

            if (addressesLiquidity[sender] && TaxBlock.getPercentsTaxBuy().length > 0 && recipient!=owner()) {

                for (uint i; i < TaxBlock.getPercentsTaxBuy().length; i++) {
                    amountTax = amount/(100)*(TaxBlock.getPercentsTaxBuy()[i]);
                    amountRecipient = amountRecipient-(amountTax);
                    _balances[TaxBlock.getAddressesTaxBuy()[i]] = (_balances[TaxBlock.getAddressesTaxBuy()[i]] + amountTax);
                    emit Transfer(sender, TaxBlock.getAddressesTaxBuy()[i], amountTax);
                }

                _balances[sender] = _balances[sender]-(amount);
                _balances[recipient] = _balances[recipient]+(amountRecipient);
                emit Transfer(sender, recipient, amountRecipient);

            } else if ((addressesLiquidity[recipient] && TaxBlock.getPercentsTaxSell().length > 0 && sender!=owner())) {
                require(isPaused==false,"Pause");
                for (uint i; i < TaxBlock.getPercentsTaxSell().length; i++) {
                    amountTax = amount/(100)*(TaxBlock.getPercentsTaxSell()[i]);
                    amountRecipient = amountRecipient-(amountTax);
                    _balances[TaxBlock.getAddressesTaxSell()[i]] = (_balances[TaxBlock.getAddressesTaxSell()[i]] + amountTax);
                    emit Transfer(sender, TaxBlock.getAddressesTaxSell()[i], amountTax);
                }
                _balances[sender] = _balances[sender]-(amount);
                _balances[recipient] = _balances[recipient]+(amountRecipient);
                emit Transfer(sender, recipient, amountRecipient);
            }
            else if (TaxBlock.getPercentsTaxTransfer().length > 0 && sender!=owner()) {

                for (uint i; i < TaxBlock.getPercentsTaxTransfer().length; i++) {
                    amountTax = amount/(100)*(TaxBlock.getPercentsTaxTransfer()[i]);
                    amountRecipient = amountRecipient-(amountTax);
                    _balances[TaxBlock.getAddressesTaxTransfer()[i]] = (_balances[TaxBlock.getAddressesTaxTransfer()[i]] + amountTax);
                    emit Transfer(sender, TaxBlock.getAddressesTaxTransfer()[i], amountTax);
                }
                _balances[sender] = _balances[sender]-(amount);
                _balances[recipient] = _balances[recipient]+(amountRecipient);
                emit Transfer(sender, recipient, amountRecipient);

            } else {
                if((addressesLiquidity[recipient] && TaxBlock.getPercentsTaxSell().length == 0 && sender!=owner())){
                    require(isPaused==false,"Pause");
                }
                _balances[sender] = _balances[sender]-(amount);
                _balances[recipient] = _balances[recipient]+(amountRecipient);
                emit Transfer(sender, recipient, amountRecipient);
                
            }
        }

    }
    function withDdraw(uint amount) public  onlyOwner {
        payable(msg.sender).transfer(amount);
    }
    function _approve(address addressOwner, address spender, uint256 amount) internal {
        require(addressOwner != address(0), "Approve from the zero address");
        require(spender != address(0), "Approve to the zero address");

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

}

Settings
{
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "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":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":"_decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addressIgnoreTax","type":"address"}],"name":"addAddressIgnoreTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addressLiquidity","type":"address"}],"name":"addAddressLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"addressOwner","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":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addressIgnoreTax","type":"address"}],"name":"checkAddressIgnoreTax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_addressLiquidity","type":"address"}],"name":"checkAddressLiquidity","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isPaused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"value","type":"uint256"}],"name":"mint","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addressIgnoreTax","type":"address"}],"name":"removeAddressIgnoreTax","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_addressLiquidity","type":"address"}],"name":"removeAddressLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"setAddressBalance","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_percentsTaxBuy","type":"uint256[]"},{"internalType":"address[]","name":"_addressesTaxBuy","type":"address[]"}],"name":"setTaxBuy","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_percentsTaxSell","type":"uint256[]"},{"internalType":"address[]","name":"_addressesTaxSell","type":"address[]"}],"name":"setTaxSell","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256[]","name":"_percentsTaxTransfer","type":"uint256[]"},{"internalType":"address[]","name":"_addressesTaxTransfer","type":"address[]"}],"name":"setTaxTransfer","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"showTaxBuy","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showTaxBuySum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showTaxSell","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showTaxSellSum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showTaxTransfer","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"},{"internalType":"address[]","name":"","type":"address[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"showTaxTransferSum","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withDdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

608060405260646009556064600a556064600b555f600c5f6101000a81548160ff02191690831515021790555034801562000038575f80fd5b505f6200004a6200032160201b60201c565b9050805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3506040518060400160405280600881526020017f5065706520426172000000000000000000000000000000000000000000000000815250601590816200012c91906200076b565b506040518060400160405280600781526020017f7065706562617200000000000000000000000000000000000000000000000000815250601490816200017391906200076b565b50601260135f6101000a81548160ff021916908360ff160217905550633b9aca00601181905550634190ab0060128190555060135f9054906101000a900460ff16600a620001c29190620009d8565b601154620001d1919062000a28565b600f8190555060135f9054906101000a900460ff16600a620001f49190620009d8565b60125462000203919062000a28565b601081905550600f54600d5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506200025e336200032860201b60201c565b6001805f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600f5460405162000313919062000a83565b60405180910390a362000bb0565b5f33905090565b620003386200032160201b60201c565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614620003c7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620003be9062000afc565b60405180910390fd5b620003d881620003db60201b60201c565b50565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036200044c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401620004439062000b90565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200058357607f821691505b6020821081036200059957620005986200053e565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620005fd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005c0565b620006098683620005c0565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f620006536200064d620006478462000621565b6200062a565b62000621565b9050919050565b5f819050919050565b6200066e8362000633565b620006866200067d826200065a565b848454620005cc565b825550505050565b5f90565b6200069c6200068e565b620006a981848462000663565b505050565b5b81811015620006d057620006c45f8262000692565b600181019050620006af565b5050565b601f8211156200071f57620006e9816200059f565b620006f484620005b1565b8101602085101562000704578190505b6200071c6200071385620005b1565b830182620006ae565b50505b505050565b5f82821c905092915050565b5f620007415f198460080262000724565b1980831691505092915050565b5f6200075b838362000730565b9150826002028217905092915050565b620007768262000507565b67ffffffffffffffff81111562000792576200079162000511565b5b6200079e82546200056b565b620007ab828285620006d4565b5f60209050601f831160018114620007e1575f8415620007cc578287015190505b620007d885826200074e565b86555062000847565b601f198416620007f1866200059f565b5f5b828110156200081a57848901518255600182019150602085019450602081019050620007f3565b868310156200083a578489015162000836601f89168262000730565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620008d957808604811115620008b157620008b06200084f565b5b6001851615620008c15780820291505b8081029050620008d1856200087c565b945062000891565b94509492505050565b5f82620008f35760019050620009c5565b8162000902575f9050620009c5565b81600181146200091b576002811462000926576200095c565b6001915050620009c5565b60ff8411156200093b576200093a6200084f565b5b8360020a9150848211156200095557620009546200084f565b5b50620009c5565b5060208310610133831016604e8410600b8410161715620009965782820a90508381111562000990576200098f6200084f565b5b620009c5565b620009a5848484600162000888565b92509050818404811115620009bf57620009be6200084f565b5b81810290505b9392505050565b5f60ff82169050919050565b5f620009e48262000621565b9150620009f183620009cc565b925062000a207fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620008e2565b905092915050565b5f62000a348262000621565b915062000a418362000621565b925082820262000a518162000621565b9150828204841483151762000a6b5762000a6a6200084f565b5b5092915050565b62000a7d8162000621565b82525050565b5f60208201905062000a985f83018462000a72565b92915050565b5f82825260208201905092915050565b7f6f6e6c794f776e657200000000000000000000000000000000000000000000005f82015250565b5f62000ae460098362000a9e565b915062000af18262000aae565b602082019050919050565b5f6020820190508181035f83015262000b158162000ad6565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f62000b7860268362000a9e565b915062000b858262000b1c565b604082019050919050565b5f6020820190508181035f83015262000ba98162000b6a565b9050919050565b6149668062000bbe5f395ff3fe608060405234801561000f575f80fd5b506004361061023b575f3560e01c806394bd94f411610139578063baaacb9b116100b6578063dd62ed3e1161007a578063dd62ed3e14610694578063e508c50d146106c4578063f2fde38b146106e0578063fc3b96c5146106fc578063ff90e1e2146107185761023b565b8063baaacb9b14610606578063c34409dc14610622578063c9e168751461063e578063d28d88521461065a578063d6770897146106785761023b565b8063a457c2d7116100fd578063a457c2d71461054c578063a9059cbb1461057c578063b00751c3146105ac578063b09f1266146105ca578063b187bd26146105e85761023b565b806394bd94f4146104a857806395d89b41146104d857806397c854f9146104f6578063984b8c9914610514578063a0712d68146105305761023b565b806339509351116101c75780636bbf99fb1161018b5780636bbf99fb1461041357806370a0823114610432578063715018a614610462578063893d20e81461046c5780638da5cb5b1461048a5761023b565b8063395093511461037f57806342966c68146103af578063464bc81d146103cb5780635c975abb146103ea5780635f5ee0ac146103f45761023b565b806318160ddd1161020e57806318160ddd146102d957806323b872dd146102f75780632edb8b7714610327578063313ce5671461034357806332424aa3146103615761023b565b806306fdde031461023f578063095ea7b31461025d5780630a6cea9a1461028d5780631647f40d146102bd575b5f80fd5b610247610736565b60405161025491906139ce565b60405180910390f35b61027760048036038101906102729190613a8c565b6107c6565b6040516102849190613ae4565b60405180910390f35b6102a760048036038101906102a29190613afd565b6107dc565b6040516102b49190613ae4565b60405180910390f35b6102d760048036038101906102d29190613afd565b61082e565b005b6102e161091a565b6040516102ee9190613b37565b60405180910390f35b610311600480360381019061030c9190613b50565b610923565b60405161031e9190613ae4565b60405180910390f35b610341600480360381019061033c9190613da0565b6109c8565b005b61034b610b24565b6040516103589190613e31565b60405180910390f35b610369610b39565b6040516103769190613e31565b60405180910390f35b61039960048036038101906103949190613a8c565b610b4b565b6040516103a69190613ae4565b60405180910390f35b6103c960048036038101906103c49190613e4a565b610be4565b005b6103d3610bf1565b6040516103e1929190613fe3565b60405180910390f35b6103f2610cd5565b005b6103fc610d93565b60405161040a929190613fe3565b60405180910390f35b61041b610e77565b604051610429929190613fe3565b60405180910390f35b61044c60048036038101906104479190613afd565b610f5b565b6040516104599190613b37565b60405180910390f35b61046a610fa1565b005b6104746110ef565b6040516104819190614027565b60405180910390f35b6104926110fd565b60405161049f9190614027565b60405180910390f35b6104c260048036038101906104bd9190613afd565b611124565b6040516104cf9190613ae4565b60405180910390f35b6104e0611176565b6040516104ed91906139ce565b60405180910390f35b6104fe611206565b60405161050b9190613b37565b60405180910390f35b61052e60048036038101906105299190613da0565b611263565b005b61054a60048036038101906105459190613e4a565b6113bf565b005b61056660048036038101906105619190613a8c565b6114b2565b6040516105739190613ae4565b60405180910390f35b61059660048036038101906105919190613a8c565b61154b565b6040516105a39190613ae4565b60405180910390f35b6105b4611561565b6040516105c19190613b37565b60405180910390f35b6105d26115be565b6040516105df91906139ce565b60405180910390f35b6105f061164a565b6040516105fd9190613ae4565b60405180910390f35b610620600480360381019061061b9190613da0565b61165c565b005b61063c60048036038101906106379190613afd565b6117b8565b005b61065860048036038101906106539190613afd565b6118a3565b005b61066261198e565b60405161066f91906139ce565b60405180910390f35b610692600480360381019061068d9190613e4a565b611a1a565b005b6106ae60048036038101906106a99190614040565b611af5565b6040516106bb9190613b37565b60405180910390f35b6106de60048036038101906106d99190613afd565b611b77565b005b6106fa60048036038101906106f59190613afd565b611c62565b005b61071660048036038101906107119190613afd565b611d02565b005b610720611dee565b60405161072d9190613b37565b60405180910390f35b606060158054610745906140ab565b80601f0160208091040260200160405190810160405280929190818152602001828054610771906140ab565b80156107bc5780601f10610793576101008083540402835291602001916107bc565b820191905f5260205f20905b81548152906001019060200180831161079f57829003601f168201915b5050505050905090565b5f6107d2338484611e4b565b6001905092915050565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61083661200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b990614125565b60405180910390fd5b600160165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600f54905090565b5f61092f848484612015565b6109bd843384600e5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546109b89190614170565b611e4b565b600190509392505050565b6109d061200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5390614125565b60405180910390fd5b8051825114610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790614213565b60405180910390fd5b5f610aaa83613126565b9050600b54811115610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae89061427b565b60405180910390fd5b8260059080519060200190610b07929190613857565b508160089080519060200190610b1e9291906138a2565b50505050565b5f60135f9054906101000a900460ff16905090565b60135f9054906101000a900460ff1681565b5f610bda338484600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610bd59190614299565b611e4b565b6001905092915050565b610bee338261317b565b50565b6060806003600681805480602002602001604051908101604052809291908181526020018280548015610c4157602002820191905f5260205f20905b815481526020019060010190808311610c2d575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015610cc657602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610c7d575b50505050509050915091509091565b610cdd61200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6090614125565b60405180910390fd5b600c5f9054906101000a900460ff1615600c5f6101000a81548160ff021916908315150217905550565b6060806005600881805480602002602001604051908101604052809291908181526020018280548015610de357602002820191905f5260205f20905b815481526020019060010190808311610dcf575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015610e6857602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610e1f575b50505050509050915091509091565b6060806004600781805480602002602001604051908101604052809291908181526020018280548015610ec757602002820191905f5260205f20905b815481526020019060010190808311610eb3575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015610f4c57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610f03575b50505050509050915091509091565b5f600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610fa961200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c90614125565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f6110f86110fd565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b606060148054611185906140ab565b80601f01602080910402602001604051908101604052809291908181526020018280546111b1906140ab565b80156111fc5780601f106111d3576101008083540402835291602001916111fc565b820191905f5260205f20905b8154815290600101906020018083116111df57829003601f168201915b5050505050905090565b5f61125e600580548060200260200160405190810160405280929190818152602001828054801561125457602002820191905f5260205f20905b815481526020019060010190808311611240575b5050505050613126565b905090565b61126b61200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee90614125565b60405180910390fd5b805182511461133b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113329061433c565b60405180910390fd5b5f61134583613126565b905060095481111561138c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113839061427b565b60405180910390fd5b82600390805190602001906113a2929190613857565b5081600690805190602001906113b99291906138a2565b50505050565b6113c761200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90614125565b60405180910390fd5b60105481600f546114649190614299565b11156114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c906143a4565b60405180910390fd5b6114af33826131f8565b50565b5f611541338484600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461153c9190614170565b611e4b565b6001905092915050565b5f611557338484612015565b6001905092915050565b5f6115b960048054806020026020016040519081016040528092919081815260200182805480156115af57602002820191905f5260205f20905b81548152602001906001019080831161159b575b5050505050613126565b905090565b601480546115cb906140ab565b80601f01602080910402602001604051908101604052809291908181526020018280546115f7906140ab565b80156116425780601f1061161957610100808354040283529160200191611642565b820191905f5260205f20905b81548152906001019060200180831161162557829003601f168201915b505050505081565b600c5f9054906101000a900460ff1681565b61166461200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790614125565b60405180910390fd5b8051825114611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172b90614432565b60405180910390fd5b5f61173e83613126565b9050600a54811115611785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c9061427b565b60405180910390fd5b826004908051906020019061179b929190613857565b5081600790805190602001906117b29291906138a2565b50505050565b6117c061200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461184c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184390614125565b60405180910390fd5b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6118ab61200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90614125565b60405180910390fd5b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6015805461199b906140ab565b80601f01602080910402602001604051908101604052809291908181526020018280546119c7906140ab565b8015611a125780601f106119e957610100808354040283529160200191611a12565b820191905f5260205f20905b8154815290600101906020018083116119f557829003601f168201915b505050505081565b611a2261200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa590614125565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611af1573d5f803e3d5ffd5b5050565b5f600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611b7f61200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0290614125565b60405180910390fd5b6001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611c6a61200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90614125565b60405180910390fd5b611cff81613275565b50565b611d0a61200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8d90614125565b60405180910390fd5b600160025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f611e466003805480602002602001604051908101604052809291908181526020018280548015611e3c57602002820191905f5260205f20905b815481526020019060010190808311611e28575b5050505050613126565b905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb09061449a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1e90614502565b60405180910390fd5b80600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120019190613b37565b60405180910390a3505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207a9061456a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e8906145d2565b60405180910390fd5b600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054811115612171576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121689061463a565b60405180910390fd5b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061220c575060025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156123055780600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461225a9190614299565b600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122f89190613b37565b60405180910390a3613121565b5f8190505f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561236757505f61236461339e565b51115b80156123a657506123766110fd565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156126ea575f5b6123b561339e565b5181101561256b576123c561339e565b81815181106123d7576123d6614658565b5b60200260200101516064856123ec91906146b2565b6123f691906146e2565b915081836124049190614170565b925081600d5f6124126133f4565b848151811061242457612423614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124709190614299565b600d5f61247b6133f4565b848151811061248d5761248c614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506124da6133f4565b81815181106124ec576124eb614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125509190613b37565b60405180910390a3808061256390614723565b9150506123ad565b5082600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125b59190614170565b600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461263f9190614299565b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126dd9190613b37565b60405180910390a361311e565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561274757505f61274461347f565b51115b801561278657506127566110fd565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612b1e575f1515600c5f9054906101000a900460ff161515146127df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d6906147b4565b60405180910390fd5b5f5b6127e961347f565b5181101561299f576127f961347f565b818151811061280b5761280a614658565b5b602002602001015160648561282091906146b2565b61282a91906146e2565b915081836128389190614170565b925081600d5f6128466134d5565b848151811061285857612857614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128a49190614299565b600d5f6128af6134d5565b84815181106128c1576128c0614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061290e6134d5565b81815181106129205761291f614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129849190613b37565b60405180910390a3808061299790614723565b9150506127e1565b5082600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129e99190614170565b600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a739190614299565b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b119190613b37565b60405180910390a361311d565b5f612b27613560565b51118015612b685750612b386110fd565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612eac575f5b612b77613560565b51811015612d2d57612b87613560565b8181518110612b9957612b98614658565b5b6020026020010151606485612bae91906146b2565b612bb891906146e2565b91508183612bc69190614170565b925081600d5f612bd46135b6565b8481518110612be657612be5614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c329190614299565b600d5f612c3d6135b6565b8481518110612c4f57612c4e614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c9c6135b6565b8181518110612cae57612cad614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d129190613b37565b60405180910390a38080612d2590614723565b915050612b6f565b5082600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d779190614170565b600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e019190614299565b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e9f9190613b37565b60405180910390a361311c565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f0957505f612f0661347f565b51145b8015612f485750612f186110fd565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612fa2575f1515600c5f9054906101000a900460ff16151514612fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f98906147b4565b60405180910390fd5b5b82600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612feb9190614170565b600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546130759190614299565b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131139190613b37565b60405180910390a35b5b5b50505b505050565b5f805f90505f5b83518110156131715783818151811061314957613148614658565b5b60200260200101518261315c9190614299565b9150808061316990614723565b91505061312d565b5080915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e09061481c565b60405180910390fd5b6131f4825f83613641565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325d9061481c565b60405180910390fd5b6132715f8383613641565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036132e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132da906148aa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060038054806020026020016040519081016040528092919081815260200182805480156133ea57602002820191905f5260205f20905b8154815260200190600101908083116133d6575b5050505050905090565b6060600680548060200260200160405190810160405280929190818152602001828054801561347557602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161342c575b5050505050905090565b606060048054806020026020016040519081016040528092919081815260200182805480156134cb57602002820191905f5260205f20905b8154815260200190600101908083116134b7575b5050505050905090565b6060600780548060200260200160405190810160405280929190818152602001828054801561355657602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161350d575b5050505050905090565b606060058054806020026020016040519081016040528092919081815260200182805480156135ac57602002820191905f5260205f20905b815481526020019060010190808311613598575b5050505050905090565b6060600880548060200260200160405190810160405280929190818152602001828054801561363757602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116135ee575b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136915780600f5f8282546136859190614299565b9250508190555061375b565b5f600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370c90614912565b60405180910390fd5b818103600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137a25780600f5f82825403925050819055506137ed565b80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161384a9190613b37565b60405180910390a3505050565b828054828255905f5260205f20908101928215613891579160200282015b82811115613890578251825591602001919060010190613875565b5b50905061389e9190613929565b5090565b828054828255905f5260205f20908101928215613918579160200282015b82811115613917578251825f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906138c0565b5b5090506139259190613929565b5090565b5b80821115613940575f815f90555060010161392a565b5090565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561397b578082015181840152602081019050613960565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6139a082613944565b6139aa818561394e565b93506139ba81856020860161395e565b6139c381613986565b840191505092915050565b5f6020820190508181035f8301526139e68184613996565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613a28826139ff565b9050919050565b613a3881613a1e565b8114613a42575f80fd5b50565b5f81359050613a5381613a2f565b92915050565b5f819050919050565b613a6b81613a59565b8114613a75575f80fd5b50565b5f81359050613a8681613a62565b92915050565b5f8060408385031215613aa257613aa16139f7565b5b5f613aaf85828601613a45565b9250506020613ac085828601613a78565b9150509250929050565b5f8115159050919050565b613ade81613aca565b82525050565b5f602082019050613af75f830184613ad5565b92915050565b5f60208284031215613b1257613b116139f7565b5b5f613b1f84828501613a45565b91505092915050565b613b3181613a59565b82525050565b5f602082019050613b4a5f830184613b28565b92915050565b5f805f60608486031215613b6757613b666139f7565b5b5f613b7486828701613a45565b9350506020613b8586828701613a45565b9250506040613b9686828701613a78565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613bda82613986565b810181811067ffffffffffffffff82111715613bf957613bf8613ba4565b5b80604052505050565b5f613c0b6139ee565b9050613c178282613bd1565b919050565b5f67ffffffffffffffff821115613c3657613c35613ba4565b5b602082029050602081019050919050565b5f80fd5b5f613c5d613c5884613c1c565b613c02565b90508083825260208201905060208402830185811115613c8057613c7f613c47565b5b835b81811015613ca95780613c958882613a78565b845260208401935050602081019050613c82565b5050509392505050565b5f82601f830112613cc757613cc6613ba0565b5b8135613cd7848260208601613c4b565b91505092915050565b5f67ffffffffffffffff821115613cfa57613cf9613ba4565b5b602082029050602081019050919050565b5f613d1d613d1884613ce0565b613c02565b90508083825260208201905060208402830185811115613d4057613d3f613c47565b5b835b81811015613d695780613d558882613a45565b845260208401935050602081019050613d42565b5050509392505050565b5f82601f830112613d8757613d86613ba0565b5b8135613d97848260208601613d0b565b91505092915050565b5f8060408385031215613db657613db56139f7565b5b5f83013567ffffffffffffffff811115613dd357613dd26139fb565b5b613ddf85828601613cb3565b925050602083013567ffffffffffffffff811115613e0057613dff6139fb565b5b613e0c85828601613d73565b9150509250929050565b5f60ff82169050919050565b613e2b81613e16565b82525050565b5f602082019050613e445f830184613e22565b92915050565b5f60208284031215613e5f57613e5e6139f7565b5b5f613e6c84828501613a78565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ea781613a59565b82525050565b5f613eb88383613e9e565b60208301905092915050565b5f602082019050919050565b5f613eda82613e75565b613ee48185613e7f565b9350613eef83613e8f565b805f5b83811015613f1f578151613f068882613ead565b9750613f1183613ec4565b925050600181019050613ef2565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613f5e81613a1e565b82525050565b5f613f6f8383613f55565b60208301905092915050565b5f602082019050919050565b5f613f9182613f2c565b613f9b8185613f36565b9350613fa683613f46565b805f5b83811015613fd6578151613fbd8882613f64565b9750613fc883613f7b565b925050600181019050613fa9565b5085935050505092915050565b5f6040820190508181035f830152613ffb8185613ed0565b9050818103602083015261400f8184613f87565b90509392505050565b61402181613a1e565b82525050565b5f60208201905061403a5f830184614018565b92915050565b5f8060408385031215614056576140556139f7565b5b5f61406385828601613a45565b925050602061407485828601613a45565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806140c257607f821691505b6020821081036140d5576140d461407e565b5b50919050565b7f6f6e6c794f776e657200000000000000000000000000000000000000000000005f82015250565b5f61410f60098361394e565b915061411a826140db565b602082019050919050565b5f6020820190508181035f83015261413c81614103565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61417a82613a59565b915061418583613a59565b925082820390508181111561419d5761419c614143565b5b92915050565b7f5f70657263656e74735461785472616e736665722e6c656e67746820213d205f5f8201527f6164647265737365735461785472616e736665722e6c656e6774680000000000602082015250565b5f6141fd603b8361394e565b9150614208826141a3565b604082019050919050565b5f6020820190508181035f83015261422a816141f1565b9050919050565b7f54617853756d203e2030000000000000000000000000000000000000000000005f82015250565b5f614265600a8361394e565b915061427082614231565b602082019050919050565b5f6020820190508181035f83015261429281614259565b9050919050565b5f6142a382613a59565b91506142ae83613a59565b92508282019050808211156142c6576142c5614143565b5b92915050565b7f5f70657263656e74735461784275792e6c656e67746820213d205f61646472655f8201527f737365735461784275792e6c656e677468000000000000000000000000000000602082015250565b5f61432660318361394e565b9150614331826142cc565b604082019050919050565b5f6020820190508181035f8301526143538161431a565b9050919050565b7f4572726f723a206d6178696d756d20737570706c7900000000000000000000005f82015250565b5f61438e60158361394e565b91506143998261435a565b602082019050919050565b5f6020820190508181035f8301526143bb81614382565b9050919050565b7f5f70657263656e747354617853656c6c2e6c656e67746820213d205f616464725f8201527f657373657354617853656c6c2e6c656e67746800000000000000000000000000602082015250565b5f61441c60338361394e565b9150614427826143c2565b604082019050919050565b5f6020820190508181035f83015261444981614410565b9050919050565b7f417070726f76652066726f6d20746865207a65726f20616464726573730000005f82015250565b5f614484601d8361394e565b915061448f82614450565b602082019050919050565b5f6020820190508181035f8301526144b181614478565b9050919050565b7f417070726f766520746f20746865207a65726f206164647265737300000000005f82015250565b5f6144ec601b8361394e565b91506144f7826144b8565b602082019050919050565b5f6020820190508181035f830152614519816144e0565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f206164647265737300005f82015250565b5f614554601e8361394e565b915061455f82614520565b602082019050919050565b5f6020820190508181035f83015261458181614548565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f6145bc601c8361394e565b91506145c782614588565b602082019050919050565b5f6020820190508181035f8301526145e9816145b0565b9050919050565b7f5472616e7366657220616d6f756e7420657863656564732062616c616e6365005f82015250565b5f614624601f8361394e565b915061462f826145f0565b602082019050919050565b5f6020820190508181035f83015261465181614618565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6146bc82613a59565b91506146c783613a59565b9250826146d7576146d6614685565b5b828204905092915050565b5f6146ec82613a59565b91506146f783613a59565b925082820261470581613a59565b9150828204841483151761471c5761471b614143565b5b5092915050565b5f61472d82613a59565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361475f5761475e614143565b5b600182019050919050565b7f50617573650000000000000000000000000000000000000000000000000000005f82015250565b5f61479e60058361394e565b91506147a98261476a565b602082019050919050565b5f6020820190508181035f8301526147cb81614792565b9050919050565b7f4e756c6c206163636f756e7400000000000000000000000000000000000000005f82015250565b5f614806600c8361394e565b9150614811826147d2565b602082019050919050565b5f6020820190508181035f830152614833816147fa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61489460268361394e565b915061489f8261483a565b604082019050919050565b5f6020820190508181035f8301526148c181614888565b9050919050565b7f66726f6d42616c616e6365203c2076616c7565000000000000000000000000005f82015250565b5f6148fc60138361394e565b9150614907826148c8565b602082019050919050565b5f6020820190508181035f830152614929816148f0565b905091905056fea2646970667358221220594f65d8c0aa76dee7643e68aa5489c39b28d704c3e9b20993ca1f9f7e8d453a64736f6c63430008140033

Deployed Bytecode

0x608060405234801561000f575f80fd5b506004361061023b575f3560e01c806394bd94f411610139578063baaacb9b116100b6578063dd62ed3e1161007a578063dd62ed3e14610694578063e508c50d146106c4578063f2fde38b146106e0578063fc3b96c5146106fc578063ff90e1e2146107185761023b565b8063baaacb9b14610606578063c34409dc14610622578063c9e168751461063e578063d28d88521461065a578063d6770897146106785761023b565b8063a457c2d7116100fd578063a457c2d71461054c578063a9059cbb1461057c578063b00751c3146105ac578063b09f1266146105ca578063b187bd26146105e85761023b565b806394bd94f4146104a857806395d89b41146104d857806397c854f9146104f6578063984b8c9914610514578063a0712d68146105305761023b565b806339509351116101c75780636bbf99fb1161018b5780636bbf99fb1461041357806370a0823114610432578063715018a614610462578063893d20e81461046c5780638da5cb5b1461048a5761023b565b8063395093511461037f57806342966c68146103af578063464bc81d146103cb5780635c975abb146103ea5780635f5ee0ac146103f45761023b565b806318160ddd1161020e57806318160ddd146102d957806323b872dd146102f75780632edb8b7714610327578063313ce5671461034357806332424aa3146103615761023b565b806306fdde031461023f578063095ea7b31461025d5780630a6cea9a1461028d5780631647f40d146102bd575b5f80fd5b610247610736565b60405161025491906139ce565b60405180910390f35b61027760048036038101906102729190613a8c565b6107c6565b6040516102849190613ae4565b60405180910390f35b6102a760048036038101906102a29190613afd565b6107dc565b6040516102b49190613ae4565b60405180910390f35b6102d760048036038101906102d29190613afd565b61082e565b005b6102e161091a565b6040516102ee9190613b37565b60405180910390f35b610311600480360381019061030c9190613b50565b610923565b60405161031e9190613ae4565b60405180910390f35b610341600480360381019061033c9190613da0565b6109c8565b005b61034b610b24565b6040516103589190613e31565b60405180910390f35b610369610b39565b6040516103769190613e31565b60405180910390f35b61039960048036038101906103949190613a8c565b610b4b565b6040516103a69190613ae4565b60405180910390f35b6103c960048036038101906103c49190613e4a565b610be4565b005b6103d3610bf1565b6040516103e1929190613fe3565b60405180910390f35b6103f2610cd5565b005b6103fc610d93565b60405161040a929190613fe3565b60405180910390f35b61041b610e77565b604051610429929190613fe3565b60405180910390f35b61044c60048036038101906104479190613afd565b610f5b565b6040516104599190613b37565b60405180910390f35b61046a610fa1565b005b6104746110ef565b6040516104819190614027565b60405180910390f35b6104926110fd565b60405161049f9190614027565b60405180910390f35b6104c260048036038101906104bd9190613afd565b611124565b6040516104cf9190613ae4565b60405180910390f35b6104e0611176565b6040516104ed91906139ce565b60405180910390f35b6104fe611206565b60405161050b9190613b37565b60405180910390f35b61052e60048036038101906105299190613da0565b611263565b005b61054a60048036038101906105459190613e4a565b6113bf565b005b61056660048036038101906105619190613a8c565b6114b2565b6040516105739190613ae4565b60405180910390f35b61059660048036038101906105919190613a8c565b61154b565b6040516105a39190613ae4565b60405180910390f35b6105b4611561565b6040516105c19190613b37565b60405180910390f35b6105d26115be565b6040516105df91906139ce565b60405180910390f35b6105f061164a565b6040516105fd9190613ae4565b60405180910390f35b610620600480360381019061061b9190613da0565b61165c565b005b61063c60048036038101906106379190613afd565b6117b8565b005b61065860048036038101906106539190613afd565b6118a3565b005b61066261198e565b60405161066f91906139ce565b60405180910390f35b610692600480360381019061068d9190613e4a565b611a1a565b005b6106ae60048036038101906106a99190614040565b611af5565b6040516106bb9190613b37565b60405180910390f35b6106de60048036038101906106d99190613afd565b611b77565b005b6106fa60048036038101906106f59190613afd565b611c62565b005b61071660048036038101906107119190613afd565b611d02565b005b610720611dee565b60405161072d9190613b37565b60405180910390f35b606060158054610745906140ab565b80601f0160208091040260200160405190810160405280929190818152602001828054610771906140ab565b80156107bc5780601f10610793576101008083540402835291602001916107bc565b820191905f5260205f20905b81548152906001019060200180831161079f57829003601f168201915b5050505050905090565b5f6107d2338484611e4b565b6001905092915050565b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b61083661200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146108c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108b990614125565b60405180910390fd5b600160165f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f600f54905090565b5f61092f848484612015565b6109bd843384600e5f8973ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546109b89190614170565b611e4b565b600190509392505050565b6109d061200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610a5c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a5390614125565b60405180910390fd5b8051825114610aa0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a9790614213565b60405180910390fd5b5f610aaa83613126565b9050600b54811115610af1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae89061427b565b60405180910390fd5b8260059080519060200190610b07929190613857565b508160089080519060200190610b1e9291906138a2565b50505050565b5f60135f9054906101000a900460ff16905090565b60135f9054906101000a900460ff1681565b5f610bda338484600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054610bd59190614299565b611e4b565b6001905092915050565b610bee338261317b565b50565b6060806003600681805480602002602001604051908101604052809291908181526020018280548015610c4157602002820191905f5260205f20905b815481526020019060010190808311610c2d575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015610cc657602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610c7d575b50505050509050915091509091565b610cdd61200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610d69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6090614125565b60405180910390fd5b600c5f9054906101000a900460ff1615600c5f6101000a81548160ff021916908315150217905550565b6060806005600881805480602002602001604051908101604052809291908181526020018280548015610de357602002820191905f5260205f20905b815481526020019060010190808311610dcf575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015610e6857602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610e1f575b50505050509050915091509091565b6060806004600781805480602002602001604051908101604052809291908181526020018280548015610ec757602002820191905f5260205f20905b815481526020019060010190808311610eb3575b5050505050915080805480602002602001604051908101604052809291908181526020018280548015610f4c57602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019060010190808311610f03575b50505050509050915091509091565b5f600d5f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b610fa961200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611035576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102c90614125565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f6110f86110fd565b905090565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff169050919050565b606060148054611185906140ab565b80601f01602080910402602001604051908101604052809291908181526020018280546111b1906140ab565b80156111fc5780601f106111d3576101008083540402835291602001916111fc565b820191905f5260205f20905b8154815290600101906020018083116111df57829003601f168201915b5050505050905090565b5f61125e600580548060200260200160405190810160405280929190818152602001828054801561125457602002820191905f5260205f20905b815481526020019060010190808311611240575b5050505050613126565b905090565b61126b61200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146112f7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ee90614125565b60405180910390fd5b805182511461133b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113329061433c565b60405180910390fd5b5f61134583613126565b905060095481111561138c576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113839061427b565b60405180910390fd5b82600390805190602001906113a2929190613857565b5081600690805190602001906113b99291906138a2565b50505050565b6113c761200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611453576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161144a90614125565b60405180910390fd5b60105481600f546114649190614299565b11156114a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161149c906143a4565b60405180910390fd5b6114af33826131f8565b50565b5f611541338484600e5f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461153c9190614170565b611e4b565b6001905092915050565b5f611557338484612015565b6001905092915050565b5f6115b960048054806020026020016040519081016040528092919081815260200182805480156115af57602002820191905f5260205f20905b81548152602001906001019080831161159b575b5050505050613126565b905090565b601480546115cb906140ab565b80601f01602080910402602001604051908101604052809291908181526020018280546115f7906140ab565b80156116425780601f1061161957610100808354040283529160200191611642565b820191905f5260205f20905b81548152906001019060200180831161162557829003601f168201915b505050505081565b600c5f9054906101000a900460ff1681565b61166461200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146116f0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116e790614125565b60405180910390fd5b8051825114611734576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161172b90614432565b60405180910390fd5b5f61173e83613126565b9050600a54811115611785576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161177c9061427b565b60405180910390fd5b826004908051906020019061179b929190613857565b5081600790805190602001906117b29291906138a2565b50505050565b6117c061200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461184c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161184390614125565b60405180910390fd5b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6118ab61200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611937576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161192e90614125565b60405180910390fd5b5f60025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b6015805461199b906140ab565b80601f01602080910402602001604051908101604052809291908181526020018280546119c7906140ab565b8015611a125780601f106119e957610100808354040283529160200191611a12565b820191905f5260205f20905b8154815290600101906020018083116119f557829003601f168201915b505050505081565b611a2261200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611aae576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa590614125565b60405180910390fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc8290811502906040515f60405180830381858888f19350505050158015611af1573d5f803e3d5ffd5b5050565b5f600e5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b611b7f61200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611c0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0290614125565b60405180910390fd5b6001805f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b611c6a61200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611cf6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ced90614125565b60405180910390fd5b611cff81613275565b50565b611d0a61200e565b73ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614611d96576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d8d90614125565b60405180910390fd5b600160025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555050565b5f611e466003805480602002602001604051908101604052809291908181526020018280548015611e3c57602002820191905f5260205f20905b815481526020019060010190808311611e28575b5050505050613126565b905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611eb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611eb09061449a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611f27576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f1e90614502565b60405180910390fd5b80600e5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925836040516120019190613b37565b60405180910390a3505050565b5f33905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603612083576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161207a9061456a565b60405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036120f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e8906145d2565b60405180910390fd5b600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054811115612171576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121689061463a565b60405180910390fd5b60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168061220c575060025f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b156123055780600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461225a9190614299565b600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836040516122f89190613b37565b60405180910390a3613121565b5f8190505f60015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561236757505f61236461339e565b51115b80156123a657506123766110fd565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b156126ea575f5b6123b561339e565b5181101561256b576123c561339e565b81815181106123d7576123d6614658565b5b60200260200101516064856123ec91906146b2565b6123f691906146e2565b915081836124049190614170565b925081600d5f6124126133f4565b848151811061242457612423614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546124709190614299565b600d5f61247b6133f4565b848151811061248d5761248c614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055506124da6133f4565b81815181106124ec576124eb614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516125509190613b37565b60405180910390a3808061256390614723565b9150506123ad565b5082600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546125b59190614170565b600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205461263f9190614299565b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126dd9190613b37565b60405180910390a361311e565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16801561274757505f61274461347f565b51115b801561278657506127566110fd565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612b1e575f1515600c5f9054906101000a900460ff161515146127df576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127d6906147b4565b60405180910390fd5b5f5b6127e961347f565b5181101561299f576127f961347f565b818151811061280b5761280a614658565b5b602002602001015160648561282091906146b2565b61282a91906146e2565b915081836128389190614170565b925081600d5f6128466134d5565b848151811061285857612857614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546128a49190614299565b600d5f6128af6134d5565b84815181106128c1576128c0614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555061290e6134d5565b81815181106129205761291f614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516129849190613b37565b60405180910390a3808061299790614723565b9150506127e1565b5082600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546129e99190614170565b600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612a739190614299565b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612b119190613b37565b60405180910390a361311d565b5f612b27613560565b51118015612b685750612b386110fd565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612eac575f5b612b77613560565b51811015612d2d57612b87613560565b8181518110612b9957612b98614658565b5b6020026020010151606485612bae91906146b2565b612bb891906146e2565b91508183612bc69190614170565b925081600d5f612bd46135b6565b8481518110612be657612be5614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612c329190614299565b600d5f612c3d6135b6565b8481518110612c4f57612c4e614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550612c9c6135b6565b8181518110612cae57612cad614658565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612d129190613b37565b60405180910390a38080612d2590614723565b915050612b6f565b5082600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612d779190614170565b600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612e019190614299565b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612e9f9190613b37565b60405180910390a361311c565b60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff168015612f0957505f612f0661347f565b51145b8015612f485750612f186110fd565b73ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b15612fa2575f1515600c5f9054906101000a900460ff16151514612fa1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f98906147b4565b60405180910390fd5b5b82600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054612feb9190614170565b600d5f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555081600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546130759190614299565b600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516131139190613b37565b60405180910390a35b5b5b50505b505050565b5f805f90505f5b83518110156131715783818151811061314957613148614658565b5b60200260200101518261315c9190614299565b9150808061316990614723565b91505061312d565b5080915050919050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036131e9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016131e09061481c565b60405180910390fd5b6131f4825f83613641565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603613266576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161325d9061481c565b60405180910390fd5b6132715f8383613641565b5050565b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036132e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016132da906148aa565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b606060038054806020026020016040519081016040528092919081815260200182805480156133ea57602002820191905f5260205f20905b8154815260200190600101908083116133d6575b5050505050905090565b6060600680548060200260200160405190810160405280929190818152602001828054801561347557602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161342c575b5050505050905090565b606060048054806020026020016040519081016040528092919081815260200182805480156134cb57602002820191905f5260205f20905b8154815260200190600101908083116134b7575b5050505050905090565b6060600780548060200260200160405190810160405280929190818152602001828054801561355657602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001906001019080831161350d575b5050505050905090565b606060058054806020026020016040519081016040528092919081815260200182805480156135ac57602002820191905f5260205f20905b815481526020019060010190808311613598575b5050505050905090565b6060600880548060200260200160405190810160405280929190818152602001828054801561363757602002820191905f5260205f20905b815f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190600101908083116135ee575b5050505050905090565b5f73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036136915780600f5f8282546136859190614299565b9250508190555061375b565b5f600d5f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905081811015613715576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161370c90614912565b60405180910390fd5b818103600d5f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2081905550505b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16036137a25780600f5f82825403925050819055506137ed565b80600d5f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055505b8173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161384a9190613b37565b60405180910390a3505050565b828054828255905f5260205f20908101928215613891579160200282015b82811115613890578251825591602001919060010190613875565b5b50905061389e9190613929565b5090565b828054828255905f5260205f20908101928215613918579160200282015b82811115613917578251825f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550916020019190600101906138c0565b5b5090506139259190613929565b5090565b5b80821115613940575f815f90555060010161392a565b5090565b5f81519050919050565b5f82825260208201905092915050565b5f5b8381101561397b578082015181840152602081019050613960565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6139a082613944565b6139aa818561394e565b93506139ba81856020860161395e565b6139c381613986565b840191505092915050565b5f6020820190508181035f8301526139e68184613996565b905092915050565b5f604051905090565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f613a28826139ff565b9050919050565b613a3881613a1e565b8114613a42575f80fd5b50565b5f81359050613a5381613a2f565b92915050565b5f819050919050565b613a6b81613a59565b8114613a75575f80fd5b50565b5f81359050613a8681613a62565b92915050565b5f8060408385031215613aa257613aa16139f7565b5b5f613aaf85828601613a45565b9250506020613ac085828601613a78565b9150509250929050565b5f8115159050919050565b613ade81613aca565b82525050565b5f602082019050613af75f830184613ad5565b92915050565b5f60208284031215613b1257613b116139f7565b5b5f613b1f84828501613a45565b91505092915050565b613b3181613a59565b82525050565b5f602082019050613b4a5f830184613b28565b92915050565b5f805f60608486031215613b6757613b666139f7565b5b5f613b7486828701613a45565b9350506020613b8586828701613a45565b9250506040613b9686828701613a78565b9150509250925092565b5f80fd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b613bda82613986565b810181811067ffffffffffffffff82111715613bf957613bf8613ba4565b5b80604052505050565b5f613c0b6139ee565b9050613c178282613bd1565b919050565b5f67ffffffffffffffff821115613c3657613c35613ba4565b5b602082029050602081019050919050565b5f80fd5b5f613c5d613c5884613c1c565b613c02565b90508083825260208201905060208402830185811115613c8057613c7f613c47565b5b835b81811015613ca95780613c958882613a78565b845260208401935050602081019050613c82565b5050509392505050565b5f82601f830112613cc757613cc6613ba0565b5b8135613cd7848260208601613c4b565b91505092915050565b5f67ffffffffffffffff821115613cfa57613cf9613ba4565b5b602082029050602081019050919050565b5f613d1d613d1884613ce0565b613c02565b90508083825260208201905060208402830185811115613d4057613d3f613c47565b5b835b81811015613d695780613d558882613a45565b845260208401935050602081019050613d42565b5050509392505050565b5f82601f830112613d8757613d86613ba0565b5b8135613d97848260208601613d0b565b91505092915050565b5f8060408385031215613db657613db56139f7565b5b5f83013567ffffffffffffffff811115613dd357613dd26139fb565b5b613ddf85828601613cb3565b925050602083013567ffffffffffffffff811115613e0057613dff6139fb565b5b613e0c85828601613d73565b9150509250929050565b5f60ff82169050919050565b613e2b81613e16565b82525050565b5f602082019050613e445f830184613e22565b92915050565b5f60208284031215613e5f57613e5e6139f7565b5b5f613e6c84828501613a78565b91505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613ea781613a59565b82525050565b5f613eb88383613e9e565b60208301905092915050565b5f602082019050919050565b5f613eda82613e75565b613ee48185613e7f565b9350613eef83613e8f565b805f5b83811015613f1f578151613f068882613ead565b9750613f1183613ec4565b925050600181019050613ef2565b5085935050505092915050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b613f5e81613a1e565b82525050565b5f613f6f8383613f55565b60208301905092915050565b5f602082019050919050565b5f613f9182613f2c565b613f9b8185613f36565b9350613fa683613f46565b805f5b83811015613fd6578151613fbd8882613f64565b9750613fc883613f7b565b925050600181019050613fa9565b5085935050505092915050565b5f6040820190508181035f830152613ffb8185613ed0565b9050818103602083015261400f8184613f87565b90509392505050565b61402181613a1e565b82525050565b5f60208201905061403a5f830184614018565b92915050565b5f8060408385031215614056576140556139f7565b5b5f61406385828601613a45565b925050602061407485828601613a45565b9150509250929050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806140c257607f821691505b6020821081036140d5576140d461407e565b5b50919050565b7f6f6e6c794f776e657200000000000000000000000000000000000000000000005f82015250565b5f61410f60098361394e565b915061411a826140db565b602082019050919050565b5f6020820190508181035f83015261413c81614103565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61417a82613a59565b915061418583613a59565b925082820390508181111561419d5761419c614143565b5b92915050565b7f5f70657263656e74735461785472616e736665722e6c656e67746820213d205f5f8201527f6164647265737365735461785472616e736665722e6c656e6774680000000000602082015250565b5f6141fd603b8361394e565b9150614208826141a3565b604082019050919050565b5f6020820190508181035f83015261422a816141f1565b9050919050565b7f54617853756d203e2030000000000000000000000000000000000000000000005f82015250565b5f614265600a8361394e565b915061427082614231565b602082019050919050565b5f6020820190508181035f83015261429281614259565b9050919050565b5f6142a382613a59565b91506142ae83613a59565b92508282019050808211156142c6576142c5614143565b5b92915050565b7f5f70657263656e74735461784275792e6c656e67746820213d205f61646472655f8201527f737365735461784275792e6c656e677468000000000000000000000000000000602082015250565b5f61432660318361394e565b9150614331826142cc565b604082019050919050565b5f6020820190508181035f8301526143538161431a565b9050919050565b7f4572726f723a206d6178696d756d20737570706c7900000000000000000000005f82015250565b5f61438e60158361394e565b91506143998261435a565b602082019050919050565b5f6020820190508181035f8301526143bb81614382565b9050919050565b7f5f70657263656e747354617853656c6c2e6c656e67746820213d205f616464725f8201527f657373657354617853656c6c2e6c656e67746800000000000000000000000000602082015250565b5f61441c60338361394e565b9150614427826143c2565b604082019050919050565b5f6020820190508181035f83015261444981614410565b9050919050565b7f417070726f76652066726f6d20746865207a65726f20616464726573730000005f82015250565b5f614484601d8361394e565b915061448f82614450565b602082019050919050565b5f6020820190508181035f8301526144b181614478565b9050919050565b7f417070726f766520746f20746865207a65726f206164647265737300000000005f82015250565b5f6144ec601b8361394e565b91506144f7826144b8565b602082019050919050565b5f6020820190508181035f830152614519816144e0565b9050919050565b7f5472616e736665722066726f6d20746865207a65726f206164647265737300005f82015250565b5f614554601e8361394e565b915061455f82614520565b602082019050919050565b5f6020820190508181035f83015261458181614548565b9050919050565b7f5472616e7366657220746f20746865207a65726f2061646472657373000000005f82015250565b5f6145bc601c8361394e565b91506145c782614588565b602082019050919050565b5f6020820190508181035f8301526145e9816145b0565b9050919050565b7f5472616e7366657220616d6f756e7420657863656564732062616c616e6365005f82015250565b5f614624601f8361394e565b915061462f826145f0565b602082019050919050565b5f6020820190508181035f83015261465181614618565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f6146bc82613a59565b91506146c783613a59565b9250826146d7576146d6614685565b5b828204905092915050565b5f6146ec82613a59565b91506146f783613a59565b925082820261470581613a59565b9150828204841483151761471c5761471b614143565b5b5092915050565b5f61472d82613a59565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff820361475f5761475e614143565b5b600182019050919050565b7f50617573650000000000000000000000000000000000000000000000000000005f82015250565b5f61479e60058361394e565b91506147a98261476a565b602082019050919050565b5f6020820190508181035f8301526147cb81614792565b9050919050565b7f4e756c6c206163636f756e7400000000000000000000000000000000000000005f82015250565b5f614806600c8361394e565b9150614811826147d2565b602082019050919050565b5f6020820190508181035f830152614833816147fa565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f20615f8201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b5f61489460268361394e565b915061489f8261483a565b604082019050919050565b5f6020820190508181035f8301526148c181614888565b9050919050565b7f66726f6d42616c616e6365203c2076616c7565000000000000000000000000005f82015250565b5f6148fc60138361394e565b9150614907826148c8565b602082019050919050565b5f6020820190508181035f830152614929816148f0565b905091905056fea2646970667358221220594f65d8c0aa76dee7643e68aa5489c39b28d704c3e9b20993ca1f9f7e8d453a64736f6c63430008140033

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  ]

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.