abstract contract BlockTimestamp {
    /// @dev Method that exists purely to be overridden for tests
    /// @return The current block timestamp
    function _blockTimestamp() internal view virtual returns (uint256) {
        return block.timestamp;
    }
}
/// @title Function for getting block timestamp
/// @dev Base contract that is overridden for tests
function _blockTimestamp() internal view virtual returns (uint256) {
    return block.timestamp;
}

/// @dev Method that exists purely to be overridden for tests
/// @return The current block timestamp