false
true
0

Contract Address Details

0xc8D6FAbbb6bA4D9231504e705ebFdF42fa479aA9

Token
Hotspot (Hotspot)
Creator
0x307bed–5b023f at 0xdd7fa4–e07257
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
4 Transactions
Transfers
0 Transfers
Gas Used
169,169
Last Balance Update
26066465
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify. View contract in Sourcify repository
Contract name:
Hotspot




Optimization enabled
false
Compiler version
v0.8.21+commit.d9974bed




EVM Version
shanghai




Verified at
2026-03-19T20:13:08.839678Z

HOTSPOT.sol

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.20;

/**
 * HOTSPOT (Hotspot)
 * A fixed single-supply ERC-20 token deployed on PulseChain.
 *
 * Features:
 *  - Fixed total supply of 1 Hotspot (minted once to deployer)
 *  - Owner is always exempt from trading restrictions
 *  - Airdrop: send tokens to multiple wallets in one transaction
 *  - Ownership transfer and renounce supported
 */

abstract contract Ownable {
    address private _owner;

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

    error NotOwner();
    error ZeroAddress();

    constructor(address initialOwner) {
        if (initialOwner == address(0)) revert ZeroAddress();
        _owner = initialOwner;
        emit OwnershipTransferred(address(0), initialOwner);
    }

    modifier onlyOwner() {
        if (msg.sender != _owner) revert NotOwner();
        _;
    }

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

    function transferOwnership(address newOwner) external onlyOwner {
        if (newOwner == address(0)) revert ZeroAddress();
        emit OwnershipTransferred(_owner, newOwner);
        _owner = newOwner;
    }

    function renounceOwnership() external onlyOwner {
        emit OwnershipRenounced(_owner);
        _owner = address(0);
    }
}

