From 87e7db0c875c5cba046527289562032f5f370d0c Mon Sep 17 00:00:00 2001 From: Alexandre Date: Tue, 25 Aug 2026 23:40:47 +0200 Subject: [PATCH] Added CLI arg and added a model --- .../project_completions_cache.json | 633 +++++++++ .../neocmakelsp/project_jumpitems_cache.json | 1178 +++++++++++++++++ .cache/neocmakelsp/tree_cmake_map_cache.json | 8 + .cache/neocmakelsp/tree_map_cache.json | 15 + .clangd | 1 + .gitignore | 3 + CMakeLists.txt | 32 +- assets/models/basicmesh.glb | Bin 0 -> 141384 bytes include/imgui | 1 + src/Common/Logger.h | 40 +- src/Engine/engine/engine.h | 23 +- src/Engine/engine/loader.h | 26 + src/Engine/main.cpp | 11 +- 13 files changed, 1948 insertions(+), 23 deletions(-) create mode 100644 .cache/neocmakelsp/project_completions_cache.json create mode 100644 .cache/neocmakelsp/project_jumpitems_cache.json create mode 100644 .cache/neocmakelsp/tree_cmake_map_cache.json create mode 100644 .cache/neocmakelsp/tree_map_cache.json create mode 100644 assets/models/basicmesh.glb create mode 160000 include/imgui create mode 100644 src/Engine/engine/loader.h diff --git a/.cache/neocmakelsp/project_completions_cache.json b/.cache/neocmakelsp/project_completions_cache.json new file mode 100644 index 0000000..44cd47c --- /dev/null +++ b/.cache/neocmakelsp/project_completions_cache.json @@ -0,0 +1,633 @@ +{ + "date": "2026-08-25T23:21:08.955192774+02:00", + "data": { + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/book/CMakeLists.txt": [ + { + "label": "book_sources", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/book/CMakeLists.txt" + } + ], + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/fuzz/CMakeLists.txt": [ + { + "label": "CLI11_FUZZ_ARTIFACT_PATH", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/fuzz/CMakeLists.txt" + }, + { + "label": "CLI11_FUZZ_TIME_APP", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/fuzz/CMakeLists.txt" + }, + { + "label": "CLI11_FUZZ_TIME_FILE", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/fuzz/CMakeLists.txt" + } + ], + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/single-include/CMakeLists.txt": [ + { + "label": "Python::Interpreter", + "kind": 6, + "detail": "Variable", + "documentation": "package from: Python" + }, + { + "label": "Python_LIBRARIES", + "kind": 6, + "detail": "Variable", + "documentation": "package: Python" + }, + { + "label": "Python_INCLUDE_DIRS", + "kind": 6, + "detail": "Variable", + "documentation": "package: Python" + } + ], + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt": [ + { + "label": "VERSION_REGEX", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "Doxygen_LIBRARIES", + "kind": 6, + "detail": "Variable", + "documentation": "package: Doxygen" + }, + { + "label": "Doxygen_INCLUDE_DIRS", + "kind": 6, + "detail": "Variable", + "documentation": "package: Doxygen" + }, + { + "label": "BUILD_TESTING", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "docs_EXIST", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "docs_EXIST", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "examples_EXIST", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "examples_EXIST", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CLI11_WARNINGS_AS_ERRORS", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CLI11_SINGLE_FILE", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CLI11_PRECOMPILED", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CLI11_MODULES", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CMAKE_CXX_STANDARD", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CMAKE_CXX_EXTENSIONS", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CMAKE_CXX_STANDARD_REQUIRED", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CMAKE_CXX_STANDARD_LIBRARIES_INIT", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CMAKE_CXX_STANDARD_LIBRARIES", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CLI11_headerLoc", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CLI11_headers", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CLI11_impl_headers", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CLI11_library_headers", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CMAKE_CUDA_FLAGS", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt\n\nPrint out warning and error numbers" + }, + { + "label": "CPACK_PACKAGE_VENDOR", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CPACK_PACKAGE_CONTACT", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CPACK_PACKAGE_VERSION_MAJOR", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CPACK_PACKAGE_VERSION_MINOR", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt\n\nAutomatic in CMake 3.12+" + }, + { + "label": "CPACK_PACKAGE_VERSION_PATCH", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt\n\nAutomatic in CMake 3.12+" + }, + { + "label": "CPACK_PACKAGE_DESCRIPTION_SUMMARY", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt\n\nAutomatic in CMake 3.12+" + }, + { + "label": "CPACK_RESOURCE_FILE_LICENSE", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CPACK_RESOURCE_FILE_README", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CPACK_PACKAGE_DESCRIPTION_FILE", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CPACK_SOURCE_GENERATOR", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CPACK_SOURCE_IGNORE_FILES", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt\n\nCPack collects *everything* except what's listed here." + }, + { + "label": "CPACK_DEBIAN_PACKAGE_ARCHITECTURE", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CPACK_DEBIAN_COMPRESSION_TYPE", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + }, + { + "label": "CPACK_DEBIAN_PACKAGE_NAME", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + } + ], + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt": [ + { + "label": "add_dependent_application_definitions", + "kind": 3, + "detail": "Function", + "documentation": "defined function\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt" + }, + { + "label": "add_sanitizers", + "kind": 3, + "detail": "Function", + "documentation": "defined macro\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt" + }, + { + "label": "add_catch_test", + "kind": 3, + "detail": "Function", + "documentation": "defined macro\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt\n\nTarget must already exist" + }, + { + "label": "Sanitizers_LIBRARIES", + "kind": 6, + "detail": "Variable", + "documentation": "package: Sanitizers" + }, + { + "label": "Sanitizers_INCLUDE_DIRS", + "kind": 6, + "detail": "Variable", + "documentation": "package: Sanitizers" + }, + { + "label": "CLI11_BOOST", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt\n\nAdd boost to test boost::optional (currently explicitly requested)\"" + }, + { + "label": "Boost_LIBRARIES", + "kind": 6, + "detail": "Variable", + "documentation": "package: Boost" + }, + { + "label": "Boost_INCLUDE_DIRS", + "kind": 6, + "detail": "Variable", + "documentation": "package: Boost" + }, + { + "label": "Boost_LIBRARIES", + "kind": 6, + "detail": "Variable", + "documentation": "package: Boost" + }, + { + "label": "Boost_INCLUDE_DIRS", + "kind": 6, + "detail": "Variable", + "documentation": "package: Boost" + }, + { + "label": "boost-optional-def", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt" + }, + { + "label": "CLI11_TESTS", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt" + }, + { + "label": "CLI11_MULTIONLY_TESTS", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt" + }, + { + "label": "Catch2_LIBRARIES", + "kind": 6, + "detail": "Variable", + "documentation": "package: Catch2" + }, + { + "label": "Catch2_INCLUDE_DIRS", + "kind": 6, + "detail": "Variable", + "documentation": "package: Catch2" + }, + { + "label": "catch2_url", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt" + }, + { + "label": "catch2_header", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt" + }, + { + "label": "catch2_hash", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt" + }, + { + "label": "CLI11_DEPENDENT_APPLICATIONS", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt\n\nBuild dependent applications which are launched from test code" + }, + { + "label": "TEST_FILE_FOLDER", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt" + }, + { + "label": "Threads_LIBRARIES", + "kind": 6, + "detail": "Variable", + "documentation": "package: Threads" + }, + { + "label": "Threads_INCLUDE_DIRS", + "kind": 6, + "detail": "Variable", + "documentation": "package: Threads" + }, + { + "label": "no-deprecated-declarations", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt\n\nAdd -Wno-deprecated-declarations to DeprecatedTest" + }, + { + "label": "cli11_boost_target", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt" + }, + { + "label": "cli11_boost_target", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt" + }, + { + "label": "CLI11_PACKAGE_SEARCH_LOC", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt" + }, + { + "label": "package_test_command", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt" + }, + { + "label": "package_test_command", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt\n\nsome other setup that isn't that important to run on all OS" + }, + { + "label": "CLI11_PACKAGE_TEST_BUILD_TYPE", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt" + }, + { + "label": "CLI11_PACKAGE_TEST_BUILD_TYPE", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt" + } + ], + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/src/CMakeLists.txt": [ + { + "label": "PUBLIC_OR_INTERFACE", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/src/CMakeLists.txt" + }, + { + "label": "PUBLIC_OR_INTERFACE", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/src/CMakeLists.txt" + }, + { + "label": "SYSTEM_INCL", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/src/CMakeLists.txt" + }, + { + "label": "SYSTEM_INCL", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/src/CMakeLists.txt\n\nthe compiler emitting any warnings about them" + } + ], + "/home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt": [ + { + "label": "addGlslShader", + "kind": 3, + "detail": "Function", + "documentation": "defined function\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt\n\nHelper functions to build shaders" + }, + { + "label": "addSlangShader", + "kind": 3, + "detail": "Function", + "documentation": "defined function\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt" + }, + { + "label": "addBinary", + "kind": 3, + "detail": "Function", + "documentation": "defined function\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt\n\nA function to automate executables aditions" + }, + { + "label": "CMAKE_EXPORT_COMPILE_COMMANDS", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt" + }, + { + "label": "CMAKE_AR", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt" + }, + { + "label": "CMAKE_RANLIB", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt" + }, + { + "label": "glfw3_LIBRARIES", + "kind": 6, + "detail": "Variable", + "documentation": "package: glfw3" + }, + { + "label": "glfw3_INCLUDE_DIRS", + "kind": 6, + "detail": "Variable", + "documentation": "package: glfw3" + }, + { + "label": "glm_LIBRARIES", + "kind": 6, + "detail": "Variable", + "documentation": "package: glm" + }, + { + "label": "glm_INCLUDE_DIRS", + "kind": 6, + "detail": "Variable", + "documentation": "package: glm" + }, + { + "label": "VulkanMemoryAllocator_LIBRARIES", + "kind": 6, + "detail": "Variable", + "documentation": "package: VulkanMemoryAllocator" + }, + { + "label": "VulkanMemoryAllocator_INCLUDE_DIRS", + "kind": 6, + "detail": "Variable", + "documentation": "package: VulkanMemoryAllocator" + }, + { + "label": "fmt_LIBRARIES", + "kind": 6, + "detail": "Variable", + "documentation": "package: fmt" + }, + { + "label": "fmt_INCLUDE_DIRS", + "kind": 6, + "detail": "Variable", + "documentation": "package: fmt" + }, + { + "label": "SPV_FILE", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt" + }, + { + "label": "SPV_FILE", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt" + }, + { + "label": "SPV_FILE", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt" + }, + { + "label": "SPV_FILE", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt" + }, + { + "label": "SHADER_OUTPUT_DIR", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt" + }, + { + "label": "ALL_SPV_FILES", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt" + }, + { + "label": "EXPANDED_SHADERS", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt" + }, + { + "label": "SHADER_SRC", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt" + }, + { + "label": "RESOLVED_MODELS", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt\n\nAdds the 3D models in the binary folder" + }, + { + "label": "RESOLVED_TEXTURES", + "kind": 12, + "detail": "Value", + "documentation": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt\n\nAdds the textures in the binary folder" + } + ], + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/examples/CMakeLists.txt": [ + { + "label": "add_cli_exe", + "kind": 3, + "detail": "Function", + "documentation": "defined function\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/examples/CMakeLists.txt" + } + ] + } +} \ No newline at end of file diff --git a/.cache/neocmakelsp/project_jumpitems_cache.json b/.cache/neocmakelsp/project_jumpitems_cache.json new file mode 100644 index 0000000..477f652 --- /dev/null +++ b/.cache/neocmakelsp/project_jumpitems_cache.json @@ -0,0 +1,1178 @@ +{ + "date": "2026-08-25T23:21:08.955291509+02:00", + "data": { + "BUILD_TESTING": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 40, + "character": 8 + }, + "end": { + "line": 40, + "character": 21 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CMAKE_CXX_EXTENSIONS": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 121, + "character": 6 + }, + "end": { + "line": 121, + "character": 26 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "SPV_FILE": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "range": { + "start": { + "line": 90, + "character": 6 + }, + "end": { + "line": 90, + "character": 14 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "is_function": false + }, + "ALL_SPV_FILES": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "range": { + "start": { + "line": 148, + "character": 8 + }, + "end": { + "line": 148, + "character": 21 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "is_function": false + }, + "CLI11_PACKAGE_TEST_BUILD_TYPE": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 350, + "character": 8 + }, + "end": { + "line": 350, + "character": 37 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "is_function": false + }, + "SYSTEM_INCL": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/src/CMakeLists.txt", + "range": { + "start": { + "line": 40, + "character": 6 + }, + "end": { + "line": 40, + "character": 17 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/src/CMakeLists.txt\n\nthe compiler emitting any warnings about them", + "is_function": false + }, + "catch2_url": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 96, + "character": 6 + }, + "end": { + "line": 96, + "character": 16 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "is_function": false + }, + "boost-optional-def": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 39, + "character": 4 + }, + "end": { + "line": 39, + "character": 22 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "is_function": false + }, + "CPACK_RESOURCE_FILE_LICENSE": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 255, + "character": 6 + }, + "end": { + "line": 255, + "character": 33 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CPACK_PACKAGE_CONTACT": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 250, + "character": 6 + }, + "end": { + "line": 250, + "character": 27 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CPACK_SOURCE_IGNORE_FILES": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 262, + "character": 6 + }, + "end": { + "line": 262, + "character": 31 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt\n\nCPack collects *everything* except what's listed here.", + "is_function": false + }, + "catch2_header": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 97, + "character": 6 + }, + "end": { + "line": 97, + "character": 19 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "is_function": false + }, + "package_test_command": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 344, + "character": 8 + }, + "end": { + "line": 344, + "character": 28 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt\n\nsome other setup that isn't that important to run on all OS", + "is_function": false + }, + "add_cli_exe": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/examples/CMakeLists.txt", + "range": { + "start": { + "line": 0, + "character": 9 + }, + "end": { + "line": 0, + "character": 20 + } + } + }, + "document_info": "defined function\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/examples/CMakeLists.txt", + "is_function": true + }, + "CLI11_impl_headers": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 160, + "character": 4 + }, + "end": { + "line": 160, + "character": 22 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CMAKE_CXX_STANDARD_LIBRARIES_INIT": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 134, + "character": 6 + }, + "end": { + "line": 134, + "character": 39 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CPACK_RESOURCE_FILE_README": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 256, + "character": 6 + }, + "end": { + "line": 256, + "character": 32 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CLI11_FUZZ_TIME_APP": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/fuzz/CMakeLists.txt", + "range": { + "start": { + "line": 22, + "character": 10 + }, + "end": { + "line": 22, + "character": 29 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/fuzz/CMakeLists.txt", + "is_function": false + }, + "CPACK_PACKAGE_VERSION_MAJOR": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 251, + "character": 6 + }, + "end": { + "line": 251, + "character": 33 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CPACK_PACKAGE_VERSION_MINOR": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 252, + "character": 6 + }, + "end": { + "line": 252, + "character": 33 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt\n\nAutomatic in CMake 3.12+", + "is_function": false + }, + "CLI11_BOOST": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 29, + "character": 7 + }, + "end": { + "line": 29, + "character": 18 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt\n\nAdd boost to test boost::optional (currently explicitly requested)\"", + "is_function": false + }, + "add_dependent_application_definitions": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 158, + "character": 9 + }, + "end": { + "line": 158, + "character": 46 + } + } + }, + "document_info": "defined function\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "is_function": true + }, + "SHADER_SRC": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "range": { + "start": { + "line": 162, + "character": 12 + }, + "end": { + "line": 162, + "character": 22 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "is_function": false + }, + "CMAKE_AR": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "range": { + "start": { + "line": 18, + "character": 6 + }, + "end": { + "line": 18, + "character": 14 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "is_function": false + }, + "CPACK_DEBIAN_PACKAGE_ARCHITECTURE": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 280, + "character": 6 + }, + "end": { + "line": 280, + "character": 39 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CMAKE_RANLIB": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "range": { + "start": { + "line": 19, + "character": 6 + }, + "end": { + "line": 19, + "character": 18 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "is_function": false + }, + "CLI11_MODULES": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 73, + "character": 7 + }, + "end": { + "line": 73, + "character": 20 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CPACK_PACKAGE_DESCRIPTION_SUMMARY": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 254, + "character": 6 + }, + "end": { + "line": 254, + "character": 39 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt\n\nAutomatic in CMake 3.12+", + "is_function": false + }, + "VERSION_REGEX": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 10, + "character": 4 + }, + "end": { + "line": 10, + "character": 17 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "no-deprecated-declarations": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 244, + "character": 4 + }, + "end": { + "line": 244, + "character": 30 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt\n\nAdd -Wno-deprecated-declarations to DeprecatedTest", + "is_function": false + }, + "CLI11_WARNINGS_AS_ERRORS": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 70, + "character": 7 + }, + "end": { + "line": 70, + "character": 31 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CLI11_headerLoc": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 140, + "character": 4 + }, + "end": { + "line": 140, + "character": 19 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "add_sanitizers": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 23, + "character": 8 + }, + "end": { + "line": 23, + "character": 22 + } + } + }, + "document_info": "defined macro\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "is_function": true + }, + "CMAKE_CXX_STANDARD_LIBRARIES": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 135, + "character": 6 + }, + "end": { + "line": 135, + "character": 34 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "addGlslShader": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "range": { + "start": { + "line": 54, + "character": 9 + }, + "end": { + "line": 54, + "character": 22 + } + } + }, + "document_info": "defined function\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt\n\nHelper functions to build shaders", + "is_function": true + }, + "RESOLVED_MODELS": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "range": { + "start": { + "line": 183, + "character": 8 + }, + "end": { + "line": 183, + "character": 23 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt\n\nAdds the 3D models in the binary folder", + "is_function": false + }, + "addSlangShader": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "range": { + "start": { + "line": 73, + "character": 9 + }, + "end": { + "line": 73, + "character": 23 + } + } + }, + "document_info": "defined function\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "is_function": true + }, + "CPACK_PACKAGE_VERSION_PATCH": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 253, + "character": 6 + }, + "end": { + "line": 253, + "character": 33 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt\n\nAutomatic in CMake 3.12+", + "is_function": false + }, + "CLI11_TESTS": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 41, + "character": 4 + }, + "end": { + "line": 41, + "character": 15 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "is_function": false + }, + "CLI11_PACKAGE_SEARCH_LOC": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 336, + "character": 4 + }, + "end": { + "line": 336, + "character": 28 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "is_function": false + }, + "CMAKE_CXX_STANDARD": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 115, + "character": 6 + }, + "end": { + "line": 115, + "character": 24 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CMAKE_CUDA_FLAGS": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 186, + "character": 6 + }, + "end": { + "line": 186, + "character": 22 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt\n\nPrint out warning and error numbers", + "is_function": false + }, + "CPACK_DEBIAN_COMPRESSION_TYPE": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 281, + "character": 6 + }, + "end": { + "line": 281, + "character": 35 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "cli11_boost_target": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 297, + "character": 6 + }, + "end": { + "line": 297, + "character": 24 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "is_function": false + }, + "book_sources": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/book/CMakeLists.txt", + "range": { + "start": { + "line": 6, + "character": 4 + }, + "end": { + "line": 6, + "character": 16 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/book/CMakeLists.txt", + "is_function": false + }, + "CMAKE_CXX_STANDARD_REQUIRED": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 125, + "character": 6 + }, + "end": { + "line": 125, + "character": 33 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CLI11_MULTIONLY_TESTS": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 77, + "character": 4 + }, + "end": { + "line": 77, + "character": 25 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "is_function": false + }, + "catch2_hash": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 98, + "character": 6 + }, + "end": { + "line": 98, + "character": 17 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "is_function": false + }, + "add_catch_test": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 171, + "character": 6 + }, + "end": { + "line": 171, + "character": 20 + } + } + }, + "document_info": "defined macro\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt\n\nTarget must already exist", + "is_function": true + }, + "CPACK_SOURCE_GENERATOR": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 259, + "character": 6 + }, + "end": { + "line": 259, + "character": 28 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CLI11_library_headers": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 173, + "character": 4 + }, + "end": { + "line": 173, + "character": 25 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CPACK_DEBIAN_PACKAGE_NAME": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 282, + "character": 6 + }, + "end": { + "line": 282, + "character": 31 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CLI11_FUZZ_TIME_FILE": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/fuzz/CMakeLists.txt", + "range": { + "start": { + "line": 25, + "character": 10 + }, + "end": { + "line": 25, + "character": 30 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/fuzz/CMakeLists.txt", + "is_function": false + }, + "CLI11_FUZZ_ARTIFACT_PATH": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/fuzz/CMakeLists.txt", + "range": { + "start": { + "line": 18, + "character": 10 + }, + "end": { + "line": 18, + "character": 34 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/fuzz/CMakeLists.txt", + "is_function": false + }, + "addBinary": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "range": { + "start": { + "line": 95, + "character": 11 + }, + "end": { + "line": 95, + "character": 20 + } + } + }, + "document_info": "defined function\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt\n\nA function to automate executables aditions", + "is_function": true + }, + "TEST_FILE_FOLDER": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 218, + "character": 6 + }, + "end": { + "line": 218, + "character": 22 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "is_function": false + }, + "SHADER_OUTPUT_DIR": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "range": { + "start": { + "line": 147, + "character": 8 + }, + "end": { + "line": 147, + "character": 25 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "is_function": false + }, + "CMAKE_EXPORT_COMPILE_COMMANDS": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "range": { + "start": { + "line": 13, + "character": 4 + }, + "end": { + "line": 13, + "character": 33 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "is_function": false + }, + "docs_EXIST": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 60, + "character": 6 + }, + "end": { + "line": 60, + "character": 16 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CPACK_PACKAGE_VENDOR": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 249, + "character": 6 + }, + "end": { + "line": 249, + "character": 26 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "EXPANDED_SHADERS": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "range": { + "start": { + "line": 149, + "character": 8 + }, + "end": { + "line": 149, + "character": 24 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "is_function": false + }, + "CPACK_PACKAGE_DESCRIPTION_FILE": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 257, + "character": 6 + }, + "end": { + "line": 257, + "character": 36 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CLI11_SINGLE_FILE": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 71, + "character": 7 + }, + "end": { + "line": 71, + "character": 24 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "RESOLVED_TEXTURES": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "range": { + "start": { + "line": 197, + "character": 8 + }, + "end": { + "line": 197, + "character": 25 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt\n\nAdds the textures in the binary folder", + "is_function": false + }, + "PUBLIC_OR_INTERFACE": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/src/CMakeLists.txt", + "range": { + "start": { + "line": 22, + "character": 6 + }, + "end": { + "line": 22, + "character": 25 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/src/CMakeLists.txt", + "is_function": false + }, + "CLI11_DEPENDENT_APPLICATIONS": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt", + "range": { + "start": { + "line": 150, + "character": 4 + }, + "end": { + "line": 150, + "character": 32 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt\n\nBuild dependent applications which are launched from test code", + "is_function": false + }, + "examples_EXIST": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 67, + "character": 6 + }, + "end": { + "line": 67, + "character": 20 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CLI11_PRECOMPILED": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 72, + "character": 7 + }, + "end": { + "line": 72, + "character": 24 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + }, + "CLI11_headers": { + "location": { + "uri": "file:///home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "range": { + "start": { + "line": 142, + "character": 4 + }, + "end": { + "line": 142, + "character": 17 + } + } + }, + "document_info": "defined variable\nfrom: /home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "is_function": false + } + } +} \ No newline at end of file diff --git a/.cache/neocmakelsp/tree_cmake_map_cache.json b/.cache/neocmakelsp/tree_cmake_map_cache.json new file mode 100644 index 0000000..68c25db --- /dev/null +++ b/.cache/neocmakelsp/tree_cmake_map_cache.json @@ -0,0 +1,8 @@ +{ + "date": "2026-08-25T23:21:08.955141949+02:00", + "data": { + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/cmake/CLI11GeneratePkgConfig.cmake": [ + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt" + ] + } +} \ No newline at end of file diff --git a/.cache/neocmakelsp/tree_map_cache.json b/.cache/neocmakelsp/tree_map_cache.json new file mode 100644 index 0000000..64901c6 --- /dev/null +++ b/.cache/neocmakelsp/tree_map_cache.json @@ -0,0 +1,15 @@ +{ + "date": "2026-08-25T23:21:08.955046741+02:00", + "data": { + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt": "/home/alex/Developer/Code/Vulkan-Git/CMakeLists.txt", + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/src/modules/CMakeLists.txt": "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/src/CMakeLists.txt", + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/examples/CMakeLists.txt": "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/fuzz/CMakeLists.txt": "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/single-include/CMakeLists.txt": "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/tests/CMakeLists.txt": "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/src/CMakeLists.txt": "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/docs/CMakeLists.txt": "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/book/CMakeLists.txt": "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/CMakeLists.txt", + "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/examples/subcom_in_files/CMakeLists.txt": "/home/alex/Developer/Code/Vulkan-Git/include/CLI11/examples/CMakeLists.txt" + } +} \ No newline at end of file diff --git a/.clangd b/.clangd index 9c2b0e0..123740c 100644 --- a/.clangd +++ b/.clangd @@ -11,3 +11,4 @@ CompileFlags: - -DLOGGER_IMPL - -DSERVER_INIT_IMPL - -DSERVER_IMPL + - -DLOADER_IMPL diff --git a/.gitignore b/.gitignore index d2158db..12340a4 100644 --- a/.gitignore +++ b/.gitignore @@ -37,6 +37,9 @@ Thumbs.db # direnv .direnv/ +# cache +.cache/ + # Nix flakes result result-* diff --git a/CMakeLists.txt b/CMakeLists.txt index 158faa5..268b0f8 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -27,8 +27,18 @@ find_package( VulkanMemoryAllocator CONFIG REQUIRED ) find_package( fmt REQUIRED ) # Shader compilers add_executable (glslang::validator IMPORTED) -find_program (GLSLANG_VALIDATOR "glslangValidator" HINTS $ENV{VULKAN_SDK}/bin REQUIRED) -set_property (TARGET glslang::validator PROPERTY IMPORTED_LOCATION "${GLSLANG_VALIDATOR}") +find_program ( + GLSLANG_VALIDATOR + "glslangValidator" + HINTS $ENV{VULKAN_SDK}/bin + REQUIRED +) + +set_property ( + TARGET glslang::validator + PROPERTY IMPORTED_LOCATION "${GLSLANG_VALIDATOR}" +) + find_program(SLANGC_EXECUTABLE slangc HINTS $ENV{VULKAN_SDK}/bin REQUIRED) # CL11 @@ -94,7 +104,7 @@ endfunction() # A function to automate executables aditions function ( addBinary BINARY_NAME ) - cmake_parse_arguments ( BINARY "IMGUI;LICENSE;GLOB_INCLUDE" "SOURCE" "SHADERS;SLANG_SHADERS;LIBS;TEXTURES;MODELS" ${ARGN} ) + cmake_parse_arguments ( BINARY "IMGUI;LICENSE" "SOURCE" "SHADERS;SLANG_SHADERS;LIBS;TEXTURES;MODELS" ${ARGN} ) if (DEFINED BINARY_SOURCE) add_executable ( ${BINARY_NAME} src/${BINARY_SOURCE}.cpp ) endif() @@ -210,22 +220,18 @@ function ( addBinary BINARY_NAME ) endfunction() -# Scan the shader folder -file(GLOB SHADER_SOURCES CONFIGURE_DEPENDS "shaders/*") -# Scan the include folder - - # Adds the main binary - addBinary ( engine SOURCE Engine/main - - SHADERS ${SHADER_SOURCES} - SHADERS - LIBS glfw fmt vk-bootstrap vulkan CLI11::CLI11 + # Flags IMGUI LICENSE + + SHADERS shaders/* + MODELS assets/models* + + LIBS glfw fmt vk-bootstrap vulkan CLI11::CLI11 ) addBinary ( diff --git a/assets/models/basicmesh.glb b/assets/models/basicmesh.glb new file mode 100644 index 0000000000000000000000000000000000000000..ab41bcb71157131a96f486f4115b034f585cc39e GIT binary patch literal 141384 zcmeFacbpYf5;lA~ql=0e!|I5MRm35KGWU*(f{KEeFb_&H!3dZGW6p{>D`w277*?5X zOlww5t7}-tRoAetVp#Js-&3dSGeeYi{KfCI=-Bs1+Ry}?C^yxF#Nr&yW zovV}@(bH8wEThy8yN=rV_#We?PoFTO#}>!;m^5L^glXeuOr6$aiyk{po;G#L)aiAT z;8M5sVH2i|pD?X%`^`ty9o4V*z}|fa_vqE*s0q`iA3SvmjQjSk?{Q+U9@7s(fF4`a zGn(FGi+zsoF=gE0*w2`t<6%---Jz*>il4!zWCitlimXn*eWdEj9ac0G9fgz-JL zm@)0h37OAMY=`gEeBiX5Cd?Rj*kK1BG-m3NlO|7@Fdg2<_c(Ce^a-Jw}h(b^G16AGNbi=FX$W?6lR$9$O%NyKOsmn^B|2 z3_GB{#}<82u!E9-_V@HufmN_u6kt0hMPQD9<>k@+4d}>$41A za+V>LXX#TfPt&Il&V!tfI|$!%`qXJD6%IUd;=~El_BeRL(KXZpnX6$xs zGq^gSPv3#PdK@(M$SJrg`r`W>KJFMWwhtJq%Xcs+zt3iUdg=cVdxrMvvB$RC^wVsW z(UJ7dq8GV?*Y@sxtIm$HR=ew+`n&bR*W|PBy3JN2w;EFw0AId3z>?(j88SFaPkrwp z`rn}XK0^i#95iSk<;(2s*S~+i{)30q4;p}c9iAr89INj?uwUN+0|%ouHW>w}I&V@@ zPIdG13!Z+bB>}3lI;d6)mSnZ>;K8_}i}MQl7JrF>XeHCGcfWyy`V1a4fRZ`5e?JWd z59l*sU|*5UKAF{KnHkU$yCq+!nxwdbI&V!;fIj%bOB10wr+sQ(C?cst>cO-QNd=dd zTx;^m)>rj`$Ih5Aa>A5JGjLBqO<;>1qb5$&H#@4(xM`Etmy z%+?z>hsrY#7(`c{<+%rSa2_-e-$Oe0D{6SZ!Sx-!_Tc_Y^Tn(E`}QB$ze5X(QrBm| z;Evy*|KR=umLdVj7FsMTH?V)dz8#uSoP+@#D=?_Op6DRcSo9_O_N$68q~Ab&jayc+ z&wxSHWce-n^cmEbQe)eQ0ac~!)2|@;?U=g*nB2k10zNHA04BA zlrPo7TJIo{`qF;$&&1N7Tg=`ie%5htK5a`O5XZEm89avC%&8HUD(mI@r)L zbDpei9c-%N;Cyx1R1LkLlz7}kx z>0c9lHgRbmu=%W%qn1~zK(3-9wX6!&%8)Co)zzwMCDj$Ot6D*IQ=VD|av8On3Y4q5 zKz31oP%EnC5N<_mJ~pNLytiBV-66{-wivc$_-K0@{NyvkOYthlYkM248?}Tl_?U60 zCPvIy#P1Z-cNOg~#9cpKs{yggtA4XhY=Z~>^U8+(Pd%)>~n`6=bLd-cyM1Be}=R6VlFT`BaMAWwsGiMUPpF+%>q}&^R z7UKTkC-E71if!%c~OKk9)=boeaJfmUb#0D?;;wH`K z9c~|%*x>K{hcus$J!S922Jf)x0?lXQj}2ZG*9!4@zf%uG-aE$}Q*+V=bDLw){zA+- zNko1MG3PuH`7gv=(?ry_5Hn{I!Jk6RoTR?T@Usx#jsBDPyl~BpVjE2DCq6&%#Z9pd zKC;X8n$P>5`c-U$cV7Q_&F9rmT`jS}h^zVh)Nl2P4MyI})IaYC{@Y;mJ7wx;seiM< zbgv*jZ;t!B4d$4!h+l}g&9P{IA?BPUB0q(gbDoI&7hzH5yBn zR|WrV@brd_HJ_>fvB9|SYCfNa@sADWwyQ<{fW!uK%vi)P#N6gsw7(E@P7;xyLd-d* z+?)ItVyRX7JGl}3&A!be{f}e#Lyw`lb^Op}=Z7{AY&FAMH+AFrf`=S3NK2Ps* zeQbl#FK7;U~{ifz~1IGV0xE|jXTu^_-GmH)9 zn6Zdoh`G(NXn!H*oFpPYg_v_r_ePWdLd-QyM12b}b0!h|Da6dlMDVi^Q||FRN;PO9 z^ndaH**q-7^C{gQ`~LIFRvS#?XSzRj|8dpW2GjV2`jcnS|JY#k`?^0tKT7?6r z$B|3o^Fx>uw80!R7V!%)w>cK=FT|XaMC7LsbIucy|3b_)O+^+9(grgp6T#0y z9H(==s6k_28@vj*Kzzo$cwZa*4!A~q#{76c8~h!(oR0fj93-OBFKhr#`4K{u9Ak4GcV2sN(pYO*!mJP;pspd1D zze+ZEL++p7!gH7nHhuD|7-!kwySaZ}19`H+k8=O~Jo*V6%rRpTzYv@LS+qYc!km*t zGMyc{bRLnHS+Xzy|-o<7d2oDcRsXdHhUc8XL?pV-dd)oAI+~ ze_Vt)Cp0H%@>7U8=ZVOFA?BLucRM!NjGqO6k|NBUOawm*@k>0vGza~s4NiD|>3Q(e z29M?Wr5Sh+V1sFXkN7+i^Q<=b37%h~d2Sob^E0JUxXx@a^=~xZpmCxN{*xYCDfKsu zvurTOj79uH%x#WE`wKDWM86xc!JP9%Jx%98p2vJL(c*CIU+ zehY1bIVR2doA`y8+Z>Db7h=u{&H0=B6k^VKBJy8|xu%-)Hkdg>bN+@ug_t>+2!0k~ zJeTVCvveKU;HUZhEWO9J!BhGD>^|r}Z7}hk`e*7VZ1A3lOV5K(qMx?G{C=~vJ;o_E zcuRgiOY;Oa_%*bJ_`DhVX&cNj_1ugN<~GNo{e_rwl8F2iV$QjKH)w;orirL;A!g3# zwIMc`IhhE47UJH#e&!{Nqiygiyng0ej6ZE~4F1#n292$3Fpb-Y&(sgu;Ky)X5ua(C zXoG3|Mq}HfFb{2mx90UTG|sib0b&!M$6_39gE?j_;um6Wb1d3lh&d;T$WI~Woa=Yj zHkfOgi24>{=1d~^Q;3<9iQs1;_IZ8da(I5X!JC5rG+#Fyb+*A*qyHy9Q{Q8Q>A9Nt zO!r?K{4DM(#ODprf7)QPrjht#gS#LvG=9Dl^Bgw#HrNuMAI3a~4d$4!h+l}g&6@Kz zm~)bd{1jr&c_Q*(h`FYTsBa-=&Lo0Ag_t>+2!0k~r2YYVpYrFl4i>oSLE`gDx*xK^ z3m+stzoqZPHn`;h;xmmuX%4h=-1Z>xxfjl%lnqw>sDIu&orkc%-R2RW|E%ZXZ1CK9 z#OMF$d1xD~W5yzWCs?;X7VYl@>zpJaKb>HmbM%>6{yV|CrirL;Cs=bP5&Y={Yknqz zpM{v-yAYqdq93xsL-1bE^v^c75%dfeiQEniO=h!f40Fd zi7QqAY>Fn+edUt`?{@%c!MpKUPKglj&33;x^S)v<1a_`C~pWP>?oEaDep zZgVW!Ux+y;iO5eO=A0)Y|Am-qnuz)qV&+UD_*00PpNZgSA-);?C-u+IV;pLOsr|&~ zRy>E<;AvRbNPHfHc?cVfXKKx7nqRWPv~G|3=LGW`Hh3qjYa~9?^N|h4yl_JOa}V_Y zHW=@J6XNsw_|7(%W5yzWA?7y6qWy)KbCQVs6k^V~p3}3zT+>9C{3Jeajd?g5{NMI=&F9}S|7?R-!Mbze^NQfV z4Q|G|bK>(6=>Kgn?z@`LGco?L!CzzDIq~^ZjG1gO$Bae%Ld^8z{4B(jdpvhh4O$5OU;KYI59oJve=-~MKsGqW_=@_I zCovCdgZIGwi~5s8@E*Vh)8Adt^UDtCe{3+`IqLpo*Yy2tr+7I2E{pmTn%}d*cz>$< zlfmix*-kOu$?E>(CG>GNnB&JHej(;I$D;j(nDdi}{1jr&c_Q*(h`FYTsBa-=&Lo0A zg_t>+2!0l0JfG72aTCmgK5v1)!T6u}yfWSc*kFun6XNs3;J*#VxLNa=-s9O|jLS8L zAIA982G79X%@Uu{_L2?8bFb!b1LlWq@UHl~S?ZO4|N5zt4d$4!h+l}g&9P{IA?BPU zB0q(gbDoI&7h;N0?%JI_&e~E_)P1JY%u11G@skQ-iGFwI>mGOcP_5P zGmj1Cn6Zdoh`G(NXn!H*oFpPYg_v`$-|5?6u4y9bTZox6nv*t|IhhE47UGA~-vTKs zHTwY@yaMJ=h|gGW{GbhfJ^k$v*w@Xo!Q$^uAGE=nWPf*EKhFl^y{YCiy<4!sk7U2Q zF>9U;UerEQ_s>c#nrDMKCg!BF_=T9;44bU|g_v`KHf8xK#GG^b4krJFm}?4~tiFYq zIRl%FKZTe%37d?cg?Jh6pS$2afDInT{WI1Kx7y%A+&@2rc`O@@^-;Qi#_yoSHn@)a z=eO}3V1qF)srigG+cYoPDZY*Sj*zO!E*ncpDx+(>%8gp3dWEnn$<6U-S5RB(7r{Jd(%HH1}_VIc6;47h-O6 zEZSd)IVZIK%H*dIbIxhaxygSa=9(s=zJ-`MqyJ{p1~VrU!Ouec7oOj^3H_%H#`+>X z-k`rfwZS8Ke&Yzd2e833zenR|`uztRJfG(`Xr9{!)AJFHpJ^W52CvKW8#GUEgV*8t zjkht*vcVja)|{L8g_zqMi}n{{&WZj_0~^da*T1=8gSn=OsBa-=&gj2cw!zHFMDVi^ z-@0V}KeoZIESdk0ZSYW@|KASU2LHNb{y($Vucq-5TleWPp@ccjBhi&jj zJpca{v<>E%`rdAXxy`X?e<9|aBqBeBm~&2Z{wDv0m}{Dd`W9m549)o){uE;7B+dC7 zeiq_u`TZ=`!NoQ>;rFxj`vW$30>7Wd{AX-~>HP@x&omEegLg(;em|So;F0`(mijpx zJP`dRy`RPUlf(u;&+lh9LO*STIc6;47h-O6EZSd)IVbc^*5s!UbI$4gtjT{N=9t|^EW`pkm|7retd+^8xzl!UY_)PPl zHuwQtSH$OG;HM4#3hk!x28}~)@D{v&W)a5GHu&eS)Aci>Fpjpt95WX23o*A@kNs^h z=OhvNDa4#}S~FwvUx>M;iKuTOX3ivnKZTe%nFxLs;{Se;`0FXb2ganE5v7-`?SH2;l4tArg5kZruli|Gx5g;|MqpdzLDl3Z15$#zVU9% zbJ$>xspn2?Ft=HA-Uf3{^w``6bIxf^qsf0E=9(s=zJ-`MlL-D4V&-Hb_*sZCkJ*>r zr#z_ZV1sA%BRim}dgU#4*_LpF!LVsCHq$?Ow$-2eY{M?+pO_3^ zYeDOcKVMR6`E)wr27^z-aoWCz4coVpz4T?9R-d#%0nK0uJx&rUk;u5;f(Uk%P);r+3CxnH)6m4^@7&E+uqY~ecOz3_xCP{ zrH#y?v^n7ZuBBnf^Tank%gwX2Y3tEY`u5~)%gesERw8R5b1rQ*-F#wcP1NO=`3<>s zkv4~Id1~pXX^To14j-Gy+Q}M8n{~FopcJBxAD(_lZXKn~onKs1TKl7C8=ik9VO8BZKMCbf`f~mgx?ZF&=RctuNnhqb zLf4e^<@zSX0qM*9Nr+?8m-&+r$D}XwGZFmMzRb@=@KgIr-rl)Fsi8kOyw$JwS8({V zd0k6`KAKT}_LfuQJl;y1ZT1>pYC3CN`MlfTGHuh`mYkF}&z^TxX*~FR+AS+2(nfMp z+Pw3x$4Vc5vtD_d4|<#2YHmwTN}Ki9c&l`B^PLnSN}DHF_^h9K&sI)2itC0^jRd7$*vrQ}6NPEdW$y<&eQyZkOh|4q%?F|gW-new&bC-Ip^l}%7gBGw&Ax$!z#EZ?b)W4Y^1&9p5!gZkEspP zS8`AKa{FWYj?!0hPx^9x63U_UmE4oQod1MsBz-0Kq%YSuAr44i$vx&(LcEf3q_5;K z^D`0r)clumB!^+A`HX$7lEXNk<}>!idHW?l@f|duu`kZsFZqcaX+C40`R_oyTfg5n%RvN3&wIgr?eKunlfg8x*jMW8hp!1pM zP=On$edf7UVA`KO&k9U&vgcWW>Acx9g22?yY^)_PeXs1EC2)hh_62T0t{Oz%3?7Qy zHi$eMO!>_E5a}!X5IiH5=y@Dt&(^&CvJb&Cn0_9|*f!4FFZ&QYS?ptJ^AZ_prT&Cx7JRg{AQ}->hACNW&y*j3izBan=2b$x%8SGN)O`r^GokA;FOKA}%;s|>0FIqwF^Pu|~3`)k-#@tI?4-U@7dbsWiO$vuHhJFDVwPBe!FHhIw3f{Y_M zEU?LQRUEFV=CHt~j`~`VaU_QY9x8kdPbg-CRA#7Wam8lP17ivHQ;jW}uYK>c$?9MP|uy6AT@d2vL) zYU-|em={O%tAHaw*9b4iSW z4W{RGW23n$c`nAl#-5(pO?=Hyd5wtivuQs)vzzv7e#&b^jGs;3^g9z7M_wah+-vHh z-^t{~5#wG{cN#yJ^5Tebui=&EWL_LGem4B1@w4G4JF^HVjig^ zIh?m&%p;laPV-Bpy!~Q+sU$fp_lx-@dLLlspei^lZN%JBIgjVkM$8wL^LQ@ih|1DF zkLO~J$k@}Is)?_;Dt*NqQCa#*e#&b^%nQ*RG0hv(oT|x>et#l;#k`QI3(YT;WE{zD zF)w85PV-Bqjx@ho5l74~8D42l=EY%t(j2Lo1EFU_!%v!Ds)&;_m(n2S`Ad?+dHcmY ze@SvUZ$Hlu(>%ZV?q%91_w)QS&FyPDdgn#QC5NRA&u{CxNgK&wX~Xm9G`C-tHj=~A zM$G3MF40`8;b8+E7jyUq(|aysqq!=1&hhoUtn`&!mDdQjU(fqWU&&SJE9UUa(pU0R z`f~p1y;Vv2N}fw!F>i0`PV@h!jyjI?W&Y5-z2TMSWL_NRC%wZmbA6iId2w>)3>)}8 z8m%!XNe<`j=l5&$9=0SoEcerO&g%-w(nfMv+VJ~9-Iquk$zf^3?;mx4ENvu*r47H| z)c0*^BRMQ>XdJ-n3d+((@|-scp>-YFH;?CBUs_jClD?9k(wF%|?^O-2G`D3O>C612H3nu*TXQ=v zPR`tT1Fv(SHDD#lVY#2zPSDzz3LD8`X~XL)Xx&#?+DHyd8(zObYh(0S#9RxK!_tP= zhv>1Sw2>T^HoX2sk5#3OA)*NB#+jpVSj;q`B{*0d~bB!{I9 zudk!^rSz`FtbsIn);yOsy!KB&ujlbx+VJ{7Js*(Ab7{kK%zAz>W^=h7E8^LdSKiRP*K9jJWoY2s*}qYY-wb4mL0xr|N5 zb9_g$Ub-xO`Mc2CX_E)dbL7yhk=E~5cpWuiv!>eQS@Rq**HQCR`l9cOd2Kn}e=}d^iSDbVFZ#yVj4`CII6r#)AZ;Xvr483kk3FP~T^Hq0MA_K-G` z!_tQNsmC7DM)DkEkC@k%SMU?#aI?Neu4!q&*e2$+5H*t%xlZ(`6%<1T$R2UyT;}jQ2OTaobAo? zVCE}%D}ALs$Jft>(q3{{+Hm{zv!S$+9F{hmAN_nMZ6t@K4d-7!8%i6=VQItl)z5~~ zMsir%Fn{#3p|p`4mNs%f^HYzdCC@Q;5%b#e3Vvdq#H{0zYquKk>>2ag@{;6dUK~8z z#=N$i<~=fB$yFH#&)qSvEvLD;%vW+%`r_F<;kD&@jid3ET$R3f_D^_iIn7^XzLKlb z7jp{$y8=FF7o2xcz$WPTEKgOB>EDtvNT> zvc481houeYU(dNo8_8j5!}X;#=QP(reUZKvB!{Jq+|T^ca~+bydHb24dagrq8}opg z&+w!9lZ@M#@6&vy`9H~Rv{iEw?W*8sUL4FlYEI&N)0||+&%8Lub;4`QX&Eq-d zPBkY{H@ybk_)4xyU(C&FPJ$OS=bZUUu1a6pVKl4-1MN4kuxslfE>NQIOoAtVSZ64-IXzi|k&xm4xhf4-cQHHdstextm9BTvEG2zIn#Pwoj0+ThSo*XdR@H^0rRkW z%!WRR-Y;Z*3+I;BMVs7~>AaZd)#E+%ZS?*k>s#{TU>-T4@gDliivA%l4(6#7UfWOa zt+Ku)FAm-g#l0B>NC)!}-zgWTlPlL!^z|&-vHyYGogi zx1Z~)-_^=KByT_SN589;eMsK^oNK=U^RO|mEpL#VV(&pSMW104(7oVURz$l&%8KTTaxhFa(YjY`AV)zo?{+A z;kD)To*?s;T$R3TZ`R3VzLK}nSK4!Yy=F$*OAbpLZoghLBW)yyrH$Or`O#}>B!~0% zbN=;O8p+|j{ajzYmPT?oZ$I-#uceV3&fA}JkE69=F|RGBHDejK`CeJ3dyeEb<~L(r zTizf!nHLB1$O*44Z;+hKi-URUgx8igNKWR(!8~}vYs+cPUdGS7IGATocx^eY3C#GJ z7YFnB<~IvyO>E|y$8)x)b-6U}pZQAON?&Qu@%5TUX)ie}ZRCD#zh3JoIh?nj^P|@~ zN)G4k=ltunj*`Q9`?^aC#QD|;Z@=KJsjudC-hRPb!ynD5KU_lEN&4@LhR=f#mc z6#a9Y7f13?^v`i#9LYn`KgW4-1c&KwYE1u3?}1D|Pk%dO`uSLLPx^{JmgeiTIFggn zSM;~B^p*CKtI}Td!}NZOu0j2G6LP=gt>~Z4_tJkiA@@t(ivHQ;jkryJ6GUS_8k3m( z6Nl+7E;&BEVtymeiz7KK=0D@SIFiF+ULwwm zBe^Gi#T*6A1Dbh~3hqf?F~5;W-#p%mISTrH3^R|KNFGXGF<+5LUuiEnDecAFMIvn^ zKc$VByP)4~plehA-Ld4Sv=Q?d^moTJM?`ZV^qU5hH=18H`KS4fSj=za?w1@E^Bbn_ zn%i=}8Y<(R`-kl82JFV*WpozS3TDQre5TebauLmowKL&HtM=&^rRtew~{<-imhw zCOV*cOcpWbs-a9hm(oBHbCq7n1|x%(wo#r(hNWA*QH$o-PT%ukx%rr%96 z@33NiFGg$5W65EjpD)ujA-N~stJ3c*)r=##Cw=+-o&Fs#87Ggo;vK8*BX|visa=Wc zCVj;_R^8X|8U|B$Jzpz%E8fr2@4uOK2o>CuycO?Q={Lm88U|ype-laaR=jVe-w-qF z5Gw2?Z>7C>_iEZ-#an43-p`u+Xl_eRN*nR+)#OlfTk=!dhAUpr zhROYstK$8v;g$Z~B)MO5nE6TXap-sL%o-T_ZAP=cE0!GQ_ey0NvqXh91EZe@%NLF{|L7d9g-OKkJ&` zI?m&*Sfi+)vCZ!xOYTWuu|`optDE0OmfVxRVvQpG2CrGiTfsf)E7mvCZ}6Hmz{Z}| zHyTWTe_?)0SdlVtu2jFRk6p<*iuXX!t{GcPqFpc`Md88h+|`^pbm$xBTv2a~L++??~tIwu6mX ze;()Y5Z~9VC)e|yhHsJ^l2^cH4LQ{}`z`LgI%jihg0T{u6wM$(t_ulIBQJFcBDzvHcKlxi$vD;4Y6d^}IL@$o#Z=p5McbT>X; zTer7wu8-H&gUk5;k~S!nuW??qZ!n!dM>q2R+WPnQnfiF1#{bKc{cG#R?TJ2~r$I-)9Tf6dOE>cV+B&UkeK}93^`*G8IZj8tfcNL=Ha?!G6=Lgl=jd*{KTlI#$-lNv z>snvV(`jAFpXypmkLLZgbz0Z@a-L4>O6PCZaVm9Bu5Z3h>)I2(3VE!h8+m_ioz}G{ z*SA`yb)~qoIZmZcuiKvGJe^*@w97>Pr5#bz0Y+T;FP))|LFJ zzO^*fmG;-xXPpA+bQ2%1 zt$f{!ztuXuZYl0;j#H`A>$W@Bw_2xl zCI2?|@2C}y>2~L6sw*AO)0BHUUR$U2?auYB)@fbIzmel~)KphGo~N7mcx|25lg`_$ z?JD&N*hl|bhNgOk{`_-$8DlQ`cNia^&7a5f=QjSlum0?+ZpbbD+l@ch^XHLlKbk)e z$I+2;H!|oTDp<< z*Vbu$yKsH0b$Vawg8I>Ys+Okv6Ya09)4Ec-sIIlN!ZF?M98I~W<9WJ{kJr{|eY
g_I%=vb9naHEe7v?!>q+Nr)^?Rzaeec3T2}>Ms&A!kZ*RxG#!{Xp`?S8b zHTh9p^ECOVb$IMV>)TN;Dy7f=`5Nay-WE~ra&#l_udUPiE-Ka1?d{)ieQRqvZ(84c zoz|7w*T(HwqA5P*C{L%~i|R`LdAg2|S8Ix!*0;7!<2JH?o*vD|^K=s*udUPiE$v>@czE0aj?W*1=ep=t! zI`yHtl5d`_|d?Z_R)1q?W@+Qe-r!H)@eQ4xV|0rLauMVPV2gm z@`SBgQ+;WFzMjd)Yip`6`RD6|kJr{|4yavJqe|W0{wns-^;=t~_EcB$%hPpyytYp7 zzYBGpDNe`F>3x^tH*%bgdNl9P(@lK5wodCy=WW(@m3jf!H(#f9T|jxlR;k-D=1H&L z+M4Xs>o;GgbzQ*qt);21w7<4a>q_lv-czWoz`;!*R@)wb*1=? z9A}B9{H51zZJoBOiT!Hpw4QWcs&7X8Uxcxrtqp?|SoqivxFZt)`IzC=or}dr7^{v)v zT`7Je$LXj?^Zq>D#K&vvw61jCW^GrgXLEh?bz0ZilqYP}I<4nyu4^q#^`!l^bz0xq zT;E!n>Pq`->$I-at~PGp65X!*e(IlZz_Dtb_sm_nzYck$__cLf-`QN>YMs`V{2Mt= zM@@C5<9WJ?kJr{|J?Xqu-;R0~*Ee6Mb)7}|!B(l;+b`60&C_I`)-_+J^_|7_t);21 zw7<4a>q_lv3H>L${p>mt*O3rJYOe#ytYoSTWVLEwv+nz_5-kw z=2mL!^!w0tOa6Jfj*r*Y>Gj*h*Kf5>>q_ydzP0pd-k+zN_;_ud)|bxPtnDgwBiA=y zr}b^5JW(4f^kQ7Q>2+IMlYLs(e4W;{k?UJaQ(b9)wWjl@*KLue>z9t_X}WIdc(tbU zI{Lm_r0bDaI$m4jm_A-hr{|^Xmd;lPdY!mHer`)tc&?`d90;UCrFSYE89E=O^=Zdfn2sTfP0>-rhiU z&C}$QUca?9`B7c-H2J63ZEa0{RL?y9vp%lMc{=r@cUlyuTGRQ{>$kQhKdNt@PIE@r zFXgUUr+%Z^zgnk$blsAFZJl1X)IPd?J8F7A+Cm%NkCLYMqby&t8|^nR2yy&ok_ z??*|~`%%*LezXPr>4x*uXL>(MpX>QEy&t9hqxmzvAEnRD{F&a5(r0=HR2adOu2<-j9-|_oJlg{U~XAKT4Y3kCLYMqofx!r2Nj; zX>J$b`%;c8_3!No^Sibt`;_1Ln)pq2c^c=?$7^Xif6DJ7P2&$bo~Mb|bi7(qyHb7^ zX}T}b@jTtg$E!7+m-?+dO>t9R=j)W$bbjJ@N8Q5p&DUvNTPQ!oi7HL~7wxa5ee9?D z=4tZ#UDvm^PW=-0uhwaM+PGcSn)~M5cZ8{bH{^xBSGA_|Q+@L^`QcjD{(JZoJ9Uy81KUyH%>`-qo({mwcw{7d?J@9n-z7;xmswRH|Fh7tPei z&F8dVRw~sk7)#xtkDJfvyV#yI`OD9AW_{h_J4$W#lUDTo=^yc%u+X%-8-JF1$$qY{ zN_7j~GuKfJ@wuKqlcwVxKR5Dm(saDz=h1weG##(}oL;wd#wLBd<7cib+SAPbq^W(R zkKy{(*6r;_>v|SzdOu2b)tcg`b*!z)kNW34o%&Nf$-i2YAJsKaFV@EuI74>TI`!*@ z`CB?(t?9gJJ!@<7qkcJ0r~Xt=@~_t9NA)byR8KlyOQ&(uI+}V`>SnHQzD}>xX1;DK zb$k0%u4`?LaU|EbwkH3yzO{AgPjw~#YEAx&@$NWJFUIk-uC+D!rFE^X>AY!uYisgP z>swo={!~};uh!(B*0;7Mzw~;|*J(W|KG}5Clexb6I<43FrK^QZOA*HmA!%hz<>((!6d=S}OIuhVhWWL;;n@Ax^bEBRA>D>a=r zt#55j_Gx|dby`=7OZDxj>7GsZ-+Z0cw~6apsTbpKXQ*G!(-b%DpKEJcyPsaawRP%G zbtV65P5xE8}eUFmqWrt_xtt*yx~y?$%!)Sv1~{?(e=NA=CqQ8kg|7uPCX?<(! z#W(rm>O8(WF{L}j8>$G1Uh3`)NbS+KS zE$y$?bl$YSwKe&r^{uT_f2u3_S8MW5>swosUs~UM?drOYMmwm!9rXyVZ@y0JJA&(5 zsoUF!bA4-TrABalYisgP>swo={!~};uh!(B*0;7^jN|F`TU(QVTG!f|&YRY^wkH3y zzO^;^r_aB&HTkFYt*ul4Cd45B+B&W42(E8O-N^N=t=rqnx~_Se+MZsYMVjhD$7|~} ze~p~STAFxI`>QpzE6q>7ro50{ElqLL{M6Q~t9zrNYIQYKZKZCDJhdL=dTImpV6>WQ zgltsXs!-h?Z3wxc>Zu-y9*BlP4pZB!JEKVb3Gz>>mwG&UI2r*tLhYoMRd+?3L2jn% zRT4cGjf5Pjc2O&+Kd3&CebfMTeYBg?UH$CG(P*`@T3+>s?5~EXo1z<{H6YheYpeUB zmDFI!!I(mE)y>f#A^)iAR9S7IWQ1__a)mUei`rSWY zJ*SRV)70INcdPr=-fB;EG33SSQgysKO3j6ws~%GOt9{hvke90~)l7Aqng=;g{aGET z4p3J?UZt*8r>c|GqmYlPRy9!_q^^U!PR&+ls#DZ_$oc9Cb%>gzZiKv1-J-5mSE$z^ zUsrFc$JN7X5#%EEA9cODM*S7?uj(C@sK?X~kUywj)J^IJ^*6}BsrS`WDpo&3{;U?O z+tkhK1IQ0ln|f9~seXt2UAfMk>UQ;!x)a+c>P7VoCNy5e7CQH-yVR%ZK5Sp8i`3rE zOKP$Iyz-p~)xGL-^&qx?tIO0S>J`XW)I#-$dO&>z`IY)s{ZoCc{^5Iu29O&#e{x<^uc~Dsmvy>2->a`xPspCm zX3ksc4YfSv@=iDBC-t4`1=-8#w@-*jcXGLcP=Mcz4oWqVY~bxw6=I)8@zv(xHKaGIRijvrj- zyyKkdoZ`%fobNp09PCVTZi2kYxy3oxIm1~1xxo30bGUP;a~tGs&K&1L=N#v0$funb zoFkm6&Yh5VI(IvlIOjXhK|bfa;vDHrckYF}*O}{F;audr1o@Klx^tX!wDSPu1I|3> z8s{=+A>=~mug*!%@y^4L4?B-KuR6~=zWXY+W!?Lo`}oHyy3j;baCInw!Hh0 z^Puy!^ANU0&fCswPFMGBY%95sIgdEsIgerc!FkVl%jxF6hix@CaUOSmauRI6IX5~7 zI`2DS@Hb}__bDfKes!M0*6!Tu-0b`v^6yTY^Q`lv^E>44j_cmx-0u9txdYoL&Wp}7 zj&fhb7P|L1cRBxb?!orC^MP}avxXZ5tGc_mi=CgHfsg~;E!~ft51q9j*K+^pdhUOn zEg-jW%kHPn$IiNt>$>Z?k?Xh(kPYrO?ibEy&iat+yBoTHa07QM$gSMr?!TRXIU7T6 z?EcAJ!Cl7P7IIs6NB3Lj8)s9yX!M({n!)w_ipz~_kL{OxR<&YyRSmN>b~Ya z7rL*wfAAJ!Th9B|{mR`0auaWJ?@jl0cLm55yp_EFxQpE0kiETr-aGDJ-IXC%_Ez(L zaer|8LiY6rdGEV_b61C4-CNUJ?EdTygdFH?>9x5ZxNAYK<*nnn-tX=fkXv|V?-TbU zcU{PJy&hiZDX#&t!Q00B!u`};A98(fWA7z*A7>e_-S@q%ynnl&yBk4nKzApoHx_k&|A+t0P+CuAg_zJm$R++ zU%$~i(fgCPfp;L}f!-vqtGBE-9CEm~gSVO2)0+r6(L2=Z<}L5-2)U!Tv)9M#q<7y~*Bfkhghvd856ZymKMX^)B#^@DB6tguK(c&)d!0#k&ylLhoYl zNUzzu7xG^3L2skHd&ryXeGU1w_q}(e zcbWGFNyzd~t^M3NK^RDvVhJ4$5&uj5^cVh1s|55Kp??&%h?_J1uy$`+9 zypz2IGVz}DZuMq+e~0|L_px`Dce?i!P-R*q|`K9-bcd2)g_bTM8-s|2c-bdcL{wLUa_|JP! zdoHBwNB-yDr{4OI>-!t|FMH2HSZ;FS;%Gm75qiszr9T% zH}!k_Z+Q#70*Ux|7d&gT1 zay5TV{|Rrt_pA2=wsx=0`@mbvZ^O2Z|BSc5TkJi9&GYO1&HO_l5A_fCSM|I3J45d5 z@9O{J?cxmb|Ks=Zr~2LfRs1oKWBfh*|9U@r10VH}Kc<4}d(tKhR&s_x-IQxAuqoJ^c;+gCGy`C;H3z zUHt7JxAS-Od-;FzCqYi~5Aj#@yZSpo?%PxZ(9Yg?!b2-9Of!;olE=zyFATrGJ_K2IL$5U;PvPWBi98 zAMzjful29;--dkKf7d_RKf!+t@-aX0XZzRr??Jxjf8d|)xA-w+>_6q-;@{|h2>GG^ zk$<*-n*Su^lm4^*9RD`|W5|#FPyKiNxBPy=JJ<#Ut^T9_s*tM&YX$H7fAa@H4hn_@ zPx$lwH6hmw)(zVHzx!K4ZW%NL&-e@cbs*OX)(<}M|KXP*%fVK`^ZwI*56B+D#=*V* zj?N!~Z~TAy+XOH9&-oicZWL@1JmBB$F9W$uutKoVf7#y@a?_x9@UTDEUk-A)VCCRV z|22Pe$jyVk!Jqwk{)&(*2CE0l2HQKsgMa&52Q!17!3M#BkOu}6gXM!R!M2dw20I45 zf|yV1bI<#MQ}`TRPZ3= zgTX_=e!<|nKPKG==I5U_WObBj;A6;-gHMACg0q5WAfE|d4DJr@3_gSWEchb0I5;nO9`gC%)nIOLZ}2b3e+B;z zE)Qk}FGIc@yb;U`9tggH{3iG|xGK0bcn$Kk;O*ei;NjqV$nS&y1lI*u25&;X8T>6c zCD_(Uf-n5Xf}et~f-i%O!mqIP3||jk3c5gc36~ES1z!i7KyDKD3jZ1`47x&g4Oa|* z2)+w?L-r2q!}o%>f^LxA!d1gK80P#MeD41k^bJ1<-VIiPTqW!tJ{impeh!|*wm4`D z{vNCmwqaX4{7bMP_&xXwHaGkv_(!k~pdeKkhMx!j40=HJ2sa2{37!jl zNIzUQ{A0LQxI5(T;n>g%{~HX392}Oy^}=<-y&(4r_YI@a35P-s4Yv+A4A&3$hulAG z3jYuWVIyQ?xLx?CaO3bm$OFUi;R@k0;V{Ty;r8KX;iln4$cf?PaOH5ha0KLtaHp_O zxOsR8l!^0-XDGyK7#Gr@UP(;;d0Smv2}|c4<8B_g^y$VPxx;5cDQ2nF1A&o zBz!FVAxyCS5`GZA7p@w8fUSG!ShDn$hafE|9xKyG8BcuVH`4{?U-=kI`Du z?vT4jVD4TT&UZ5911+}YVE`p#cJ+CN%03Zq8I z#%NgdP54E)0pteJpQ7cXKSbL?ZX1n=z7PK$_Jr&iZ5Hhp?Gs%Fd0BL2v`tisj)6QT zIx*Tf8tsgWe((>7u8OvcwvJAKJRxd{HjOrnnjo8^3DFMG@aSa7lcUq3&7)1C@sQ)A zgQK0J9i!7BPmj)u`bE8?$&izy!=o|LsOW6Sv!nB(K~dl6Fv!EABceT`U8D0M&yQwB zTSfz;X2|B~$Y}3q&*&n^i=s=Ta19C=mY&11GBvNWBwp*hMqI08F)dkq*M$@Ay z(Jhd-M1i_Ex-hywx)|HM=;&x# zbTzj5(ah+$sEeA3Z8>#NG{(6u`q958YK=~bPKvs!Q?PYYlcEEoYokfnZj8=|PK{Pn zXJETKIy9OX&4!#EIqIC~%;=uz9BixL)da2S>WOU_=C7@AEbJ{XCW`eM*m`IyoCtdh zOzWeY@P3fiO;=#}X8Q%6hwr*zzEbPJz5?UBWcwwCJ*^=e%=VpP_+~aX81cJcqxUP+ zo=!1hW;Pc1JjA5>jzoMbjF_3d1*UcJ3y_}@;#*Z0-weaI7N%>2{szKazZr&oO$__bv6<_)Q;ay7jSWWZN3ogfw^NLm znT-Xe9L&LH`sYqDVrDiLnEK@B5a0CAo#I5;TVU#w={uPIIm7U+h3jBX*GV_%3Jm*f zzrbWi`+GrKVfNMb7I+b2Q~a$F-wMaV-U9!?@wY>KE6g#qy#@XR@$be){ItS|nb})l zx*iu`+Zpk#Fk)u*7Wgd0ruK|Md@GEYnY{&`jM!9Pif@GxGqbnA)aE*lZ-o&vv$w#M zb863Sod5sNG1`#D{Qm=^?Tc{FHvH)nqYasj1t!i@J`Mjn#fX{NSYV9y)cc4}_eWby zH6y;!zyAgIPL!g*Kcs(o_!fKz`tJ141~ z81aum{N)kf3L|D_Z-I$pCm=qJ!EA6F+S3hjDW6stwwb*J?t!>k3dh3U z0^fr8TO;;RY*rXCGkXhMhxl~QAs;J@n3=r=Zb4s8d1*v^D-14Y_7=D&V!w%v#_(1c zZO-g1utMx>vC%W56-La=-U8D-XaRC$<^(#$h?&_~;01_Jzvs{&?YF{+nb})lsuk6h zo&l{e#WeO7n6BGKoMR(sE1U>>3%mj1Udi#TFk)u*7MS`5%KIkJRv0ledkg$NVz*(V zYtjnG!rlV6Aoe0`)IV5Z#LVn1Fx^9k;d@g5mWSKGm%(ha)VNjnE+wXCqdjn5x^Gxv z#Lw(4FkJ@+B7R@Qx59{-*;`=B=Xk`Ydy_35ftoe4y~H#oG0$cHZ}CEW-|ig83gbIw z_7+%`Fz;a6Z-Zf**<0YbX#b_KqdY7%M*B10rNl4cyEMXw`dBNBHfHt~cpb!T!gr(o z)e0xV-U4rdxTEnMsQ+#GAdbSz*M?>@6_$6?AVKi}+R;*Ggt@ffZse zgxzSw|DQ0vOBUyUz+=&#PvB4Y9V-mm%-#aGAb$TO<+2q<%*@^bpN05i5TC|8Rv0le zdkfr*_=g~V55%{^h?&`2V0w<2!tt#zVrKRhnC`{X5TC9wTil3ifchW$_rGA`(=d+H z8J+{%AFxrMYK8ILGkXh6x$TCH#v4``F*AD$+y$}eJJQ(I3L|D_Z-Ez~CiO`=cD2Ij zV={XSJR9-px~BYCVZ_YrEiiG(*xTYcXb@6_W zs3}RuMK-t*JlUV^tuT0!*<0WRh)?4p%BK}Z%*@^fBYp|-X{b{tGkXhsH)6k!jmBwK7%?+@3w$18zk`k1Z-o&v zv$w!x`x3{u!ibsKTi|YJ_dLX>c|t3k2zv{>8sc7x`1R0M7%?+@3%m;AjzIk0&{h~R zGkXjC17g#>0L_70;aJ#P;01`^g7`Gt!*ktXn2V*3gVn{2

?<&Avi$`yxKIo!(6@HAei*cPTMlgJ@DzM#C;QXr$Jj`*k<+?nEK^`$j#Hx zRv0ledkfrxxC-%~gSNtmnb}+5If#1*;=cr)ixDTY$-&*=zcu2_hql6qli6Efg}BQi z{-e-V7%?+@3)~ZNry+hDv=v6o%-#YwA?_^Ly$`+A7=D@WQsS{V-(>hKg0{l2&Fn4k zXvD3DohoCFFc0H+W|M=dZO`Et<$kF#{4(FA#8={cv*B|VHY*If%-#aeEv4^(h>KPj zF}q{a_7?ba#NQvee;T${7O4%xr8hV)w@O3CHgg zBW7k}fhi};VtW+vb1~v%HaVDbHU~9a4aco8>@s@`{4-)Nz?%H7uw815@0R&4B_2~w z+c_G3OO5$^Y2T&9)MwB=u{-oqWB6shONpr;BrcD|W`$vw*<0Z8$R~ZDX4qO`TBOed@GEYnY{(R2k~zy;awf# zTVce^>@D#1i0@*f_*NJ(GkXhsDq{bD_R|>43L|D_Z-Gxi{5KK*QpC5yh?&`2;42Zo z4e_5td@GEYnY{(R3GpvQ{Dp{bg%LBex4_pR{%r7*;#*+4#?x59{- z*<0Y<5TC}XT@c?2BW7lAfe%CcM@zUS5#I_UW@c}Jry>5eh)?{q!ibsKTi^o`pMHmG zEaF>X#LVn1F!h=AZ$9E%VZ_YrEiheE3&2krFIi#4%j|3L|D_Z-J@LoQwF6BEA(y%*@^bk41dyPl!KO7%?+@3%m#7*CYOUh;M}vGqbnA zTO&U4f#O?X#LVn1FpVMUeK*C=#fX#HJ zdKRXC)VEq;#LVn1@L^8cTUUya) z@iTi1JRb3nLHx7uy{s@|X7)B1@tYC<7LMO3M$F8{0virf{9KGU#9?idgZD0{*AdxR zVTv;}jk&i4rZLHE@Q31CVZ_YrE$}eJU%>HmG2&!4IhgvK`cm3XD~vdqy#=PR!5qYY z6M3-0h?&`2;42Y-F5>@;_*NJ(GkXhsBjOYPe@A>PjF_3d1*Wk#-6N>|Rv0ledkcI9 z;?uu(5Z?+TW@c}JX>3W?8uceu7%?+@3p@kyXpZSPyg%LBex4=gsK3(tg5Z?+TW@c}JPeJ@<#9x5; zRv0ledkcIf;x{7x(}-_{5i_&5z!xC?Sj2x0@pCcaWHveYT*Nt#<5*$D$?PpKJtMRs zKJ_zJ7%?+@3p^X~7a=~)>sn#hW%d^MKE%Hg@fB=yF^*+6Id~4@G~s&eg5y>gcA32e zrhDAn*7Sa1g%LBex4=6fzCsPDzp}!Jnb})lTATDV@=Vu@6-La=zEk|vx?@VWuQVok z?z}F^iK8AZowu!R2ba&hb7c94c@M@85?OosMn3HT~}Q;dGv-o$}(4Zab!E;+hBYVGmHPrkayyl zZx2t#e*CXk#?PyZj4AUh<0EFt#Jpql=;W+(9*Cb`?d!O8rA2YC+qa9)xMJUO-g)!l zz_(<45wmP!MmubqtaaU8@k8;lWf?y&Z!*5jgN%=uWfN1zmocSpp8a`~hb3Lsy}fkc zp39Yi%Ld!n$1DF34;`^h>A&~vQ}MlIJ7H5YHhJ+^`p=kTtF><}J$vlev8=_?#+Nxq z%(96oX-tP{d zV%Cfgo074S@nx=Ld>K>vN_%N@Qt)Q!iAlrC3!eS81RNVIeWkr@=h+J$FKvA6GUbg< z*t(n-2R5;>k$IEx^YYBsZ<+d4c`g}~uU~B=mZ8pB5w0MUfO2CQ1GQP~eJeQ1_7f1R^ zo4o#9wn5%U^4e?@M}8N1-^q(F?}>T&m-ouN_?Nu&QpxE(v-SN|4=Hc{$xEeC!w+dV zXQM+Z?zuMc;Ts!Y#EeZ$$)AZwTvPh(;y;!4=-*s%uDtj%CVXS#D|svVfAy~~HVp6D zr?lR?$CdNWn->SZt;SdKU-obETt8khv-Rf1Zw_7UkeOw9UKs~A4aTNJ%$ohD?4M=) z4=wCS7dEJ>$G<^8!mhtB&99ITzHCUdD+pm4) zx$@d6W6JzU4xF(5b)~1S>lfd8%+zuo4gtq04u@6(w`f7q91@5CfMDrenrN z+Q0YG3vttyAH>H`9#y`)Ybm~Ew-e)F`gFo2gJDxLHZsoj6E}JM$-U2Ly?WYAJRg{U zEoJQA((Iox{_XhSzT=XA{qdmE4&5(_-&tqnWYng^%D^RqVN)_TNAy21dD?%tG|;`a zwDz$ZC)cmKW_j>QUlJ}G44bmC`LzGF@w_jNNUnPS+lEh9o)F(LY2)N!e@Gd)l;Qr@ zmW++e&%on1jNj?ePJm=^kd62&uxf-O9sQHWNf7U;g`*gU)<>5 zt^Scy65x`-(*EPOTjO2Fd>5}eYb4p!w1-W}*zCRP4e{eE@0J{U)z|Th&V}*&S4>X^ zyyy`w84R0}u~B3CmrkBIF8Tg|kK(PrxwSO@nq88eZv3v)UT!Y;U$lNHy6f6f`@-h( zn9uGky?(S1M_)d?+`EszMRL$6R`Emfxg*~TE>I6UikxO3w_=~OTj$6mMygVJ( zb4}W`Q0DCe`_SgRfOBEb#T$CUlyZspBslz&t?G_j$GKE2_Hd7Nd!aw>u1G4$pIM?fppFBsVMmmZT z=fyti-(uZ1UY@b8CvKy1#s41X#kq9n+rDInWMs}-j{lMy_Q!sQWa%vd&aDdmpz5|; zS8Z&!jqZHY`P|r>0Hy>KcN!(RX*V5K5SFgJV81Px7F6AF>#B|8w$bIqKB<1m1K~+` z+24pgTjXsFPeT*Rknvw_Rd?Jv&ZS};Hx}nz*=4dcE3^mJYnr{{L1OSZ5i3`Pl>(eg z=Z`&AtmDQiPuumx{@GXWkxhy;gMmvI+DCsO(05=?7?|1@a9-@A+Bj|-6>Gb(*k9+_ zXhm9xP7km&`&_&I+YFGj5{Cny{Xo?nx31baZW~>$HGTWpGgC)F%e~j^(~E;+pM?a# zyn_J$)nCPW+*su)UC)a*8#+-zu`=V|w*A+T;?AeQrSfQpjG)V_^HH(j#wt&6J$3&0 z+KsPe_?m^U(K`PJl_Ts^L4KY+Mf$i2GS1s87k%vI@!uHpt!}$@)keB)RIGGkl_&h0=Yw0T zWxK}H?1l4M|HCu7#%YGb(I2ZOjQtW`tez=64nYR7r6Yu$} zns?0Ueb#Pg6a`gx+&a#sVr@4T=gK-^l7uXc?5g`Z1NOgWrGQSQ568|L6#mWgU;R}Z z$8CfCm8b1`W-VOO^Cndar`4?5fOBF0Or?;Q zzf>FBZKGmsHx~CbJlAz+-rt_};dw8qn#pcBq?&y(w)a2g=eSM9rHf_W<>TyPC)&c> z&=vB}-NH_=tn;_J?bcNr+ij!Et8z&v z-^(+;J@&`3_?`vdo8aH4eEO$-`?9}1a&U79di`tc(lTu!v;SFJ)je)qwUKTc?1N)R zc5Z5q?0myc*{kU{pZM6+3A@9gA{}JTv5jq2cicM8rDCNUi*sSm=B2O8FKM}bSGIzR zrNW_7;*?IEL`7qD{;G}Rwo$RR8;f%d@7`?BM!yc8;}Zu%Lo!DO1y}d%KG7ZUeV;C` z&L7`bDo@+>RJp?3T=+f(kGJ@`pqoSL#&A5J#GZJJ#h!S+hv#*8-iXK89~r~(98c$u z=XluPYrOr}F&xk9a4zhL=X+kBc)b1BG5o*IA^+kAAgW*1i``tg*4bb`k?svGa;W--~ zTktrB$Cl)0=E>Mpm-Zx`)BPX!`*>|Zw^pEHZ8sK=E!Y!ZEAjn4UR%(u72sSF;(K|V7w5w32G|GR`+HqmlVqrr$*n3cKOu(LDj?DIzGqnd4=ysbg}rp29F!MxgVZq;`t;VH}KpK zj~n>jM+8!*n$JW#B(By!?tSp*!rP2LqlyJL7T^0|PkbMTJ@Mz&?H?5zf4_!v>DG;P z{R^MZxWC|eFJ5!T^9`I!H$Grb+~2)C$tHv7oL~y?t0O)+o}SW z?xhEuOE;gyo+>uhjm7g=Jg>&j2y}UMKDuWL*pn^w#7=k-BMThr0|!GB#&+8IhkdME z`)_rRTUTv7ZX4|B2U!1xbr2BoioImCCKb{?QV4dJ?hDGw7Z$(?x9k-639jI8xjm2{V z-Te{HrJK)SPu=|y9+&WaknVF~PrRMjACF^rJMn(_$2R}Kvm3nM@HRw#&1UCH(j7kE zA1Cp>GrmVwZKT`g{jfsL{c1(w^(RZ>d-?zBgYVguC%B$!9Ynoz_`m;#=yKt83Eet_ zm#4diG6ef$AH1%jo=e6*bJRVf#CiYEd)nVNdI)Y`Bh%|WF$-teDP<2(^)R=N{qgqT zHos0tBsXN;WbYc(5pa9#uiDsd8=MPo5BA6V6Z>Ny-G0Nd_*m<<8GGVw^E#K}kGq%W zzwS32tDEO^-%<%O9Dd@lGG>HKW;k@(IwQ8*Jl}71$E~Y2j@w2z&(Y1(-ZcLz*RHj| zcX9#1xv-~dW4mqe+zHRq{BsSnH|)#h1hG)S^GrOq9P#)k`DXD*`?vNnpz5|;$8%0R z&s3h$_0+9lV$ZngE98ah=k11>8-l9aZXM^s{&)=&Z-3C&b9X&&;j38b#wyQvf9yFoZIakx>oTc#5i9@aXAmmZ#LUdM=tzaL$$HpHrO9OL&5zE=feKDui-w0{k=Tnp8?@}AN&lf&FZ`m zw``UDjk@tc{hQ;q(LKY$p17~!K815(Pu$mVpTfERs}IigBcJQP?q}UOfR6<}*1Gf4 zs|`N4htJojM;;|R|#qWk?8oFL?Owkb{*JZQu`wu#Q{O*K`wcS{}ukbeDcQ$mn z>_z8fjR&pam!_#~Rkz)`E*E}h1N&ni{GQ3&mHl8{;wth&TzQYGJ8m7n--7dEfBeo& z+|oKwZ6k5~ruUQo)nCOrZY+Lh2EX%DcEKHascIAF{lpll%d7KIv9=qF-!;PTEDfcj zWySjU?AM(efiCamN*Q3<=hDvXvc06LJ8oU)uRLwn6Tdr$-%-5U^lj|Z+r8j%uC7wm zJ#HPpi-_Mp)V0U&CE|Ar@q2^#{XqO~;f(Ez>=Fw)IU^Dl*S=e*+DNxeSiYyRM*|<& zw?bMtx_84=8;{#&w3)k2G-p?8pDr<@;dx9->twi$tJ_+{2!0Qn!N| zRwFZKGlxH&%H%uBXZcZZ6$BuJ!AFmW!)jmk+m=az3Ot;J}Wb?2@a) zzttVLuG-jc8{Ip!X(rq9_xUkSlU{2*cpNa!6@!5XgPfVO@5SnlDc(Q$7^zstjm7;} z<+9yezo~bt_tl7Tb{+ZIE;p>49nyKK45`-z*4JJtr*vuPq^@$&#@mLs2m51B6>Gb( z%2T?YDwlL~;k-DP?wIP15zdAE@$tgrz~?DnWc!V`?Bg{-d%RQ|+iio#8T=0On|Gz) z{D~R%_(f?P-TT0W?)8PZDiL_X!?{@wkn*2aoyKAN$~AiaqiE!JilB!ec(pi?<)Yw~Rjv-amLh z;BCg&IK2IMKJaElNeB`-oVdQdwCmWqa}ux9{^Oh`s?2lWbLY+&cEhb0_Stn@8dCQ|GT6KXEQRm&1QEg0H7FI{QPaHxfJ% z!M3V9Ze4dh^_oM*&ogl@>{;Y$D5N+X2%a?=rK&q_9q01${O&v!dtT1&fgMr5%T7^= zLDe0%j&tee$@m@(&y(>zl+GXDmtlW=kCyFGm^_g&7}BgS0QkNM&)5NIG1kwu_yj4I{$oD26#B4B9vU=|Lr)&A5)z_-v27rabthPAMYPLztzoSb^dsp zrzH-C2PK1`N{QMw_SDT?aV{0>xUo1F_Q&Tu&V~0C-Y3`-_XX^)>!*0`jdNj7Jom=_ zxL@mhbo)f-kGB)g&vo|;c-!!tQ#YT-b5}ez>T>DEOkFNKmg2cCz7Kk|@2scm>CCd_ z@cw|$AAHZH+i$viG36QSdgA*ad@q3SQ}8t!UxV*IS+iPocd zkL%g_U~=d3tx6!i4z=;I#(D9v!2Z|=A5-NCuIG||5zgu8?lQpoYU6WNmsjV5&q?J8 zt|#`tSSZ4Io0vKoD>nZ}F5K^Q{Yb@v8;kw1C-xcoY`knbu$41r<#vh33OvrJHn!Ua z=f$~nKDu*Bch2bY;`2ZE{#4MU;aU6L#3F#tTRdOF^CEm6s#wR3#pgfvTynSwsNy78 z^32n!O=YOKD1*~^-xbe_Mb#lN@V))M%too|j$2o49JkH4I5!sOifkVyUsvuAscVGC zu3BGmM1=!&L4ZKSlf+Np0?|$^WPBN8TOHtGNvDss_wXToe$o&g*+$h zzpy1XsBIajcp?CfCk5x{VJ$p5Pu0e8+o)K_jm5cieP5SL=ZVKjJSO1vZQV1D!v$L6-}A;(dib7asq0#|57=_&JU)FaC`99LC## zj~DJ2x?H+`r^|)=1@^~%8DDE~AH;nPUxRdg{K2~6a^A;Yv9Ip;Qt#^iA%_o265F_S zd-$*ZD%N&mm8b1`4hY?4H!TtjykJJa=Qi#y_#DRPs*06vEcVI$Hl>Wcyfy484E)di zPQ}`8EcTz;bC{>#n!r6Fy$1vK$K!^sU*mBG`zy~_*Ax3=PdvWiaSVIveDJZuKDzS( z`{QGT{qc3G=d@Y!^XODiB}o~`JZ6);d~J#ho!$!YH4D#YR2$oEqhf707GEFnbyk-v zW{wGs(vFfV18ah+J8u2|;)$>6@$(RzD{mZu@t(%^>#Y&rJpa{SwQ<}w_}Y!<33wiY z=QacXz9ZAK>h{5arhs!{Pu0eD+jz~L;^#To6VJ`C|7XYs9ivltJ}s;Os_wXT?2qSc zI2Z0m*dO;zoj>lI*dO;Je4hMcJVA42JhtF53ZF}OJi+G`?nk(v;=b^F^$K|>%?Qu7 z@UEchwp+*Nysn?({e%6nr*8k?T-YD)pD*ba$$m-fuxx3&f7`bB?fkFD7w1x*w(E)a zgDw|7E_grxUp(W-^PuzvWb2+c!wzK|0N7u5+_67Cj(D4ur|o*`{PF(zk^c1~{@CY7 z#suAV>c&Z(C*BWuOvCifK)Sd; zJuXYNs|F8RUzIMOkFN@^`{tA`j}@*9y+)muI@X+02fCatE_F=1OMPcdlVeiH)zAp0 zzpWs3+`qgLTsYuJ9S65<1YPn(N*y_?3+B$cEC}t)-56hE#z;W421no4vdL z@8@qkysSQ?uQMy2Q573NC1-|o>94*s=iIiHQpYU$8$-3!BczT*eIMA8oZF?256viO zdoV`onBi?p*iwJH)Unmwmf#=JLF)KnP#f4Ze3jI3;9WU} z4iGYZs&qN-L2r2Y^H%Bdr20Ou9#uO?mlY>>f;=yFN*%Lz>I8dAw~{*Ez8?)shTBrd zj%%ag*Xof{$1`7|q2Sfuq>e9!M?R8}9VYjYUa;Gq0}<*>uez_=1F|6lpSHxlCJ9+f(#S<)D?hEDyN75mo>I6_U!1< z1zZlz)eWK+cL0|aOLmfLG7JWn`%2V+Y@UJO@&e5OM|MVlj-?7;lZ|IZfR6PlrG_=d zTY-)Twm*?rAXZsbnIUv5nL$V4RpM4^oz_E)(v!Acag)hEZsrN-8td@>T0k~LwooU z`Mg#&&@nJ~AcR*b2Rc?!e@~fpURls_Mb=O#pDYY?tn9l?#{5wNbe!!|6sj*O2s)On zyHf7F9Rxa_8DAJ)oX-n7K1jV@{+u`fbZoXR0D3LS3Oa@s*)Kc$WC0y_^ii>E(}Rw; zd!CmuJ^et(o9ENRh=BB<udne--2Z4@d*Z9KT6CThp;E$(r+i(x)I9**c?%ym8 zIyR_tNfv8g8gzWWOnql}F#sLsls+ymsINQKaTLu9Ev^*<9TSdoWSeWDpyTb#`P6++ z5zukKtXTPYWMR;;>$Ct!^|%1&=kI|MQ;YzN=tzAqMx_v;8c%1s1z zrtb(k`iwFms6i*tk>+D?PyM@&z18Q;zn~N7_+&7L=D{_=W%X17Ce5e@KT4xsVwf_x z2I!dh$tO9qe+|&FNAn~wRjm=|xO@8td1Xu;&~fX&gix_ZefS>xJpL-Lcc~BGW4{bp zV8`0>pktlV=Vi`P>ymZkOtfsXac1wwD%K+y5rww<#6%zSFi;@^36Rt_*n`Gbzxi=B`ys^$P4 z-&D>F>EC7n9bdG#BqJYW1|27z@PmWpvVe}ehTfK8Z8L+8$15a*r*r&4$K_?;$#KQ~ zK}Y}DNnuC*D)6IhH0Zs2U%U$ZD1$scknDUj(DD9_xAN_oW}xH5rb(cO`mQe>S1$S> z9rYdjT3$*FlUsL$l^V8P_fd9l+Yxlk^Ewe+o7ow39NGV~Trj6I=(w+TLP(mi3+Nco z)PPr+x`2+~?xUO?UH*3;^>6&*BcOYgQt+d^Sx`WOalxQt%=AnU*)0#~Nc=9#=c99j zj;SJ(!`>z(K*zc(UdhR6OMs3;r}}`=y(s87X2d(0zd%vY@oQuP=(Dpe=vb)^fzrF$ zf{qW0B!J)=O+m+(0|^wX-V}5Uzr^8bj;5gF^D7)aBo5Z?y=}vGaBVu2zZw z9oKD72zOr91|27v1`K&t8+1%FHX*$JP!n{lTf%^bA8Ue+3nDEDx?cly42+~O`$Y}V zam}9`G9;@FKgyqqTQIA7E%0XaPzvS3Yk@bb%t!#0FV+HYehDCOQ~lnXnIn=o;fA1N;wP_VTx>%%fBJWZ-1CDF|3;wW5 zsrH~_=}Ht5mu?R_)>EJF-G&aJW2tH;%$(2xbR5u%LDGpGK*xw+6FxMF0dI~Sz@ST1 z40!X+2muFA#DI>8@^i3G#(<9B=J8EF$NX+bk0zk)u z39><{w1J>wpY3PlqD=Wg$9?H@!}6I0LB~?Qhh?jtYL2eq$yd1{>xm+uJQA#X!d#zK7(2mZ6|y)<@Z3)z&c3G3SGmaRFSJ zpyQ`isowuwC8@}1|hTremMT=osi1}mnQ1eY<5PRsXymH?NY^Eshc$53$DI^?Jv zF)RdJ)~=KbX6FqCmq&&kkwtSC0hhzNi-GmvS#0`aP?&%xLotw zS$UlXg3BSv(!@PcrlV~%fsvonZcV^0}DaQIT^ua--eszp2_LK zW#x)vWz)xg;LW?wi^Hj5dEnD6fY91`!TaZ(6Q;>T)pEn6Y>VV|$OYa%PiYYbo%{-d zjy-bDkqe##f{wc`mw*IKBl`pq?9P*k*TOxYVZ-=s0@c8hQKAilAfWeF0Fg zU`_ZQKZQE7->n+(J<11{JUcwI1`zb^~u-Ui(JoEZGgbdH6s|XgsGk=(ym~BY9*|LwC^e zM(}yrL;ZiKbS#r22}}#`30nGpltB^d-!#$|?;sp^9_*C)6jXS}Qj-fVZX07Qnx!1s7M`(_z3DF(jB7IBr~ zbBzw51o>*+IvPqkGC8KAAzs zl|kho=u2VHam!z0==y-BLQyBZWBk0w50QO*=1Uzb)=duCM~##^_O~m@CDX@99nWpe3^!Xu zNFDv^CYC$WG?6+M&Ri7U-|Q(*srPMeUVr0p>Hhxkl`0%RQ?=h;%ntFiOs+njTyj&-{e*tT!1)bVVU zp)&iY@lwZP?-RkD4E>~z6LvP1eWneTI_Bz@0{ZM}D0Q6qTPYcKqp8&Kaj*{@Jyl5R z*zcEW@@CsmspHyO2KYD6B6UpveyHqHCx_HA|H40Htp?epH$zI)fkf4-z>c4)Nk38< z?v~jq3y#epy&0A4g3K5iDRs;|eyz-yJxc2MyyF?!t?*E(Nudxa@k}3c&X#MUDxFt&t$3NkZr%nE#s$19qSFQ z1Pxd%(DCrC0rGN&TA<^h%*SMjEsLZ#6CAAy0h?-r%T^^j%PEQKfXgJucgdK^i={X3 zzBnj1)R`{5*(0(#^p33sF4sSbmKC#wgUiMn9m(ko>CFSmZ`puw>GI^;S}=)L1DCn4 z)sqQ|R|S{(=h*Uj&)U-Ex{Ft3#<&tv$D37_%Ovl^q>kN}+?8EYRFXP|EuAl0?WiJk z^gDJ-uE{h}dUMU>C34TeNz$7!iSEb^p<|_v4T~<4?U#;|I({s1QUJUr8m>&y&>1^XfAaO?7K|P%F#;dSgbIE{MFR=iD}s7 zL?3x`NfD{z*hER;+~!hJ$MAjOa#4v2Qpb-ClER&K4W*7b!@}hd-=>1h(dhKyaM zj=7AcGF8uBQpaQg6iy8vE_K`#Jy)rc9Q3_J>Fv+r&MP>3n)f9jkqvBO4^?Ep_zueIZw!8X|R!c|29x6NX70^Hu*K z2PEzwb?nka^`+;Xq>g6WSF&8CCQ`@4=_bn^`8K2L+ZHw zxd9EvHk3L}7&%lP{H=-9vHxBUmD)r|Z&qL2UEWOINP06zbqlWM-E;i8U3Wo`eTq>hy`B!(K+5~*XunoVSnKbA=y4_tgFeN)&{$4SQ~ z%3|*vsbh)t5wM3>g%r2)L93rmNpH4KXM5&-J}q^eWl$rLF-w)nMp8o<3zaT3W*XCs z#6}9GDU6ARuaU%KIG8^fP!bWkW#f?-(38ScyMQIiztx?b@WrQgWGm05t zR5U`Bh8iV}0Hdl=R%uzIkWtR4W&|k>GD3_hM!3;XX+xuo5oOdfsw=H-ls8Hn4UA?= zn;9OXrP0)=ptOP^jYdXWqm|NDMsp+D=xj7m+QevK)G@jm?Uc4N8XKLAUPfJ|b&W`) zyV2JeqI8JS-WY8RGI}WOVRSS)7(^6 z8NV7^jh@C}rGt(2Mi-;Du~X?zV}oHE5k_yNy^ZZgEu)gLSLt43hjGNHY1CI*-*Ak| zMjqp+(xb*c^Alo+l;HmIb)@<+1O&NGp-mH zjm5?)W392=h%>5_6?7x5PBzkdWF1{YYbmWo>X33|Azew!k(IOtSw)x8%1SGfnxrI| zMHkbOWHBvIme9GhjM6fs5-CC^)7i8LnN7pU96F7bP+EeNCi%!1I)&yVQ)n=mO2^Z} zN(+61RGMu!b!$}k!L#C1rN;}Y&v)tF^N{CGrdU~(-ulw&^@#rZAR~scB&kp7fEf} zNNFQ_gEXfN>2;;o$vtwCRH1d~Nm7T#kp?uJUQl|0Tq8$F8CsPdAyw%qQj1omCzPHb z=gD4Dl9r`=Nm+W7RHCKmA*F}NA7lq9LQBvcqy%+HXnC>K@ zbST}dbTipQHj=}1Gu=ow(*blF{f%xR+f*4&7n2_Jy|I|QH&&51MsK=I=`ymKtR(M@ z-E<|{O;6Gt^sTXm?4WDNDY}&&p(m7{pu6a4dX#Qax`pnfCiS5kly0EQ>3W)!CRCb` zuBBgyMSoTLD_uZW(*%?#CG;2ihI}Q9lrEw_)1}m)@5xeC=F`#i2ECy40-Z!J(VKLF z(g}11eM@H2pOpSYFVg9B9(_lqs}e`^(7)&%rFZC6dY?X|g_IVef6{aG8ojIZF8yHK zqqpf5dQX*4#&hzDoTtxK`Dk3GAINiZS^f0U$WGtVXEeJi`RQ}|H_fRuCk><-=vVqq z={uT(zNZGus5B$>r>UvQJ}Lb~(^JM0vQ$b_(M&WsC4{r&lrvwNm~oOqX$qQ_KB9T) zQ>9O-L0-@T^Z|XL%4g%N@tEdjUya(Jw|`_QlB0C`rP6mHINl(y|nck+iBL zVirrq{FM5!&om=T%@VMTs!;ZYrf1odW@B$?c9ww=mR*$(^fk@O^03!54|_rbSPu44 z=|}pKCTCe#I+k3Olq?hTXGxVNWocM47Q}KX&BZdad@PXpDD`1ESxTCY_M<6P*+fUu zEHsVMG;}-lqgiQxRf@6x6j*LLg65`~m1d*)Xla&BmEx=d3!=Gb1(u6S7C^7lQ8Yl6 zQfwl@?5Gk+9I9iBRVkKB1Rmw6CtI0x?hOlxhCmBpj zDlN&XurM}+<{@D$52?;xlNZDyuT^QoO!AEUO-xnVvCrfsX|1$1Ys%WQkA%|pjM8R| z(@!KyX%vfK%^9PKX>*pCHeyMrp!Jp3XW^^?OGJ~=1}qt^&1$iFY_QV7Y!n;88nQY{ z>#(t`E^EU2D(%Y#u>q_FYpk>}8_6PBE7nD67uJXMW*t~dr7hV&7R?fn&PqG8?kt80 z(pG6()`N9oW7rU-Ls(ZfoQ-B3m3CykST{D5^<(|nFxHbDr-$e?rPJ6rHj5pjXXz|< zmQG;YR#mXil;IeEbj()HxB(#vcr zyT!JV-{~#(JDtroknQA*(lhJ|yToj=m0V(5$xXJ4>?6mO9%tv-Np_IzCMVf$a)Iq9 z$H*b2hu9zNF#DYxAcxrja)SLvPLn-K_ppP^Vduzk;;`f72s=YAldVd(vRJl_T_I=5 zHg=ZS>=L<6)+$}gwy<^VPjZ#4V^_&`c8fT4p3-@24O__e(mP}!yF=EqSo(l0Rl1bT zWxui~WIz3t?Wc>_eX@u=Qu>H3Vb9qw*xjGV)by4oj~zJ@@6A_+qw^W#SuIYQCARW+|1X;Ds$9`i;x%#^UevBPpmQssT zo`4@^r&$7inhAcE{mz(D#=kJmPq8?qag6Y*>>T^buB!5Z8T=x+Dp8hHBPo=o5Px%D5l*TQUr~j8;*wM#AC!LJkN8JkkpTI~fjs6R#6un` zeaK(&C%hC1B~N%LdCmXghA_on+!W7wQo+PirBC@g{(!&dKH`BYUwCTqnLktdj0+LR zU+{!V6N=kBk$B5*D80e&@*q-_yj1#OkF;alM;RVPwUWECH?4k(EE-JH}BBKaa z8q8|2Kyrzv6M-b1D9kd6>%1VzBnpzEEElQDa)?|chsZ1ZMKzY2_>0^mpU6S-h&DV2 zX~XN2&OA`$RhpMXk<8>YFD){Y(xN}FATIC>q=Lvm`tW|dlqfFx@!}#ok)opL%cUw= zNH$VT1c_`UNDShk0z_64s>(nJw5N(@pu zNX!&d#aOXe>0&WgEEAK&45c%~Jn;)(Dds4hBNmDIVwL!n&sXIav5r>}vy{#f%f&)b zU2NnFRaq;lirQj|(kWuL_*q1VYD%k#1)`2E}sC#H#kqKT-hw62&g8jF^qyVCBW zzvv-aiAbf9Vt|mmBJZlSt7sv5iE6wo?%Vj}$X_M=_W0662JP6T`(s;fMu%qADZAa=t{2 zS2|wo5fj8xv4T%fB~}y^CBzA(C&VFfT6jcJrA5V2v4!s!e<=M!?Bi#|?;=)dEI-Jb z@^<`yXsXIqeoVyhR!Up(J-j{7Cen!ZJdHRgvWQ%w1J9z$Zz8QIBo2!sB3NV=(L6w8 z6}d%z(TOkPzw?b^nJT}EE#f#|$+w7=e6?85SBMQtH;A)*t5_p8DBZx%@xA=GSSR-K zb>cU^U7Qt%lpf+Icu7%KY!W3^IVm=aaw1G=m^dZQ@b#jMC@;2&^V~Eq3Xf@;9y5tq z#*7mQl_oS(nwIHfrd68O{36nsDa-_BI#r1IS)?|zD9vKN5n0XjCN;CF@LQ_2C5Qb)-oHIg_RaIi<>#kre=iF2s6Lg$ZTfjRhriCz^ZAIZEf4Gt9;2A#J0*jyL}>hbbLqo;RgA$ULd^q*=~9XAU(>D=lqS zHRti)%)v?ro4dsj^O!lG4^hPyv-uj+F=unfJZkPY*PDy@epP-q*P7eRz2-i1ySdJ+ zXr40Tl*XAwtt;kPvyyp5l@RN+Im-NOo>t|O`NbS-o>6+nyljp%Cz)@RzBNCY@60LY zIHlvvujT}Ey7^S;Q}d1a!kleRQ##FjZ~kn~H}5OGZ$2|0mS`vpTAMLuBBhC}lvWC>yV>4MVYN5YS&?Qd(^sjlmEQ8R zI+!g@KdYsg&8llgnHiL3u(DfOt>$K9Gpp6u46v%1^~@Yfb6EMTJXS-qj+w`*V-~cY zn0L*xO3PX$txDEI^QBqIdTExjJXSfYs?w@fU8|N=(UMA~Ro|*(Rk2zsZD}>O+FIdO z1EmeDW>zDsh1FhZd#j7p*=lDsSK8d_ZE>rx6{$4R>Si^yid&Xa%j#)eG$X7gN}E_k ztSGCVb=8bgrI>ZW{Ah+L4YO)nU>Vjm6I5wvJvK{NAI!(*2lKT_tkTvirLWAt&Ff}f z>y9dAlvcJ1S&z&@)}Q7hGpAMEDsSafCD5v1)v$6Y&1D5y8Ld`UHKo-of2*byZDmoK z#ma4^vN~9;mA1ArS#7LNR$8TLt;|+ZtGgAWG{#D8b+md|K1zM8G#0bET1l*ARxc}o zbw^wmiKZ?Il(f_5tcANi6KgdSpBTg7Bdr>qpd{dK>zUvxZq?te>pu)sh<#!;zoN=oYbjr8EmpeNI>wh+tE^Su cl>fnPev~h?Y*ns`W!6c4gfFv>@IS@>2Q)0~SO5S3 literal 0 HcmV?d00001 diff --git a/include/imgui b/include/imgui new file mode 160000 index 0000000..c94bb90 --- /dev/null +++ b/include/imgui @@ -0,0 +1 @@ +Subproject commit c94bb90ff5c4bab7c1632996589b675ed5e81005 diff --git a/src/Common/Logger.h b/src/Common/Logger.h index 079b6b8..102bf5c 100644 --- a/src/Common/Logger.h +++ b/src/Common/Logger.h @@ -79,13 +79,20 @@ class Logger { ); // Logs using all of the above, RAM then console and finally disk, maybe multithread (?) template - void logError( + void logImportant( LogModule module, LogLevel level, std::string_view message, Args&&... args ); // Logs to console and file, in cases of crashes or errors + template + void logFatal( + LogModule module, + std::string_view message, + Args&&... args + ); // Logs to console and file, then abort -> Core dump + // Utils functions void merge(std::string_view source); // Merges a source dumped logs into this @@ -274,7 +281,7 @@ void Logger::logAll( } template -void Logger::logError( +void Logger::logImportant( LogModule module, LogLevel level, std::string_view message, @@ -296,6 +303,35 @@ void Logger::logError( } +template +void Logger::logFatal( + LogModule module, + std::string_view message, + Args&&... args +) { + // Separator + logDisk("=============================== CRASH LOGS ==============================="); + + logDisk( + module, + LogLevel::EFATAL, + message, + args... + ); + + logConsole( + module, + LogLevel::EFATAL, + message, + args... + ); + + logSeparator(); + + std::abort(); +} + + void Logger::merge(std::string_view source) { /* This merges a dumped logger into this one diff --git a/src/Engine/engine/engine.h b/src/Engine/engine/engine.h index ab8bbcb..12ca13f 100644 --- a/src/Engine/engine/engine.h +++ b/src/Engine/engine/engine.h @@ -45,7 +45,7 @@ class Engine { public: //========== Class Members ========== // Config - int _gpuIndex {0}; // Unitialized + int _gpuIndex {-1}; // Unitialized bool _isInitialized { false }; int _frameNumber { 0 }; VkExtent2D _windowExtent; @@ -129,9 +129,13 @@ class Engine { VkPipeline _meshPipeline; GPUMeshBuffers rectangle; + // Model + std::string _modelPath { "models/default.gltf" }; + void parseConfig( - int gpuIndex = 0 + int gpuIndex, + std::string modelPath ); void init(); @@ -275,9 +279,17 @@ constexpr bool bUseValidationLayers = false; //====================== void Engine::parseConfig( - int gpuIndex + int gpuIndex, + std::string modelPath ) { _gpuIndex = gpuIndex; + + if(!modelPath.size() == 0) { + #ifdef DEBUG + _logger.logAll(ENGINE, EINFO, "Model overwrite, using {}", modelPath); + #endif + _modelPath = modelPath; + } } @@ -544,7 +556,8 @@ void Engine::run() { // Pipeline change monitor int currentID = currentBackgroundEffect; if (prevID != currentID) { - _logger.logRAM(ENGINE, EINFO, "Background shader changed"); + //_logger.logRAM(ENGINE, EINFO, "Background shader changed"); + _logger.logFatal(ENGINE, "Background shader changed !"); } prevID = currentID; @@ -575,7 +588,7 @@ void Engine::run() { } #ifdef DEBUG // Not an error but logs to required targets - _logger.logError(ENGINE, EINFO, "Engine has finished running after {} seconds!", timer.endTimer()); + _logger.logImportant(ENGINE, EINFO, "Engine has finished running after {} seconds!", timer.endTimer()); #endif } diff --git a/src/Engine/engine/loader.h b/src/Engine/engine/loader.h new file mode 100644 index 0000000..278e44b --- /dev/null +++ b/src/Engine/engine/loader.h @@ -0,0 +1,26 @@ +#ifndef LOADER_H +#define LOADER_H +// Header +// Custom includes +#include "Common/Types.h" +// Other includes +#include +#include +#include + +// Stucts +struct GeoSurface { + uint32_t startIndex; + uint32_t count; +}; + +#endif + +#ifdef LOADER_IMPL +#ifndef LOADER_IMPL_H +#define LOADER_IMPL_H +// Main code file + + +#endif +#endif diff --git a/src/Engine/main.cpp b/src/Engine/main.cpp index 52187d0..7d972ff 100644 --- a/src/Engine/main.cpp +++ b/src/Engine/main.cpp @@ -13,8 +13,9 @@ class ArgHandler { public: CLI::App* _run; // All options - bool _listGPU {false}; - int _gpuIndex {0}; + bool _listGPU {false}; + int _gpuIndex {-1}; + std::string _modelPath; void buildArgs() { // Setup @@ -27,6 +28,7 @@ class ArgHandler { // Subcommand options/flags // Run _run->add_option("--gpu, -g", _gpuIndex, "Manually select a GPU"); + _run->add_option("--model, -m", _modelPath, "Overwrites the default model"); } int dispatch(int argc, char* argv[]) { @@ -75,7 +77,10 @@ int main(int argc, char* argv[]) { } if(handler._run->parsed()){ - engine.parseConfig(handler._gpuIndex); + engine.parseConfig( + handler._gpuIndex, + handler._modelPath + ); engine.init();