ETH Price: $1,942.75 (-1.58%)
 

Overview

ETH Balance

0.195693898316220922 ETH

Eth Value

$380.18 (@ $1,942.75/ETH)

Token Holdings

More Info

Private Name Tags

TokenTracker

BuildAI (Build) ($0.0003)

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve245005552026-02-20 20:48:2347 hrs ago1771620503IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000003310.0702493
Approve244897862026-02-19 8:46:113 days ago1771490771IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000050391.06643157
Approve244446072026-02-13 1:33:599 days ago1770946439IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000004010.14806894
Approve244446042026-02-13 1:33:239 days ago1770946403IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000007050.15003883
Approve244298972026-02-11 0:17:5911 days ago1770769079IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000096472.04417415
Approve244055982026-02-07 14:39:3515 days ago1770475175IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.00010212.16066236
Approve243716932026-02-02 20:54:5919 days ago1770065699IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000014520.30730651
Approve243585512026-02-01 0:52:1121 days ago1769907131IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000008150.17292857
Approve243355472026-01-28 19:51:2325 days ago1769629883IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000064891.37502409
Approve243355232026-01-28 19:46:3525 days ago1769629595IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000006230.2300188
Approve243355102026-01-28 19:43:5925 days ago1769629439IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000011150.23741868
Approve243126162026-01-25 15:06:4728 days ago1769353607IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000025540.54058476
Approve242983852026-01-23 15:29:2330 days ago1769182163IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000037810.80027356
Approve242900382026-01-22 11:30:5931 days ago1769081459IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000003420.07256617
Approve242868882026-01-22 0:56:2331 days ago1769043383IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000025170.53272789
Approve242868442026-01-22 0:47:3531 days ago1769042855IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.00002510.53119449
Approve242868442026-01-22 0:47:3531 days ago1769042855IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000025160.53256749
Approve242868392026-01-22 0:46:3531 days ago1769042795IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000025080.53086391
Approve242868142026-01-22 0:41:3531 days ago1769042495IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000095452.03084038
Approve242866372026-01-22 0:05:5931 days ago1769040359IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000049321.04520072
Approve242862172026-01-21 22:41:4731 days ago1769035307IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000050081.05980436
Approve242862012026-01-21 22:38:2331 days ago1769035103IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.00004971.05335714
Approve242861532026-01-21 22:28:4731 days ago1769034527IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000050031.0588787
Approve242861112026-01-21 22:20:2331 days ago1769034023IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.000017630.37357555
Approve242860932026-01-21 22:16:4731 days ago1769033807IN
0xEFF9CDb2...a4F9C5e6B
0 ETH0.00014443.05582456
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Method Block
From
To
Transfer245005552026-02-20 20:48:2347 hrs ago1771620503
0xEFF9CDb2...a4F9C5e6B
0.0005887 ETH
Transfer245005552026-02-20 20:48:2347 hrs ago1771620503
0xEFF9CDb2...a4F9C5e6B
0.0005887 ETH
Add Liquidity ET...245005552026-02-20 20:48:2347 hrs ago1771620503
0xEFF9CDb2...a4F9C5e6B
0.00014717 ETH
Transfer245005552026-02-20 20:48:2347 hrs ago1771620503
0xEFF9CDb2...a4F9C5e6B
0.00132457 ETH
Transfer244897882026-02-19 8:46:353 days ago1771490795
0xEFF9CDb2...a4F9C5e6B
0.000606 ETH
Transfer244897882026-02-19 8:46:353 days ago1771490795
0xEFF9CDb2...a4F9C5e6B
0.000606 ETH
Add Liquidity ET...244897882026-02-19 8:46:353 days ago1771490795
0xEFF9CDb2...a4F9C5e6B
0.0001515 ETH
Transfer244897882026-02-19 8:46:353 days ago1771490795
0xEFF9CDb2...a4F9C5e6B
0.00136351 ETH
Transfer244446082026-02-13 1:34:119 days ago1770946451
0xEFF9CDb2...a4F9C5e6B
0.00066156 ETH
Transfer244446082026-02-13 1:34:119 days ago1770946451
0xEFF9CDb2...a4F9C5e6B
0.00066156 ETH
Add Liquidity ET...244446082026-02-13 1:34:119 days ago1770946451
0xEFF9CDb2...a4F9C5e6B
0.00016539 ETH
Transfer244446082026-02-13 1:34:119 days ago1770946451
0xEFF9CDb2...a4F9C5e6B
0.00148853 ETH
Transfer244299022026-02-11 0:18:5911 days ago1770769139
0xEFF9CDb2...a4F9C5e6B
0.00057973 ETH
Transfer244299022026-02-11 0:18:5911 days ago1770769139
0xEFF9CDb2...a4F9C5e6B
0.00057973 ETH
Add Liquidity ET...244299022026-02-11 0:18:5911 days ago1770769139
0xEFF9CDb2...a4F9C5e6B
0.00014493 ETH
Transfer244299022026-02-11 0:18:5911 days ago1770769139
0xEFF9CDb2...a4F9C5e6B
0.0013044 ETH
Transfer244299002026-02-11 0:18:3511 days ago1770769115
0xEFF9CDb2...a4F9C5e6B
0.00059542 ETH
Transfer244299002026-02-11 0:18:3511 days ago1770769115
0xEFF9CDb2...a4F9C5e6B
0.00059542 ETH
Add Liquidity ET...244299002026-02-11 0:18:3511 days ago1770769115
0xEFF9CDb2...a4F9C5e6B
0.00014885 ETH
Transfer244299002026-02-11 0:18:3511 days ago1770769115
0xEFF9CDb2...a4F9C5e6B
0.00133969 ETH
Transfer244139832026-02-08 18:55:5914 days ago1770576959
0xEFF9CDb2...a4F9C5e6B
0.00060565 ETH
Transfer244139832026-02-08 18:55:5914 days ago1770576959
0xEFF9CDb2...a4F9C5e6B
0.00060565 ETH
Add Liquidity ET...244139832026-02-08 18:55:5914 days ago1770576959
0xEFF9CDb2...a4F9C5e6B
0.00015141 ETH
Transfer244139832026-02-08 18:55:5914 days ago1770576959
0xEFF9CDb2...a4F9C5e6B
0.00136271 ETH
Transfer244055992026-02-07 14:39:4715 days ago1770475187
0xEFF9CDb2...a4F9C5e6B
0.00064817 ETH
View All Internal Transactions
Loading...
Loading
Loading...
Loading
Cross-Chain Transactions

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BuildAI

Compiler Version
v0.8.27+commit.40a35a09

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion
File 1 of 1 : BuildAI.sol
//SPDX-License-Identifier: UNLICENSED
/*
Telegram: https://t.me/BUILDAIHUB
Website: https://buildaierc.com/
X: https://twitter.com/BuildAI_erc
Linktree: https://linktr.ee/BuildAI
*/
pragma solidity ^0.8.7;

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this;
        return msg.data;
    }
}

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

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

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

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

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

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

    event Transfer(address indexed from, address indexed to, uint256 value);

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

interface IERC20Metadata is IERC20 {
    function name() external view returns (string memory);

    function symbol() external view returns (string memory);

    function decimals() external view returns (uint8);
}

contract ERC20 is Context, IERC20, IERC20Metadata {
    mapping(address => uint256) internal _balances;

    mapping(address => mapping(address => uint256)) internal _allowances;

    uint256 private _totalSupply = 10000000 * 10 ** decimals();

    string private _name;
    string private _symbol;

    constructor(string memory name_, string memory symbol_) {
        _name = name_;
        _symbol = symbol_;
    }

    function name() public view virtual override returns (string memory) {
        return _name;
    }

    function symbol() public view virtual override returns (string memory) {
        return _symbol;
    }

    function decimals() public view virtual override returns (uint8) {
        return 18;
    }

    function totalSupply() public view virtual override returns (uint256) {
        return _totalSupply;
    }

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

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

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

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _approve(sender, _msgSender(), currentAllowance - amount);

        return true;
    }

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

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public virtual returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal virtual {
        require(sender != address(0), "ERC20: transfer from the zero address");
        require(recipient != address(0), "ERC20: transfer to the zero address");

        _beforeTokenTransfer(sender, recipient, amount);

        uint256 senderBalance = _balances[sender];
        require(
            senderBalance >= amount,
            "ERC20: transfer amount exceeds balance"
        );
        _balances[sender] = senderBalance - amount;
        _balances[recipient] += amount;

        emit Transfer(sender, recipient, amount);
    }

    function _mint(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: generation to the zero address");

        _beforeTokenTransfer(address(0), account, amount);

        _balances[account] = amount;
        emit Transfer(address(0), account, amount);
    }

    function _burn(address account, uint256 amount) internal virtual {
        require(account != address(0), "ERC20: burn from the zero address");

        _beforeTokenTransfer(account, address(0), amount);

        uint256 accountBalance = _balances[account];
        require(accountBalance >= amount, "ERC20: burn amount exceeds balance");
        _balances[account] = accountBalance - amount;
        _totalSupply -= amount;

        emit Transfer(account, address(0), amount);
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

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

    function _beforeTokenTransfer(
        address from,
        address to,
        uint256 amount
    ) internal virtual {}
}

library Address {
    function sendValue(address payable recipient, uint256 amount) internal {
        require(
            address(this).balance >= amount,
            "Address: insufficient balance"
        );

        (bool success, ) = recipient.call{value: amount}("");
        require(
            success,
            "Address: unable to send value, recipient may have reverted"
        );
    }
}

abstract contract Ownable is Context {
    address private _owner;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );

    constructor() {
        _setOwner(_msgSender());
    }

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

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

    function renounceOwnership() public virtual onlyOwner {
        _setOwner(address(0));
    }

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

    function _setOwner(address newOwner) private {
        address oldOwner = _owner;
        _owner = newOwner;
        emit OwnershipTransferred(oldOwner, newOwner);
    }
}

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