contract Hotspot is Ownable {

    // ── Metadata ──────────────────────────────────────────────────────────────
    string  public constant name     = "Hotspot";
    string  public constant symbol   = "Hotspot";
    uint8   public constant decimals = 18;

    // ── Supply ────────────────────────────────────────────────────────────────
    uint256 public constant TOTAL_SUPPLY = 1 * 10 ** uint256(decimals);

    // ── State ─────────────────────────────────────────────────────────────────
    bool public tradingEnabled;

    mapping(address => uint256)                     private _balances;
    mapping(address => mapping(address => uint256)) private _allowances;

    // ── Events ────────────────────────────────────────────────────────────────
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
    event TradingStarted(uint256 timestamp);
    event TradingStopped(uint256 timestamp);
    event AirdropSent(address indexed sender, uint256 recipientCount, uint256 totalAmount);

    // ── Errors ────────────────────────────────────────────────────────────────
    error TradingNotEnabled();
    error InsufficientBalance();
    error InsufficientAllowance();
    error TransferToZeroAddress();
    error ApproveToZeroAddress();
    error TradingAlreadyInThisState();
    error AirdropArrayMismatch();
    error AirdropEmptyList();
    error AirdropTooManyRecipients();
    error AirdropZeroAmount();
    error AirdropInsufficientBalance();

    // ── Constructor ───────────────────────────────────────────────────────────
    constructor() Ownable(msg.sender) {
        _balances[msg.sender] = TOTAL_SUPPLY;
        emit Transfer(address(0), msg.sender, TOTAL_SUPPLY);
        // Trading starts DISABLED — owner must call startTrading() to open it
    }

    // ── Trading Control ───────────────────────────────────────────────────────

    /// @notice Enable trading for all holders. Only owner.
    function startTrading() external onlyOwner {
        if (tradingEnabled) revert TradingAlreadyInThisState();
        tradingEnabled = true;
        emit TradingStarted(block.timestamp);
    }

    /// @notice Disable trading for all non-owner holders. Only owner.
    function stopTrading() external onlyOwner {
        if (!tradingEnabled) revert TradingAlreadyInThisState();
        tradingEnabled = false;
        emit TradingStopped(block.timestamp);
    }

    // ── Airdrop ───────────────────────────────────────────────────────────────

    /**
     * @notice Send the same fixed amount of Hotspot to multiple recipients.
     * @dev    Caller must hold enough tokens. Max 500 recipients per call.
     *         Bypasses trading gate — airdrop always works regardless of
     *         tradingEnabled state, so you can airdrop before launch.
     * @param recipients Array of wallet addresses to receive tokens.
     * @param amount     Amount of Hotspot (in wei units) each recipient receives.
     */
    function airdropEqual(address[] calldata recipients, uint256 amount) external {
        if (recipients.length == 0)   revert AirdropEmptyList();
        if (recipients.length > 500)  revert AirdropTooManyRecipients();
        if (amount == 0)              revert AirdropZeroAmount();

        uint256 totalNeeded = amount * recipients.length;
        if (_balances[msg.sender] < totalNeeded) revert AirdropInsufficientBalance();

        unchecked {
            _balances[msg.sender] -= totalNeeded;
        }

        for (uint256 i = 0; i < recipients.length; ) {
            address to = recipients[i];
            if (to == address(0)) revert TransferToZeroAddress();
            unchecked {
                _balances[to] += amount;
                ++i;
            }
            emit Transfer(msg.sender, to, amount);
        }

        emit AirdropSent(msg.sender, recipients.length, totalNeeded);
    }

    /**
     * @notice Send different amounts of Hotspot to multiple recipients.
     * @dev    recipients[i] receives amounts[i]. Arrays must be same length.
     *         Max 500 recipients per call.
     * @param recipients Array of wallet addresses.
     * @param amounts    Corresponding array of Hotspot amounts (in wei units).
     */
    function airdropCustom(address[] calldata recipients, uint256[] calldata amounts) external {
        if (recipients.length == 0)                    revert AirdropEmptyList();
        if (recipients.length != amounts.length)       revert AirdropArrayMismatch();
        if (recipients.length > 500)                   revert AirdropTooManyRecipients();

        // Pre-calculate total to validate balance upfront (safe, avoids partial sends)
        uint256 totalNeeded = 0;
        for (uint256 i = 0; i < amounts.length; ) {
            if (amounts[i] == 0) revert AirdropZeroAmount();
            unchecked {
                totalNeeded += amounts[i];
                ++i;
            }
        }

        if (_balances[msg.sender] < totalNeeded) revert AirdropInsufficientBalance();

        unchecked {
            _balances[msg.sender] -= totalNeeded;
        }

        for (uint256 i = 0; i < recipients.length; ) {
            address to = recipients[i];
            if (to == address(0)) revert TransferToZeroAddress();
            unchecked {
                _balances[to] += amounts[i];
                ++i;
            }
            emit Transfer(msg.sender, to, amounts[i]);
        }

        emit AirdropSent(msg.sender, recipients.length, totalNeeded);
    }

    // ── ERC-20 Standard ───────────────────────────────────────────────────────

    function totalSupply() external pure returns (uint256) {
        return TOTAL_SUPPLY;
    }

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

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

    function approve(address spender, uint256 amount) external returns (bool) {
        if (spender == address(0)) revert ApproveToZeroAddress();
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

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

    function transferFrom(address from, address to, uint256 amount) external returns (bool) {
        uint256 currentAllowance = _allowances[from][msg.sender];
        if (currentAllowance != type(uint256).max) {
            if (currentAllowance < amount) revert InsufficientAllowance();
            unchecked { _allowances[from][msg.sender] = currentAllowance - amount; }
        }
        _transfer(from, to, amount);
        return true;
    }

    // ── Internal ──────────────────────────────────────────────────────────────

    function _transfer(address from, address to, uint256 amount) internal {
        if (to == address(0)) revert TransferToZeroAddress();

        // Owner is always exempt from the trading gate
        if (!tradingEnabled && from != owner() && to != owner()) {
            revert TradingNotEnabled();
        }

        uint256 fromBalance = _balances[from];
        if (fromBalance < amount) revert InsufficientBalance();

        unchecked {
            _balances[from] = fromBalance - amount;
            _balances[to]  += amount;
        }

        emit Transfer(from, to, amount);
    }
}
        

Compiler Settings

{"remappings":[],"optimizer":{"runs":200,"enabled":false},"metadata":{"bytecodeHash":"ipfs"},"libraries":{},"evmVersion":"shanghai","compilationTarget":{"HOTSPOT.sol":"Hotspot"}}
              

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[]},{"type":"error","name":"AirdropArrayMismatch","inputs":[]},{"type":"error","name":"AirdropEmptyList","inputs":[]},{"type":"error","name":"AirdropInsufficientBalance","inputs":[]},{"type":"error","name":"AirdropTooManyRecipients","inputs":[]},{"type":"error","name":"AirdropZeroAmount","inputs":[]},{"type":"error","name":"ApproveToZeroAddress","inputs":[]},{"type":"error","name":"InsufficientAllowance","inputs":[]},{"type":"error","name":"InsufficientBalance","inputs":[]},{"type":"error","name":"NotOwner","inputs":[]},{"type":"error","name":"TradingAlreadyInThisState","inputs":[]},{"type":"error","name":"TradingNotEnabled","inputs":[]},{"type":"error","name":"TransferToZeroAddress","inputs":[]},{"type":"error","name":"ZeroAddress","inputs":[]},{"type":"event","name":"AirdropSent","inputs":[{"type":"address","name":"sender","internalType":"address","indexed":true},{"type":"uint256","name":"recipientCount","internalType":"uint256","indexed":false},{"type":"uint256","name":"totalAmount","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"OwnershipRenounced","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"OwnershipTransferred","inputs":[{"type":"address","name":"previousOwner","internalType":"address","indexed":true},{"type":"address","name":"newOwner","internalType":"address","indexed":true}],"anonymous":false},{"type":"event","name":"TradingStarted","inputs":[{"type":"uint256","name":"timestamp","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"TradingStopped","inputs":[{"type":"uint256","name":"timestamp","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"TOTAL_SUPPLY","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"airdropCustom","inputs":[{"type":"address[]","name":"recipients","internalType":"address[]"},{"type":"uint256[]","name":"amounts","internalType":"uint256[]"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"airdropEqual","inputs":[{"type":"address[]","name":"recipients","internalType":"address[]"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"tokenOwner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceOwnership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"startTrading","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"stopTrading","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"pure","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"tradingEnabled","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"from","internalType":"address"},{"type":"address","name":"to","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"transferOwnership","inputs":[{"type":"address","name":"newOwner","internalType":"address"}]}]
              

Contract Creation Code

Verify & Publish
0x608060405234801562000010575f80fd5b50335f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160362000078576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350601260ff16600a62000125919062000387565b6001620001339190620003d7565b60015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055503373ffffffffffffffffffffffffffffffffffffffff165f73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef601260ff16600a620001d6919062000387565b6001620001e49190620003d7565b604051620001f3919062000432565b60405180910390a36200044d565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b60018511156200028b5780860481111562000263576200026262000201565b5b6001851615620002735780820291505b808102905062000283856200022e565b945062000243565b94509492505050565b5f82620002a5576001905062000377565b81620002b4575f905062000377565b8160018114620002cd5760028114620002d8576200030e565b600191505062000377565b60ff841115620002ed57620002ec62000201565b5b8360020a91508482111562000307576200030662000201565b5b5062000377565b5060208310610133831016604e8410600b8410161715620003485782820a90508381111562000342576200034162000201565b5b62000377565b6200035784848460016200023a565b9250905081840481111562000371576200037062000201565b5b81810290505b9392505050565b5f819050919050565b5f62000393826200037e565b9150620003a0836200037e565b9250620003cf7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000294565b905092915050565b5f620003e3826200037e565b9150620003f0836200037e565b925082820262000400816200037e565b915082820484148315176200041a576200041962000201565b5b5092915050565b6200042c816200037e565b82525050565b5f602082019050620004475f83018462000421565b92915050565b611d97806200045b5f395ff3fe608060405234801561000f575f80fd5b5060043610610114575f3560e01c8063715018a6116100a057806395d89b411161006f57806395d89b4114610296578063a9059cbb146102b4578063dd62ed3e146102e4578063e2ac48f714610314578063f2fde38b1461033057610114565b8063715018a6146102465780637185f163146102505780638da5cb5b1461025a578063902d55a51461027857610114565b806323b872dd116100e757806323b872dd146101a0578063293230b8146101d0578063313ce567146101da5780634ada218b146101f857806370a082311461021657610114565b806306fdde0314610118578063095ea7b31461013657806318160ddd146101665780631a37632114610184575b5f80fd5b61012061034c565b60405161012d9190611732565b60405180910390f35b610150600480360381019061014b91906117e7565b610385565b60405161015d919061183f565b60405180910390f35b61016e6104d7565b60405161017b9190611867565b60405180910390f35b61019e60048036038101906101999190611936565b6104fa565b005b6101ba60048036038101906101b591906119b4565b6108e4565b6040516101c7919061183f565b60405180910390f35b6101d8610a59565b005b6101e2610b76565b6040516101ef9190611a1f565b60405180910390f35b610200610b7b565b60405161020d919061183f565b60405180910390f35b610230600480360381019061022b9190611a38565b610b8d565b60405161023d9190611867565b60405180910390f35b61024e610bd3565b005b610258610cfa565b005b610262610e15565b60405161026f9190611a72565b60405180910390f35b610280610e3c565b60405161028d9190611867565b60405180910390f35b61029e610e5c565b6040516102ab9190611732565b60405180910390f35b6102ce60048036038101906102c991906117e7565b610e95565b6040516102db919061183f565b60405180910390f35b6102fe60048036038101906102f99190611a8b565b610eab565b60405161030b9190611867565b60405180910390f35b61032e60048036038101906103299190611ac9565b610f2d565b005b61034a60048036038101906103459190611a38565b611266565b005b6040518060400160405280600781526020017f486f7473706f740000000000000000000000000000000000000000000000000081525081565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036103eb576040517f3b719e1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c59190611867565b60405180910390a36001905092915050565b5f601260ff16600a6104e99190611c82565b60016104f59190611ccc565b905090565b5f8484905003610536576040517f0146d1ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610575576040517f38dc0f0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101f48484905011156105b4576040517f9f1dfec600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805b8383905081101561063d575f8484838181106105d6576105d5611d0d565b5b9050602002013503610614576040517f1e93cba900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83838281811061062757610626611d0d565b5b90506020020135820191508060010190506105b7565b508060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156106b5576040517f1fb81dbd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505f5b85859050811015610889575f8686838181106107205761071f611d0d565b5b90506020020160208101906107359190611a38565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361079c576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484838181106107af576107ae611d0d565b5b9050602002013560015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160010191508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878681811061086757610866611d0d565b5b9050602002013560405161087b9190611867565b60405180910390a350610701565b503373ffffffffffffffffffffffffffffffffffffffff167f72780f191f89f3e5f0938c2ccd8588b8196ee8fcdadf381212914f53164a9ac786869050836040516108d5929190611d3a565b60405180910390a25050505050565b5f8060025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a4257828110156109c2576040517f13be252b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82810360025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610a4d85858561140a565b60019150509392505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610add576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60149054906101000a900460ff1615610b23576040517fb883910d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f60146101000a81548160ff0219169083151502179055507f681fd8281014ec159aeba3c383293bbbc3db4d68f2c74f894d9f46a401f73fe442604051610b6c9190611867565b60405180910390a1565b601281565b5f60149054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c57576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a25f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d7e576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60149054906101000a900460ff16610dc3576040517fb883910d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8060146101000a81548160ff0219169083151502179055507f8861d9c6d1855d245b836e9c2e2da28d9ce999a4730dd493a6d354b6331a418542604051610e0b9190611867565b60405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601260ff16600a610e4d9190611c82565b6001610e599190611ccc565b81565b6040518060400160405280600781526020017f486f7473706f740000000000000000000000000000000000000000000000000081525081565b5f610ea133848461140a565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8383905003610f69576040517f0146d1ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101f4838390501115610fa8576040517f9f1dfec600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103610fe1576040517f1e93cba900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383905082610ff19190611ccc565b90508060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561106a576040517f1fb81dbd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505f5b8484905081101561120c575f8585838181106110d5576110d4611d0d565b5b90506020020160208101906110ea9190611a38565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611151576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160010191508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516111fe9190611867565b60405180910390a3506110b6565b503373ffffffffffffffffffffffffffffffffffffffff167f72780f191f89f3e5f0938c2ccd8588b8196ee8fcdadf381212914f53164a9ac78585905083604051611258929190611d3a565b60405180910390a250505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112ea576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361134f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361146f576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60149054906101000a900460ff161580156114be575061148e610e15565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114fd57506114cd610e15565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611534576040517f12f1f92300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156115af576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161169a9190611867565b60405180910390a350505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156116df5780820151818401526020810190506116c4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611704826116a8565b61170e81856116b2565b935061171e8185602086016116c2565b611727816116ea565b840191505092915050565b5f6020820190508181035f83015261174a81846116fa565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117838261175a565b9050919050565b61179381611779565b811461179d575f80fd5b50565b5f813590506117ae8161178a565b92915050565b5f819050919050565b6117c6816117b4565b81146117d0575f80fd5b50565b5f813590506117e1816117bd565b92915050565b5f80604083850312156117fd576117fc611752565b5b5f61180a858286016117a0565b925050602061181b858286016117d3565b9150509250929050565b5f8115159050919050565b61183981611825565b82525050565b5f6020820190506118525f830184611830565b92915050565b611861816117b4565b82525050565b5f60208201905061187a5f830184611858565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126118a1576118a0611880565b5b8235905067ffffffffffffffff8111156118be576118bd611884565b5b6020830191508360208202830111156118da576118d9611888565b5b9250929050565b5f8083601f8401126118f6576118f5611880565b5b8235905067ffffffffffffffff81111561191357611912611884565b5b60208301915083602082028301111561192f5761192e611888565b5b9250929050565b5f805f806040858703121561194e5761194d611752565b5b5f85013567ffffffffffffffff81111561196b5761196a611756565b5b6119778782880161188c565b9450945050602085013567ffffffffffffffff81111561199a57611999611756565b5b6119a6878288016118e1565b925092505092959194509250565b5f805f606084860312156119cb576119ca611752565b5b5f6119d8868287016117a0565b93505060206119e9868287016117a0565b92505060406119fa868287016117d3565b9150509250925092565b5f60ff82169050919050565b611a1981611a04565b82525050565b5f602082019050611a325f830184611a10565b92915050565b5f60208284031215611a4d57611a4c611752565b5b5f611a5a848285016117a0565b91505092915050565b611a6c81611779565b82525050565b5f602082019050611a855f830184611a63565b92915050565b5f8060408385031215611aa157611aa0611752565b5b5f611aae858286016117a0565b9250506020611abf858286016117a0565b9150509250929050565b5f805f60408486031215611ae057611adf611752565b5b5f84013567ffffffffffffffff811115611afd57611afc611756565b5b611b098682870161188c565b93509350506020611b1c868287016117d3565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115611ba857808604811115611b8457611b83611b26565b5b6001851615611b935780820291505b8081029050611ba185611b53565b9450611b68565b94509492505050565b5f82611bc05760019050611c7b565b81611bcd575f9050611c7b565b8160018114611be35760028114611bed57611c1c565b6001915050611c7b565b60ff841115611bff57611bfe611b26565b5b8360020a915084821115611c1657611c15611b26565b5b50611c7b565b5060208310610133831016604e8410600b8410161715611c515782820a905083811115611c4c57611c4b611b26565b5b611c7b565b611c5e8484846001611b5f565b92509050818404811115611c7557611c74611b26565b5b81810290505b9392505050565b5f611c8c826117b4565b9150611c97836117b4565b9250611cc47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611bb1565b905092915050565b5f611cd6826117b4565b9150611ce1836117b4565b9250828202611cef816117b4565b91508282048414831517611d0657611d05611b26565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f604082019050611d4d5f830185611858565b611d5a6020830184611858565b939250505056fea2646970667358221220894d32a374c2d10ed7c2e64b9cd285227732f2ef1c4f3d3ea3d85e65e0bc5c0964736f6c63430008140033

Deployed ByteCode

0x608060405234801561000f575f80fd5b5060043610610114575f3560e01c8063715018a6116100a057806395d89b411161006f57806395d89b4114610296578063a9059cbb146102b4578063dd62ed3e146102e4578063e2ac48f714610314578063f2fde38b1461033057610114565b8063715018a6146102465780637185f163146102505780638da5cb5b1461025a578063902d55a51461027857610114565b806323b872dd116100e757806323b872dd146101a0578063293230b8146101d0578063313ce567146101da5780634ada218b146101f857806370a082311461021657610114565b806306fdde0314610118578063095ea7b31461013657806318160ddd146101665780631a37632114610184575b5f80fd5b61012061034c565b60405161012d9190611732565b60405180910390f35b610150600480360381019061014b91906117e7565b610385565b60405161015d919061183f565b60405180910390f35b61016e6104d7565b60405161017b9190611867565b60405180910390f35b61019e60048036038101906101999190611936565b6104fa565b005b6101ba60048036038101906101b591906119b4565b6108e4565b6040516101c7919061183f565b60405180910390f35b6101d8610a59565b005b6101e2610b76565b6040516101ef9190611a1f565b60405180910390f35b610200610b7b565b60405161020d919061183f565b60405180910390f35b610230600480360381019061022b9190611a38565b610b8d565b60405161023d9190611867565b60405180910390f35b61024e610bd3565b005b610258610cfa565b005b610262610e15565b60405161026f9190611a72565b60405180910390f35b610280610e3c565b60405161028d9190611867565b60405180910390f35b61029e610e5c565b6040516102ab9190611732565b60405180910390f35b6102ce60048036038101906102c991906117e7565b610e95565b6040516102db919061183f565b60405180910390f35b6102fe60048036038101906102f99190611a8b565b610eab565b60405161030b9190611867565b60405180910390f35b61032e60048036038101906103299190611ac9565b610f2d565b005b61034a60048036038101906103459190611a38565b611266565b005b6040518060400160405280600781526020017f486f7473706f740000000000000000000000000000000000000000000000000081525081565b5f8073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036103eb576040517f3b719e1800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8160025f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104c59190611867565b60405180910390a36001905092915050565b5f601260ff16600a6104e99190611c82565b60016104f59190611ccc565b905090565b5f8484905003610536576040517f0146d1ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b818190508484905014610575576040517f38dc0f0d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101f48484905011156105b4576040517f9f1dfec600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f805b8383905081101561063d575f8484838181106105d6576105d5611d0d565b5b9050602002013503610614576040517f1e93cba900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b83838281811061062757610626611d0d565b5b90506020020135820191508060010190506105b7565b508060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205410156106b5576040517f1fb81dbd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505f5b85859050811015610889575f8686838181106107205761071f611d0d565b5b90506020020160208101906107359190611a38565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361079c576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8484838181106107af576107ae611d0d565b5b9050602002013560015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160010191508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef87878681811061086757610866611d0d565b5b9050602002013560405161087b9190611867565b60405180910390a350610701565b503373ffffffffffffffffffffffffffffffffffffffff167f72780f191f89f3e5f0938c2ccd8588b8196ee8fcdadf381212914f53164a9ac786869050836040516108d5929190611d3a565b60405180910390a25050505050565b5f8060025f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205490507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8114610a4257828110156109c2576040517f13be252b00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b82810360025f8773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055505b610a4d85858561140a565b60019150509392505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610add576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60149054906101000a900460ff1615610b23576040517fb883910d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b60015f60146101000a81548160ff0219169083151502179055507f681fd8281014ec159aeba3c383293bbbc3db4d68f2c74f894d9f46a401f73fe442604051610b6c9190611867565b60405180910390a1565b601281565b5f60149054906101000a900460ff1681565b5f60015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050919050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610c57576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167ff8df31144d9c2f0f6b59d69b8b98abd5459d07f2742c4df920b25aae33c6482060405160405180910390a25f805f6101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d7e576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60149054906101000a900460ff16610dc3576040517fb883910d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8060146101000a81548160ff0219169083151502179055507f8861d9c6d1855d245b836e9c2e2da28d9ce999a4730dd493a6d354b6331a418542604051610e0b9190611867565b60405180910390a1565b5f805f9054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b601260ff16600a610e4d9190611c82565b6001610e599190611ccc565b81565b6040518060400160405280600781526020017f486f7473706f740000000000000000000000000000000000000000000000000081525081565b5f610ea133848461140a565b6001905092915050565b5f60025f8473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054905092915050565b5f8383905003610f69576040517f0146d1ba00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b6101f4838390501115610fa8576040517f9f1dfec600000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8103610fe1576040517f1e93cba900000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f8383905082610ff19190611ccc565b90508060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f2054101561106a576040517f1fb81dbd00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8060015f3373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825403925050819055505f5b8484905081101561120c575f8585838181106110d5576110d4611d0d565b5b90506020020160208101906110ea9190611a38565b90505f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611151576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8360015f8373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508160010191508073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef866040516111fe9190611867565b60405180910390a3506110b6565b503373ffffffffffffffffffffffffffffffffffffffff167f72780f191f89f3e5f0938c2ccd8588b8196ee8fcdadf381212914f53164a9ac78585905083604051611258929190611d3a565b60405180910390a250505050565b5f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146112ea576040517f30cd747100000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f73ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361134f576040517fd92e233d00000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff165f8054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a3805f806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b5f73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361146f576040517fea553b3400000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60149054906101000a900460ff161580156114be575061148e610e15565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b80156114fd57506114cd610e15565b73ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1614155b15611534576040517f12f1f92300000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b5f60015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20549050818110156115af576040517ff4d678b800000000000000000000000000000000000000000000000000000000815260040160405180910390fd5b81810360015f8673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f20819055508160015f8573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020015f205f82825401925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8460405161169a9190611867565b60405180910390a350505050565b5f81519050919050565b5f82825260208201905092915050565b5f5b838110156116df5780820151818401526020810190506116c4565b5f8484015250505050565b5f601f19601f8301169050919050565b5f611704826116a8565b61170e81856116b2565b935061171e8185602086016116c2565b611727816116ea565b840191505092915050565b5f6020820190508181035f83015261174a81846116fa565b905092915050565b5f80fd5b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f6117838261175a565b9050919050565b61179381611779565b811461179d575f80fd5b50565b5f813590506117ae8161178a565b92915050565b5f819050919050565b6117c6816117b4565b81146117d0575f80fd5b50565b5f813590506117e1816117bd565b92915050565b5f80604083850312156117fd576117fc611752565b5b5f61180a858286016117a0565b925050602061181b858286016117d3565b9150509250929050565b5f8115159050919050565b61183981611825565b82525050565b5f6020820190506118525f830184611830565b92915050565b611861816117b4565b82525050565b5f60208201905061187a5f830184611858565b92915050565b5f80fd5b5f80fd5b5f80fd5b5f8083601f8401126118a1576118a0611880565b5b8235905067ffffffffffffffff8111156118be576118bd611884565b5b6020830191508360208202830111156118da576118d9611888565b5b9250929050565b5f8083601f8401126118f6576118f5611880565b5b8235905067ffffffffffffffff81111561191357611912611884565b5b60208301915083602082028301111561192f5761192e611888565b5b9250929050565b5f805f806040858703121561194e5761194d611752565b5b5f85013567ffffffffffffffff81111561196b5761196a611756565b5b6119778782880161188c565b9450945050602085013567ffffffffffffffff81111561199a57611999611756565b5b6119a6878288016118e1565b925092505092959194509250565b5f805f606084860312156119cb576119ca611752565b5b5f6119d8868287016117a0565b93505060206119e9868287016117a0565b92505060406119fa868287016117d3565b9150509250925092565b5f60ff82169050919050565b611a1981611a04565b82525050565b5f602082019050611a325f830184611a10565b92915050565b5f60208284031215611a4d57611a4c611752565b5b5f611a5a848285016117a0565b91505092915050565b611a6c81611779565b82525050565b5f602082019050611a855f830184611a63565b92915050565b5f8060408385031215611aa157611aa0611752565b5b5f611aae858286016117a0565b9250506020611abf858286016117a0565b9150509250929050565b5f805f60408486031215611ae057611adf611752565b5b5f84013567ffffffffffffffff811115611afd57611afc611756565b5b611b098682870161188c565b93509350506020611b1c868287016117d3565b9150509250925092565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f8160011c9050919050565b5f808291508390505b6001851115611ba857808604811115611b8457611b83611b26565b5b6001851615611b935780820291505b8081029050611ba185611b53565b9450611b68565b94509492505050565b5f82611bc05760019050611c7b565b81611bcd575f9050611c7b565b8160018114611be35760028114611bed57611c1c565b6001915050611c7b565b60ff841115611bff57611bfe611b26565b5b8360020a915084821115611c1657611c15611b26565b5b50611c7b565b5060208310610133831016604e8410600b8410161715611c515782820a905083811115611c4c57611c4b611b26565b5b611c7b565b611c5e8484846001611b5f565b92509050818404811115611c7557611c74611b26565b5b81810290505b9392505050565b5f611c8c826117b4565b9150611c97836117b4565b9250611cc47fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484611bb1565b905092915050565b5f611cd6826117b4565b9150611ce1836117b4565b9250828202611cef816117b4565b91508282048414831517611d0657611d05611b26565b5b5092915050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f604082019050611d4d5f830185611858565b611d5a6020830184611858565b939250505056fea2646970667358221220894d32a374c2d10ed7c2e64b9cd285227732f2ef1c4f3d3ea3d85e65e0bc5c0964736f6c63430008140033