ETH Price: $3,423.05 (-1.53%)
Gas: 8 Gwei

Token

PENGYX (PENGYX)
 

Overview

Max Total Supply

3,000,000,000 PENGYX

Holders

732

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 18 Decimals)

Balance
0.000000000000000001 PENGYX

Value
$0.00
0xda53c990690aea5d5cd49982d822ca35277086a6
Loading...
Loading
Loading...
Loading
Loading...
Loading

Click here to update the token information / general information
# Exchange Pair Price  24H Volume % Volume

Contract Source Code Verified (Exact Match)

Contract Name:
PengyX

Compiler Version
v0.8.21+commit.d9974bed

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license
/**
 *Submitted for verification at Etherscan.io on 2023-08-28
*/

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

// SPDX-License-Identifier: MIT
pragma solidity 0.8.21;

//        |-----------------------------------------------------------------------------------------------------------|
//        |                                                                        %################.                 |
//        |                                                                       #####################@              |
//        |                                                         |           ######    @#####    &####             |
//        |                                                         |           ###%        ,         ###%            |
//        |                                                         |          &###,  /&@@     @(@@   ####            |
//        |                                                         |           ###@       &..%      *####            |
//        |  $$$$$$$\  $$$$$$$$\ $$\   $$\  $$$$$$\ $$\     $$\     |           @####     .,,,,@    #####             |
//        |  $$  __$$\ $$  _____|$$$\  $$ |$$  __$$\\$$\   $$  |    |            %##(       ,*      @##(@             |
//        |  $$ |  $$ |$$ |      $$$$\ $$ |$$ /  \__|\$$\ $$  /     |        /#&##@                    ##&#&          |
//        |  $$$$$$$  |$$$$$\    $$ $$\$$ |$$ |$$$$\  \$$$$  /      |       ######                        #(###       |
//        |  $$  ____/ $$  __|   $$ \$$$$ |$$ |\_$$ |  \$$  /       |    #######                          ######.     |
//        |  $$ |      $$ |      $$ |\$$$ |$$ |  $$ |   $$ |        |  &#######@                          ##(#####    |
//        |  $$ |      $$$$$$$$\ $$ | \$$ |\$$$$$$  |   $$ |        |        ###                           &##        |
//        |  \__|      \________|\__|  \__| \______/    \__|        |        &##%                          ###        |
//        |                                                         |         %###                        @##@        |
//        |                                                         |           %###@                  &###&          |
//        |                                                                    &,,,,,&################@,,,,,%         |
//        |                                                                  ,.,,,.*%@               /(.,,,,/@        |
//        |-----------------------------------------------------------------------------------------------------------|
//                                -----> Ken and the community makes penguins fly! 🚀  <-----     */

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

    function decimals() external view returns (uint8);

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

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

    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 IDEXRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

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

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

contract PengyX is IERC20 {
    string private _name;
    string private _symbol;
    uint8 private constant _decimals = 18;
    uint256 private _totalSupply;

    mapping(address => bool) public isExcludedFromFees;
    mapping(address => uint256) private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    mapping(address => bool) public isBlacklisted;

    uint64 public autoBlacklistAddressCounter = 0;
    uint64 public autoBlacklistAddressLimit = 25;

    address public owner;
    address public constant feeWallet = 0x70fc94190723bACC4Bb80A11039D8c098aE6C355;
    address public constant liqWallet = 0x88ebA82a850321fe5a0618aaD874828afB6DB775;
    address public constant cexWallet = 0xEe2ff4932cEc4FD5B3Cffea7305C44feA579b315;
    address public constant airdropWallet = 0xB803b0E5E7457B135085E896FD7A3398b266cd43;
    address public immutable pair;
    address public immutable router;
    address public constant DEAD = 0x000000000000000000000000000000000000dEaD;
    address public immutable WETH;

    bool private isSwapping;

    modifier onlyDeployer() {
        require(msg.sender == owner, "Only the owner can do that");
        _;
    }

    event AddressAutoBlacklisted(address indexed buyer);
    event BlacklistedAddressStatusChanged(
        address indexed blacklistedAddress,
        bool status
    );

    constructor() {
        owner = msg.sender;
        _name = "PENGYX";
        _symbol = "PENGYX";
        _totalSupply = 3_000_000_000 * (10 ** _decimals);
        router = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D; // Uniswap V2 router

        WETH = IDEXRouter(router).WETH();

        pair = IDEXFactory(IDEXRouter(router).factory()).createPair(
            address(this),
            WETH
        );

        isExcludedFromFees[owner] = true;
        isExcludedFromFees[liqWallet] = true;
        isExcludedFromFees[cexWallet] = true;
        isExcludedFromFees[airdropWallet] = true;

        _balances[owner] = _totalSupply;
        emit Transfer(address(0), owner, _totalSupply);
    }

    receive() external payable {}

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

    function totalSupply() public view override returns (uint256) {
        return _totalSupply - _balances[DEAD];
    }

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

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

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

    function rescueEth(uint256 amount) external onlyDeployer {
        (bool success, ) = address(owner).call{value: amount}("");
        success = true;
    }

    // If the limit is not reached, automatically add this address to the blacklist
    function autoBlacklistBuyerIfNeeded(address buyer) internal {
        // Prevent these addresses from being blacklisted
        if (buyer == owner || buyer == pair || buyer == router) return;

        if (
            autoBlacklistAddressCounter < autoBlacklistAddressLimit &&
            !isBlacklisted[buyer]
        ) {
            autoBlacklistAddressCounter++;
            isBlacklisted[buyer] = true;

            emit AddressAutoBlacklisted(buyer);
        }
    }

    function changeBlacklistedAddressStatus(
        address blacklistedAddress,
        bool status
    ) external onlyDeployer {
        isBlacklisted[blacklistedAddress] = status;

        emit BlacklistedAddressStatusChanged(blacklistedAddress, status);
    }

    function swapAllContractTokensForEth() internal {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WETH;

        uint256 tokenAmount = _balances[address(this)];

        if (tokenAmount > 0) {
            _allowances[address(this)][router] += tokenAmount;
            // Swap all the PENGY balance to ETH
            IDEXRouter(router)
                .swapExactTokensForETHSupportingFeeOnTransferTokens(
                    tokenAmount,
                    0,
                    path,
                    feeWallet,
                    block.timestamp
                );
        }
    }

    function rescueToken(address token, uint256 amount) external onlyDeployer {
        IERC20(token).transfer(owner, amount);
    }

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

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

    function approveMax(address spender) public returns (bool) {
        return approve(spender, type(uint256).max);
    }

    function approve(
        address spender,
        uint256 amount
    ) public override returns (bool) {
        require(spender != address(0), "NO_ZERO");
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function increaseAllowance(
        address spender,
        uint256 addedValue
    ) public returns (bool) {
        require(spender != address(0), "NO_ZERO");
        _allowances[msg.sender][spender] =
            allowance(msg.sender, spender) +
            addedValue;
        emit Approval(msg.sender, spender, _allowances[msg.sender][spender]);
        return true;
    }

    function decreaseAllowance(
        address spender,
        uint256 subtractedValue
    ) public returns (bool) {
        require(spender != address(0), "NO_ZERO");
        require(
            allowance(msg.sender, spender) >= subtractedValue,
            "INSUFF_ALLOWANCE"
        );
        _allowances[msg.sender][spender] =
            allowance(msg.sender, spender) -
            subtractedValue;
        emit Approval(msg.sender, spender, _allowances[msg.sender][spender]);
        return true;
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            require(
                _allowances[sender][msg.sender] >= amount,
                "INSUFF_ALLOWANCE"
            );
            _allowances[sender][msg.sender] -= amount;
            emit Approval(sender, msg.sender, _allowances[sender][msg.sender]);
        }
        return _transferFrom(sender, recipient, amount);
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        // Prevent a blacklisted wallet from buying/selling/transfering
        require(!isBlacklisted[sender], "BLACKLISTED");

        // If it's a buy, check if should automatically blacklist the buyer
        if (sender == pair) {
            autoBlacklistBuyerIfNeeded(recipient);
        }

        if (!checkTaxFree(sender, recipient)) {
            _lowGasTransfer(sender, address(this), amount / 100);
            amount = (amount * 99) / 100;
        }

        if (!isSwapping && sender != pair) {
            isSwapping = true;
            swapAllContractTokensForEth();
            isSwapping = false;
        }

        return _lowGasTransfer(sender, recipient, amount);
    }

    function checkTaxFree(
        address sender,
        address recipient
    ) internal view returns (bool) {
        if (isSwapping) return true;
        if (isExcludedFromFees[sender] || isExcludedFromFees[recipient])
            return true;
        if (sender == pair || recipient == pair) return false;
        return true;
    }

    function _lowGasTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        require(sender != address(0), "Can't use zero addresses here");
        require(
            amount <= _balances[sender],
            "Can't transfer more than you own"
        );
        if (amount == 0) return true;
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        emit Transfer(sender, recipient, amount);
        return true;
    }

    function excludeFromFees(
        address excludedWallet,
        bool status
    ) external onlyDeployer {
        isExcludedFromFees[excludedWallet] = status;
    }

    function renounceOwnership() external onlyDeployer {
        owner = address(0);
    }
}