interface IRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

abstract contract ERC20Burnable is Context, ERC20, Ownable {
    /**
     * @dev Destroys `amount` tokens from the caller.
     *
     * See {ERC20-_burn}.
     */
    function burn(uint256 amount) public virtual onlyOwner {
        _burn(_msgSender(), amount * 10 ** decimals());
    }
}

contract BuildAI is ERC20, Ownable, ERC20Burnable {
    using Address for address payable;

    IRouter public router;
    address public pair;

    uint256 public initialAirdrop = 2249936 * 10 ** decimals();

    bool public tradingEnabled = false;

    uint256 public ThresholdAmount = 10000 * 10 ** 18;

    address public marketingWallet;
    address public devWallet;
    address public constant deadWallet =
        0x000000000000000000000000000000000000dEaD;

    struct Taxes {
        uint256 marketing;
        uint256 dev;
        uint256 liquidity;
    }

    Taxes public buyTaxes = Taxes(1000, 1000, 1000);
    Taxes public sellTaxes = Taxes(1000, 1000, 1000);

    mapping(address => bool) public exemptFee;

    constructor(
        address _marketingWallet,
        address _devWallet,
        string memory name,
        string memory symbol
    ) ERC20(name, symbol) {
        require(
            _marketingWallet != address(0),
            "Marketing wallet cannot be zero address"
        );
        require(_devWallet != address(0), "dev wallet cannot be zero address");

        _mint(
            address(0x6c233F2A4708E7a8Edd207E6C643E8C673d0a7f0),
            totalSupply() - (initialAirdrop)
        );

        _mint(address(this), initialAirdrop);

        IRouter _router = IRouter(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        pair = IFactory(_router.factory()).createPair(
            address(this),
            _router.WETH()
        );
        router = _router;

        marketingWallet = _marketingWallet;
        devWallet = _devWallet;

        exemptFee[address(this)] = true;
        exemptFee[owner()] = true;
        exemptFee[marketingWallet] = true;
        exemptFee[devWallet] = true;
        exemptFee[deadWallet] = true;
    }

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

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) public override returns (bool) {
        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(
            currentAllowance >= amount,
            "ERC20: transfer amount exceeds allowance"
        );
        _approve(sender, _msgSender(), currentAllowance - amount);

        _transfer(sender, recipient, amount);

        return true;
    }

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

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public override returns (bool) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(
            currentAllowance >= subtractedValue,
            "ERC20: decreased allowance below zero"
        );
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

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

    function _transfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal override {
        require(amount > 0, "Transfer amount must be greater than zero");

        if (!exemptFee[sender] && !exemptFee[recipient]) {
            require(tradingEnabled, "Trading not enabled");
        }

        uint256 feeswap;
        uint256 fee;
        Taxes memory currentTaxes;

        if (
            exemptFee[sender] ||
            exemptFee[recipient] ||
            (sender != pair && recipient != pair)
        ) {
            fee = 0;
        } else {
            if (recipient == pair) {
                feeswap =
                    sellTaxes.marketing +
                    sellTaxes.dev +
                    sellTaxes.liquidity;
                currentTaxes = sellTaxes;
            } else {
                feeswap =
                    buyTaxes.marketing +
                    buyTaxes.dev +
                    buyTaxes.liquidity;
                currentTaxes = buyTaxes;
            }
            fee = ((amount * feeswap) / 10000);
        }

        if (sender != pair) handle_fees(feeswap, currentTaxes);

        super._transfer(sender, recipient, amount - fee);

        if (feeswap > 0) {
            super._transfer(sender, address(this), fee);
        }
    }

    function handle_fees(uint256 feeswap, Taxes memory swapTaxes) private {
        if (feeswap == 0) {
            return;
        }

        uint256 contractBalance = balanceOf(address(this));
        if (contractBalance >= ThresholdAmount) {
            if (ThresholdAmount > 1) {
                contractBalance = ThresholdAmount;
            }

            uint256 denominator = feeswap * 2;
            uint256 tokensToAddLiquidityWith = (contractBalance *
                swapTaxes.liquidity) / denominator;
            uint256 AmountToSwap = contractBalance - tokensToAddLiquidityWith;

            uint256 initialBalance = address(this).balance;

            swapTokensForETH(AmountToSwap);

            uint256 deltaBalance = address(this).balance - initialBalance;
            uint256 unitBalance = deltaBalance /
                (denominator - swapTaxes.liquidity);
            uint256 bnbToAddLiquidityWith = (unitBalance * swapTaxes.liquidity);

            if (bnbToAddLiquidityWith > 0) {
                addLiquidity(tokensToAddLiquidityWith, bnbToAddLiquidityWith);
            }

            uint256 marketingAmt = (unitBalance * 2 * swapTaxes.marketing);
            if (marketingAmt > 0) {
                payable(marketingWallet).sendValue(marketingAmt);
            }

            uint256 devAmt = (unitBalance * 2 * swapTaxes.dev);
            if (devAmt > 0) {
                payable(devWallet).sendValue(devAmt);
            }
        }
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

        _approve(address(this), address(router), tokenAmount);

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function addLiquidity(uint256 tokenAmount, uint256 ethAmount) private {
        _approve(address(this), address(router), tokenAmount);

        router.addLiquidityETH{value: ethAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            deadWallet,
            block.timestamp
        );
    }

    function updateTreshhold(uint256 new_amount) external onlyOwner {
        ThresholdAmount = new_amount * 10 ** decimals();
    }

    function setBuyTaxes(
        uint256 _marketing,
        uint256 _dev,
        uint256 _liquidity
    ) external onlyOwner {
        uint256 totalTax = _marketing + _dev + _liquidity;
        require(totalTax <= 3000, "Must keep fees at 30% or less");
        if (totalTax > 5) {
            require(
                _marketing <= buyTaxes.marketing &&
                    _dev <= buyTaxes.dev &&
                    _liquidity <= buyTaxes.liquidity,
                "Only reductions allowed"
            );
        } else {
            require(totalTax <= 5, "Cannot exceed 5% after reduction to 5%");
        }
        buyTaxes = Taxes(_marketing, _dev, _liquidity);
    }

    function setSellTaxes(
        uint256 _marketing,
        uint256 _dev,
        uint256 _liquidity
    ) external onlyOwner {
        uint256 totalTax = _marketing + _dev + _liquidity;
        require(totalTax <= 3000, "Must keep fees at 30% or less");
        if (totalTax > 5) {
            require(
                _marketing <= sellTaxes.marketing &&
                    _dev <= sellTaxes.dev &&
                    _liquidity <= sellTaxes.liquidity,
                "Only reductions allowed"
            );
        } else {
            require(totalTax <= 5, "Cannot exceed 5% after reduction to 5%");
        }
        sellTaxes = Taxes(_marketing, _dev, _liquidity);
    }

    function sendInitialAirdrop(
        address[] memory recipients,
        uint256[] memory amounts
    ) external onlyOwner {
        require(recipients.length == amounts.length, "Array length mismatch");

        // Calculate the total amount to be distributed
        uint256 totalAmount = 0;
        for (uint256 i = 0; i < amounts.length; i++) {
            totalAmount += amounts[i];
        }

        // Ensure the total amount does not exceed the initial airdrop allocation
        require(
            totalAmount <= initialAirdrop,
            "Total amount exceeds initial airdrop allocation"
        );

        initialAirdrop = initialAirdrop - totalAmount;

        // Distribute tokens to each recipient
        for (uint256 i = 0; i < recipients.length; i++) {
            _transfer(address(this), recipients[i], amounts[i]);
        }
    }

    function enableTrading() external onlyOwner {
        require(!tradingEnabled, "Trading is already enabled");
        tradingEnabled = true;
    }

    function updateMarketingWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0), "Fee Address cannot be zero address");
        require(newWallet != address(this), "Fee Address cannot be CA");
        marketingWallet = newWallet;
    }

    function updatedevWallet(address newWallet) external onlyOwner {
        require(newWallet != address(0), "Fee Address cannot be zero address");
        require(newWallet != address(this), "Fee Address cannot be CA");
        devWallet = newWallet;
    }

    function updateExemptFee(address _address, bool state) external onlyOwner {
        exemptFee[_address] = state;
    }

    function bulkExemptFee(
        address[] memory accounts,
        bool state
    ) external onlyOwner {
        for (uint256 i = 0; i < accounts.length; i++) {
            exemptFee[accounts[i]] = state;
        }
    }

    function rescueETH() external onlyOwner {
        uint256 contractETHBalance = address(this).balance;
        payable(owner()).transfer(contractETHBalance);
    }

    function rescueERC20(address tokenAdd, uint256 amount) external onlyOwner {
        IERC20(tokenAdd).transfer(owner(), amount);
    }

    // fallbacks
    receive() external payable {}
}

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

Contract Security Audit

Contract ABI

