false
true
0

Contract Address Details

0x2f1176A677f67C109578D3Acb8Ac261555Dd31C6

Contract Name
LiquidityLock
Creator
0xdce001–18e792 at 0x8e44cd–fc32ad
Balance
1,288.469036011599141126 PLS ( )
Tokens
Fetching tokens...
Transactions
173 Transactions
Transfers
0 Transfers
Gas Used
0
Last Balance Update
26038873
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
Contract name:
LiquidityLock




Optimization enabled
false
Compiler version
v0.8.20+commit.a1b79de6




EVM Version
default




Verified at
2025-04-07T08:22:57.539322Z

Constructor Arguments

0x000000000000000000000000dce001f55da9c00c438d4129c6f02000b818e792

Arg [0] (address) : 0xdce001f55da9c00c438d4129c6f02000b818e792

              

Contract source code

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

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function symbol() external view returns(string memory);
    function name() external view returns(string memory);

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

    function decimals() external view returns (uint8);

    function approve(address spender, uint256 amount) external returns (bool);
    function transfer(address recipient, 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 ISwapRouter {
    function factory() external pure returns (address);
    function WPLS() external pure returns (address);

    function addLiquidity(address tokenA, address tokenB, uint amountADesired, uint amountBDesired, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB, uint liquidity);
    function addLiquidityETH(address token, uint amountTokenDesired, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external payable returns (uint amountToken, uint amountETH, uint liquidity);
    function removeLiquidity(address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline) external returns (uint amountA, uint amountB);
    function removeLiquidityETH(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external returns (uint amountToken, uint amountETH);
    function removeLiquidityWithPermit(address tokenA, address tokenB, uint liquidity, uint amountAMin, uint amountBMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint amountA, uint amountB);
    function removeLiquidityETHWithPermit(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint amountToken, uint amountETH);
    function swapExactTokensForTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
    function swapTokensForExactTokens(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
    function swapExactETHForTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts);
    function swapTokensForExactETH(uint amountOut, uint amountInMax, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
    function swapExactTokensForETH(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external returns (uint[] memory amounts);
    function swapETHForExactTokens(uint amountOut, address[] calldata path, address to, uint deadline) external payable returns (uint[] memory amounts);

    function quote(uint amountA, uint reserveA, uint reserveB) external pure returns (uint amountB);
    function getAmountOut(uint amountIn, uint reserveIn, uint reserveOut) external pure returns (uint amountOut);
    function getAmountIn(uint amountOut, uint reserveIn, uint reserveOut) external pure returns (uint amountIn);
    function getAmountsOut(uint amountIn, address[] calldata path) external view returns (uint[] memory amounts);
    function getAmountsIn(uint amountOut, address[] calldata path) external view returns (uint[] memory amounts);

    function removeLiquidityETHSupportingFeeOnTransferTokens(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline) external returns (uint amountETH);
    function removeLiquidityETHWithPermitSupportingFeeOnTransferTokens(address token, uint liquidity, uint amountTokenMin, uint amountETHMin, address to, uint deadline, bool approveMax, uint8 v, bytes32 r, bytes32 s) external returns (uint amountETH);
    function swapExactTokensForTokensSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
    function swapExactETHForTokensSupportingFeeOnTransferTokens(uint amountOutMin, address[] calldata path, address to, uint deadline) external payable;
    function swapExactTokensForETHSupportingFeeOnTransferTokens(uint amountIn, uint amountOutMin, address[] calldata path, address to, uint deadline) external;
}

interface ITIMEDividend is IERC20 {
    function claimableDividendOf(address account) external view returns (uint256);

    function claimDividend(address payable recipient, uint256 amount) external returns (uint256);
}

library Address {
    function isContract(address account) internal view returns (bool) {
        uint256 size;
        assembly { size := extcodesize(account) }
        return size > 0;
    }

    function sendValue(address payable recipient, uint256 amount) internal {
        require(address(this).balance >= amount, "Address: insufficient balance");
        (bool success, ) = recipient.call{ value: amount }("");
        require(success, "Address: unable to send value, recipient may have reverted");
    }

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
      return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(address target, bytes memory data, uint256 value, string memory errorMessage) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");
        (bool success, bytes memory returndata) = target.call{ value: value }(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(address target, bytes memory data, string memory errorMessage) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");
        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(address target, bytes memory data, string memory errorMessage) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");
        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(bool success, bytes memory returndata, string memory errorMessage) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }

    function safeSub(uint256 a, uint256 b) internal pure returns (uint256) {
        if (b > a) {
            return 0;
        } else {
            return a - b;
        }
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return mod(a, b, "SafeMath: modulo by zero");
    }

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }

    function max(uint256 a, uint256 b) internal pure returns (uint256) {
        return a >= b ? a : b;
    }

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

library SafeERC20 {
    using Address for address;
    using SafeMath for uint256;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function safeApprove(IERC20 token, address spender, uint256 value) internal {        
        _callOptionalReturn(token, abi.encodeWithSelector(token.approve.selector, spender, value));
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) {
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

abstract contract ReentrancyGuard {
    uint256 private constant _NOT_ENTERED = 1;
    uint256 private constant _ENTERED = 2;
    uint256 private _status;

    constructor() {
        _status = _NOT_ENTERED;
    }

    modifier nonReentrant() {
        require(_status != _ENTERED, "ReentrancyGuard: reentrant call");
        _status = _ENTERED;
        _;
        _status = _NOT_ENTERED;
    }
}

contract LiquidityLock is ReentrancyGuard {

    ISwapRouter public constant swapRouter = ISwapRouter(0x165C3410fC91EF562C50559f7d2289fEbed552d9);

    IERC20 public immutable token;

    constructor (address _token) {
        token = IERC20(_token);
    }

    receive () external payable {

    }

    // Buy token, then Add token + PLS to PulseX V2 LP
    function boost() external nonReentrant() returns (bool success) {

        // Get PLS Balance
        uint256 plsBalance = address(this).balance;
        uint256 halfBalance = plsBalance / 2;

        success = (plsBalance > 0);
        require(success, "CANNOT_BOOST_ZERO_PLS");

        address[] memory path = new address[](2);
        path[0] = address(0xA1077a294dDE1B09bB078844df40758a5D0f9a27);
        path[1] = address(token);

        // Buy token on PulseX V2 with PLS
        swapRouter.swapExactETHForTokens{value: halfBalance}(0, path, address(this), block.timestamp + 3 minutes);

        // Get PLS & token balances in this contract
        uint256 tknBal = token.balanceOf(address(this));
        uint256 plsBal = address(this).balance;

        // Approve token & PLS for use on the router
        token.approve(address(swapRouter), tknBal);

        // Add token/PLS Liquidity and burn it
        swapRouter.addLiquidityETH{value: plsBal}(address(token), tknBal, 0, 0, address(0), block.timestamp + 3 minutes);
    }
}
        

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"address","name":"_token","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"success","internalType":"bool"}],"name":"boost","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract ISwapRouter"}],"name":"swapRouter","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"contract IERC20"}],"name":"token","inputs":[]},{"type":"receive","stateMutability":"payable"}]
              

Contract Creation Code

Verify & Publish
0x60a060405234801561000f575f80fd5b50604051610e6b380380610e6b833981810160405281019061003191906100d0565b60015f819055508073ffffffffffffffffffffffffffffffffffffffff1660808173ffffffffffffffffffffffffffffffffffffffff1681525050506100fb565b5f80fd5b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f61009f82610076565b9050919050565b6100af81610095565b81146100b9575f80fd5b50565b5f815190506100ca816100a6565b92915050565b5f602082840312156100e5576100e4610072565b5b5f6100f2848285016100bc565b91505092915050565b608051610d3c61012f5f395f81816102160152818161032b015281816103c9015281816104aa01526105680152610d3c5ff3fe608060405260043610610037575f3560e01c8063a66f42c014610042578063c31c9c071461006c578063fc0c546a146100965761003e565b3661003e57005b5f80fd5b34801561004d575f80fd5b506100566100c0565b60405161006391906105a4565b60405180910390f35b348015610077575f80fd5b5061008061054e565b60405161008d9190610637565b60405180910390f35b3480156100a1575f80fd5b506100aa610566565b6040516100b79190610670565b60405180910390f35b5f60025f5403610105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fc906106e3565b60405180910390fd5b60025f819055505f4790505f60028261011e9190610764565b90505f8211925082610165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c906107de565b60405180910390fd5b5f600267ffffffffffffffff811115610181576101806107fc565b5b6040519080825280602002602001820160405280156101af5781602001602082028036833780820191505090505b50905073a1077a294dde1b09bb078844df40758a5d0f9a27815f815181106101da576101d9610829565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f00000000000000000000000000000000000000000000000000000000000000008160018151811061024957610248610829565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073165c3410fc91ef562c50559f7d2289febed552d973ffffffffffffffffffffffffffffffffffffffff16637ff36ab5835f843060b4426102c49190610856565b6040518663ffffffff1660e01b81526004016102e394939291906109a8565b5f6040518083038185885af11580156102fe573d5f803e3d5ffd5b50505050506040513d5f823e3d601f19601f820116820180604052508101906103279190610b50565b505f7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016103829190610b97565b602060405180830381865afa15801561039d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103c19190610bb0565b90505f4790507f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff1663095ea7b373165c3410fc91ef562c50559f7d2289febed552d9846040518363ffffffff1660e01b8152600401610436929190610bdb565b6020604051808303815f875af1158015610452573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104769190610c2c565b5073165c3410fc91ef562c50559f7d2289febed552d973ffffffffffffffffffffffffffffffffffffffff1663f305d719827f0000000000000000000000000000000000000000000000000000000000000000855f805f60b4426104da9190610856565b6040518863ffffffff1660e01b81526004016104fb96959493929190610c57565b60606040518083038185885af1158015610517573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061053c9190610cb6565b505050505050505060015f8190555090565b73165c3410fc91ef562c50559f7d2289febed552d981565b7f000000000000000000000000000000000000000000000000000000000000000081565b5f8115159050919050565b61059e8161058a565b82525050565b5f6020820190506105b75f830184610595565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6105ff6105fa6105f5846105bd565b6105dc565b6105bd565b9050919050565b5f610610826105e5565b9050919050565b5f61062182610606565b9050919050565b61063181610617565b82525050565b5f60208201905061064a5f830184610628565b92915050565b5f61065a82610606565b9050919050565b61066a81610650565b82525050565b5f6020820190506106835f830184610661565b92915050565b5f82825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6106cd601f83610689565b91506106d882610699565b602082019050919050565b5f6020820190508181035f8301526106fa816106c1565b9050919050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61076e82610701565b915061077983610701565b9250826107895761078861070a565b5b828204905092915050565b7f43414e4e4f545f424f4f53545f5a45524f5f504c5300000000000000000000005f82015250565b5f6107c8601583610689565b91506107d382610794565b602082019050919050565b5f6020820190508181035f8301526107f5816107bc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61086082610701565b915061086b83610701565b925082820190508082111561088357610882610737565b5b92915050565b5f819050919050565b5f6108ac6108a76108a284610889565b6105dc565b610701565b9050919050565b6108bc81610892565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6108f5826105bd565b9050919050565b610905816108eb565b82525050565b5f61091683836108fc565b60208301905092915050565b5f602082019050919050565b5f610938826108c2565b61094281856108cc565b935061094d836108dc565b805f5b8381101561097d578151610964888261090b565b975061096f83610922565b925050600181019050610950565b5085935050505092915050565b610993816108eb565b82525050565b6109a281610701565b82525050565b5f6080820190506109bb5f8301876108b3565b81810360208301526109cd818661092e565b90506109dc604083018561098a565b6109e96060830184610999565b95945050505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b610a2082610a07565b810181811067ffffffffffffffff82111715610a3f57610a3e6107fc565b5b80604052505050565b5f610a516109f2565b9050610a5d8282610a17565b919050565b5f67ffffffffffffffff821115610a7c57610a7b6107fc565b5b602082029050602081019050919050565b5f80fd5b610a9a81610701565b8114610aa4575f80fd5b50565b5f81519050610ab581610a91565b92915050565b5f610acd610ac884610a62565b610a48565b90508083825260208201905060208402830185811115610af057610aef610a8d565b5b835b81811015610b195780610b058882610aa7565b845260208401935050602081019050610af2565b5050509392505050565b5f82601f830112610b3757610b36610a03565b5b8151610b47848260208601610abb565b91505092915050565b5f60208284031215610b6557610b646109fb565b5b5f82015167ffffffffffffffff811115610b8257610b816109ff565b5b610b8e84828501610b23565b91505092915050565b5f602082019050610baa5f83018461098a565b92915050565b5f60208284031215610bc557610bc46109fb565b5b5f610bd284828501610aa7565b91505092915050565b5f604082019050610bee5f83018561098a565b610bfb6020830184610999565b9392505050565b610c0b8161058a565b8114610c15575f80fd5b50565b5f81519050610c2681610c02565b92915050565b5f60208284031215610c4157610c406109fb565b5b5f610c4e84828501610c18565b91505092915050565b5f60c082019050610c6a5f83018961098a565b610c776020830188610999565b610c8460408301876108b3565b610c9160608301866108b3565b610c9e608083018561098a565b610cab60a0830184610999565b979650505050505050565b5f805f60608486031215610ccd57610ccc6109fb565b5b5f610cda86828701610aa7565b9350506020610ceb86828701610aa7565b9250506040610cfc86828701610aa7565b915050925092509256fea26469706673582212202940eeb7333ad4c14f297fc5a45b6fdfa9908b4b9f4731994c9c3d6a250000dc64736f6c63430008140033000000000000000000000000dce001f55da9c00c438d4129c6f02000b818e792

Deployed ByteCode

0x608060405260043610610037575f3560e01c8063a66f42c014610042578063c31c9c071461006c578063fc0c546a146100965761003e565b3661003e57005b5f80fd5b34801561004d575f80fd5b506100566100c0565b60405161006391906105a4565b60405180910390f35b348015610077575f80fd5b5061008061054e565b60405161008d9190610637565b60405180910390f35b3480156100a1575f80fd5b506100aa610566565b6040516100b79190610670565b60405180910390f35b5f60025f5403610105576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100fc906106e3565b60405180910390fd5b60025f819055505f4790505f60028261011e9190610764565b90505f8211925082610165576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161015c906107de565b60405180910390fd5b5f600267ffffffffffffffff811115610181576101806107fc565b5b6040519080825280602002602001820160405280156101af5781602001602082028036833780820191505090505b50905073a1077a294dde1b09bb078844df40758a5d0f9a27815f815181106101da576101d9610829565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250507f000000000000000000000000dce001f55da9c00c438d4129c6f02000b818e7928160018151811061024957610248610829565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505073165c3410fc91ef562c50559f7d2289febed552d973ffffffffffffffffffffffffffffffffffffffff16637ff36ab5835f843060b4426102c49190610856565b6040518663ffffffff1660e01b81526004016102e394939291906109a8565b5f6040518083038185885af11580156102fe573d5f803e3d5ffd5b50505050506040513d5f823e3d601f19601f820116820180604052508101906103279190610b50565b505f7f000000000000000000000000dce001f55da9c00c438d4129c6f02000b818e79273ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016103829190610b97565b602060405180830381865afa15801561039d573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906103c19190610bb0565b90505f4790507f000000000000000000000000dce001f55da9c00c438d4129c6f02000b818e79273ffffffffffffffffffffffffffffffffffffffff1663095ea7b373165c3410fc91ef562c50559f7d2289febed552d9846040518363ffffffff1660e01b8152600401610436929190610bdb565b6020604051808303815f875af1158015610452573d5f803e3d5ffd5b505050506040513d601f19601f820116820180604052508101906104769190610c2c565b5073165c3410fc91ef562c50559f7d2289febed552d973ffffffffffffffffffffffffffffffffffffffff1663f305d719827f000000000000000000000000dce001f55da9c00c438d4129c6f02000b818e792855f805f60b4426104da9190610856565b6040518863ffffffff1660e01b81526004016104fb96959493929190610c57565b60606040518083038185885af1158015610517573d5f803e3d5ffd5b50505050506040513d601f19601f8201168201806040525081019061053c9190610cb6565b505050505050505060015f8190555090565b73165c3410fc91ef562c50559f7d2289febed552d981565b7f000000000000000000000000dce001f55da9c00c438d4129c6f02000b818e79281565b5f8115159050919050565b61059e8161058a565b82525050565b5f6020820190506105b75f830184610595565b92915050565b5f73ffffffffffffffffffffffffffffffffffffffff82169050919050565b5f819050919050565b5f6105ff6105fa6105f5846105bd565b6105dc565b6105bd565b9050919050565b5f610610826105e5565b9050919050565b5f61062182610606565b9050919050565b61063181610617565b82525050565b5f60208201905061064a5f830184610628565b92915050565b5f61065a82610606565b9050919050565b61066a81610650565b82525050565b5f6020820190506106835f830184610661565b92915050565b5f82825260208201905092915050565b7f5265656e7472616e637947756172643a207265656e7472616e742063616c6c005f82015250565b5f6106cd601f83610689565b91506106d882610699565b602082019050919050565b5f6020820190508181035f8301526106fa816106c1565b9050919050565b5f819050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601260045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52601160045260245ffd5b5f61076e82610701565b915061077983610701565b9250826107895761078861070a565b5b828204905092915050565b7f43414e4e4f545f424f4f53545f5a45524f5f504c5300000000000000000000005f82015250565b5f6107c8601583610689565b91506107d382610794565b602082019050919050565b5f6020820190508181035f8301526107f5816107bc565b9050919050565b7f4e487b71000000000000000000000000000000000000000000000000000000005f52604160045260245ffd5b7f4e487b71000000000000000000000000000000000000000000000000000000005f52603260045260245ffd5b5f61086082610701565b915061086b83610701565b925082820190508082111561088357610882610737565b5b92915050565b5f819050919050565b5f6108ac6108a76108a284610889565b6105dc565b610701565b9050919050565b6108bc81610892565b82525050565b5f81519050919050565b5f82825260208201905092915050565b5f819050602082019050919050565b5f6108f5826105bd565b9050919050565b610905816108eb565b82525050565b5f61091683836108fc565b60208301905092915050565b5f602082019050919050565b5f610938826108c2565b61094281856108cc565b935061094d836108dc565b805f5b8381101561097d578151610964888261090b565b975061096f83610922565b925050600181019050610950565b5085935050505092915050565b610993816108eb565b82525050565b6109a281610701565b82525050565b5f6080820190506109bb5f8301876108b3565b81810360208301526109cd818661092e565b90506109dc604083018561098a565b6109e96060830184610999565b95945050505050565b5f604051905090565b5f80fd5b5f80fd5b5f80fd5b5f601f19601f8301169050919050565b610a2082610a07565b810181811067ffffffffffffffff82111715610a3f57610a3e6107fc565b5b80604052505050565b5f610a516109f2565b9050610a5d8282610a17565b919050565b5f67ffffffffffffffff821115610a7c57610a7b6107fc565b5b602082029050602081019050919050565b5f80fd5b610a9a81610701565b8114610aa4575f80fd5b50565b5f81519050610ab581610a91565b92915050565b5f610acd610ac884610a62565b610a48565b90508083825260208201905060208402830185811115610af057610aef610a8d565b5b835b81811015610b195780610b058882610aa7565b845260208401935050602081019050610af2565b5050509392505050565b5f82601f830112610b3757610b36610a03565b5b8151610b47848260208601610abb565b91505092915050565b5f60208284031215610b6557610b646109fb565b5b5f82015167ffffffffffffffff811115610b8257610b816109ff565b5b610b8e84828501610b23565b91505092915050565b5f602082019050610baa5f83018461098a565b92915050565b5f60208284031215610bc557610bc46109fb565b5b5f610bd284828501610aa7565b91505092915050565b5f604082019050610bee5f83018561098a565b610bfb6020830184610999565b9392505050565b610c0b8161058a565b8114610c15575f80fd5b50565b5f81519050610c2681610c02565b92915050565b5f60208284031215610c4157610c406109fb565b5b5f610c4e84828501610c18565b91505092915050565b5f60c082019050610c6a5f83018961098a565b610c776020830188610999565b610c8460408301876108b3565b610c9160608301866108b3565b610c9e608083018561098a565b610cab60a0830184610999565b979650505050505050565b5f805f60608486031215610ccd57610ccc6109fb565b5b5f610cda86828701610aa7565b9350506020610ceb86828701610aa7565b9250506040610cfc86828701610aa7565b915050925092509256fea26469706673582212202940eeb7333ad4c14f297fc5a45b6fdfa9908b4b9f4731994c9c3d6a250000dc64736f6c63430008140033