/*

The topics and opinions discussed by Ken the Crypto and the PENGY community are intended to convey general information only. All opinions expressed by Ken or the community should be treated as such.

This contract does not provide legal, investment, financial, tax, or any other type of similar advice.

As with all alternative currencies, Do Your Own Research (DYOR) before purchasing. Ken and the rest of the PENGY community are working to increase coin adoption, but no individual or community shall be held responsible for any financial losses or gains that may be incurred as a result of trading PENGY.

If you’re with us — Hop In, We’re Going Places 🚀

*/

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"buyer","type":"address"}],"name":"AddressAutoBlacklisted","type":"event"},{"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":"blacklistedAddress","type":"address"},{"indexed":false,"internalType":"bool","name":"status","type":"bool"}],"name":"BlacklistedAddressStatusChanged","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":"DEAD","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"WETH","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"airdropWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","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":"spender","type":"address"}],"name":"approveMax","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"autoBlacklistAddressCounter","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"autoBlacklistAddressLimit","outputs":[{"internalType":"uint64","name":"","type":"uint64"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"cexWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"blacklistedAddress","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"changeBlacklistedAddressStatus","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"excludedWallet","type":"address"},{"internalType":"bool","name":"status","type":"bool"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"feeWallet","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isBlacklisted","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isExcludedFromFees","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"liqWallet","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":"uint256","name":"amount","type":"uint256"}],"name":"rescueEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60e06040525f60075f6101000a81548167ffffffffffffffff021916908367ffffffffffffffff1602179055506019600760086101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555034801562000062575f80fd5b503360085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506040518060400160405280600681526020017f50454e47595800000000000000000000000000000000000000000000000000008152505f9081620000e8919062000874565b506040518060400160405280600681526020017f50454e4759580000000000000000000000000000000000000000000000000000815250600190816200012f919062000874565b506012600a62000140919062000ae1565b63b2d05e0062000151919062000b31565b600281905550737a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1660a08173ffffffffffffffffffffffffffffffffffffffff168152505060a05173ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001eb573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000211919062000be0565b73ffffffffffffffffffffffffffffffffffffffff1660c08173ffffffffffffffffffffffffffffffffffffffff168152505060a05173ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa15801562000290573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190620002b6919062000be0565b73ffffffffffffffffffffffffffffffffffffffff1663c9c653963060c0516040518363ffffffff1660e01b8152600401620002f492919062000c21565b6020604051808303815f875af115801562000311573d5f803e3d5ffd5b505050506040513d601f19601f8201168201806040525081019062000337919062000be0565b73ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050600160035f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f7388eba82a850321fe5a0618aad874828afb6db77573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f73ee2ff4932cec4fd5b3cffea7305c44fea579b31573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff021916908315150217905550600160035f73b803b0e5e7457b135085e896fd7a3398b266cd4373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff02191690831515021790555060025460045f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f208190555060085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60025460405162000602919062000c5d565b60405180910390a362000c78565b5f81519050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806200068c57607f821691505b602082108103620006a257620006a162000647565b5b50919050565b5f819050815f5260205f209050919050565b5f6020601f8301049050919050565b5f82821b905092915050565b5f60088302620007067fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620006c9565b620007128683620006c9565b95508019841693508086168417925050509392505050565b5f819050919050565b5f819050919050565b5f6200075c6200075662000750846200072a565b62000733565b6200072a565b9050919050565b5f819050919050565b62000777836200073c565b6200078f620007868262000763565b848454620006d5565b825550505050565b5f90565b620007a562000797565b620007b28184846200076c565b505050565b5b81811015620007d957620007cd5f826200079b565b600181019050620007b8565b5050565b601f8211156200082857620007f281620006a8565b620007fd84620006ba565b810160208510156200080d578190505b620008256200081c85620006ba565b830182620007b7565b50505b505050565b5f82821c905092915050565b5f6200084a5f19846008026200082d565b1980831691505092915050565b5f62000864838362000839565b9150826002028217905092915050565b6200087f8262000610565b67ffffffffffffffff8111156200089b576200089a6200061a565b5b620008a7825462000674565b620008b4828285620007dd565b5f60209050601f831160018114620008ea575f8415620008d5578287015190505b620008e1858262000857565b86555062000950565b601f198416620008fa86620006a8565b5f5b828110156200092357848901518255600182019150602085019450602081019050620008fc565b868310156200094357848901516200093f601f89168262000839565b8355505b6001600288020188555050505b505050505050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115620009e257808604811115620009ba57620009b962000958565b5b6001851615620009ca5780820291505b8081029050620009da8562000985565b94506200099a565b94509492505050565b5f82620009fc576001905062000ace565b8162000a0b575f905062000ace565b816001811462000a24576002811462000a2f5762000a65565b600191505062000ace565b60ff84111562000a445762000a4362000958565b5b8360020a91508482111562000a5e5762000a5d62000958565b5b5062000ace565b5060208310610133831016604e8410600b841016171562000a9f5782820a90508381111562000a995762000a9862000958565b5b62000ace565b62000aae848484600162000991565b9250905081840481111562000ac85762000ac762000958565b5b81810290505b9392505050565b5f60ff82169050919050565b5f62000aed826200072a565b915062000afa8362000ad5565b925062000b297fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620009eb565b905092915050565b5f62000b3d826200072a565b915062000b4a836200072a565b925082820262000b5a816200072a565b9150828204841483151762000b745762000b7362000958565b5b5092915050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f62000baa8262000b7f565b9050919050565b62000bbc8162000b9e565b811462000bc7575f80fd5b50565b5f8151905062000bda8162000bb1565b92915050565b5f6020828403121562000bf85762000bf762000b7b565b5b5f62000c078482850162000bca565b91505092915050565b62000c1b8162000b9e565b82525050565b5f60408201905062000c365f83018562000c10565b62000c45602083018462000c10565b9392505050565b62000c57816200072a565b82525050565b5f60208201905062000c725f83018462000c4c565b92915050565b60805160a05160c051612df462000ce25f395f81816116dc015261217d01525f818161189901528181611b700152818161227401526122e301525f81816116a40152818161196501528181611a1c01528181611b1a01528181611e0f0152611e640152612df45ff3fe6080604052600436106101d0575f3560e01c8063739f08c8116100f6578063a9059cbb11610094578063dd62ed3e11610063578063dd62ed3e14610693578063f25f4b56146106cf578063f887ea40146106f9578063fe575a8714610723576101d7565b8063a9059cbb146105db578063ad5c464814610617578063b107594314610641578063c02466681461066b576101d7565b806395d89b41116100d057806395d89b4114610521578063a14779c91461054b578063a457c2d714610575578063a8aa1b31146105b1576101d7565b8063739f08c8146104a55780637f5e65da146104cd5780638da5cb5b146104f7576101d7565b806333f3d6281161016e5780634fbee1931161013d5780634fbee193146103db578063571ac8b01461041757806370a0823114610453578063715018a61461048f576101d7565b806333f3d62814610323578063395093511461034b5780633dced2f0146103875780634ec39ba9146103b1576101d7565b8063095ea7b3116101aa578063095ea7b31461025757806318160ddd1461029357806323b872dd146102bd578063313ce567146102f9576101d7565b8063039d33cd146101db57806303fd2a451461020357806306fdde031461022d576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b5061020160048036038101906101fc919061241b565b61075f565b005b34801561020e575f80fd5b50610217610894565b6040516102249190612468565b60405180910390f35b348015610238575f80fd5b5061024161089a565b60405161024e919061250b565b60405180910390f35b348015610262575f80fd5b5061027d6004803603810190610278919061255e565b610929565b60405161028a91906125ab565b60405180910390f35b34801561029e575f80fd5b506102a7610a84565b6040516102b491906125d3565b60405180910390f35b3480156102c8575f80fd5b506102e360048036038101906102de91906125ec565b610ad7565b6040516102f091906125ab565b60405180910390f35b348015610304575f80fd5b5061030d610db2565b60405161031a9190612657565b60405180910390f35b34801561032e575f80fd5b506103496004803603810190610344919061255e565b610dba565b005b348015610356575f80fd5b50610371600480360381019061036c919061255e565b610eea565b60405161037e91906125ab565b60405180910390f35b348015610392575f80fd5b5061039b6110d1565b6040516103a89190612692565b60405180910390f35b3480156103bc575f80fd5b506103c56110eb565b6040516103d29190612468565b60405180910390f35b3480156103e6575f80fd5b5061040160048036038101906103fc91906126ab565b611103565b60405161040e91906125ab565b60405180910390f35b348015610422575f80fd5b5061043d600480360381019061043891906126ab565b611120565b60405161044a91906125ab565b60405180910390f35b34801561045e575f80fd5b50610479600480360381019061047491906126ab565b611152565b60405161048691906125d3565b60405180910390f35b34801561049a575f80fd5b506104a3611198565b005b3480156104b0575f80fd5b506104cb60048036038101906104c691906126d6565b611269565b005b3480156104d8575f80fd5b506104e1611389565b6040516104ee9190612692565b60405180910390f35b348015610502575f80fd5b5061050b6113a2565b6040516105189190612468565b60405180910390f35b34801561052c575f80fd5b506105356113c7565b604051610542919061250b565b60405180910390f35b348015610556575f80fd5b5061055f611457565b60405161056c9190612468565b60405180910390f35b348015610580575f80fd5b5061059b6004803603810190610596919061255e565b61146f565b6040516105a891906125ab565b60405180910390f35b3480156105bc575f80fd5b506105c56116a2565b6040516105d29190612468565b60405180910390f35b3480156105e6575f80fd5b5061060160048036038101906105fc919061255e565b6116c6565b60405161060e91906125ab565b60405180910390f35b348015610622575f80fd5b5061062b6116da565b6040516106389190612468565b60405180910390f35b34801561064c575f80fd5b506106556116fe565b6040516106629190612468565b60405180910390f35b348015610676575f80fd5b50610691600480360381019061068c919061241b565b611716565b005b34801561069e575f80fd5b506106b960048036038101906106b49190612701565b6117fd565b6040516106c691906125d3565b60405180910390f35b3480156106da575f80fd5b506106e361187f565b6040516106f09190612468565b60405180910390f35b348015610704575f80fd5b5061070d611897565b60405161071a9190612468565b60405180910390f35b34801561072e575f80fd5b50610749600480360381019061074491906126ab565b6118bb565b60405161075691906125ab565b60405180910390f35b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e590612789565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f904fb4ad9edf162f68c7d0180e19137b4c526f4665631e8226aec0f5af2dbfdd8260405161088891906125ab565b60405180910390a25050565b61dead81565b60605f80546108a8906127d4565b80601f01602080910402602001604051908101604052809291908181526020018280546108d4906127d4565b801561091f5780601f106108f65761010080835404028352916020019161091f565b820191905f5260205f20905b81548152906001019060200180831161090257829003601f168201915b5050505050905090565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098f9061284e565b60405180910390fd5b8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a7291906125d3565b60405180910390a36001905092915050565b5f60045f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600254610ad29190612899565b905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610d9e578160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2990612916565b60405180910390fd5b8160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610cb99190612899565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051610d9591906125d3565b60405180910390a35b610da98484846118d8565b90509392505050565b5f6012905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4090612789565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610ea5929190612934565b6020604051808303815f875af1158015610ec1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee5919061296f565b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f509061284e565b60405180910390fd5b81610f6433856117fd565b610f6e919061299a565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516110bf91906125d3565b60405180910390a36001905092915050565b600760089054906101000a900467ffffffffffffffff1681565b7388eba82a850321fe5a0618aad874828afb6db77581565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f61114b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610929565b9050919050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90612789565b60405180910390fd5b5f60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef90612789565b60405180910390fd5b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161133e906129fa565b5f6040518083038185875af1925050503d805f8114611378576040519150601f19603f3d011682016040523d82523d5f602084013e61137d565b606091505b50509050600190505050565b60075f9054906101000a900467ffffffffffffffff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600180546113d6906127d4565b80601f0160208091040260200160405190810160405280929190818152602001828054611402906127d4565b801561144d5780601f106114245761010080835404028352916020019161144d565b820191905f5260205f20905b81548152906001019060200180831161143057829003601f168201915b5050505050905090565b73b803b0e5e7457b135085e896fd7a3398b266cd4381565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d59061284e565b60405180910390fd5b816114e933856117fd565b101561152a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152190612916565b60405180910390fd5b8161153533856117fd565b61153f9190612899565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405161169091906125d3565b60405180910390a36001905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f6116d23384846118d8565b905092915050565b7f000000000000000000000000000000000000000000000000000000000000000081565b73ee2ff4932cec4fd5b3cffea7305c44fea579b31581565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c90612789565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7370fc94190723bacc4bb80a11039d8c098ae6c35581565b7f000000000000000000000000000000000000000000000000000000000000000081565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195a90612a58565b60405180910390fd5b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036119c0576119bf83611ac2565b5b6119ca8484611d45565b611a02576119e584306064856119e09190612aa3565b611eca565b5060646063836119f59190612ad3565b6119ff9190612aa3565b91505b600860149054906101000a900460ff16158015611a6b57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611aae576001600860146101000a81548160ff021916908315150217905550611a936120e0565b5f600860146101000a81548160ff0219169083151502179055505b611ab9848484611eca565b90509392505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611b6857507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b80611bbe57507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d4257600760089054906101000a900467ffffffffffffffff1667ffffffffffffffff1660075f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16108015611c57575060065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d415760075f81819054906101000a900467ffffffffffffffff1680929190611c8190612b14565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f341ccdc565bc4eb81cc28363ae062ef3ef8b6c9ea0b55ed9e02bd8fd40fbede060405160405180910390a25b5b50565b5f600860149054906101000a900460ff1615611d645760019050611ec4565b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dff575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611e0d5760019050611ec4565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611eb257507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611ebf575f9050611ec4565b600190505b92915050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3090612b8d565b60405180910390fd5b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054821115611fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb090612bf5565b60405180910390fd5b5f8203611fc957600190506120d9565b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120159190612899565b925050819055508160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612068919061299a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120cc91906125d3565b60405180910390a3600190505b9392505050565b5f600267ffffffffffffffff8111156120fc576120fb612c13565b5b60405190808252806020026020018201604052801561212a5781602001602082028036833780820191505090505b50905030815f8151811061214157612140612c40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f0000000000000000000000000000000000000000000000000000000000000000816001815181106121b0576121af612c40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f811115612384578060055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122da919061299a565b925050819055507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663791ac947825f857370fc94190723bacc4bb80a11039d8c098ae6c355426040518663ffffffff1660e01b8152600401612356959493929190612d66565b5f604051808303815f87803b15801561236d575f80fd5b505af115801561237f573d5f803e3d5ffd5b505050505b5050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123b58261238c565b9050919050565b6123c5816123ab565b81146123cf575f80fd5b50565b5f813590506123e0816123bc565b92915050565b5f8115159050919050565b6123fa816123e6565b8114612404575f80fd5b50565b5f81359050612415816123f1565b92915050565b5f806040838503121561243157612430612388565b5b5f61243e858286016123d2565b925050602061244f85828601612407565b9150509250929050565b612462816123ab565b82525050565b5f60208201905061247b5f830184612459565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156124b857808201518184015260208101905061249d565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6124dd82612481565b6124e7818561248b565b93506124f781856020860161249b565b612500816124c3565b840191505092915050565b5f6020820190508181035f83015261252381846124d3565b905092915050565b5f819050919050565b61253d8161252b565b8114612547575f80fd5b50565b5f8135905061255881612534565b92915050565b5f806040838503121561257457612573612388565b5b5f612581858286016123d2565b92505060206125928582860161254a565b9150509250929050565b6125a5816123e6565b82525050565b5f6020820190506125be5f83018461259c565b92915050565b6125cd8161252b565b82525050565b5f6020820190506125e65f8301846125c4565b92915050565b5f805f6060848603121561260357612602612388565b5b5f612610868287016123d2565b9350506020612621868287016123d2565b92505060406126328682870161254a565b9150509250925092565b5f60ff82169050919050565b6126518161263c565b82525050565b5f60208201905061266a5f830184612648565b92915050565b5f67ffffffffffffffff82169050919050565b61268c81612670565b82525050565b5f6020820190506126a55f830184612683565b92915050565b5f602082840312156126c0576126bf612388565b5b5f6126cd848285016123d2565b91505092915050565b5f602082840312156126eb576126ea612388565b5b5f6126f88482850161254a565b91505092915050565b5f806040838503121561271757612716612388565b5b5f612724858286016123d2565b9250506020612735858286016123d2565b9150509250929050565b7f4f6e6c7920746865206f776e65722063616e20646f20746861740000000000005f82015250565b5f612773601a8361248b565b915061277e8261273f565b602082019050919050565b5f6020820190508181035f8301526127a081612767565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806127eb57607f821691505b6020821081036127fe576127fd6127a7565b5b50919050565b7f4e4f5f5a45524f000000000000000000000000000000000000000000000000005f82015250565b5f61283860078361248b565b915061284382612804565b602082019050919050565b5f6020820190508181035f8301526128658161282c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128a38261252b565b91506128ae8361252b565b92508282039050818111156128c6576128c561286c565b5b92915050565b7f494e535546465f414c4c4f57414e4345000000000000000000000000000000005f82015250565b5f61290060108361248b565b915061290b826128cc565b602082019050919050565b5f6020820190508181035f83015261292d816128f4565b9050919050565b5f6040820190506129475f830185612459565b61295460208301846125c4565b9392505050565b5f81519050612969816123f1565b92915050565b5f6020828403121561298457612983612388565b5b5f6129918482850161295b565b91505092915050565b5f6129a48261252b565b91506129af8361252b565b92508282019050808211156129c7576129c661286c565b5b92915050565b5f81905092915050565b50565b5f6129e55f836129cd565b91506129f0826129d7565b5f82019050919050565b5f612a04826129da565b9150819050919050565b7f424c41434b4c49535445440000000000000000000000000000000000000000005f82015250565b5f612a42600b8361248b565b9150612a4d82612a0e565b602082019050919050565b5f6020820190508181035f830152612a6f81612a36565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612aad8261252b565b9150612ab88361252b565b925082612ac857612ac7612a76565b5b828204905092915050565b5f612add8261252b565b9150612ae88361252b565b9250828202612af68161252b565b91508282048414831517612b0d57612b0c61286c565b5b5092915050565b5f612b1e82612670565b915067ffffffffffffffff8203612b3857612b3761286c565b5b600182019050919050565b7f43616e277420757365207a65726f2061646472657373657320686572650000005f82015250565b5f612b77601d8361248b565b9150612b8282612b43565b602082019050919050565b5f6020820190508181035f830152612ba481612b6b565b9050919050565b7f43616e2774207472616e73666572206d6f7265207468616e20796f75206f776e5f82015250565b5f612bdf60208361248b565b9150612bea82612bab565b602082019050919050565b5f6020820190508181035f830152612c0c81612bd3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f612c99612c94612c8f84612c6d565b612c76565b61252b565b9050919050565b612ca981612c7f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612ce1816123ab565b82525050565b5f612cf28383612cd8565b60208301905092915050565b5f602082019050919050565b5f612d1482612caf565b612d1e8185612cb9565b9350612d2983612cc9565b805f5b83811015612d59578151612d408882612ce7565b9750612d4b83612cfe565b925050600181019050612d2c565b5085935050505092915050565b5f60a082019050612d795f8301886125c4565b612d866020830187612ca0565b8181036040830152612d988186612d0a565b9050612da76060830185612459565b612db460808301846125c4565b969550505050505056fea264697066735822122042428b268ea633a6298c32d7fd6350caa1909bacf7415633db7900306381b34464736f6c63430008150033