API
[{"inputs":[{"internalType":"address","name":"_marketingWallet","type":"address"},{"internalType":"address","name":"_devWallet","type":"address"},{"internalType":"string","name":"name","type":"string"},{"internalType":"string","name":"symbol","type":"string"}],"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":"ThresholdAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"burn","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"buyTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"deadWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"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":"devWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"enableTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"exemptFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"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":"initialAirdrop","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"tokenAdd","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sellTaxes","outputs":[{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"dev","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"sendInitialAirdrop","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"setBuyTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_dev","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"setSellTaxes","outputs":[],"stateMutability":"nonpayable","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":[],"name":"tradingEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_address","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"updateExemptFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"new_amount","type":"uint256"}],"name":"updateTreshhold","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updatedevWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

608060405261001261073060201b60201c565b600a61001e9190610ae7565b6298968061002c9190610b32565b60025561003d61073060201b60201c565b600a6100499190610ae7565b622254d06100579190610b32565b6008556000600960006101000a81548160ff02191690831515021790555069021e19e0c9bab2400000600a5560405180606001604052806103e881526020016103e881526020016103e8815250600d600082015181600001556020820151816001015560408201518160020155505060405180606001604052806103e881526020016103e881526020016103e88152506010600082015181600001556020820151816001015560408201518160020155505034801561011557600080fd5b50604051615d9f380380615d9f83398181016040528101906101379190610d47565b818181600390816101489190610ffd565b5080600490816101589190610ffd565b50505061017761016c61073960201b60201c565b61074160201b60201c565b600073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036101e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016101dd90611152565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610255576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161024c906111e4565b60405180910390fd5b610293736c233f2a4708e7a8edd207e6c643e8c673d0a7f060085461027e61080760201b60201c565b6102889190611204565b61081160201b60201c565b6102a53060085461081160201b60201c565b6000737a250d5630b4cf539739df2c5dacb4c659f2488d90508073ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610309573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061032d9190611238565b73ffffffffffffffffffffffffffffffffffffffff1663c9c65396308373ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610394573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906103b89190611238565b6040518363ffffffff1660e01b81526004016103d5929190611274565b6020604051808303816000875af11580156103f4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906104189190611238565b600760006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600660006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555084600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555083600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001601360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016013600061058761093f60201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160136000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555060016013600061dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050505050611359565b60006012905090565b600033905090565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600254905090565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603610880576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108779061130f565b60405180910390fd5b6108926000838361096960201b60201c565b806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051610933919061133e565b60405180910390a35050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156109f4578086048111156109d0576109cf61096e565b5b60018516156109df5780820291505b80810290506109ed8561099d565b94506109b4565b94509492505050565b600082610a0d5760019050610ac9565b81610a1b5760009050610ac9565b8160018114610a315760028114610a3b57610a6a565b6001915050610ac9565b60ff841115610a4d57610a4c61096e565b5b8360020a915084821115610a6457610a6361096e565b5b50610ac9565b5060208310610133831016604e8410600b8410161715610a9f5782820a905083811115610a9a57610a9961096e565b5b610ac9565b610aac84848460016109aa565b92509050818404811115610ac357610ac261096e565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000610af282610ad0565b9150610afd83610ada565b9250610b2a7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff84846109fd565b905092915050565b6000610b3d82610ad0565b9150610b4883610ad0565b9250828202610b5681610ad0565b91508282048414831517610b6d57610b6c61096e565b5b5092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000610bb382610b88565b9050919050565b610bc381610ba8565b8114610bce57600080fd5b50565b600081519050610be081610bba565b92915050565b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b610c3982610bf0565b810181811067ffffffffffffffff82111715610c5857610c57610c01565b5b80604052505050565b6000610c6b610b74565b9050610c778282610c30565b919050565b600067ffffffffffffffff821115610c9757610c96610c01565b5b610ca082610bf0565b9050602081019050919050565b60005b83811015610ccb578082015181840152602081019050610cb0565b60008484015250505050565b6000610cea610ce584610c7c565b610c61565b905082815260208101848484011115610d0657610d05610beb565b5b610d11848285610cad565b509392505050565b600082601f830112610d2e57610d2d610be6565b5b8151610d3e848260208601610cd7565b91505092915050565b60008060008060808587031215610d6157610d60610b7e565b5b6000610d6f87828801610bd1565b9450506020610d8087828801610bd1565b935050604085015167ffffffffffffffff811115610da157610da0610b83565b5b610dad87828801610d19565b925050606085015167ffffffffffffffff811115610dce57610dcd610b83565b5b610dda87828801610d19565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680610e3857607f821691505b602082108103610e4b57610e4a610df1565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b600060088302610eb37fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82610e76565b610ebd8683610e76565b95508019841693508086168417925050509392505050565b6000819050919050565b6000610efa610ef5610ef084610ad0565b610ed5565b610ad0565b9050919050565b6000819050919050565b610f1483610edf565b610f28610f2082610f01565b848454610e83565b825550505050565b600090565b610f3d610f30565b610f48818484610f0b565b505050565b5b81811015610f6c57610f61600082610f35565b600181019050610f4e565b5050565b601f821115610fb157610f8281610e51565b610f8b84610e66565b81016020851015610f9a578190505b610fae610fa685610e66565b830182610f4d565b50505b505050565b600082821c905092915050565b6000610fd460001984600802610fb6565b1980831691505092915050565b6000610fed8383610fc3565b9150826002028217905092915050565b61100682610de6565b67ffffffffffffffff81111561101f5761101e610c01565b5b6110298254610e20565b611034828285610f70565b600060209050601f8311600181146110675760008415611055578287015190505b61105f8582610fe1565b8655506110c7565b601f19841661107586610e51565b60005b8281101561109d57848901518255600182019150602085019450602081019050611078565b868310156110ba57848901516110b6601f891682610fc3565b8355505b6001600288020188555050505b505050505050565b600082825260208201905092915050565b7f4d61726b6574696e672077616c6c65742063616e6e6f74206265207a65726f2060008201527f6164647265737300000000000000000000000000000000000000000000000000602082015250565b600061113c6027836110cf565b9150611147826110e0565b604082019050919050565b6000602082019050818103600083015261116b8161112f565b9050919050565b7f6465762077616c6c65742063616e6e6f74206265207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006111ce6021836110cf565b91506111d982611172565b604082019050919050565b600060208201905081810360008301526111fd816111c1565b9050919050565b600061120f82610ad0565b915061121a83610ad0565b92508282039050818111156112325761123161096e565b5b92915050565b60006020828403121561124e5761124d610b7e565b5b600061125c84828501610bd1565b91505092915050565b61126e81610ba8565b82525050565b60006040820190506112896000830185611265565b6112966020830184611265565b9392505050565b7f45524332303a2067656e65726174696f6e20746f20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b60006112f96025836110cf565b91506113048261129d565b604082019050919050565b60006020820190508181036000830152611328816112ec565b9050919050565b61133881610ad0565b82525050565b6000602082019050611353600083018461132f565b92915050565b614a37806113686000396000f3fe60806040526004361061021e5760003560e01c80638a8c523c11610123578063aacebbe3116100ab578063f2fde38b1161006f578063f2fde38b146107d0578063f66895a3146107f9578063f887ea4014610826578063fbb63ac314610851578063fc1704411461087a57610225565b8063aacebbe3146106d7578063bcd5dd9814610700578063c5d32bb21461072b578063da48567c14610768578063dd62ed3e1461079357610225565b806395d89b41116100f257806395d89b41146105de578063a3fce65e14610609578063a457c2d714610632578063a8aa1b311461066f578063a9059cbb1461069a57610225565b80638a8c523c146105485780638cd4426d1461055f5780638da5cb5b146105885780638ea5220f146105b357610225565b8063355496ca116101a657806370a082311161017557806370a0823114610471578063715018a6146104ae57806375f0a874146104c557806385141a77146104f0578063864701a51461051b57610225565b8063355496ca146103b757806339509351146103e057806342966c681461041d5780634ada218b1461044657610225565b806318160ddd116101ed57806318160ddd146102e45780631870517a1461030f57806320800a001461033857806323b872dd1461034f578063313ce5671461038c57610225565b806306fdde031461022a5780630873321414610255578063095ea7b31461027e5780630e375a5c146102bb57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108a3565b60405161024c91906130b7565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190613123565b610935565b005b34801561028a57600080fd5b506102a560048036038101906102a091906131d4565b610b12565b6040516102b2919061322f565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd91906133be565b610b30565b005b3480156102f057600080fd5b506102f9610c3b565b6040516103069190613429565b60405180910390f35b34801561031b57600080fd5b5061033660048036038101906103319190613123565b610c45565b005b34801561034457600080fd5b5061034d610e22565b005b34801561035b57600080fd5b5061037660048036038101906103719190613444565b610ef4565b604051610383919061322f565b60405180910390f35b34801561039857600080fd5b506103a1610ff4565b6040516103ae91906134b3565b60405180910390f35b3480156103c357600080fd5b506103de60048036038101906103d991906134ce565b610ffd565b005b3480156103ec57600080fd5b50610407600480360381019061040291906131d4565b6110d4565b604051610414919061322f565b60405180910390f35b34801561042957600080fd5b50610444600480360381019061043f919061350e565b611180565b005b34801561045257600080fd5b5061045b61122e565b604051610468919061322f565b60405180910390f35b34801561047d57600080fd5b506104986004803603810190610493919061353b565b611241565b6040516104a59190613429565b60405180910390f35b3480156104ba57600080fd5b506104c3611289565b005b3480156104d157600080fd5b506104da611311565b6040516104e79190613577565b60405180910390f35b3480156104fc57600080fd5b50610505611337565b6040516105129190613577565b60405180910390f35b34801561052757600080fd5b5061053061133d565b60405161053f93929190613592565b60405180910390f35b34801561055457600080fd5b5061055d611355565b005b34801561056b57600080fd5b50610586600480360381019061058191906131d4565b61143e565b005b34801561059457600080fd5b5061059d611544565b6040516105aa9190613577565b60405180910390f35b3480156105bf57600080fd5b506105c861156e565b6040516105d59190613577565b60405180910390f35b3480156105ea57600080fd5b506105f3611594565b60405161060091906130b7565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b919061368c565b611626565b005b34801561063e57600080fd5b50610659600480360381019061065491906131d4565b6117e0565b604051610666919061322f565b60405180910390f35b34801561067b57600080fd5b506106846118d4565b6040516106919190613577565b60405180910390f35b3480156106a657600080fd5b506106c160048036038101906106bc91906131d4565b6118fa565b6040516106ce919061322f565b60405180910390f35b3480156106e357600080fd5b506106fe60048036038101906106f9919061353b565b611911565b005b34801561070c57600080fd5b50610715611aae565b6040516107229190613429565b60405180910390f35b34801561073757600080fd5b50610752600480360381019061074d919061353b565b611ab4565b60405161075f919061322f565b60405180910390f35b34801561077457600080fd5b5061077d611ad4565b60405161078a9190613429565b60405180910390f35b34801561079f57600080fd5b506107ba60048036038101906107b59190613704565b611ada565b6040516107c79190613429565b60405180910390f35b3480156107dc57600080fd5b506107f760048036038101906107f2919061353b565b611b61565b005b34801561080557600080fd5b5061080e611c58565b60405161081d93929190613592565b60405180910390f35b34801561083257600080fd5b5061083b611c70565b60405161084891906137a3565b60405180910390f35b34801561085d57600080fd5b506108786004803603810190610873919061350e565b611c96565b005b34801561088657600080fd5b506108a1600480360381019061089c919061353b565b611d3a565b005b6060600380546108b2906137ed565b80601f01602080910402602001604051908101604052809291908181526020018280546108de906137ed565b801561092b5780601f106109005761010080835404028352916020019161092b565b820191906000526020600020905b81548152906001019060200180831161090e57829003601f168201915b5050505050905090565b61093d611ed7565b73ffffffffffffffffffffffffffffffffffffffff1661095b611544565b73ffffffffffffffffffffffffffffffffffffffff16146109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a89061386a565b60405180910390fd5b60008183856109c091906138b9565b6109ca91906138b9565b9050610bb8811115610a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0890613939565b60405180910390fd5b6005811115610a89576010600001548411158015610a3457506010600101548311155b8015610a4557506010600201548211155b610a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7b906139a5565b60405180910390fd5b610ace565b6005811115610acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac490613a37565b60405180910390fd5b5b604051806060016040528085815260200184815260200183815250601060008201518160000155602082015181600101556040820151816002015590505050505050565b6000610b26610b1f611ed7565b8484611edf565b6001905092915050565b610b38611ed7565b73ffffffffffffffffffffffffffffffffffffffff16610b56611544565b73ffffffffffffffffffffffffffffffffffffffff1614610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba39061386a565b60405180910390fd5b60005b8251811015610c36578160136000858481518110610bd057610bcf613a57565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610baf565b505050565b6000600254905090565b610c4d611ed7565b73ffffffffffffffffffffffffffffffffffffffff16610c6b611544565b73ffffffffffffffffffffffffffffffffffffffff1614610cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb89061386a565b60405180910390fd5b6000818385610cd091906138b9565b610cda91906138b9565b9050610bb8811115610d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1890613939565b60405180910390fd5b6005811115610d9957600d600001548411158015610d445750600d600101548311155b8015610d555750600d600201548211155b610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b906139a5565b60405180910390fd5b610dde565b6005811115610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd490613a37565b60405180910390fd5b5b604051806060016040528085815260200184815260200183815250600d60008201518160000155602082015181600101556040820151816002015590505050505050565b610e2a611ed7565b73ffffffffffffffffffffffffffffffffffffffff16610e48611544565b73ffffffffffffffffffffffffffffffffffffffff1614610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e959061386a565b60405180910390fd5b6000479050610eab611544565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ef0573d6000803e3d6000fd5b5050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f40611ed7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb790613af8565b60405180910390fd5b610fdd85610fcc611ed7565b8584610fd89190613b18565b611edf565b610fe88585856120a8565b60019150509392505050565b60006012905090565b611005611ed7565b73ffffffffffffffffffffffffffffffffffffffff16611023611544565b73ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110709061386a565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006111766110e1611ed7565b8484600160006110ef611ed7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461117191906138b9565b611edf565b6001905092915050565b611188611ed7565b73ffffffffffffffffffffffffffffffffffffffff166111a6611544565b73ffffffffffffffffffffffffffffffffffffffff16146111fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f39061386a565b60405180910390fd5b61122b611207611ed7565b61120f610ff4565b600a61121b9190613c7f565b836112269190613cca565b612505565b50565b600960009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611291611ed7565b73ffffffffffffffffffffffffffffffffffffffff166112af611544565b73ffffffffffffffffffffffffffffffffffffffff1614611305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fc9061386a565b60405180910390fd5b61130f60006126d8565b565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead81565b600d8060000154908060010154908060020154905083565b61135d611ed7565b73ffffffffffffffffffffffffffffffffffffffff1661137b611544565b73ffffffffffffffffffffffffffffffffffffffff16146113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c89061386a565b60405180910390fd5b600960009054906101000a900460ff1615611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890613d58565b60405180910390fd5b6001600960006101000a81548160ff021916908315150217905550565b611446611ed7565b73ffffffffffffffffffffffffffffffffffffffff16611464611544565b73ffffffffffffffffffffffffffffffffffffffff16146114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b19061386a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114de611544565b836040518363ffffffff1660e01b81526004016114fc929190613d78565b6020604051808303816000875af115801561151b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153f9190613db6565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546115a3906137ed565b80601f01602080910402602001604051908101604052809291908181526020018280546115cf906137ed565b801561161c5780601f106115f15761010080835404028352916020019161161c565b820191906000526020600020905b8154815290600101906020018083116115ff57829003601f168201915b5050505050905090565b61162e611ed7565b73ffffffffffffffffffffffffffffffffffffffff1661164c611544565b73ffffffffffffffffffffffffffffffffffffffff16146116a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116999061386a565b60405180910390fd5b80518251146116e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dd90613e2f565b60405180910390fd5b6000805b82518110156117285782818151811061170657611705613a57565b5b60200260200101518261171991906138b9565b915080806001019150506116ea565b5060085481111561176e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176590613ec1565b60405180910390fd5b8060085461177c9190613b18565b60088190555060005b83518110156117da576117cd308583815181106117a5576117a4613a57565b5b60200260200101518584815181106117c0576117bf613a57565b5b60200260200101516120a8565b8080600101915050611785565b50505050565b600080600160006117ef611ed7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a390613f53565b60405180910390fd5b6118c96118b7611ed7565b8585846118c49190613b18565b611edf565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119073384846120a8565b6001905092915050565b611919611ed7565b73ffffffffffffffffffffffffffffffffffffffff16611937611544565b73ffffffffffffffffffffffffffffffffffffffff161461198d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119849061386a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f390613fe5565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6190614051565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b60136020528060005260406000206000915054906101000a900460ff1681565b60085481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b69611ed7565b73ffffffffffffffffffffffffffffffffffffffff16611b87611544565b73ffffffffffffffffffffffffffffffffffffffff1614611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd49061386a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c43906140e3565b60405180910390fd5b611c55816126d8565b50565b60108060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c9e611ed7565b73ffffffffffffffffffffffffffffffffffffffff16611cbc611544565b73ffffffffffffffffffffffffffffffffffffffff1614611d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d099061386a565b60405180910390fd5b611d1a610ff4565b600a611d269190613c7f565b81611d319190613cca565b600a8190555050565b611d42611ed7565b73ffffffffffffffffffffffffffffffffffffffff16611d60611544565b73ffffffffffffffffffffffffffffffffffffffff1614611db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dad9061386a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c90613fe5565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a90614051565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4590614175565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb490614207565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161209b9190613429565b60405180910390a3505050565b600081116120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e290614299565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561218f5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121e457600960009054906101000a900460ff166121e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121da90614305565b60405180910390fd5b5b6000806121ef613006565b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122905750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806123435750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156123425750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b5b156123515760009150612472565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612400576010600201546010600101546010600001546123c291906138b9565b6123cc91906138b9565b9250601060405180606001604052908160008201548152602001600182015481526020016002820154815250509050612456565b600d60020154600d60010154600d6000015461241c91906138b9565b61242691906138b9565b9250600d604051806060016040529081600082015481526020016001820154815260200160028201548152505090505b61271083856124659190613cca565b61246f9190614354565b91505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146124d2576124d1838261279e565b5b6124e8868684876124e39190613b18565b61296d565b60008311156124fd576124fc86308461296d565b5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256b906143f7565b60405180910390fd5b61258082600083612bea565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fd90614489565b60405180910390fd5b81816126129190613b18565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546126669190613b18565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126cb9190613429565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008203156129695760006127b230611241565b9050600a548110612967576001600a5411156127ce57600a5490505b60006002846127dd9190613cca565b90506000818460400151846127f29190613cca565b6127fc9190614354565b90506000818461280c9190613b18565b9050600047905061281c82612bef565b6000814761282a9190613b18565b9050600087604001518661283e9190613b18565b826128499190614354565b9050600088604001518261285d9190613cca565b90506000811115612873576128728682612e32565b5b600089600001516002846128879190613cca565b6128919190613cca565b905060008111156128e8576128e781600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612f1290919063ffffffff16565b5b60008a602001516002856128fc9190613cca565b6129069190613cca565b9050600081111561295d5761295c81600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612f1290919063ffffffff16565b5b5050505050505050505b505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d39061451b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a42906145ad565b60405180910390fd5b612a56838383612bea565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad39061463f565b60405180910390fd5b8181612ae89190613b18565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b7891906138b9565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bdc9190613429565b60405180910390a350505050565b505050565b6000600267ffffffffffffffff811115612c0c57612c0b61324f565b5b604051908082528060200260200182016040528015612c3a5781602001602082028036833780820191505090505b5090503081600081518110612c5257612c51613a57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d1d9190614674565b81600181518110612d3157612d30613a57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d9830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611edf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612dfc95949392919061479a565b600060405180830381600087803b158015612e1657600080fd5b505af1158015612e2a573d6000803e3d6000fd5b505050505050565b612e5f30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611edf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612ec8969594939291906147f4565b60606040518083038185885af1158015612ee6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f0b919061486a565b5050505050565b80471015612f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4c90614909565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612f7b9061495a565b60006040518083038185875af1925050503d8060008114612fb8576040519150601f19603f3d011682016040523d82523d6000602084013e612fbd565b606091505b5050905080613001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff8906149e1565b60405180910390fd5b505050565b60405180606001604052806000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613061578082015181840152602081019050613046565b60008484015250505050565b6000601f19601f8301169050919050565b600061308982613027565b6130938185613032565b93506130a3818560208601613043565b6130ac8161306d565b840191505092915050565b600060208201905081810360008301526130d1818461307e565b905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613100816130ed565b811461310b57600080fd5b50565b60008135905061311d816130f7565b92915050565b60008060006060848603121561313c5761313b6130e3565b5b600061314a8682870161310e565b935050602061315b8682870161310e565b925050604061316c8682870161310e565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131a182613176565b9050919050565b6131b181613196565b81146131bc57600080fd5b50565b6000813590506131ce816131a8565b92915050565b600080604083850312156131eb576131ea6130e3565b5b60006131f9858286016131bf565b925050602061320a8582860161310e565b9150509250929050565b60008115159050919050565b61322981613214565b82525050565b60006020820190506132446000830184613220565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6132878261306d565b810181811067ffffffffffffffff821117156132a6576132a561324f565b5b80604052505050565b60006132b96130d9565b90506132c5828261327e565b919050565b600067ffffffffffffffff8211156132e5576132e461324f565b5b602082029050602081019050919050565b600080fd5b600061330e613309846132ca565b6132af565b90508083825260208201905060208402830185811115613331576133306132f6565b5b835b8181101561335a578061334688826131bf565b845260208401935050602081019050613333565b5050509392505050565b600082601f8301126133795761337861324a565b5b81356133898482602086016132fb565b91505092915050565b61339b81613214565b81146133a657600080fd5b50565b6000813590506133b881613392565b92915050565b600080604083850312156133d5576133d46130e3565b5b600083013567ffffffffffffffff8111156133f3576133f26130e8565b5b6133ff85828601613364565b9250506020613410858286016133a9565b9150509250929050565b613423816130ed565b82525050565b600060208201905061343e600083018461341a565b92915050565b60008060006060848603121561345d5761345c6130e3565b5b600061346b868287016131bf565b935050602061347c868287016131bf565b925050604061348d8682870161310e565b9150509250925092565b600060ff82169050919050565b6134ad81613497565b82525050565b60006020820190506134c860008301846134a4565b92915050565b600080604083850312156134e5576134e46130e3565b5b60006134f3858286016131bf565b9250506020613504858286016133a9565b9150509250929050565b600060208284031215613524576135236130e3565b5b60006135328482850161310e565b91505092915050565b600060208284031215613551576135506130e3565b5b600061355f848285016131bf565b91505092915050565b61357181613196565b82525050565b600060208201905061358c6000830184613568565b92915050565b60006060820190506135a7600083018661341a565b6135b4602083018561341a565b6135c1604083018461341a565b949350505050565b600067ffffffffffffffff8211156135e4576135e361324f565b5b602082029050602081019050919050565b6000613608613603846135c9565b6132af565b9050808382526020820190506020840283018581111561362b5761362a6132f6565b5b835b818110156136545780613640888261310e565b84526020840193505060208101905061362d565b5050509392505050565b600082601f8301126136735761367261324a565b5b81356136838482602086016135f5565b91505092915050565b600080604083850312156136a3576136a26130e3565b5b600083013567ffffffffffffffff8111156136c1576136c06130e8565b5b6136cd85828601613364565b925050602083013567ffffffffffffffff8111156136ee576136ed6130e8565b5b6136fa8582860161365e565b9150509250929050565b6000806040838503121561371b5761371a6130e3565b5b6000613729858286016131bf565b925050602061373a858286016131bf565b9150509250929050565b6000819050919050565b600061376961376461375f84613176565b613744565b613176565b9050919050565b600061377b8261374e565b9050919050565b600061378d82613770565b9050919050565b61379d81613782565b82525050565b60006020820190506137b86000830184613794565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061380557607f821691505b602082108103613818576138176137be565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613854602083613032565b915061385f8261381e565b602082019050919050565b6000602082019050818103600083015261388381613847565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138c4826130ed565b91506138cf836130ed565b92508282019050808211156138e7576138e661388a565b5b92915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000613923601d83613032565b915061392e826138ed565b602082019050919050565b6000602082019050818103600083015261395281613916565b9050919050565b7f4f6e6c7920726564756374696f6e7320616c6c6f776564000000000000000000600082015250565b600061398f601783613032565b915061399a82613959565b602082019050919050565b600060208201905081810360008301526139be81613982565b9050919050565b7f43616e6e6f742065786365656420352520616674657220726564756374696f6e60008201527f20746f2035250000000000000000000000000000000000000000000000000000602082015250565b6000613a21602683613032565b9150613a2c826139c5565b604082019050919050565b60006020820190508181036000830152613a5081613a14565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613ae2602883613032565b9150613aed82613a86565b604082019050919050565b60006020820190508181036000830152613b1181613ad5565b9050919050565b6000613b23826130ed565b9150613b2e836130ed565b9250828203905081811115613b4657613b4561388a565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115613ba357808604811115613b7f57613b7e61388a565b5b6001851615613b8e5780820291505b8081029050613b9c85613b4c565b9450613b63565b94509492505050565b600082613bbc5760019050613c78565b81613bca5760009050613c78565b8160018114613be05760028114613bea57613c19565b6001915050613c78565b60ff841115613bfc57613bfb61388a565b5b8360020a915084821115613c1357613c1261388a565b5b50613c78565b5060208310610133831016604e8410600b8410161715613c4e5782820a905083811115613c4957613c4861388a565b5b613c78565b613c5b8484846001613b59565b92509050818404811115613c7257613c7161388a565b5b81810290505b9392505050565b6000613c8a826130ed565b9150613c9583613497565b9250613cc27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613bac565b905092915050565b6000613cd5826130ed565b9150613ce0836130ed565b9250828202613cee816130ed565b91508282048414831517613d0557613d0461388a565b5b5092915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613d42601a83613032565b9150613d4d82613d0c565b602082019050919050565b60006020820190508181036000830152613d7181613d35565b9050919050565b6000604082019050613d8d6000830185613568565b613d9a602083018461341a565b9392505050565b600081519050613db081613392565b92915050565b600060208284031215613dcc57613dcb6130e3565b5b6000613dda84828501613da1565b91505092915050565b7f4172726179206c656e677468206d69736d617463680000000000000000000000600082015250565b6000613e19601583613032565b9150613e2482613de3565b602082019050919050565b60006020820190508181036000830152613e4881613e0c565b9050919050565b7f546f74616c20616d6f756e74206578636565647320696e697469616c2061697260008201527f64726f7020616c6c6f636174696f6e0000000000000000000000000000000000602082015250565b6000613eab602f83613032565b9150613eb682613e4f565b604082019050919050565b60006020820190508181036000830152613eda81613e9e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f3d602583613032565b9150613f4882613ee1565b604082019050919050565b60006020820190508181036000830152613f6c81613f30565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fcf602283613032565b9150613fda82613f73565b604082019050919050565b60006020820190508181036000830152613ffe81613fc2565b9050919050565b7f46656520416464726573732063616e6e6f742062652043410000000000000000600082015250565b600061403b601883613032565b915061404682614005565b602082019050919050565b6000602082019050818103600083015261406a8161402e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006140cd602683613032565b91506140d882614071565b604082019050919050565b600060208201905081810360008301526140fc816140c0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061415f602483613032565b915061416a82614103565b604082019050919050565b6000602082019050818103600083015261418e81614152565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006141f1602283613032565b91506141fc82614195565b604082019050919050565b60006020820190508181036000830152614220816141e4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614283602983613032565b915061428e82614227565b604082019050919050565b600060208201905081810360008301526142b281614276565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b60006142ef601383613032565b91506142fa826142b9565b602082019050919050565b6000602082019050818103600083015261431e816142e2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061435f826130ed565b915061436a836130ed565b92508261437a57614379614325565b5b828204905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006143e1602183613032565b91506143ec82614385565b604082019050919050565b60006020820190508181036000830152614410816143d4565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614473602283613032565b915061447e82614417565b604082019050919050565b600060208201905081810360008301526144a281614466565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614505602583613032565b9150614510826144a9565b604082019050919050565b60006020820190508181036000830152614534816144f8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614597602383613032565b91506145a28261453b565b604082019050919050565b600060208201905081810360008301526145c68161458a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614629602683613032565b9150614634826145cd565b604082019050919050565b600060208201905081810360008301526146588161461c565b9050919050565b60008151905061466e816131a8565b92915050565b60006020828403121561468a576146896130e3565b5b60006146988482850161465f565b91505092915050565b6000819050919050565b60006146c66146c16146bc846146a1565b613744565b6130ed565b9050919050565b6146d6816146ab565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61471181613196565b82525050565b60006147238383614708565b60208301905092915050565b6000602082019050919050565b6000614747826146dc565b61475181856146e7565b935061475c836146f8565b8060005b8381101561478d5781516147748882614717565b975061477f8361472f565b925050600181019050614760565b5085935050505092915050565b600060a0820190506147af600083018861341a565b6147bc60208301876146cd565b81810360408301526147ce818661473c565b90506147dd6060830185613568565b6147ea608083018461341a565b9695505050505050565b600060c0820190506148096000830189613568565b614816602083018861341a565b61482360408301876146cd565b61483060608301866146cd565b61483d6080830185613568565b61484a60a083018461341a565b979650505050505050565b600081519050614864816130f7565b92915050565b600080600060608486031215614883576148826130e3565b5b600061489186828701614855565b93505060206148a286828701614855565b92505060406148b386828701614855565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006148f3601d83613032565b91506148fe826148bd565b602082019050919050565b60006020820190508181036000830152614922816148e6565b9050919050565b600081905092915050565b50565b6000614944600083614929565b915061494f82614934565b600082019050919050565b600061496582614937565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006149cb603a83613032565b91506149d68261496f565b604082019050919050565b600060208201905081810360008301526149fa816149be565b905091905056fea26469706673582212203ae5d23dc39a66c63d51238ef3fcdb8a367552c97108833c6d0fd0e7e27a0f6f64736f6c634300081b00330000000000000000000000004ba12175e4bba78944d44f545ba8410a10c4b103000000000000000000000000b9d8272a392918d78585a57ce3f6343eddaebb7b000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000074275696c6441490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054275696c64000000000000000000000000000000000000000000000000000000

Deployed Bytecode

0x60806040526004361061021e5760003560e01c80638a8c523c11610123578063aacebbe3116100ab578063f2fde38b1161006f578063f2fde38b146107d0578063f66895a3146107f9578063f887ea4014610826578063fbb63ac314610851578063fc1704411461087a57610225565b8063aacebbe3146106d7578063bcd5dd9814610700578063c5d32bb21461072b578063da48567c14610768578063dd62ed3e1461079357610225565b806395d89b41116100f257806395d89b41146105de578063a3fce65e14610609578063a457c2d714610632578063a8aa1b311461066f578063a9059cbb1461069a57610225565b80638a8c523c146105485780638cd4426d1461055f5780638da5cb5b146105885780638ea5220f146105b357610225565b8063355496ca116101a657806370a082311161017557806370a0823114610471578063715018a6146104ae57806375f0a874146104c557806385141a77146104f0578063864701a51461051b57610225565b8063355496ca146103b757806339509351146103e057806342966c681461041d5780634ada218b1461044657610225565b806318160ddd116101ed57806318160ddd146102e45780631870517a1461030f57806320800a001461033857806323b872dd1461034f578063313ce5671461038c57610225565b806306fdde031461022a5780630873321414610255578063095ea7b31461027e5780630e375a5c146102bb57610225565b3661022557005b600080fd5b34801561023657600080fd5b5061023f6108a3565b60405161024c91906130b7565b60405180910390f35b34801561026157600080fd5b5061027c60048036038101906102779190613123565b610935565b005b34801561028a57600080fd5b506102a560048036038101906102a091906131d4565b610b12565b6040516102b2919061322f565b60405180910390f35b3480156102c757600080fd5b506102e260048036038101906102dd91906133be565b610b30565b005b3480156102f057600080fd5b506102f9610c3b565b6040516103069190613429565b60405180910390f35b34801561031b57600080fd5b5061033660048036038101906103319190613123565b610c45565b005b34801561034457600080fd5b5061034d610e22565b005b34801561035b57600080fd5b5061037660048036038101906103719190613444565b610ef4565b604051610383919061322f565b60405180910390f35b34801561039857600080fd5b506103a1610ff4565b6040516103ae91906134b3565b60405180910390f35b3480156103c357600080fd5b506103de60048036038101906103d991906134ce565b610ffd565b005b3480156103ec57600080fd5b50610407600480360381019061040291906131d4565b6110d4565b604051610414919061322f565b60405180910390f35b34801561042957600080fd5b50610444600480360381019061043f919061350e565b611180565b005b34801561045257600080fd5b5061045b61122e565b604051610468919061322f565b60405180910390f35b34801561047d57600080fd5b506104986004803603810190610493919061353b565b611241565b6040516104a59190613429565b60405180910390f35b3480156104ba57600080fd5b506104c3611289565b005b3480156104d157600080fd5b506104da611311565b6040516104e79190613577565b60405180910390f35b3480156104fc57600080fd5b50610505611337565b6040516105129190613577565b60405180910390f35b34801561052757600080fd5b5061053061133d565b60405161053f93929190613592565b60405180910390f35b34801561055457600080fd5b5061055d611355565b005b34801561056b57600080fd5b50610586600480360381019061058191906131d4565b61143e565b005b34801561059457600080fd5b5061059d611544565b6040516105aa9190613577565b60405180910390f35b3480156105bf57600080fd5b506105c861156e565b6040516105d59190613577565b60405180910390f35b3480156105ea57600080fd5b506105f3611594565b60405161060091906130b7565b60405180910390f35b34801561061557600080fd5b50610630600480360381019061062b919061368c565b611626565b005b34801561063e57600080fd5b50610659600480360381019061065491906131d4565b6117e0565b604051610666919061322f565b60405180910390f35b34801561067b57600080fd5b506106846118d4565b6040516106919190613577565b60405180910390f35b3480156106a657600080fd5b506106c160048036038101906106bc91906131d4565b6118fa565b6040516106ce919061322f565b60405180910390f35b3480156106e357600080fd5b506106fe60048036038101906106f9919061353b565b611911565b005b34801561070c57600080fd5b50610715611aae565b6040516107229190613429565b60405180910390f35b34801561073757600080fd5b50610752600480360381019061074d919061353b565b611ab4565b60405161075f919061322f565b60405180910390f35b34801561077457600080fd5b5061077d611ad4565b60405161078a9190613429565b60405180910390f35b34801561079f57600080fd5b506107ba60048036038101906107b59190613704565b611ada565b6040516107c79190613429565b60405180910390f35b3480156107dc57600080fd5b506107f760048036038101906107f2919061353b565b611b61565b005b34801561080557600080fd5b5061080e611c58565b60405161081d93929190613592565b60405180910390f35b34801561083257600080fd5b5061083b611c70565b60405161084891906137a3565b60405180910390f35b34801561085d57600080fd5b506108786004803603810190610873919061350e565b611c96565b005b34801561088657600080fd5b506108a1600480360381019061089c919061353b565b611d3a565b005b6060600380546108b2906137ed565b80601f01602080910402602001604051908101604052809291908181526020018280546108de906137ed565b801561092b5780601f106109005761010080835404028352916020019161092b565b820191906000526020600020905b81548152906001019060200180831161090e57829003601f168201915b5050505050905090565b61093d611ed7565b73ffffffffffffffffffffffffffffffffffffffff1661095b611544565b73ffffffffffffffffffffffffffffffffffffffff16146109b1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109a89061386a565b60405180910390fd5b60008183856109c091906138b9565b6109ca91906138b9565b9050610bb8811115610a11576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a0890613939565b60405180910390fd5b6005811115610a89576010600001548411158015610a3457506010600101548311155b8015610a4557506010600201548211155b610a84576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a7b906139a5565b60405180910390fd5b610ace565b6005811115610acd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ac490613a37565b60405180910390fd5b5b604051806060016040528085815260200184815260200183815250601060008201518160000155602082015181600101556040820151816002015590505050505050565b6000610b26610b1f611ed7565b8484611edf565b6001905092915050565b610b38611ed7565b73ffffffffffffffffffffffffffffffffffffffff16610b56611544565b73ffffffffffffffffffffffffffffffffffffffff1614610bac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ba39061386a565b60405180910390fd5b60005b8251811015610c36578160136000858481518110610bd057610bcf613a57565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080600101915050610baf565b505050565b6000600254905090565b610c4d611ed7565b73ffffffffffffffffffffffffffffffffffffffff16610c6b611544565b73ffffffffffffffffffffffffffffffffffffffff1614610cc1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cb89061386a565b60405180910390fd5b6000818385610cd091906138b9565b610cda91906138b9565b9050610bb8811115610d21576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d1890613939565b60405180910390fd5b6005811115610d9957600d600001548411158015610d445750600d600101548311155b8015610d555750600d600201548211155b610d94576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d8b906139a5565b60405180910390fd5b610dde565b6005811115610ddd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610dd490613a37565b60405180910390fd5b5b604051806060016040528085815260200184815260200183815250600d60008201518160000155602082015181600101556040820151816002015590505050505050565b610e2a611ed7565b73ffffffffffffffffffffffffffffffffffffffff16610e48611544565b73ffffffffffffffffffffffffffffffffffffffff1614610e9e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e959061386a565b60405180910390fd5b6000479050610eab611544565b73ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f19350505050158015610ef0573d6000803e3d6000fd5b5050565b600080600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610f40611ed7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905082811015610fc0576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fb790613af8565b60405180910390fd5b610fdd85610fcc611ed7565b8584610fd89190613b18565b611edf565b610fe88585856120a8565b60019150509392505050565b60006012905090565b611005611ed7565b73ffffffffffffffffffffffffffffffffffffffff16611023611544565b73ffffffffffffffffffffffffffffffffffffffff1614611079576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110709061386a565b60405180910390fd5b80601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b60006111766110e1611ed7565b8484600160006110ef611ed7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461117191906138b9565b611edf565b6001905092915050565b611188611ed7565b73ffffffffffffffffffffffffffffffffffffffff166111a6611544565b73ffffffffffffffffffffffffffffffffffffffff16146111fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016111f39061386a565b60405180910390fd5b61122b611207611ed7565b61120f610ff4565b600a61121b9190613c7f565b836112269190613cca565b612505565b50565b600960009054906101000a900460ff1681565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611291611ed7565b73ffffffffffffffffffffffffffffffffffffffff166112af611544565b73ffffffffffffffffffffffffffffffffffffffff1614611305576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112fc9061386a565b60405180910390fd5b61130f60006126d8565b565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b61dead81565b600d8060000154908060010154908060020154905083565b61135d611ed7565b73ffffffffffffffffffffffffffffffffffffffff1661137b611544565b73ffffffffffffffffffffffffffffffffffffffff16146113d1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016113c89061386a565b60405180910390fd5b600960009054906101000a900460ff1615611421576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161141890613d58565b60405180910390fd5b6001600960006101000a81548160ff021916908315150217905550565b611446611ed7565b73ffffffffffffffffffffffffffffffffffffffff16611464611544565b73ffffffffffffffffffffffffffffffffffffffff16146114ba576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114b19061386a565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6114de611544565b836040518363ffffffff1660e01b81526004016114fc929190613d78565b6020604051808303816000875af115801561151b573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061153f9190613db6565b505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600480546115a3906137ed565b80601f01602080910402602001604051908101604052809291908181526020018280546115cf906137ed565b801561161c5780601f106115f15761010080835404028352916020019161161c565b820191906000526020600020905b8154815290600101906020018083116115ff57829003601f168201915b5050505050905090565b61162e611ed7565b73ffffffffffffffffffffffffffffffffffffffff1661164c611544565b73ffffffffffffffffffffffffffffffffffffffff16146116a2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116999061386a565b60405180910390fd5b80518251146116e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116dd90613e2f565b60405180910390fd5b6000805b82518110156117285782818151811061170657611705613a57565b5b60200260200101518261171991906138b9565b915080806001019150506116ea565b5060085481111561176e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161176590613ec1565b60405180910390fd5b8060085461177c9190613b18565b60088190555060005b83518110156117da576117cd308583815181106117a5576117a4613a57565b5b60200260200101518584815181106117c0576117bf613a57565b5b60200260200101516120a8565b8080600101915050611785565b50505050565b600080600160006117ef611ed7565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050828110156118ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118a390613f53565b60405180910390fd5b6118c96118b7611ed7565b8585846118c49190613b18565b611edf565b600191505092915050565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60006119073384846120a8565b6001905092915050565b611919611ed7565b73ffffffffffffffffffffffffffffffffffffffff16611937611544565b73ffffffffffffffffffffffffffffffffffffffff161461198d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119849061386a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036119fc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016119f390613fe5565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611a6a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6190614051565b60405180910390fd5b80600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600a5481565b60136020528060005260406000206000915054906101000a900460ff1681565b60085481565b6000600160008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b611b69611ed7565b73ffffffffffffffffffffffffffffffffffffffff16611b87611544565b73ffffffffffffffffffffffffffffffffffffffff1614611bdd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bd49061386a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611c4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c43906140e3565b60405180910390fd5b611c55816126d8565b50565b60108060000154908060010154908060020154905083565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b611c9e611ed7565b73ffffffffffffffffffffffffffffffffffffffff16611cbc611544565b73ffffffffffffffffffffffffffffffffffffffff1614611d12576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d099061386a565b60405180910390fd5b611d1a610ff4565b600a611d269190613c7f565b81611d319190613cca565b600a8190555050565b611d42611ed7565b73ffffffffffffffffffffffffffffffffffffffff16611d60611544565b73ffffffffffffffffffffffffffffffffffffffff1614611db6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dad9061386a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e25576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e1c90613fe5565b60405180910390fd5b3073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611e93576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e8a90614051565b60405180910390fd5b80600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611f4e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f4590614175565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611fbd576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb490614207565b60405180910390fd5b80600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161209b9190613429565b60405180910390a3505050565b600081116120eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120e290614299565b60405180910390fd5b601360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615801561218f5750601360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b156121e457600960009054906101000a900460ff166121e3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121da90614305565b60405180910390fd5b5b6000806121ef613006565b601360008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16806122905750601360008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b806123435750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16141580156123425750600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1614155b5b156123515760009150612472565b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff1603612400576010600201546010600101546010600001546123c291906138b9565b6123cc91906138b9565b9250601060405180606001604052908160008201548152602001600182015481526020016002820154815250509050612456565b600d60020154600d60010154600d6000015461241c91906138b9565b61242691906138b9565b9250600d604051806060016040529081600082015481526020016001820154815260200160028201548152505090505b61271083856124659190613cca565b61246f9190614354565b91505b600760009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168673ffffffffffffffffffffffffffffffffffffffff16146124d2576124d1838261279e565b5b6124e8868684876124e39190613b18565b61296d565b60008311156124fd576124fc86308461296d565b5b505050505050565b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612574576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161256b906143f7565b60405180910390fd5b61258082600083612bea565b60008060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612606576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016125fd90614489565b60405180910390fd5b81816126129190613b18565b6000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555081600260008282546126669190613b18565b92505081905550600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516126cb9190613429565b60405180910390a3505050565b6000600560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b60008203156129695760006127b230611241565b9050600a548110612967576001600a5411156127ce57600a5490505b60006002846127dd9190613cca565b90506000818460400151846127f29190613cca565b6127fc9190614354565b90506000818461280c9190613b18565b9050600047905061281c82612bef565b6000814761282a9190613b18565b9050600087604001518661283e9190613b18565b826128499190614354565b9050600088604001518261285d9190613cca565b90506000811115612873576128728682612e32565b5b600089600001516002846128879190613cca565b6128919190613cca565b905060008111156128e8576128e781600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612f1290919063ffffffff16565b5b60008a602001516002856128fc9190613cca565b6129069190613cca565b9050600081111561295d5761295c81600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16612f1290919063ffffffff16565b5b5050505050505050505b505b5050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036129dc576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016129d39061451b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603612a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612a42906145ad565b60405180910390fd5b612a56838383612bea565b60008060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905081811015612adc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ad39061463f565b60405180910390fd5b8181612ae89190613b18565b6000808673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254612b7891906138b9565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051612bdc9190613429565b60405180910390a350505050565b505050565b6000600267ffffffffffffffff811115612c0c57612c0b61324f565b5b604051908082528060200260200182016040528015612c3a5781602001602082028036833780820191505090505b5090503081600081518110612c5257612c51613a57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612cf9573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612d1d9190614674565b81600181518110612d3157612d30613a57565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050612d9830600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611edf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401612dfc95949392919061479a565b600060405180830381600087803b158015612e1657600080fd5b505af1158015612e2a573d6000803e3d6000fd5b505050505050565b612e5f30600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1684611edf565b600660009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d71982308560008061dead426040518863ffffffff1660e01b8152600401612ec8969594939291906147f4565b60606040518083038185885af1158015612ee6573d6000803e3d6000fd5b50505050506040513d601f19601f82011682018060405250810190612f0b919061486a565b5050505050565b80471015612f55576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612f4c90614909565b60405180910390fd5b60008273ffffffffffffffffffffffffffffffffffffffff1682604051612f7b9061495a565b60006040518083038185875af1925050503d8060008114612fb8576040519150601f19603f3d011682016040523d82523d6000602084013e612fbd565b606091505b5050905080613001576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612ff8906149e1565b60405180910390fd5b505050565b60405180606001604052806000815260200160008152602001600081525090565b600081519050919050565b600082825260208201905092915050565b60005b83811015613061578082015181840152602081019050613046565b60008484015250505050565b6000601f19601f8301169050919050565b600061308982613027565b6130938185613032565b93506130a3818560208601613043565b6130ac8161306d565b840191505092915050565b600060208201905081810360008301526130d1818461307e565b905092915050565b6000604051905090565b600080fd5b600080fd5b6000819050919050565b613100816130ed565b811461310b57600080fd5b50565b60008135905061311d816130f7565b92915050565b60008060006060848603121561313c5761313b6130e3565b5b600061314a8682870161310e565b935050602061315b8682870161310e565b925050604061316c8682870161310e565b9150509250925092565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006131a182613176565b9050919050565b6131b181613196565b81146131bc57600080fd5b50565b6000813590506131ce816131a8565b92915050565b600080604083850312156131eb576131ea6130e3565b5b60006131f9858286016131bf565b925050602061320a8582860161310e565b9150509250929050565b60008115159050919050565b61322981613214565b82525050565b60006020820190506132446000830184613220565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6132878261306d565b810181811067ffffffffffffffff821117156132a6576132a561324f565b5b80604052505050565b60006132b96130d9565b90506132c5828261327e565b919050565b600067ffffffffffffffff8211156132e5576132e461324f565b5b602082029050602081019050919050565b600080fd5b600061330e613309846132ca565b6132af565b90508083825260208201905060208402830185811115613331576133306132f6565b5b835b8181101561335a578061334688826131bf565b845260208401935050602081019050613333565b5050509392505050565b600082601f8301126133795761337861324a565b5b81356133898482602086016132fb565b91505092915050565b61339b81613214565b81146133a657600080fd5b50565b6000813590506133b881613392565b92915050565b600080604083850312156133d5576133d46130e3565b5b600083013567ffffffffffffffff8111156133f3576133f26130e8565b5b6133ff85828601613364565b9250506020613410858286016133a9565b9150509250929050565b613423816130ed565b82525050565b600060208201905061343e600083018461341a565b92915050565b60008060006060848603121561345d5761345c6130e3565b5b600061346b868287016131bf565b935050602061347c868287016131bf565b925050604061348d8682870161310e565b9150509250925092565b600060ff82169050919050565b6134ad81613497565b82525050565b60006020820190506134c860008301846134a4565b92915050565b600080604083850312156134e5576134e46130e3565b5b60006134f3858286016131bf565b9250506020613504858286016133a9565b9150509250929050565b600060208284031215613524576135236130e3565b5b60006135328482850161310e565b91505092915050565b600060208284031215613551576135506130e3565b5b600061355f848285016131bf565b91505092915050565b61357181613196565b82525050565b600060208201905061358c6000830184613568565b92915050565b60006060820190506135a7600083018661341a565b6135b4602083018561341a565b6135c1604083018461341a565b949350505050565b600067ffffffffffffffff8211156135e4576135e361324f565b5b602082029050602081019050919050565b6000613608613603846135c9565b6132af565b9050808382526020820190506020840283018581111561362b5761362a6132f6565b5b835b818110156136545780613640888261310e565b84526020840193505060208101905061362d565b5050509392505050565b600082601f8301126136735761367261324a565b5b81356136838482602086016135f5565b91505092915050565b600080604083850312156136a3576136a26130e3565b5b600083013567ffffffffffffffff8111156136c1576136c06130e8565b5b6136cd85828601613364565b925050602083013567ffffffffffffffff8111156136ee576136ed6130e8565b5b6136fa8582860161365e565b9150509250929050565b6000806040838503121561371b5761371a6130e3565b5b6000613729858286016131bf565b925050602061373a858286016131bf565b9150509250929050565b6000819050919050565b600061376961376461375f84613176565b613744565b613176565b9050919050565b600061377b8261374e565b9050919050565b600061378d82613770565b9050919050565b61379d81613782565b82525050565b60006020820190506137b86000830184613794565b92915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061380557607f821691505b602082108103613818576138176137be565b5b50919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000613854602083613032565b915061385f8261381e565b602082019050919050565b6000602082019050818103600083015261388381613847565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006138c4826130ed565b91506138cf836130ed565b92508282019050808211156138e7576138e661388a565b5b92915050565b7f4d757374206b656570206665657320617420333025206f72206c657373000000600082015250565b6000613923601d83613032565b915061392e826138ed565b602082019050919050565b6000602082019050818103600083015261395281613916565b9050919050565b7f4f6e6c7920726564756374696f6e7320616c6c6f776564000000000000000000600082015250565b600061398f601783613032565b915061399a82613959565b602082019050919050565b600060208201905081810360008301526139be81613982565b9050919050565b7f43616e6e6f742065786365656420352520616674657220726564756374696f6e60008201527f20746f2035250000000000000000000000000000000000000000000000000000602082015250565b6000613a21602683613032565b9150613a2c826139c5565b604082019050919050565b60006020820190508181036000830152613a5081613a14565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f45524332303a207472616e7366657220616d6f756e742065786365656473206160008201527f6c6c6f77616e6365000000000000000000000000000000000000000000000000602082015250565b6000613ae2602883613032565b9150613aed82613a86565b604082019050919050565b60006020820190508181036000830152613b1181613ad5565b9050919050565b6000613b23826130ed565b9150613b2e836130ed565b9250828203905081811115613b4657613b4561388a565b5b92915050565b60008160011c9050919050565b6000808291508390505b6001851115613ba357808604811115613b7f57613b7e61388a565b5b6001851615613b8e5780820291505b8081029050613b9c85613b4c565b9450613b63565b94509492505050565b600082613bbc5760019050613c78565b81613bca5760009050613c78565b8160018114613be05760028114613bea57613c19565b6001915050613c78565b60ff841115613bfc57613bfb61388a565b5b8360020a915084821115613c1357613c1261388a565b5b50613c78565b5060208310610133831016604e8410600b8410161715613c4e5782820a905083811115613c4957613c4861388a565b5b613c78565b613c5b8484846001613b59565b92509050818404811115613c7257613c7161388a565b5b81810290505b9392505050565b6000613c8a826130ed565b9150613c9583613497565b9250613cc27fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484613bac565b905092915050565b6000613cd5826130ed565b9150613ce0836130ed565b9250828202613cee816130ed565b91508282048414831517613d0557613d0461388a565b5b5092915050565b7f54726164696e6720697320616c726561647920656e61626c6564000000000000600082015250565b6000613d42601a83613032565b9150613d4d82613d0c565b602082019050919050565b60006020820190508181036000830152613d7181613d35565b9050919050565b6000604082019050613d8d6000830185613568565b613d9a602083018461341a565b9392505050565b600081519050613db081613392565b92915050565b600060208284031215613dcc57613dcb6130e3565b5b6000613dda84828501613da1565b91505092915050565b7f4172726179206c656e677468206d69736d617463680000000000000000000000600082015250565b6000613e19601583613032565b9150613e2482613de3565b602082019050919050565b60006020820190508181036000830152613e4881613e0c565b9050919050565b7f546f74616c20616d6f756e74206578636565647320696e697469616c2061697260008201527f64726f7020616c6c6f636174696f6e0000000000000000000000000000000000602082015250565b6000613eab602f83613032565b9150613eb682613e4f565b604082019050919050565b60006020820190508181036000830152613eda81613e9e565b9050919050565b7f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760008201527f207a65726f000000000000000000000000000000000000000000000000000000602082015250565b6000613f3d602583613032565b9150613f4882613ee1565b604082019050919050565b60006020820190508181036000830152613f6c81613f30565b9050919050565b7f46656520416464726573732063616e6e6f74206265207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000613fcf602283613032565b9150613fda82613f73565b604082019050919050565b60006020820190508181036000830152613ffe81613fc2565b9050919050565b7f46656520416464726573732063616e6e6f742062652043410000000000000000600082015250565b600061403b601883613032565b915061404682614005565b602082019050919050565b6000602082019050818103600083015261406a8161402e565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b60006140cd602683613032565b91506140d882614071565b604082019050919050565b600060208201905081810360008301526140fc816140c0565b9050919050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b600061415f602483613032565b915061416a82614103565b604082019050919050565b6000602082019050818103600083015261418e81614152565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b60006141f1602283613032565b91506141fc82614195565b604082019050919050565b60006020820190508181036000830152614220816141e4565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b6000614283602983613032565b915061428e82614227565b604082019050919050565b600060208201905081810360008301526142b281614276565b9050919050565b7f54726164696e67206e6f7420656e61626c656400000000000000000000000000600082015250565b60006142ef601383613032565b91506142fa826142b9565b602082019050919050565b6000602082019050818103600083015261431e816142e2565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061435f826130ed565b915061436a836130ed565b92508261437a57614379614325565b5b828204905092915050565b7f45524332303a206275726e2066726f6d20746865207a65726f2061646472657360008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b60006143e1602183613032565b91506143ec82614385565b604082019050919050565b60006020820190508181036000830152614410816143d4565b9050919050565b7f45524332303a206275726e20616d6f756e7420657863656564732062616c616e60008201527f6365000000000000000000000000000000000000000000000000000000000000602082015250565b6000614473602283613032565b915061447e82614417565b604082019050919050565b600060208201905081810360008301526144a281614466565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b6000614505602583613032565b9150614510826144a9565b604082019050919050565b60006020820190508181036000830152614534816144f8565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b6000614597602383613032565b91506145a28261453b565b604082019050919050565b600060208201905081810360008301526145c68161458a565b9050919050565b7f45524332303a207472616e7366657220616d6f756e742065786365656473206260008201527f616c616e63650000000000000000000000000000000000000000000000000000602082015250565b6000614629602683613032565b9150614634826145cd565b604082019050919050565b600060208201905081810360008301526146588161461c565b9050919050565b60008151905061466e816131a8565b92915050565b60006020828403121561468a576146896130e3565b5b60006146988482850161465f565b91505092915050565b6000819050919050565b60006146c66146c16146bc846146a1565b613744565b6130ed565b9050919050565b6146d6816146ab565b82525050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61471181613196565b82525050565b60006147238383614708565b60208301905092915050565b6000602082019050919050565b6000614747826146dc565b61475181856146e7565b935061475c836146f8565b8060005b8381101561478d5781516147748882614717565b975061477f8361472f565b925050600181019050614760565b5085935050505092915050565b600060a0820190506147af600083018861341a565b6147bc60208301876146cd565b81810360408301526147ce818661473c565b90506147dd6060830185613568565b6147ea608083018461341a565b9695505050505050565b600060c0820190506148096000830189613568565b614816602083018861341a565b61482360408301876146cd565b61483060608301866146cd565b61483d6080830185613568565b61484a60a083018461341a565b979650505050505050565b600081519050614864816130f7565b92915050565b600080600060608486031215614883576148826130e3565b5b600061489186828701614855565b93505060206148a286828701614855565b92505060406148b386828701614855565b9150509250925092565b7f416464726573733a20696e73756666696369656e742062616c616e6365000000600082015250565b60006148f3601d83613032565b91506148fe826148bd565b602082019050919050565b60006020820190508181036000830152614922816148e6565b9050919050565b600081905092915050565b50565b6000614944600083614929565b915061494f82614934565b600082019050919050565b600061496582614937565b9150819050919050565b7f416464726573733a20756e61626c6520746f2073656e642076616c75652c207260008201527f6563697069656e74206d61792068617665207265766572746564000000000000602082015250565b60006149cb603a83613032565b91506149d68261496f565b604082019050919050565b600060208201905081810360008301526149fa816149be565b905091905056fea26469706673582212203ae5d23dc39a66c63d51238ef3fcdb8a367552c97108833c6d0fd0e7e27a0f6f64736f6c634300081b0033

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

0000000000000000000000004ba12175e4bba78944d44f545ba8410a10c4b103000000000000000000000000b9d8272a392918d78585a57ce3f6343eddaebb7b000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c000000000000000000000000000000000000000000000000000000000000000074275696c6441490000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000054275696c64000000000000000000000000000000000000000000000000000000

-----Decoded View---------------
Arg [0] : _marketingWallet (address): 0x4BA12175E4bBA78944D44F545Ba8410A10C4B103
Arg [1] : _devWallet (address): 0xb9D8272a392918D78585A57cE3F6343EddaEbB7B
Arg [2] : name (string): BuildAI
Arg [3] : symbol (string): Build

-----Encoded View---------------
8 Constructor Arguments found :
Arg [0] : 0000000000000000000000004ba12175e4bba78944d44f545ba8410a10c4b103
Arg [1] : 000000000000000000000000b9d8272a392918d78585a57ce3f6343eddaebb7b
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000080
Arg [3] : 00000000000000000000000000000000000000000000000000000000000000c0
Arg [4] : 0000000000000000000000000000000000000000000000000000000000000007
Arg [5] : 4275696c64414900000000000000000000000000000000000000000000000000
Arg [6] : 0000000000000000000000000000000000000000000000000000000000000005
Arg [7] : 4275696c64000000000000000000000000000000000000000000000000000000


Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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