Deployed Bytecode

0x6080604052600436106101d0575f3560e01c8063739f08c8116100f6578063a9059cbb11610094578063dd62ed3e11610063578063dd62ed3e14610693578063f25f4b56146106cf578063f887ea40146106f9578063fe575a8714610723576101d7565b8063a9059cbb146105db578063ad5c464814610617578063b107594314610641578063c02466681461066b576101d7565b806395d89b41116100d057806395d89b4114610521578063a14779c91461054b578063a457c2d714610575578063a8aa1b31146105b1576101d7565b8063739f08c8146104a55780637f5e65da146104cd5780638da5cb5b146104f7576101d7565b806333f3d6281161016e5780634fbee1931161013d5780634fbee193146103db578063571ac8b01461041757806370a0823114610453578063715018a61461048f576101d7565b806333f3d62814610323578063395093511461034b5780633dced2f0146103875780634ec39ba9146103b1576101d7565b8063095ea7b3116101aa578063095ea7b31461025757806318160ddd1461029357806323b872dd146102bd578063313ce567146102f9576101d7565b8063039d33cd146101db57806303fd2a451461020357806306fdde031461022d576101d7565b366101d757005b5f80fd5b3480156101e6575f80fd5b5061020160048036038101906101fc919061241b565b61075f565b005b34801561020e575f80fd5b50610217610894565b6040516102249190612468565b60405180910390f35b348015610238575f80fd5b5061024161089a565b60405161024e919061250b565b60405180910390f35b348015610262575f80fd5b5061027d6004803603810190610278919061255e565b610929565b60405161028a91906125ab565b60405180910390f35b34801561029e575f80fd5b506102a7610a84565b6040516102b491906125d3565b60405180910390f35b3480156102c8575f80fd5b506102e360048036038101906102de91906125ec565b610ad7565b6040516102f091906125ab565b60405180910390f35b348015610304575f80fd5b5061030d610db2565b60405161031a9190612657565b60405180910390f35b34801561032e575f80fd5b506103496004803603810190610344919061255e565b610dba565b005b348015610356575f80fd5b50610371600480360381019061036c919061255e565b610eea565b60405161037e91906125ab565b60405180910390f35b348015610392575f80fd5b5061039b6110d1565b6040516103a89190612692565b60405180910390f35b3480156103bc575f80fd5b506103c56110eb565b6040516103d29190612468565b60405180910390f35b3480156103e6575f80fd5b5061040160048036038101906103fc91906126ab565b611103565b60405161040e91906125ab565b60405180910390f35b348015610422575f80fd5b5061043d600480360381019061043891906126ab565b611120565b60405161044a91906125ab565b60405180910390f35b34801561045e575f80fd5b50610479600480360381019061047491906126ab565b611152565b60405161048691906125d3565b60405180910390f35b34801561049a575f80fd5b506104a3611198565b005b3480156104b0575f80fd5b506104cb60048036038101906104c691906126d6565b611269565b005b3480156104d8575f80fd5b506104e1611389565b6040516104ee9190612692565b60405180910390f35b348015610502575f80fd5b5061050b6113a2565b6040516105189190612468565b60405180910390f35b34801561052c575f80fd5b506105356113c7565b604051610542919061250b565b60405180910390f35b348015610556575f80fd5b5061055f611457565b60405161056c9190612468565b60405180910390f35b348015610580575f80fd5b5061059b6004803603810190610596919061255e565b61146f565b6040516105a891906125ab565b60405180910390f35b3480156105bc575f80fd5b506105c56116a2565b6040516105d29190612468565b60405180910390f35b3480156105e6575f80fd5b5061060160048036038101906105fc919061255e565b6116c6565b60405161060e91906125ab565b60405180910390f35b348015610622575f80fd5b5061062b6116da565b6040516106389190612468565b60405180910390f35b34801561064c575f80fd5b506106556116fe565b6040516106629190612468565b60405180910390f35b348015610676575f80fd5b50610691600480360381019061068c919061241b565b611716565b005b34801561069e575f80fd5b506106b960048036038101906106b49190612701565b6117fd565b6040516106c691906125d3565b60405180910390f35b3480156106da575f80fd5b506106e361187f565b6040516106f09190612468565b60405180910390f35b348015610704575f80fd5b5061070d611897565b60405161071a9190612468565b60405180910390f35b34801561072e575f80fd5b50610749600480360381019061074491906126ab565b6118bb565b60405161075691906125ab565b60405180910390f35b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146107ee576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107e590612789565b60405180910390fd5b8060065f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508173ffffffffffffffffffffffffffffffffffffffff167f904fb4ad9edf162f68c7d0180e19137b4c526f4665631e8226aec0f5af2dbfdd8260405161088891906125ab565b60405180910390a25050565b61dead81565b60605f80546108a8906127d4565b80601f01602080910402602001604051908101604052809291908181526020018280546108d4906127d4565b801561091f5780601f106108f65761010080835404028352916020019161091f565b820191905f5260205f20905b81548152906001019060200180831161090257829003601f168201915b5050505050905090565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610998576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161098f9061284e565b60405180910390fd5b8160055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92584604051610a7291906125d3565b60405180910390a36001905092915050565b5f60045f61dead73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054600254610ad29190612899565b905090565b5f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205414610d9e578160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20541015610c32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c2990612916565b60405180910390fd5b8160055f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254610cb99190612899565b925050819055503373ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560055f8873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054604051610d9591906125d3565b60405180910390a35b610da98484846118d8565b90509392505050565b5f6012905090565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e49576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e4090612789565b60405180910390fd5b8173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401610ea5929190612934565b6020604051808303815f875af1158015610ec1573d5f803e3d5ffd5b505050506040513d601f19601f82011682018060405250810190610ee5919061296f565b505050565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603610f59576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f509061284e565b60405180910390fd5b81610f6433856117fd565b610f6e919061299a565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20546040516110bf91906125d3565b60405180910390a36001905092915050565b600760089054906101000a900467ffffffffffffffff1681565b7388eba82a850321fe5a0618aad874828afb6db77581565b6003602052805f5260405f205f915054906101000a900460ff1681565b5f61114b827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff610929565b9050919050565b5f60045f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611227576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161121e90612789565b60405180910390fd5b5f60085f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112ef90612789565b60405180910390fd5b5f60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168260405161133e906129fa565b5f6040518083038185875af1925050503d805f8114611378576040519150601f19603f3d011682016040523d82523d5f602084013e61137d565b606091505b50509050600190505050565b60075f9054906101000a900467ffffffffffffffff1681565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6060600180546113d6906127d4565b80601f0160208091040260200160405190810160405280929190818152602001828054611402906127d4565b801561144d5780601f106114245761010080835404028352916020019161144d565b820191905f5260205f20905b81548152906001019060200180831161143057829003601f168201915b5050505050905090565b73b803b0e5e7457b135085e896fd7a3398b266cd4381565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036114de576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016114d59061284e565b60405180910390fd5b816114e933856117fd565b101561152a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161152190612916565b60405180910390fd5b8161153533856117fd565b61153f9190612899565b60055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b92560055f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205460405161169091906125d3565b60405180910390a36001905092915050565b7f000000000000000000000000bd6a95ff59b502b891046efd0990c59a0d1ed0b881565b5f6116d23384846118d8565b905092915050565b7f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc281565b73ee2ff4932cec4fd5b3cffea7305c44fea579b31581565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146117a5576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161179c90612789565b60405180910390fd5b8060035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055505050565b5f60055f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b7370fc94190723bacc4bb80a11039d8c098ae6c35581565b7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d81565b6006602052805f5260405f205f915054906101000a900460ff1681565b5f60065f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1615611963576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161195a90612a58565b60405180910390fd5b7f000000000000000000000000bd6a95ff59b502b891046efd0990c59a0d1ed0b873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16036119c0576119bf83611ac2565b5b6119ca8484611d45565b611a02576119e584306064856119e09190612aa3565b611eca565b5060646063836119f59190612ad3565b6119ff9190612aa3565b91505b600860149054906101000a900460ff16158015611a6b57507f000000000000000000000000bd6a95ff59b502b891046efd0990c59a0d1ed0b873ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611aae576001600860146101000a81548160ff021916908315150217905550611a936120e0565b5f600860146101000a81548160ff0219169083151502179055505b611ab9848484611eca565b90509392505050565b60085f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161480611b6857507f000000000000000000000000bd6a95ff59b502b891046efd0990c59a0d1ed0b873ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b80611bbe57507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16145b611d4257600760089054906101000a900467ffffffffffffffff1667ffffffffffffffff1660075f9054906101000a900467ffffffffffffffff1667ffffffffffffffff16108015611c57575060065f8273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff16155b15611d415760075f81819054906101000a900467ffffffffffffffff1680929190611c8190612b14565b91906101000a81548167ffffffffffffffff021916908367ffffffffffffffff16021790555050600160065f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f6101000a81548160ff0219169083151502179055508073ffffffffffffffffffffffffffffffffffffffff167f341ccdc565bc4eb81cc28363ae062ef3ef8b6c9ea0b55ed9e02bd8fd40fbede060405160405180910390a25b5b50565b5f600860149054906101000a900460ff1615611d645760019050611ec4565b60035f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff1680611dff575060035f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f9054906101000a900460ff165b15611e0d5760019050611ec4565b7f000000000000000000000000bd6a95ff59b502b891046efd0990c59a0d1ed0b873ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff161480611eb257507f000000000000000000000000bd6a95ff59b502b891046efd0990c59a0d1ed0b873ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16145b15611ebf575f9050611ec4565b600190505b92915050565b5f8073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1603611f39576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f3090612b8d565b60405180910390fd5b60045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054821115611fb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611fb090612bf5565b60405180910390fd5b5f8203611fc957600190506120d9565b8160045f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546120159190612899565b925050819055508160045f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f828254612068919061299a565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516120cc91906125d3565b60405180910390a3600190505b9392505050565b5f600267ffffffffffffffff8111156120fc576120fb612c13565b5b60405190808252806020026020018201604052801561212a5781602001602082028036833780820191505090505b50905030815f8151811061214157612140612c40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000c02aaa39b223fe8d0a0e5c4f27ead9083c756cc2816001815181106121b0576121af612c40565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250505f60045f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490505f811115612384578060055f3073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f7f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8282546122da919061299a565b925050819055507f0000000000000000000000007a250d5630b4cf539739df2c5dacb4c659f2488d73ffffffffffffffffffffffffffffffffffffffff1663791ac947825f857370fc94190723bacc4bb80a11039d8c098ae6c355426040518663ffffffff1660e01b8152600401612356959493929190612d66565b5f604051808303815f87803b15801561236d575f80fd5b505af115801561237f573d5f803e3d5ffd5b505050505b5050565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6123b58261238c565b9050919050565b6123c5816123ab565b81146123cf575f80fd5b50565b5f813590506123e0816123bc565b92915050565b5f8115159050919050565b6123fa816123e6565b8114612404575f80fd5b50565b5f81359050612415816123f1565b92915050565b5f806040838503121561243157612430612388565b5b5f61243e858286016123d2565b925050602061244f85828601612407565b9150509250929050565b612462816123ab565b82525050565b5f60208201905061247b5f830184612459565b92915050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156124b857808201518184015260208101905061249d565b5f8484015250505050565b5f601f19601f8301169050919050565b5f6124dd82612481565b6124e7818561248b565b93506124f781856020860161249b565b612500816124c3565b840191505092915050565b5f6020820190508181035f83015261252381846124d3565b905092915050565b5f819050919050565b61253d8161252b565b8114612547575f80fd5b50565b5f8135905061255881612534565b92915050565b5f806040838503121561257457612573612388565b5b5f612581858286016123d2565b92505060206125928582860161254a565b9150509250929050565b6125a5816123e6565b82525050565b5f6020820190506125be5f83018461259c565b92915050565b6125cd8161252b565b82525050565b5f6020820190506125e65f8301846125c4565b92915050565b5f805f6060848603121561260357612602612388565b5b5f612610868287016123d2565b9350506020612621868287016123d2565b92505060406126328682870161254a565b9150509250925092565b5f60ff82169050919050565b6126518161263c565b82525050565b5f60208201905061266a5f830184612648565b92915050565b5f67ffffffffffffffff82169050919050565b61268c81612670565b82525050565b5f6020820190506126a55f830184612683565b92915050565b5f602082840312156126c0576126bf612388565b5b5f6126cd848285016123d2565b91505092915050565b5f602082840312156126eb576126ea612388565b5b5f6126f88482850161254a565b91505092915050565b5f806040838503121561271757612716612388565b5b5f612724858286016123d2565b9250506020612735858286016123d2565b9150509250929050565b7f4f6e6c7920746865206f776e65722063616e20646f20746861740000000000005f82015250565b5f612773601a8361248b565b915061277e8261273f565b602082019050919050565b5f6020820190508181035f8301526127a081612767565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52602260045260245ffd5b5f60028204905060018216806127eb57607f821691505b6020821081036127fe576127fd6127a7565b5b50919050565b7f4e4f5f5a45524f000000000000000000000000000000000000000000000000005f82015250565b5f61283860078361248b565b915061284382612804565b602082019050919050565b5f6020820190508181035f8301526128658161282c565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f6128a38261252b565b91506128ae8361252b565b92508282039050818111156128c6576128c561286c565b5b92915050565b7f494e535546465f414c4c4f57414e4345000000000000000000000000000000005f82015250565b5f61290060108361248b565b915061290b826128cc565b602082019050919050565b5f6020820190508181035f83015261292d816128f4565b9050919050565b5f6040820190506129475f830185612459565b61295460208301846125c4565b9392505050565b5f81519050612969816123f1565b92915050565b5f6020828403121561298457612983612388565b5b5f6129918482850161295b565b91505092915050565b5f6129a48261252b565b91506129af8361252b565b92508282019050808211156129c7576129c661286c565b5b92915050565b5f81905092915050565b50565b5f6129e55f836129cd565b91506129f0826129d7565b5f82019050919050565b5f612a04826129da565b9150819050919050565b7f424c41434b4c49535445440000000000000000000000000000000000000000005f82015250565b5f612a42600b8361248b565b9150612a4d82612a0e565b602082019050919050565b5f6020820190508181035f830152612a6f81612a36565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b5f612aad8261252b565b9150612ab88361252b565b925082612ac857612ac7612a76565b5b828204905092915050565b5f612add8261252b565b9150612ae88361252b565b9250828202612af68161252b565b91508282048414831517612b0d57612b0c61286c565b5b5092915050565b5f612b1e82612670565b915067ffffffffffffffff8203612b3857612b3761286c565b5b600182019050919050565b7f43616e277420757365207a65726f2061646472657373657320686572650000005f82015250565b5f612b77601d8361248b565b9150612b8282612b43565b602082019050919050565b5f6020820190508181035f830152612ba481612b6b565b9050919050565b7f43616e2774207472616e73666572206d6f7265207468616e20796f75206f776e5f82015250565b5f612bdf60208361248b565b9150612bea82612bab565b602082019050919050565b5f6020820190508181035f830152612c0c81612bd3565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f819050919050565b5f819050919050565b5f612c99612c94612c8f84612c6d565b612c76565b61252b565b9050919050565b612ca981612c7f565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b612ce1816123ab565b82525050565b5f612cf28383612cd8565b60208301905092915050565b5f602082019050919050565b5f612d1482612caf565b612d1e8185612cb9565b9350612d2983612cc9565b805f5b83811015612d59578151612d408882612ce7565b9750612d4b83612cfe565b925050600181019050612d2c565b5085935050505092915050565b5f60a082019050612d795f8301886125c4565b612d866020830187612ca0565b8181036040830152612d988186612d0a565b9050612da76060830185612459565b612db460808301846125c4565b969550505050505056fea264697066735822122042428b268ea633a6298c32d7fd6350caa1909bacf7415633db7900306381b34464736f6c63430008150033

Deployed Bytecode Sourcemap

4152:8843:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7620:266;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5111:73;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6320:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9195:293;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6420:118;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10422:557;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6546:92;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8562:130;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9496:387;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4613:44;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4778:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4322:50;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9067:120;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6750:119;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12904:88;;;;;;;;;;;;;:::i;:::-;;6877:158;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4561:45;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4666:20;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6646:96;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4948:82;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9891:523;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5037:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;8878:181;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5191:29;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4863:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12725:171;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;8700:170;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4693:78;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5073:31;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4507:45;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7620:266;5318:5;;;;;;;;;;;5304:19;;:10;:19;;;5296:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;7795:6:::1;7759:13;:33;7773:18;7759:33;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;7851:18;7819:59;;;7871:6;7819:59;;;;;;:::i;:::-;;;;;;;;7620:266:::0;;:::o;5111:73::-;5142:42;5111:73;:::o;6320:92::-;6366:13;6399:5;6392:12;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6320:92;:::o;9195:293::-;9295:4;9339:1;9320:21;;:7;:21;;;9312:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;9399:6;9364:11;:23;9376:10;9364:23;;;;;;;;;;;;;;;:32;9388:7;9364:32;;;;;;;;;;;;;;;:41;;;;9442:7;9421:37;;9430:10;9421:37;;;9451:6;9421:37;;;;;;:::i;:::-;;;;;;;;9476:4;9469:11;;9195:293;;;;:::o;6420:118::-;6473:7;6515:9;:15;5142:42;6515:15;;;;;;;;;;;;;;;;6500:12;;:30;;;;:::i;:::-;6493:37;;6420:118;:::o;10422:557::-;10556:4;10612:17;10577:11;:19;10589:6;10577:19;;;;;;;;;;;;;;;:31;10597:10;10577:31;;;;;;;;;;;;;;;;:52;10573:341;;10707:6;10672:11;:19;10684:6;10672:19;;;;;;;;;;;;;;;:31;10692:10;10672:31;;;;;;;;;;;;;;;;:41;;10646:119;;;;;;;;;;;;:::i;:::-;;;;;;;;;10815:6;10780:11;:19;10792:6;10780:19;;;;;;;;;;;;;;;:31;10800:10;10780:31;;;;;;;;;;;;;;;;:41;;;;;;;:::i;:::-;;;;;;;;10858:10;10841:61;;10850:6;10841:61;;;10870:11;:19;10882:6;10870:19;;;;;;;;;;;;;;;:31;10890:10;10870:31;;;;;;;;;;;;;;;;10841:61;;;;;;:::i;:::-;;;;;;;;10573:341;10931:40;10945:6;10953:9;10964:6;10931:13;:40::i;:::-;10924:47;;10422:557;;;;;:::o;6546:92::-;6596:5;4276:2;6614:16;;6546:92;:::o;8562:130::-;5318:5;;;;;;;;;;;5304:19;;:10;:19;;;5296:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;8654:5:::1;8647:22;;;8670:5;;;;;;;;;;;8677:6;8647:37;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8562:130:::0;;:::o;9496:387::-;9601:4;9645:1;9626:21;;:7;:21;;;9618:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;9764:10;9718:30;9728:10;9740:7;9718:9;:30::i;:::-;:56;;;;:::i;:::-;9670:11;:23;9682:10;9670:23;;;;;;;;;;;;;;;:32;9694:7;9670:32;;;;;;;;;;;;;;;:104;;;;9811:7;9790:63;;9799:10;9790:63;;;9820:11;:23;9832:10;9820:23;;;;;;;;;;;;;;;:32;9844:7;9820:32;;;;;;;;;;;;;;;;9790:63;;;;;;:::i;:::-;;;;;;;;9871:4;9864:11;;9496:387;;;;:::o;4613:44::-;;;;;;;;;;;;;:::o;4778:78::-;4814:42;4778:78;:::o;4322:50::-;;;;;;;;;;;;;;;;;;;;;;:::o;9067:120::-;9120:4;9144:35;9152:7;9161:17;9144:7;:35::i;:::-;9137:42;;9067:120;;;:::o;6750:119::-;6816:7;6843:9;:18;6853:7;6843:18;;;;;;;;;;;;;;;;6836:25;;6750:119;;;:::o;12904:88::-;5318:5;;;;;;;;;;;5304:19;;:10;:19;;;5296:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;12982:1:::1;12966:5;;:18;;;;;;;;;;;;;;;;;;12904:88::o:0;6877:158::-;5318:5;;;;;;;;;;;5304:19;;:10;:19;;;5296:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;6946:12:::1;6972:5;;;;;;;;;;;6964:19;;6991:6;6964:38;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6945:57;;;7023:4;7013:14;;6934:101;6877:158:::0;:::o;4561:45::-;;;;;;;;;;;;;:::o;4666:20::-;;;;;;;;;;;;;:::o;6646:96::-;6694:13;6727:7;6720:14;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6646:96;:::o;4948:82::-;4988:42;4948:82;:::o;9891:523::-;10001:4;10045:1;10026:21;;:7;:21;;;10018:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;10126:15;10092:30;10102:10;10114:7;10092:9;:30::i;:::-;:49;;10070:115;;;;;;;;;;;;:::i;:::-;;;;;;;;;10290:15;10244:30;10254:10;10266:7;10244:9;:30::i;:::-;:61;;;;:::i;:::-;10196:11;:23;10208:10;10196:23;;;;;;;;;;;;;;;:32;10220:7;10196:32;;;;;;;;;;;;;;;:109;;;;10342:7;10321:63;;10330:10;10321:63;;;10351:11;:23;10363:10;10351:23;;;;;;;;;;;;;;;:32;10375:7;10351:32;;;;;;;;;;;;;;;;10321:63;;;;;;:::i;:::-;;;;;;;;10402:4;10395:11;;9891:523;;;;:::o;5037:29::-;;;:::o;8878:181::-;8983:4;9007:44;9021:10;9033:9;9044:6;9007:13;:44::i;:::-;9000:51;;8878:181;;;;:::o;5191:29::-;;;:::o;4863:78::-;4899:42;4863:78;:::o;12725:171::-;5318:5;;;;;;;;;;;5304:19;;:10;:19;;;5296:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;12882:6:::1;12845:18;:34;12864:14;12845:34;;;;;;;;;;;;;;;;:43;;;;;;;;;;;;;;;;;;12725:171:::0;;:::o;8700:170::-;8807:7;8834:11;:19;8846:6;8834:19;;;;;;;;;;;;;;;:28;8854:7;8834:28;;;;;;;;;;;;;;;;8827:35;;8700:170;;;;:::o;4693:78::-;4729:42;4693:78;:::o;5073:31::-;;;:::o;4507:45::-;;;;;;;;;;;;;;;;;;;;;;:::o;10987:845::-;11113:4;11212:13;:21;11226:6;11212:21;;;;;;;;;;;;;;;;;;;;;;;;;11211:22;11203:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;11353:4;11343:14;;:6;:14;;;11339:84;;11374:37;11401:9;11374:26;:37::i;:::-;11339:84;11440:31;11453:6;11461:9;11440:12;:31::i;:::-;11435:160;;11488:52;11504:6;11520:4;11536:3;11527:6;:12;;;;:::i;:::-;11488:15;:52::i;:::-;;11580:3;11574:2;11565:6;:11;;;;:::i;:::-;11564:19;;;;:::i;:::-;11555:28;;11435:160;11612:10;;;;;;;;;;;11611:11;:29;;;;;11636:4;11626:14;;:6;:14;;;;11611:29;11607:156;;;11670:4;11657:10;;:17;;;;;;;;;;;;;;;;;;11689:29;:27;:29::i;:::-;11746:5;11733:10;;:18;;;;;;;;;;;;;;;;;;11607:156;11782:42;11798:6;11806:9;11817:6;11782:15;:42::i;:::-;11775:49;;10987:845;;;;;:::o;7128:484::-;7271:5;;;;;;;;;;;7262:14;;:5;:14;;;:31;;;;7289:4;7280:13;;:5;:13;;;7262:31;:50;;;;7306:6;7297:15;;:5;:15;;;7262:50;7314:7;7258:63;7381:25;;;;;;;;;;;7351:55;;:27;;;;;;;;;;;:55;;;:93;;;;;7424:13;:20;7438:5;7424:20;;;;;;;;;;;;;;;;;;;;;;;;;7423:21;7351:93;7333:272;;;7471:27;;:29;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;7538:4;7515:13;:20;7529:5;7515:20;;;;;;;;;;;;;;;;:27;;;;;;;;;;;;;;;;;;7587:5;7564:29;;;;;;;;;;;;7333:272;7128:484;;:::o;11840:343::-;11945:4;11966:10;;;;;;;;;;;11962:27;;;11985:4;11978:11;;;;11962:27;12004:18;:26;12023:6;12004:26;;;;;;;;;;;;;;;;;;;;;;;;;:59;;;;12034:18;:29;12053:9;12034:29;;;;;;;;;;;;;;;;;;;;;;;;;12004:59;12000:89;;;12085:4;12078:11;;;;12000:89;12114:4;12104:14;;:6;:14;;;:35;;;;12135:4;12122:17;;:9;:17;;;12104:35;12100:53;;;12148:5;12141:12;;;;12100:53;12171:4;12164:11;;11840:343;;;;;:::o;12191:526::-;12319:4;12362:1;12344:20;;:6;:20;;;12336:62;;;;;;;;;;;;:::i;:::-;;;;;;;;;12441:9;:17;12451:6;12441:17;;;;;;;;;;;;;;;;12431:6;:27;;12409:109;;;;;;;;;;;;:::i;:::-;;;;;;;;;12543:1;12533:6;:11;12529:28;;12553:4;12546:11;;;;12529:28;12589:6;12568:9;:17;12578:6;12568:17;;;;;;;;;;;;;;;;:27;;;;;;;:::i;:::-;;;;;;;;12630:6;12606:9;:20;12616:9;12606:20;;;;;;;;;;;;;;;;:30;;;;;;;:::i;:::-;;;;;;;;12669:9;12652:35;;12661:6;12652:35;;;12680:6;12652:35;;;;;;:::i;:::-;;;;;;;;12705:4;12698:11;;12191:526;;;;;;:::o;7894:660::-;7953:21;7991:1;7977:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;7953:40;;8022:4;8004;8009:1;8004:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;;;8048:4;8038;8043:1;8038:7;;;;;;;;:::i;:::-;;;;;;;:14;;;;;;;;;;;8065:19;8087:9;:24;8105:4;8087:24;;;;;;;;;;;;;;;;8065:46;;8142:1;8128:11;:15;8124:423;;;8198:11;8160;:26;8180:4;8160:26;;;;;;;;;;;;;;;:34;8187:6;8160:34;;;;;;;;;;;;;;;;:49;;;;;;;:::i;:::-;;;;;;;;8285:6;8274:87;;;8384:11;8418:1;8442:4;4729:42;8501:15;8274:261;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8124:423;7942:612;;7894:660::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:90::-;875:7;918:5;911:13;904:21;893:32;;841:90;;;:::o;937:116::-;1007:21;1022:5;1007:21;:::i;:::-;1000:5;997:32;987:60;;1043:1;1040;1033:12;987:60;937:116;:::o;1059:133::-;1102:5;1140:6;1127:20;1118:29;;1156:30;1180:5;1156:30;:::i;:::-;1059:133;;;;:::o;1198:468::-;1263:6;1271;1320:2;1308:9;1299:7;1295:23;1291:32;1288:119;;;1326:79;;:::i;:::-;1288:119;1446:1;1471:53;1516:7;1507:6;1496:9;1492:22;1471:53;:::i;:::-;1461:63;;1417:117;1573:2;1599:50;1641:7;1632:6;1621:9;1617:22;1599:50;:::i;:::-;1589:60;;1544:115;1198:468;;;;;:::o;1672:118::-;1759:24;1777:5;1759:24;:::i;:::-;1754:3;1747:37;1672:118;;:::o;1796:222::-;1889:4;1927:2;1916:9;1912:18;1904:26;;1940:71;2008:1;1997:9;1993:17;1984:6;1940:71;:::i;:::-;1796:222;;;;:::o;2024:99::-;2076:6;2110:5;2104:12;2094:22;;2024:99;;;:::o;2129:169::-;2213:11;2247:6;2242:3;2235:19;2287:4;2282:3;2278:14;2263:29;;2129:169;;;;:::o;2304:246::-;2385:1;2395:113;2409:6;2406:1;2403:13;2395:113;;;2494:1;2489:3;2485:11;2479:18;2475:1;2470:3;2466:11;2459:39;2431:2;2428:1;2424:10;2419:15;;2395:113;;;2542:1;2533:6;2528:3;2524:16;2517:27;2366:184;2304:246;;;:::o;2556:102::-;2597:6;2648:2;2644:7;2639:2;2632:5;2628:14;2624:28;2614:38;;2556:102;;;:::o;2664:377::-;2752:3;2780:39;2813:5;2780:39;:::i;:::-;2835:71;2899:6;2894:3;2835:71;:::i;:::-;2828:78;;2915:65;2973:6;2968:3;2961:4;2954:5;2950:16;2915:65;:::i;:::-;3005:29;3027:6;3005:29;:::i;:::-;3000:3;2996:39;2989:46;;2756:285;2664:377;;;;:::o;3047:313::-;3160:4;3198:2;3187:9;3183:18;3175:26;;3247:9;3241:4;3237:20;3233:1;3222:9;3218:17;3211:47;3275:78;3348:4;3339:6;3275:78;:::i;:::-;3267:86;;3047:313;;;;:::o;3366:77::-;3403:7;3432:5;3421:16;;3366:77;;;:::o;3449:122::-;3522:24;3540:5;3522:24;:::i;:::-;3515:5;3512:35;3502:63;;3561:1;3558;3551:12;3502:63;3449:122;:::o;3577:139::-;3623:5;3661:6;3648:20;3639:29;;3677:33;3704:5;3677:33;:::i;:::-;3577:139;;;;:::o;3722:474::-;3790:6;3798;3847:2;3835:9;3826:7;3822:23;3818:32;3815:119;;;3853:79;;:::i;:::-;3815:119;3973:1;3998:53;4043:7;4034:6;4023:9;4019:22;3998:53;:::i;:::-;3988:63;;3944:117;4100:2;4126:53;4171:7;4162:6;4151:9;4147:22;4126:53;:::i;:::-;4116:63;;4071:118;3722:474;;;;;:::o;4202:109::-;4283:21;4298:5;4283:21;:::i;:::-;4278:3;4271:34;4202:109;;:::o;4317:210::-;4404:4;4442:2;4431:9;4427:18;4419:26;;4455:65;4517:1;4506:9;4502:17;4493:6;4455:65;:::i;:::-;4317:210;;;;:::o;4533:118::-;4620:24;4638:5;4620:24;:::i;:::-;4615:3;4608:37;4533:118;;:::o;4657:222::-;4750:4;4788:2;4777:9;4773:18;4765:26;;4801:71;4869:1;4858:9;4854:17;4845:6;4801:71;:::i;:::-;4657:222;;;;:::o;4885:619::-;4962:6;4970;4978;5027:2;5015:9;5006:7;5002:23;4998:32;4995:119;;;5033:79;;:::i;:::-;4995:119;5153:1;5178:53;5223:7;5214:6;5203:9;5199:22;5178:53;:::i;:::-;5168:63;;5124:117;5280:2;5306:53;5351:7;5342:6;5331:9;5327:22;5306:53;:::i;:::-;5296:63;;5251:118;5408:2;5434:53;5479:7;5470:6;5459:9;5455:22;5434:53;:::i;:::-;5424:63;;5379:118;4885:619;;;;;:::o;5510:86::-;5545:7;5585:4;5578:5;5574:16;5563:27;;5510:86;;;:::o;5602:112::-;5685:22;5701:5;5685:22;:::i;:::-;5680:3;5673:35;5602:112;;:::o;5720:214::-;5809:4;5847:2;5836:9;5832:18;5824:26;;5860:67;5924:1;5913:9;5909:17;5900:6;5860:67;:::i;:::-;5720:214;;;;:::o;5940:101::-;5976:7;6016:18;6009:5;6005:30;5994:41;;5940:101;;;:::o;6047:115::-;6132:23;6149:5;6132:23;:::i;:::-;6127:3;6120:36;6047:115;;:::o;6168:218::-;6259:4;6297:2;6286:9;6282:18;6274:26;;6310:69;6376:1;6365:9;6361:17;6352:6;6310:69;:::i;:::-;6168:218;;;;:::o;6392:329::-;6451:6;6500:2;6488:9;6479:7;6475:23;6471:32;6468:119;;;6506:79;;:::i;:::-;6468:119;6626:1;6651:53;6696:7;6687:6;6676:9;6672:22;6651:53;:::i;:::-;6641:63;;6597:117;6392:329;;;;:::o;6727:::-;6786:6;6835:2;6823:9;6814:7;6810:23;6806:32;6803:119;;;6841:79;;:::i;:::-;6803:119;6961:1;6986:53;7031:7;7022:6;7011:9;7007:22;6986:53;:::i;:::-;6976:63;;6932:117;6727:329;;;;:::o;7062:474::-;7130:6;7138;7187:2;7175:9;7166:7;7162:23;7158:32;7155:119;;;7193:79;;:::i;:::-;7155:119;7313:1;7338:53;7383:7;7374:6;7363:9;7359:22;7338:53;:::i;:::-;7328:63;;7284:117;7440:2;7466:53;7511:7;7502:6;7491:9;7487:22;7466:53;:::i;:::-;7456:63;;7411:118;7062:474;;;;;:::o;7542:176::-;7682:28;7678:1;7670:6;7666:14;7659:52;7542:176;:::o;7724:366::-;7866:3;7887:67;7951:2;7946:3;7887:67;:::i;:::-;7880:74;;7963:93;8052:3;7963:93;:::i;:::-;8081:2;8076:3;8072:12;8065:19;;7724:366;;;:::o;8096:419::-;8262:4;8300:2;8289:9;8285:18;8277:26;;8349:9;8343:4;8339:20;8335:1;8324:9;8320:17;8313:47;8377:131;8503:4;8377:131;:::i;:::-;8369:139;;8096:419;;;:::o;8521:180::-;8569:77;8566:1;8559:88;8666:4;8663:1;8656:15;8690:4;8687:1;8680:15;8707:320;8751:6;8788:1;8782:4;8778:12;8768:22;;8835:1;8829:4;8825:12;8856:18;8846:81;;8912:4;8904:6;8900:17;8890:27;;8846:81;8974:2;8966:6;8963:14;8943:18;8940:38;8937:84;;8993:18;;:::i;:::-;8937:84;8758:269;8707:320;;;:::o;9033:157::-;9173:9;9169:1;9161:6;9157:14;9150:33;9033:157;:::o;9196:365::-;9338:3;9359:66;9423:1;9418:3;9359:66;:::i;:::-;9352:73;;9434:93;9523:3;9434:93;:::i;:::-;9552:2;9547:3;9543:12;9536:19;;9196:365;;;:::o;9567:419::-;9733:4;9771:2;9760:9;9756:18;9748:26;;9820:9;9814:4;9810:20;9806:1;9795:9;9791:17;9784:47;9848:131;9974:4;9848:131;:::i;:::-;9840:139;;9567:419;;;:::o;9992:180::-;10040:77;10037:1;10030:88;10137:4;10134:1;10127:15;10161:4;10158:1;10151:15;10178:194;10218:4;10238:20;10256:1;10238:20;:::i;:::-;10233:25;;10272:20;10290:1;10272:20;:::i;:::-;10267:25;;10316:1;10313;10309:9;10301:17;;10340:1;10334:4;10331:11;10328:37;;;10345:18;;:::i;:::-;10328:37;10178:194;;;;:::o;10378:166::-;10518:18;10514:1;10506:6;10502:14;10495:42;10378:166;:::o;10550:366::-;10692:3;10713:67;10777:2;10772:3;10713:67;:::i;:::-;10706:74;;10789:93;10878:3;10789:93;:::i;:::-;10907:2;10902:3;10898:12;10891:19;;10550:366;;;:::o;10922:419::-;11088:4;11126:2;11115:9;11111:18;11103:26;;11175:9;11169:4;11165:20;11161:1;11150:9;11146:17;11139:47;11203:131;11329:4;11203:131;:::i;:::-;11195:139;;10922:419;;;:::o;11347:332::-;11468:4;11506:2;11495:9;11491:18;11483:26;;11519:71;11587:1;11576:9;11572:17;11563:6;11519:71;:::i;:::-;11600:72;11668:2;11657:9;11653:18;11644:6;11600:72;:::i;:::-;11347:332;;;;;:::o;11685:137::-;11739:5;11770:6;11764:13;11755:22;;11786:30;11810:5;11786:30;:::i;:::-;11685:137;;;;:::o;11828:345::-;11895:6;11944:2;11932:9;11923:7;11919:23;11915:32;11912:119;;;11950:79;;:::i;:::-;11912:119;12070:1;12095:61;12148:7;12139:6;12128:9;12124:22;12095:61;:::i;:::-;12085:71;;12041:125;11828:345;;;;:::o;12179:191::-;12219:3;12238:20;12256:1;12238:20;:::i;:::-;12233:25;;12272:20;12290:1;12272:20;:::i;:::-;12267:25;;12315:1;12312;12308:9;12301:16;;12336:3;12333:1;12330:10;12327:36;;;12343:18;;:::i;:::-;12327:36;12179:191;;;;:::o;12376:147::-;12477:11;12514:3;12499:18;;12376:147;;;;:::o;12529:114::-;;:::o;12649:398::-;12808:3;12829:83;12910:1;12905:3;12829:83;:::i;:::-;12822:90;;12921:93;13010:3;12921:93;:::i;:::-;13039:1;13034:3;13030:11;13023:18;;12649:398;;;:::o;13053:379::-;13237:3;13259:147;13402:3;13259:147;:::i;:::-;13252:154;;13423:3;13416:10;;13053:379;;;:::o;13438:161::-;13578:13;13574:1;13566:6;13562:14;13555:37;13438:161;:::o;13605:366::-;13747:3;13768:67;13832:2;13827:3;13768:67;:::i;:::-;13761:74;;13844:93;13933:3;13844:93;:::i;:::-;13962:2;13957:3;13953:12;13946:19;;13605:366;;;:::o;13977:419::-;14143:4;14181:2;14170:9;14166:18;14158:26;;14230:9;14224:4;14220:20;14216:1;14205:9;14201:17;14194:47;14258:131;14384:4;14258:131;:::i;:::-;14250:139;;13977:419;;;:::o;14402:180::-;14450:77;14447:1;14440:88;14547:4;14544:1;14537:15;14571:4;14568:1;14561:15;14588:185;14628:1;14645:20;14663:1;14645:20;:::i;:::-;14640:25;;14679:20;14697:1;14679:20;:::i;:::-;14674:25;;14718:1;14708:35;;14723:18;;:::i;:::-;14708:35;14765:1;14762;14758:9;14753:14;;14588:185;;;;:::o;14779:410::-;14819:7;14842:20;14860:1;14842:20;:::i;:::-;14837:25;;14876:20;14894:1;14876:20;:::i;:::-;14871:25;;14931:1;14928;14924:9;14953:30;14971:11;14953:30;:::i;:::-;14942:41;;15132:1;15123:7;15119:15;15116:1;15113:22;15093:1;15086:9;15066:83;15043:139;;15162:18;;:::i;:::-;15043:139;14827:362;14779:410;;;;:::o;15195:183::-;15233:3;15256:23;15273:5;15256:23;:::i;:::-;15247:32;;15301:18;15294:5;15291:29;15288:55;;15323:18;;:::i;:::-;15288:55;15370:1;15363:5;15359:13;15352:20;;15195:183;;;:::o;15384:179::-;15524:31;15520:1;15512:6;15508:14;15501:55;15384:179;:::o;15569:366::-;15711:3;15732:67;15796:2;15791:3;15732:67;:::i;:::-;15725:74;;15808:93;15897:3;15808:93;:::i;:::-;15926:2;15921:3;15917:12;15910:19;;15569:366;;;:::o;15941:419::-;16107:4;16145:2;16134:9;16130:18;16122:26;;16194:9;16188:4;16184:20;16180:1;16169:9;16165:17;16158:47;16222:131;16348:4;16222:131;:::i;:::-;16214:139;;15941:419;;;:::o;16366:182::-;16506:34;16502:1;16494:6;16490:14;16483:58;16366:182;:::o;16554:366::-;16696:3;16717:67;16781:2;16776:3;16717:67;:::i;:::-;16710:74;;16793:93;16882:3;16793:93;:::i;:::-;16911:2;16906:3;16902:12;16895:19;;16554:366;;;:::o;16926:419::-;17092:4;17130:2;17119:9;17115:18;17107:26;;17179:9;17173:4;17169:20;17165:1;17154:9;17150:17;17143:47;17207:131;17333:4;17207:131;:::i;:::-;17199:139;;16926:419;;;:::o;17351:180::-;17399:77;17396:1;17389:88;17496:4;17493:1;17486:15;17520:4;17517:1;17510:15;17537:180;17585:77;17582:1;17575:88;17682:4;17679:1;17672:15;17706:4;17703:1;17696:15;17723:85;17768:7;17797:5;17786:16;;17723:85;;;:::o;17814:60::-;17842:3;17863:5;17856:12;;17814:60;;;:::o;17880:158::-;17938:9;17971:61;17989:42;17998:32;18024:5;17998:32;:::i;:::-;17989:42;:::i;:::-;17971:61;:::i;:::-;17958:74;;17880:158;;;:::o;18044:147::-;18139:45;18178:5;18139:45;:::i;:::-;18134:3;18127:58;18044:147;;:::o;18197:114::-;18264:6;18298:5;18292:12;18282:22;;18197:114;;;:::o;18317:184::-;18416:11;18450:6;18445:3;18438:19;18490:4;18485:3;18481:14;18466:29;;18317:184;;;;:::o;18507:132::-;18574:4;18597:3;18589:11;;18627:4;18622:3;18618:14;18610:22;;18507:132;;;:::o;18645:108::-;18722:24;18740:5;18722:24;:::i;:::-;18717:3;18710:37;18645:108;;:::o;18759:179::-;18828:10;18849:46;18891:3;18883:6;18849:46;:::i;:::-;18927:4;18922:3;18918:14;18904:28;;18759:179;;;;:::o;18944:113::-;19014:4;19046;19041:3;19037:14;19029:22;;18944:113;;;:::o;19093:732::-;19212:3;19241:54;19289:5;19241:54;:::i;:::-;19311:86;19390:6;19385:3;19311:86;:::i;:::-;19304:93;;19421:56;19471:5;19421:56;:::i;:::-;19500:7;19531:1;19516:284;19541:6;19538:1;19535:13;19516:284;;;19617:6;19611:13;19644:63;19703:3;19688:13;19644:63;:::i;:::-;19637:70;;19730:60;19783:6;19730:60;:::i;:::-;19720:70;;19576:224;19563:1;19560;19556:9;19551:14;;19516:284;;;19520:14;19816:3;19809:10;;19217:608;;;19093:732;;;;:::o;19831:831::-;20094:4;20132:3;20121:9;20117:19;20109:27;;20146:71;20214:1;20203:9;20199:17;20190:6;20146:71;:::i;:::-;20227:80;20303:2;20292:9;20288:18;20279:6;20227:80;:::i;:::-;20354:9;20348:4;20344:20;20339:2;20328:9;20324:18;20317:48;20382:108;20485:4;20476:6;20382:108;:::i;:::-;20374:116;;20500:72;20568:2;20557:9;20553:18;20544:6;20500:72;:::i;:::-;20582:73;20650:3;20639:9;20635:19;20626:6;20582:73;:::i;:::-;19831:831;;;;;;;;:::o

Swarm Source

ipfs://42428b268ea633a6298c32d7fd6350caa1909bacf7415633db7900306381b344
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

A token is a representation of an on-chain or off-chain asset. The token page shows information such as price, total supply, holders, transfers and social links. Learn more about this page in our Knowledge Base.