From b130d5c7f7344475cc8d0e937fb80266c5f1cf26 Mon Sep 17 00:00:00 2001 From: douwe Date: Mon, 15 Jun 2026 00:07:00 +0200 Subject: [PATCH 01/22] Restructured the source files. --- CMakeLists.txt | 2 ++ README.md | 2 +- douwco_hivemind/src/{ => Creeps}/Builder.cpp | 0 douwco_hivemind/src/{ => Creeps}/CreepBase.cpp | 0 douwco_hivemind/src/{ => Creeps}/Maintainer.cpp | 0 douwco_hivemind/src/{ => Creeps}/Supplier.cpp | 0 douwco_hivemind/src/{ => Creeps}/Upgrader.cpp | 0 douwco_hivemind/src/{ => Creeps}/Worker.cpp | 0 douwco_hivemind/src/{ => Structures}/Spawn.cpp | 0 9 files changed, 3 insertions(+), 1 deletion(-) rename douwco_hivemind/src/{ => Creeps}/Builder.cpp (100%) rename douwco_hivemind/src/{ => Creeps}/CreepBase.cpp (100%) rename douwco_hivemind/src/{ => Creeps}/Maintainer.cpp (100%) rename douwco_hivemind/src/{ => Creeps}/Supplier.cpp (100%) rename douwco_hivemind/src/{ => Creeps}/Upgrader.cpp (100%) rename douwco_hivemind/src/{ => Creeps}/Worker.cpp (100%) rename douwco_hivemind/src/{ => Structures}/Spawn.cpp (100%) diff --git a/CMakeLists.txt b/CMakeLists.txt index 2cc579c..31ead7d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,9 @@ set(TARGET_NAME douwco_hivemind) include_directories(${CMAKE_SOURCE_DIR}/douwco_hivemind/include) + file(GLOB SRC_FILES ${CMAKE_SOURCE_DIR}/douwco_hivemind/src/*.cpp) +file(GLOB SRC_FILES ${CMAKE_SOURCE_DIR}/douwco_hivemind/src/*/*.cpp) add_executable(${TARGET_NAME} ${SRC_FILES}) target_link_libraries(${TARGET_NAME} screepsxx) target_link_options(${TARGET_NAME} PUBLIC -sMODULARIZE=1 --no-entry --bind -sEXPORT_ES6=0) diff --git a/README.md b/README.md index 6aae4e3..7db6ca4 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Create the makefiles using cmake. For more info look at the readme in screepsxx. ``` mkdir build cd build -cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake .. +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DCMAKE_TOOLCHAIN_FILE=emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake .. ``` # Build diff --git a/douwco_hivemind/src/Builder.cpp b/douwco_hivemind/src/Creeps/Builder.cpp similarity index 100% rename from douwco_hivemind/src/Builder.cpp rename to douwco_hivemind/src/Creeps/Builder.cpp diff --git a/douwco_hivemind/src/CreepBase.cpp b/douwco_hivemind/src/Creeps/CreepBase.cpp similarity index 100% rename from douwco_hivemind/src/CreepBase.cpp rename to douwco_hivemind/src/Creeps/CreepBase.cpp diff --git a/douwco_hivemind/src/Maintainer.cpp b/douwco_hivemind/src/Creeps/Maintainer.cpp similarity index 100% rename from douwco_hivemind/src/Maintainer.cpp rename to douwco_hivemind/src/Creeps/Maintainer.cpp diff --git a/douwco_hivemind/src/Supplier.cpp b/douwco_hivemind/src/Creeps/Supplier.cpp similarity index 100% rename from douwco_hivemind/src/Supplier.cpp rename to douwco_hivemind/src/Creeps/Supplier.cpp diff --git a/douwco_hivemind/src/Upgrader.cpp b/douwco_hivemind/src/Creeps/Upgrader.cpp similarity index 100% rename from douwco_hivemind/src/Upgrader.cpp rename to douwco_hivemind/src/Creeps/Upgrader.cpp diff --git a/douwco_hivemind/src/Worker.cpp b/douwco_hivemind/src/Creeps/Worker.cpp similarity index 100% rename from douwco_hivemind/src/Worker.cpp rename to douwco_hivemind/src/Creeps/Worker.cpp diff --git a/douwco_hivemind/src/Spawn.cpp b/douwco_hivemind/src/Structures/Spawn.cpp similarity index 100% rename from douwco_hivemind/src/Spawn.cpp rename to douwco_hivemind/src/Structures/Spawn.cpp From a708ac96285c672b70c9c3d5da39ada5d05efb29 Mon Sep 17 00:00:00 2001 From: Douwe Ravers Date: Tue, 16 Jun 2026 23:05:49 +0200 Subject: [PATCH 02/22] Fixed cmakelist file so all files are included. --- CMakeLists.txt | 7 +++++-- douwco_hivemind/src/Loop.cpp | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 31ead7d..47d3b72 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,9 @@ project(douwco_hivemind CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED TRUE) +# Set the Emscripten toolchain +set(CMAKE_TOOLCHAIN_FILE ${EMSCRIPTEN_ROOT}/cmake/Modules/Platform/Emscripten.cmake CACHE STRING "") + # set(COMPILE_FLAGS --cache ${CMAKE_BINARY_DIR}/cache) set(LINK_FLAGS -sASSERTIONS=0 -sMALLOC=emmalloc) add_compile_options(${COMPILE_FLAGS}) @@ -19,8 +22,8 @@ set(TARGET_NAME douwco_hivemind) include_directories(${CMAKE_SOURCE_DIR}/douwco_hivemind/include) -file(GLOB SRC_FILES ${CMAKE_SOURCE_DIR}/douwco_hivemind/src/*.cpp) -file(GLOB SRC_FILES ${CMAKE_SOURCE_DIR}/douwco_hivemind/src/*/*.cpp) +file(GLOB SRC_FILES ${CMAKE_SOURCE_DIR}/douwco_hivemind/src/*.cpp + ${CMAKE_SOURCE_DIR}/douwco_hivemind/src/*/*.cpp) add_executable(${TARGET_NAME} ${SRC_FILES}) target_link_libraries(${TARGET_NAME} screepsxx) target_link_options(${TARGET_NAME} PUBLIC -sMODULARIZE=1 --no-entry --bind -sEXPORT_ES6=0) diff --git a/douwco_hivemind/src/Loop.cpp b/douwco_hivemind/src/Loop.cpp index a6252dd..46a697f 100644 --- a/douwco_hivemind/src/Loop.cpp +++ b/douwco_hivemind/src/Loop.cpp @@ -9,7 +9,7 @@ #include "Engine.hpp" #include "Structures/Spawn.hpp" -EMSCRIPTEN_KEEPALIVE +//EMSCRIPTEN_KEEPALIVE extern "C" void loop() { Screeps::Context::update(); From af440fd2969ff0c4e76927c8b9b4baafb3ff6651 Mon Sep 17 00:00:00 2001 From: Douwe Ravers Date: Tue, 16 Jun 2026 23:59:51 +0200 Subject: [PATCH 03/22] Fixed clangd problems with emscripten. --- .clangd | 27 +++++++++++++++++++++++ CMakeLists.txt | 32 ++++++++++++++++++--------- README.md | 2 +- clean_compile_commands.py | 42 ++++++++++++++++++++++++++++++++++++ compile_commands.json | 1 + douwco_hivemind/src/Loop.cpp | 2 +- 6 files changed, 94 insertions(+), 12 deletions(-) create mode 100644 .clangd create mode 100644 clean_compile_commands.py create mode 120000 compile_commands.json diff --git a/.clangd b/.clangd new file mode 100644 index 0000000..abcc922 --- /dev/null +++ b/.clangd @@ -0,0 +1,27 @@ +CompileFlags: + # Add Emscripten include paths + Add: + - "-isystem" + - "/mnt/douwe/hdd/Projects/Screeps/emsdk/upstream/emscripten/system/include" + - "-isystem" + - "/mnt/douwe/hdd/Projects/Screeps/emsdk/upstream/emscripten/system/lib" + - "-isystem" + - "/mnt/douwe/hdd/Projects/Screeps/emsdk/upstream/emscripten/cache/sysroot/include" + - "-D__EMSCRIPTEN__" + - "-D__EMSCRIPTEN_PTHREADS__" + - "-I/mnt/douwe/hdd/Projects/Screeps/screepsxx/include" # Path to Screeps headers + # Remove ALL Emscripten-specific flags + Remove: + - "-s.*" # Removes ALL -s* flags (e.g., -sSTRICT=0, -sMODULARIZE=1) + - "--no-entry" + - "--bind" + - "--cache" + - "-sEXPORT_ES6=.*" + - "-sEXPORTED_RUNTIME_METHODS=.*" + - "-sASSERTIONS=.*" + - "-sMALLOC=.*" + - "-sEXPORTED_FUNCTIONS=.*" + +# Suppress diagnostics for unused includes and unknown arguments +Diagnostics: + UnusedIncludes: None \ No newline at end of file diff --git a/CMakeLists.txt b/CMakeLists.txt index 47d3b72..b0f72ac 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -5,6 +5,9 @@ project(douwco_hivemind CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED TRUE) +# Generate compile commands +set(CMAKE_EXPORT_COMPILE_COMMANDS ON) + # Set the Emscripten toolchain set(CMAKE_TOOLCHAIN_FILE ${EMSCRIPTEN_ROOT}/cmake/Modules/Platform/Emscripten.cmake CACHE STRING "") @@ -21,24 +24,33 @@ set(TARGET_NAME douwco_hivemind) include_directories(${CMAKE_SOURCE_DIR}/douwco_hivemind/include) - file(GLOB SRC_FILES ${CMAKE_SOURCE_DIR}/douwco_hivemind/src/*.cpp ${CMAKE_SOURCE_DIR}/douwco_hivemind/src/*/*.cpp) add_executable(${TARGET_NAME} ${SRC_FILES}) target_link_libraries(${TARGET_NAME} screepsxx) target_link_options(${TARGET_NAME} PUBLIC -sMODULARIZE=1 --no-entry --bind -sEXPORT_ES6=0) +# Post-process compile_commands.json to remove Emscripten flags +add_custom_command( + TARGET ${TARGET_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E echo "Cleaning compile_commands.json for clangd..." + COMMAND python3 ${CMAKE_SOURCE_DIR}/clean_compile_commands.py + ${CMAKE_BINARY_DIR}/compile_commands.json + COMMENT "Post-processing compile_commands.json for clangd compatibility" +) + +# Symlink compile_commands.json to project root for clangd +add_custom_command( + TARGET ${TARGET_NAME} POST_BUILD + COMMAND ${CMAKE_COMMAND} -E create_symlink + ${CMAKE_BINARY_DIR}/compile_commands.json + ${CMAKE_SOURCE_DIR}/compile_commands.json + COMMENT "Symlinking compile_commands.json to project root for clangd" +) + # Collect all artifacts in 'dist' directory # WASM-module and corresponding JS-module must have different base names in order to use them in Screeps, so we add suffixes. add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/${TARGET_NAME}.wasm ${CMAKE_SOURCE_DIR}/dist/${TARGET_NAME}_module.wasm) add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_BINARY_DIR}/${TARGET_NAME}.js ${CMAKE_SOURCE_DIR}/dist/${TARGET_NAME}_loader.js) add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/js/main.js ${CMAKE_SOURCE_DIR}/dist/main.js) -add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/js/wasm_loader.js ${CMAKE_SOURCE_DIR}/dist/wasm_loader.js) - -# Following post-build step will automatically upload artifacts to -# official Screeps server. If you want to use it, please, -# set SCREEPS_TOKEN environment variable to your Screeps API token -# (https://docs.screeps.com/auth-tokens.html). -# If you don't want to use this script, please, remove following lines. -#find_package(Python COMPONENTS Interpreter REQUIRED) -#add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND ${Python_EXECUTABLE} ${screepsxx_SOURCE_DIR}/tools/upload.py ${CMAKE_SOURCE_DIR}/dist $ENV{SCREEPS_TOKEN}) +add_custom_command(TARGET ${TARGET_NAME} POST_BUILD COMMAND ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/js/wasm_loader.js ${CMAKE_SOURCE_DIR}/dist/wasm_loader.js) \ No newline at end of file diff --git a/README.md b/README.md index 7db6ca4..6aae4e3 100644 --- a/README.md +++ b/README.md @@ -21,7 +21,7 @@ Create the makefiles using cmake. For more info look at the readme in screepsxx. ``` mkdir build cd build -cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_EXPORT_COMPILE_COMMANDS=1 -DCMAKE_TOOLCHAIN_FILE=emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake .. +cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_TOOLCHAIN_FILE=emsdk/upstream/emscripten/cmake/Modules/Platform/Emscripten.cmake .. ``` # Build diff --git a/clean_compile_commands.py b/clean_compile_commands.py new file mode 100644 index 0000000..9d7a5f1 --- /dev/null +++ b/clean_compile_commands.py @@ -0,0 +1,42 @@ +#!/usr/bin/env python3 +import json +import re +import sys +import os + +def clean_compile_commands(compile_commands_path): + # Load the compile_commands.json file + with open(compile_commands_path, 'r') as f: + data = json.load(f) + + # Flags to remove (Emscripten-specific) + flags_to_remove = [ + r'-s\w+=\S*', # Matches -sSTRICT=0, -sMODULARIZE=1, etc. + r'-s\w+', # Matches -sWASM, -sASSERTIONS, etc. + r'--no-entry', + r'--bind', + r'--cache', + ] + + # Clean each command + for entry in data: + if 'command' in entry: + command = entry['command'] + # Remove all unwanted flags + for flag_pattern in flags_to_remove: + command = re.sub(flag_pattern, '', command) + # Remove extra spaces + command = ' '.join(command.split()) + entry['command'] = command + + # Save the cleaned file + with open(compile_commands_path, 'w') as f: + json.dump(data, f, indent=2) + + print(f"Cleaned {compile_commands_path}") + +if __name__ == '__main__': + if len(sys.argv) != 2: + print("Usage: python clean_compile_commands.py ") + sys.exit(1) + clean_compile_commands(sys.argv[1]) \ No newline at end of file diff --git a/compile_commands.json b/compile_commands.json new file mode 120000 index 0000000..4ef3144 --- /dev/null +++ b/compile_commands.json @@ -0,0 +1 @@ +/mnt/douwe/hdd/Projects/Screeps/build/compile_commands.json \ No newline at end of file diff --git a/douwco_hivemind/src/Loop.cpp b/douwco_hivemind/src/Loop.cpp index 46a697f..a6252dd 100644 --- a/douwco_hivemind/src/Loop.cpp +++ b/douwco_hivemind/src/Loop.cpp @@ -9,7 +9,7 @@ #include "Engine.hpp" #include "Structures/Spawn.hpp" -//EMSCRIPTEN_KEEPALIVE +EMSCRIPTEN_KEEPALIVE extern "C" void loop() { Screeps::Context::update(); From 2332978ab7f26f623ae8f3c1a3ecfcd91aa37559 Mon Sep 17 00:00:00 2001 From: Douwe Ravers Date: Wed, 17 Jun 2026 01:04:10 +0200 Subject: [PATCH 04/22] Added small movments when waiting on new target preventing blocking a source. --- douwco_hivemind/src/Creeps/Builder.cpp | 5 +++-- douwco_hivemind/src/Creeps/CreepBase.cpp | 8 ++++++-- douwco_hivemind/src/Creeps/Maintainer.cpp | 10 +++++----- douwco_hivemind/src/Creeps/Supplier.cpp | 4 ++-- douwco_hivemind/src/Structures/Spawn.cpp | 3 +-- 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/douwco_hivemind/src/Creeps/Builder.cpp b/douwco_hivemind/src/Creeps/Builder.cpp index 1bc8f4c..5e806d1 100644 --- a/douwco_hivemind/src/Creeps/Builder.cpp +++ b/douwco_hivemind/src/Creeps/Builder.cpp @@ -19,12 +19,12 @@ #include #include "Creeps/Builder.hpp" +#include "Creeps/CreepBase.hpp" void DouwcoHivemind::Builder::depositEnergy() { auto constructionSite = getConstructionSiteTarget(); - if (!constructionSite) - return; + if (!constructionSite) return; if (isNearTo(constructionSite->pos(), 1)) { @@ -42,6 +42,7 @@ std::unique_ptr DouwcoHivemind::Builder::getConstruct if (!roomObj) { searchConstructionSite(); + if(target_id.empty()) creep.move(rand()%5); return nullptr; } diff --git a/douwco_hivemind/src/Creeps/CreepBase.cpp b/douwco_hivemind/src/Creeps/CreepBase.cpp index eaab95f..95af63e 100644 --- a/douwco_hivemind/src/Creeps/CreepBase.cpp +++ b/douwco_hivemind/src/Creeps/CreepBase.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "Creeps/CreepBase.hpp" @@ -19,6 +20,7 @@ DouwcoHivemind::CreepBase::CreepBase(Screeps::Creep crp) : creep(crp), DouwcoHivemind::CreepBase::~CreepBase() { + memory["role"] = role; memory["target_id"] = target_id; creep.setMemory(memory); } @@ -26,7 +28,7 @@ DouwcoHivemind::CreepBase::~CreepBase() void DouwcoHivemind::CreepBase::moveToTarget(int dist) { // Is move required? - auto target = getRoomObjectTarget(); + auto target = getRoomObjectTarget(); if (isNearTo(target->pos(), dist)) { memory.erase("path"); @@ -127,11 +129,13 @@ void DouwcoHivemind::CreepBase::moveToTarget(int dist) std::unique_ptr DouwcoHivemind::CreepBase::getRoomObjectTarget() { + // Check if any target is present + if(target_id.empty()) return nullptr; // Check if game can find target auto roomObj = Screeps::Game.getObjectById(target_id); if (!roomObj) { - JS::console.log(creep.name() + ": Game can\'t find target id"); + JS::console.log(creep.name() + ": Game can\'t find target id: " + target_id); return nullptr; } return std::move(roomObj); diff --git a/douwco_hivemind/src/Creeps/Maintainer.cpp b/douwco_hivemind/src/Creeps/Maintainer.cpp index 46cea3b..059d377 100644 --- a/douwco_hivemind/src/Creeps/Maintainer.cpp +++ b/douwco_hivemind/src/Creeps/Maintainer.cpp @@ -16,13 +16,12 @@ #include #include "Creeps/Maintainer.hpp" +#include "Creeps/CreepBase.hpp" void DouwcoHivemind::Maintainer::depositEnergy() { auto structure = getDamagedStructureTarget(); - if (!structure) - return; - + if (!structure) return; if (isNearTo(structure->pos(), 1)) { int resp = creep.repair(*structure); @@ -39,6 +38,7 @@ std::unique_ptr DouwcoHivemind::Maintainer::getDamagedStruct if (!roomObj) { searchDamagedStructure(); + if(target_id.empty()) creep.move(rand()%5); return nullptr; } @@ -82,8 +82,8 @@ void DouwcoHivemind::Maintainer::searchDamagedStructure() } } - if (selectedStructure) + if (selectedStructure && selectedStructure->hits() != selectedStructure->hitsMax()) target_id = selectedStructure->id(); - else + else target_id.clear(); } diff --git a/douwco_hivemind/src/Creeps/Supplier.cpp b/douwco_hivemind/src/Creeps/Supplier.cpp index 5742299..ed4c598 100644 --- a/douwco_hivemind/src/Creeps/Supplier.cpp +++ b/douwco_hivemind/src/Creeps/Supplier.cpp @@ -20,8 +20,7 @@ void DouwcoHivemind::Supplier::depositEnergy() { auto structure = getEnergyStructureTarget(); - if (!structure) - return; + if (!structure) return; if (isNearTo(structure->pos(), 1)) { @@ -39,6 +38,7 @@ std::unique_ptr DouwcoHivemind::Supplier::getEnergyStructure if (!roomObj) { searchEnergyStructure(); + if(target_id.empty()) creep.move(rand()%5); return nullptr; } diff --git a/douwco_hivemind/src/Structures/Spawn.cpp b/douwco_hivemind/src/Structures/Spawn.cpp index 6317129..d4d78d6 100644 --- a/douwco_hivemind/src/Structures/Spawn.cpp +++ b/douwco_hivemind/src/Structures/Spawn.cpp @@ -17,7 +17,6 @@ void DouwcoHivemind::Spawn::loop() int required_suppliers = 1; int required_maintainers = spawn.room().find(Screeps::FIND_MY_STRUCTURES).size() <= 2 ? 0 : 1;; int required_builders = spawn.room().find(Screeps::FIND_MY_CONSTRUCTION_SITES).size() == 0 ? 0 : 1; - for (auto &creep : Screeps::Game.creeps()) { CreepRole role = creep.second.memory()["role"]; @@ -32,7 +31,7 @@ void DouwcoHivemind::Spawn::loop() required_builders--; } - if (energyAvailable < energyCapacityAvailable && required_suppliers < 2) + if (energyAvailable < energyCapacityAvailable && 3 < Screeps::Game.creeps().size()) return; std::string name; JSON opts; From fe039cbdcf84b79ed87dc364460d23e24341eda7 Mon Sep 17 00:00:00 2001 From: Douwe Ravers Date: Thu, 18 Jun 2026 01:12:09 +0200 Subject: [PATCH 05/22] Building Room based placement system. --- douwco_hivemind/include/Engine.hpp | 37 +++++--- douwco_hivemind/include/Room.hpp | 31 ++++++ douwco_hivemind/src/Engine.cpp | 146 +++++++++++++++-------------- douwco_hivemind/src/Room.cpp | 40 ++++++++ 4 files changed, 167 insertions(+), 87 deletions(-) create mode 100644 douwco_hivemind/include/Room.hpp create mode 100644 douwco_hivemind/src/Room.cpp diff --git a/douwco_hivemind/include/Engine.hpp b/douwco_hivemind/include/Engine.hpp index a59c437..625ffe9 100644 --- a/douwco_hivemind/include/Engine.hpp +++ b/douwco_hivemind/include/Engine.hpp @@ -4,25 +4,32 @@ #include #include "Creeps/CreepBase.hpp" +#include "Room.hpp" #include "Structures/StructureBase.hpp" -namespace DouwcoHivemind -{ - class Engine - { - private: - std::vector> creeps; - std::vector> structures; +namespace DouwcoHivemind { +class Engine { +private: + std::vector> rooms; + std::vector> creeps; + std::vector> structures; - public: - Engine(); - void loop(); +public: + // Readout data from screeps API into C++ vectors + Engine(); + // Loop over all rooms, screeps and structures + void loop(); - private: - void ReadOutCreeps(); - void ReadOutStructures(); - void clearDeadCreepMemory(); - }; +private: + // Readout player owned rooms + void ReadOutRooms(); + // Readout player owned screeps and assign their roles + void ReadOutCreeps(); + // Readout player owned buildings based on their structure type + void ReadOutStructures(); + // Clear dead screep memory + void clearDeadCreepMemory(); +}; } #endif // DOUWCO_HIVEMIND_ENGINE_HPP \ No newline at end of file diff --git a/douwco_hivemind/include/Room.hpp b/douwco_hivemind/include/Room.hpp new file mode 100644 index 0000000..d83661a --- /dev/null +++ b/douwco_hivemind/include/Room.hpp @@ -0,0 +1,31 @@ +#ifndef DOUWCO_HIVEMIND_ROOM_HPP +#define DOUWCO_HIVEMIND_ROOM_HPP + +#include + +namespace DouwcoHivemind { +class Room { + +protected: + enum ProgressState { + PLANNED, + IN_PROGRESS, + FINISHED + }; + + Screeps::Room room; + JSON memory; + ProgressState _sourceContainerState; + +public: + Room(Screeps::Room rm); + ~Room(); + + void loop(); + +protected: + bool assignConstructionSites(); +}; +} // namespace DouwcoHivemind + +#endif // DOUWCO_HIVEMIND_ROOM_HPP \ No newline at end of file diff --git a/douwco_hivemind/src/Engine.cpp b/douwco_hivemind/src/Engine.cpp index bec200e..4da942e 100644 --- a/douwco_hivemind/src/Engine.cpp +++ b/douwco_hivemind/src/Engine.cpp @@ -3,86 +3,88 @@ #include "Engine.hpp" -#include "Creeps/Supplier.hpp" -#include "Creeps/Upgrader.hpp" #include "Creeps/Builder.hpp" #include "Creeps/Maintainer.hpp" +#include "Creeps/Supplier.hpp" +#include "Creeps/Upgrader.hpp" #include "Structures/Spawn.hpp" -DouwcoHivemind::Engine::Engine() -{ - ReadOutCreeps(); - ReadOutStructures(); +DouwcoHivemind::Engine::Engine() { + ReadOutRooms(); + ReadOutCreeps(); + ReadOutStructures(); } -void DouwcoHivemind::Engine::loop() -{ - JS::console.log(std::string("Iterating over creeps")); - for (auto &creep : creeps) - creep->loop(); +void DouwcoHivemind::Engine::loop() { + JS::console.log(std::string("Iterating over rooms")); + for (auto &room : rooms) + room->loop(); - JS::console.log(std::string("Iterating over structures")); - for (auto &structure : structures) - structure->loop(); + JS::console.log(std::string("Iterating over creeps")); + for (auto &creep : creeps) + creep->loop(); - if (Screeps::Game.time() % 1000 == 0) - { - clearDeadCreepMemory(); + JS::console.log(std::string("Iterating over structures")); + for (auto &structure : structures) + structure->loop(); + + if (Screeps::Game.time() % 100 == 0) { + clearDeadCreepMemory(); + } +} + +void DouwcoHivemind::Engine::ReadOutRooms() { + JS::console.log(std::string("Reading out owned rooms")); + auto src_rooms = Screeps::Game.rooms(); + for (auto &room : src_rooms) { + rooms.push_back(std::make_unique(room.second)); + } +} + +void DouwcoHivemind::Engine::ReadOutCreeps() { + JS::console.log(std::string("Reading out creeps")); + auto src_creeps = Screeps::Game.creeps(); + for (auto &creep : src_creeps) { + CreepRole role = creep.second.memory()["role"]; + if (role == CreepRole::SUPPLIER) + creeps.push_back(std::make_unique(creep.second)); + else if (role == CreepRole::UPGRADER) + creeps.push_back(std::make_unique(creep.second)); + else if (role == CreepRole::BUILDER) + creeps.push_back(std::make_unique(creep.second)); + else if (role == CreepRole::MAINTAINER) + creeps.push_back(std::make_unique(creep.second)); + } +} + +void DouwcoHivemind::Engine::ReadOutStructures() { + JS::console.log(std::string("Reading out structures")); + auto spawns = Screeps::Game.spawns(); + for (auto &spawn : spawns) { + structures.push_back(std::make_unique(spawn.second)); + } +} + +void DouwcoHivemind::Engine::clearDeadCreepMemory() { + auto creepMemory = Screeps::Memory["creeps"]; + auto creepsMap = Screeps::Game.creeps(); + int iterator = 0; + for (auto [name, creep] : creepMemory.items()) { + // avoid cpu overload + iterator++; + if (iterator == 100) + break; + + bool containsname = false; + for (auto creepObject : creepsMap) { + if (creepObject.first == name) { + containsname = true; + break; + } } -} - -void DouwcoHivemind::Engine::ReadOutCreeps() -{ - JS::console.log(std::string("Reading out creeps")); - auto src_creeps = Screeps::Game.creeps(); - for (auto &creep : src_creeps) - { - CreepRole role = creep.second.memory()["role"]; - if (role == CreepRole::SUPPLIER) - creeps.push_back(std::make_unique(creep.second)); - else if (role == CreepRole::UPGRADER) - creeps.push_back(std::make_unique(creep.second)); - else if (role == CreepRole::BUILDER) - creeps.push_back(std::make_unique(creep.second)); - else if (role == CreepRole::MAINTAINER) - creeps.push_back(std::make_unique(creep.second)); - } -} - -void DouwcoHivemind::Engine::ReadOutStructures() -{ - JS::console.log(std::string("Reading out structures")); - auto spawns = Screeps::Game.spawns(); - for (auto &spawn : spawns) - { - structures.push_back(std::make_unique(spawn.second)); - } -} - -void DouwcoHivemind::Engine::clearDeadCreepMemory() -{ - auto creepMemory = Screeps::Memory["creeps"]; - auto creepsMap = Screeps::Game.creeps(); - int iterator = 0; - for (auto [name, creep] : creepMemory.items()) - { - // avoid cpu overload - iterator++; - if (iterator == 100) - break; - - bool containsname = false; - for (auto creepObject : creepsMap) - { - if (creepObject.first == name) - { - containsname = true; - break; - } - } - if (!containsname) - creepMemory.erase(name); - } - Screeps::Memory.set("creeps", creepMemory); + if (!containsname) + creepMemory.erase(name); + } + Screeps::Memory.set("creeps", creepMemory); } diff --git a/douwco_hivemind/src/Room.cpp b/douwco_hivemind/src/Room.cpp new file mode 100644 index 0000000..f7ad21c --- /dev/null +++ b/douwco_hivemind/src/Room.cpp @@ -0,0 +1,40 @@ +#include "Room.hpp" + +#include "Screeps/Constants.hpp" +#include "Screeps/Room.hpp" +#include "Screeps/RoomObject.hpp" +#include "Screeps/RoomPosition.hpp" + +DouwcoHivemind::Room::Room(Screeps::Room rm) : room(rm), memory(rm.memory()) { + _sourceContainerState = + memory.contains("_sourceContainerState") + ? static_cast(memory["_sourceContainerState"]) + : ProgressState::PLANNED; +} + +DouwcoHivemind::Room::~Room() { + memory["_sourceContainerState"] = _sourceContainerState; +} + +void DouwcoHivemind::Room::loop() { + if (assignConstructionSites()) + return; +} + +bool DouwcoHivemind::Room::assignConstructionSites() { + if (_sourceContainerState == PLANNED) { + auto sources = room.find(Screeps::FIND_SOURCES); + for (auto &source : sources) { + int x = source->pos().x(); + int y = source->pos().y(); + for (int dx = -1; dx < 2; dx++) { + for (int dy = -1; dy < 2; dy++) { + if(dx == 0 && dy == 0) continue; + auto pos = room.getPositionAt(x + dx, y + dy); + } + } + } + } else if (_sourceContainerState == IN_PROGRESS) { + } + return false; +} \ No newline at end of file From 50e8c81cf035ce52cc895e182316a67a94fc6acd Mon Sep 17 00:00:00 2001 From: Douwe Ravers Date: Fri, 19 Jun 2026 00:08:04 +0200 Subject: [PATCH 06/22] Implemented auto building of containers. --- CMakeLists.txt | 4 +- douwco_hivemind/include/Room.hpp | 11 +--- douwco_hivemind/src/Creeps/Builder.cpp | 1 - douwco_hivemind/src/Creeps/Maintainer.cpp | 1 - douwco_hivemind/src/Creeps/Supplier.cpp | 1 - douwco_hivemind/src/Engine.cpp | 2 + douwco_hivemind/src/Room.cpp | 76 ++++++++++++++++++----- douwco_hivemind/src/Structures/Spawn.cpp | 8 +-- screepsxx | 2 +- 9 files changed, 74 insertions(+), 32 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index b0f72ac..0784405 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -2,8 +2,8 @@ cmake_minimum_required(VERSION 3.16) project(douwco_hivemind CXX) -set(CMAKE_CXX_STANDARD 17) -set(CMAKE_CXX_STANDARD_REQUIRED TRUE) +set(CMAKE_CXX_STANDARD 20) +set(CMAKE_CXX_STANDARD_REQUIRED On) # Generate compile commands set(CMAKE_EXPORT_COMPILE_COMMANDS ON) diff --git a/douwco_hivemind/include/Room.hpp b/douwco_hivemind/include/Room.hpp index d83661a..c87412f 100644 --- a/douwco_hivemind/include/Room.hpp +++ b/douwco_hivemind/include/Room.hpp @@ -2,20 +2,15 @@ #define DOUWCO_HIVEMIND_ROOM_HPP #include +#include namespace DouwcoHivemind { class Room { protected: - enum ProgressState { - PLANNED, - IN_PROGRESS, - FINISHED - }; - Screeps::Room room; JSON memory; - ProgressState _sourceContainerState; + std::vector sourceContainers = {}; public: Room(Screeps::Room rm); @@ -24,7 +19,7 @@ public: void loop(); protected: - bool assignConstructionSites(); + bool placeContainers(); }; } // namespace DouwcoHivemind diff --git a/douwco_hivemind/src/Creeps/Builder.cpp b/douwco_hivemind/src/Creeps/Builder.cpp index 5e806d1..4590c02 100644 --- a/douwco_hivemind/src/Creeps/Builder.cpp +++ b/douwco_hivemind/src/Creeps/Builder.cpp @@ -42,7 +42,6 @@ std::unique_ptr DouwcoHivemind::Builder::getConstruct if (!roomObj) { searchConstructionSite(); - if(target_id.empty()) creep.move(rand()%5); return nullptr; } diff --git a/douwco_hivemind/src/Creeps/Maintainer.cpp b/douwco_hivemind/src/Creeps/Maintainer.cpp index 059d377..dbc9c0a 100644 --- a/douwco_hivemind/src/Creeps/Maintainer.cpp +++ b/douwco_hivemind/src/Creeps/Maintainer.cpp @@ -38,7 +38,6 @@ std::unique_ptr DouwcoHivemind::Maintainer::getDamagedStruct if (!roomObj) { searchDamagedStructure(); - if(target_id.empty()) creep.move(rand()%5); return nullptr; } diff --git a/douwco_hivemind/src/Creeps/Supplier.cpp b/douwco_hivemind/src/Creeps/Supplier.cpp index ed4c598..40fbd9f 100644 --- a/douwco_hivemind/src/Creeps/Supplier.cpp +++ b/douwco_hivemind/src/Creeps/Supplier.cpp @@ -38,7 +38,6 @@ std::unique_ptr DouwcoHivemind::Supplier::getEnergyStructure if (!roomObj) { searchEnergyStructure(); - if(target_id.empty()) creep.move(rand()%5); return nullptr; } diff --git a/douwco_hivemind/src/Engine.cpp b/douwco_hivemind/src/Engine.cpp index 4da942e..9f17eca 100644 --- a/douwco_hivemind/src/Engine.cpp +++ b/douwco_hivemind/src/Engine.cpp @@ -1,5 +1,6 @@ #include #include +#include #include "Engine.hpp" @@ -38,6 +39,7 @@ void DouwcoHivemind::Engine::ReadOutRooms() { JS::console.log(std::string("Reading out owned rooms")); auto src_rooms = Screeps::Game.rooms(); for (auto &room : src_rooms) { + if(!room.second.controller().value().my()) continue; rooms.push_back(std::make_unique(room.second)); } } diff --git a/douwco_hivemind/src/Room.cpp b/douwco_hivemind/src/Room.cpp index f7ad21c..7d5ca60 100644 --- a/douwco_hivemind/src/Room.cpp +++ b/douwco_hivemind/src/Room.cpp @@ -4,37 +4,85 @@ #include "Screeps/Room.hpp" #include "Screeps/RoomObject.hpp" #include "Screeps/RoomPosition.hpp" +#include "Screeps/RoomTerrain.hpp" +#include "Screeps/Structure.hpp" +#include "Screeps/StructureContainer.hpp" +#include "Screeps/StructureController.hpp" +#include +#include +#include +#include +#include +#include +#include DouwcoHivemind::Room::Room(Screeps::Room rm) : room(rm), memory(rm.memory()) { - _sourceContainerState = - memory.contains("_sourceContainerState") - ? static_cast(memory["_sourceContainerState"]) - : ProgressState::PLANNED; + if (memory.contains("sourceContainers")) + sourceContainers = + static_cast>(memory["sourceContainers"]); } DouwcoHivemind::Room::~Room() { - memory["_sourceContainerState"] = _sourceContainerState; + memory["sourceContainers"] = sourceContainers; + room.setMemory(memory); } void DouwcoHivemind::Room::loop() { - if (assignConstructionSites()) + if (placeContainers()) return; } -bool DouwcoHivemind::Room::assignConstructionSites() { - if (_sourceContainerState == PLANNED) { - auto sources = room.find(Screeps::FIND_SOURCES); +bool DouwcoHivemind::Room::placeContainers() { + auto sources = room.find(Screeps::FIND_SOURCES); + + // No containers planned or build, planning now + if (sourceContainers.size() == 0) { + int controller_x = room.controller().value().pos().x(); + int controller_y = room.controller().value().pos().y(); + for (auto &source : sources) { - int x = source->pos().x(); - int y = source->pos().y(); + int source_x = source->pos().x(); + int source_y = source->pos().y(); + + int lowest_cost = 1000; + int best_x; + int best_y; for (int dx = -1; dx < 2; dx++) { for (int dy = -1; dy < 2; dy++) { - if(dx == 0 && dy == 0) continue; - auto pos = room.getPositionAt(x + dx, y + dy); + if (dx == 0 && dy == 0) + continue; + int x = source_x + dx; + int y = source_y + dy; + int terrainType = room.getTerrain().get(x, y); + if (terrainType != Screeps::TERRAIN_MASK_WALL) { + int cost = std::abs(x - controller_x) + std::abs(y - controller_y); + if (cost < lowest_cost) { + lowest_cost = cost; + best_x = x; + best_y = y; + } + } } } + room.createConstructionSite(best_x, best_y, Screeps::STRUCTURE_CONTAINER); + sourceContainers.push_back("under_construction"); } - } else if (_sourceContainerState == IN_PROGRESS) { + return true; + } + // Check if construction container is done. + for (auto entry : sourceContainers) { + if (entry != "under_construction") + continue; + auto structures = room.find(Screeps::FIND_STRUCTURES); + int index = 0; + for (auto &structure : structures) { + auto str = dynamic_cast(structure.get()); + if (str->structureType() == Screeps::STRUCTURE_CONTAINER) { + sourceContainers[index] = str->id(); + index++; + } + } + return true; } return false; } \ No newline at end of file diff --git a/douwco_hivemind/src/Structures/Spawn.cpp b/douwco_hivemind/src/Structures/Spawn.cpp index d4d78d6..0d15a0b 100644 --- a/douwco_hivemind/src/Structures/Spawn.cpp +++ b/douwco_hivemind/src/Structures/Spawn.cpp @@ -12,10 +12,10 @@ void DouwcoHivemind::Spawn::loop() int energyAvailable = spawn.room().energyAvailable(); int energyCapacityAvailable = spawn.room().energyCapacityAvailable(); - + int required_upgraders = 1; int required_suppliers = 1; - int required_maintainers = spawn.room().find(Screeps::FIND_MY_STRUCTURES).size() <= 2 ? 0 : 1;; + int required_maintainers = spawn.room().find(Screeps::FIND_STRUCTURES).size() <= 2 ? 0 : 1;; int required_builders = spawn.room().find(Screeps::FIND_MY_CONSTRUCTION_SITES).size() == 0 ? 0 : 1; for (auto &creep : Screeps::Game.creeps()) { @@ -31,8 +31,8 @@ void DouwcoHivemind::Spawn::loop() required_builders--; } - if (energyAvailable < energyCapacityAvailable && 3 < Screeps::Game.creeps().size()) - return; + // if (energyAvailable < energyCapacityAvailable && 3 < Screeps::Game.creeps().size()) + // return; std::string name; JSON opts; if (required_suppliers > 0) diff --git a/screepsxx b/screepsxx index 3567060..bf5fd1f 160000 --- a/screepsxx +++ b/screepsxx @@ -1 +1 @@ -Subproject commit 3567060bf5846e7618f64ee9439b76550abc4351 +Subproject commit bf5fd1f69b251c6829d7847e3d5d2dbc7764a3b9 From ee44b60087d455975d64afd36d92eb19bb61b54e Mon Sep 17 00:00:00 2001 From: douwe Date: Sun, 21 Jun 2026 16:11:20 +0200 Subject: [PATCH 07/22] fixed terrain implementation --- .../index/Builder.cpp.E54C6D6632153280.idx | Bin 0 -> 1240 bytes .../index/Builder.hpp.656949760E64D2FB.idx | Bin 0 -> 658 bytes .../index/Constants.hpp.39349C605E733E23.idx | Bin 0 -> 32758 bytes .../ConstructionSite.cpp.1EF145D6E14F2CFB.idx | Bin 0 -> 1592 bytes .../ConstructionSite.hpp.BCC6A29BDB9B63FA.idx | Bin 0 -> 1122 bytes .../index/Context.hpp.E1B33B5021D437FB.idx | Bin 0 -> 812 bytes .../clangd/index/Creep.cpp.A06D696B9A17B433.idx | Bin 0 -> 8894 bytes .../clangd/index/Creep.hpp.783E092EC895D4B6.idx | Bin 0 -> 4984 bytes .../index/CreepBase.cpp.A09022785B8F4C70.idx | Bin 0 -> 1614 bytes .../index/CreepBase.hpp.4B48E690924EBC82.idx | Bin 0 -> 1588 bytes .../index/Deposit.cpp.B320E3725B3179FE.idx | Bin 0 -> 1296 bytes .../index/Deposit.hpp.329D291877BE420C.idx | Bin 0 -> 1042 bytes .../index/Effect.hpp.40CE6F99A9A45745.idx | Bin 0 -> 628 bytes .../index/Engine.cpp.2029BC7F602F68B6.idx | Bin 0 -> 1614 bytes .../index/Engine.hpp.EB7BBB1AC251CC3E.idx | Bin 0 -> 894 bytes .../clangd/index/Flag.cpp.18EE25E4561258A1.idx | Bin 0 -> 1860 bytes .../clangd/index/Flag.hpp.65DC977F4438F2A9.idx | Bin 0 -> 1516 bytes .../clangd/index/Game.cpp.6D9E1D09306771B1.idx | Bin 0 -> 3066 bytes .../clangd/index/Game.hpp.36D2CF5D5132AD6E.idx | Bin 0 -> 3404 bytes .cache/clangd/index/JS.cpp.E833D04113D5E3C4.idx | Bin 0 -> 1624 bytes .cache/clangd/index/JS.hpp.2B52BA2A72DFB1AA.idx | Bin 0 -> 2080 bytes .../clangd/index/JSON.hpp.177AA010EB3375B3.idx | Bin 0 -> 202 bytes .../index/JsonTool.hpp.43B3A95F8C53CDB2.idx | Bin 0 -> 442 bytes .../clangd/index/Loop.cpp.5DCEC9BD3A29150E.idx | Bin 0 -> 632 bytes .../index/Maintainer.cpp.D42DBB105AF62633.idx | Bin 0 -> 1224 bytes .../index/Maintainer.hpp.DEE88DFF2AC5402B.idx | Bin 0 -> 670 bytes .../index/MeasureTool.hpp.6F5AD01338354ADE.idx | Bin 0 -> 504 bytes .../index/Memory.cpp.99C5CC5CE0EDEBD6.idx | Bin 0 -> 1010 bytes .../index/Memory.hpp.0E095D943C15E333.idx | Bin 0 -> 794 bytes .../index/Mineral.cpp.906707DE7CD459ED.idx | Bin 0 -> 1248 bytes .../index/Mineral.hpp.00E84CD1847DB6A5.idx | Bin 0 -> 1066 bytes .../clangd/index/Nuke.cpp.929267C62F55D0BD.idx | Bin 0 -> 996 bytes .../clangd/index/Nuke.hpp.6A65FF1B6B8968CB.idx | Bin 0 -> 742 bytes .../index/Object.cpp.DB6A28EEC8F0037D.idx | Bin 0 -> 1162 bytes .../index/Object.hpp.8949917CAC1F6766.idx | Bin 0 -> 1060 bytes .../OwnedStructure.cpp.A246A9112B141B28.idx | Bin 0 -> 984 bytes .../OwnedStructure.hpp.54EE5107B7783033.idx | Bin 0 -> 760 bytes .../index/PathFinder.cpp.858789D071ADF3F0.idx | Bin 0 -> 786 bytes .../index/PathFinder.hpp.1EA1C755B007E529.idx | Bin 0 -> 632 bytes .../index/PathTool.hpp.0B8302584BF05C09.idx | Bin 0 -> 608 bytes .../index/PowerCreep.cpp.4F3CAAACB83DA5F4.idx | Bin 0 -> 5826 bytes .../index/PowerCreep.hpp.71736AC67B4D210A.idx | Bin 0 -> 4168 bytes .../index/RawMemory.cpp.F75BB771690FDA32.idx | Bin 0 -> 786 bytes .../index/RawMemory.hpp.17858094617AA46D.idx | Bin 0 -> 660 bytes .../index/Resource.cpp.D0FDE10CE7481DAB.idx | Bin 0 -> 1120 bytes .../index/Resource.hpp.5E7884E3AB08BF48.idx | Bin 0 -> 1046 bytes .../clangd/index/Room.cpp.34D30EC50DACDA10.idx | Bin 0 -> 1206 bytes .../clangd/index/Room.cpp.D1D6ED803D6C3CC8.idx | Bin 0 -> 5702 bytes .../clangd/index/Room.hpp.5A49AF77237812D5.idx | Bin 0 -> 782 bytes .../clangd/index/Room.hpp.7F05D3E1000893AA.idx | Bin 0 -> 4350 bytes .../index/RoomObject.cpp.161A2E8761542871.idx | Bin 0 -> 5688 bytes .../index/RoomObject.hpp.A1A7070FF0E2EF9F.idx | Bin 0 -> 1596 bytes .../index/RoomPosition.cpp.0B476C3C5CD7FA77.idx | Bin 0 -> 4748 bytes .../index/RoomPosition.hpp.F4DAACF771572D8C.idx | Bin 0 -> 2822 bytes .../index/RoomTerrain.cpp.F76E5D67082E7FE9.idx | Bin 0 -> 816 bytes .../index/RoomTerrain.hpp.CD1C754FC01647D7.idx | Bin 0 -> 710 bytes .../index/RoomVisual.cpp.98D7648C7BD209C8.idx | Bin 0 -> 2082 bytes .../index/RoomVisual.hpp.97A79B8D0CA58BB0.idx | Bin 0 -> 1562 bytes .../clangd/index/Ruin.cpp.DFB1E433655F6515.idx | Bin 0 -> 700 bytes .../clangd/index/Ruin.hpp.C5021FE3C4ADB897.idx | Bin 0 -> 520 bytes .../index/Source.cpp.03C4AA7308EF880F.idx | Bin 0 -> 1250 bytes .../index/Source.hpp.AD70F997F5385824.idx | Bin 0 -> 1288 bytes .../clangd/index/Spawn.cpp.A2B98557DED9A2F9.idx | Bin 0 -> 878 bytes .../clangd/index/Spawn.hpp.74C2EDB25D3C2355.idx | Bin 0 -> 672 bytes .../clangd/index/Store.cpp.3D16BB890A71C6AA.idx | Bin 0 -> 1682 bytes .../clangd/index/Store.hpp.9697CC94B4B78E03.idx | Bin 0 -> 1174 bytes .../index/Structure.cpp.436AB412D074D6D0.idx | Bin 0 -> 1968 bytes .../index/Structure.hpp.B006C3BF9576A9F2.idx | Bin 0 -> 1382 bytes .../StructureBase.hpp.D3A2D45006602D7A.idx | Bin 0 -> 382 bytes .../StructureContainer.cpp.8F4A1E4F620A6882.idx | Bin 0 -> 1036 bytes .../StructureContainer.hpp.4E5678BFDB16B77F.idx | Bin 0 -> 734 bytes ...StructureController.cpp.AE363AC9C69C4863.idx | Bin 0 -> 3010 bytes ...StructureController.hpp.027CEDB2F8AA04D6.idx | Bin 0 -> 2190 bytes .../StructureExtension.cpp.5A4270723DAE94EF.idx | Bin 0 -> 910 bytes .../StructureExtension.hpp.3008167BD64960FC.idx | Bin 0 -> 706 bytes .../StructureExtractor.cpp.2E57717532C79F20.idx | Bin 0 -> 868 bytes .../StructureExtractor.hpp.595B69B7237EDB46.idx | Bin 0 -> 602 bytes .../StructureFactory.cpp.68FBD58EA690A4AE.idx | Bin 0 -> 1388 bytes .../StructureFactory.hpp.7ABD3C626D684582.idx | Bin 0 -> 1180 bytes ...tructureInvaderCore.cpp.BE2B2CB0D2F86D1B.idx | Bin 0 -> 1184 bytes ...tructureInvaderCore.hpp.61058AF11F94AA3A.idx | Bin 0 -> 956 bytes ...StructureKeeperLair.cpp.EE0632050194B55B.idx | Bin 0 -> 880 bytes ...StructureKeeperLair.hpp.ECA1F284CC94F97A.idx | Bin 0 -> 700 bytes .../StructureLink.cpp.CCEAC3FB78A709EE.idx | Bin 0 -> 1270 bytes .../StructureLink.hpp.F1C6A2728A3AE28B.idx | Bin 0 -> 1050 bytes .../StructureNuker.cpp.FD80C79FBFD912CF.idx | Bin 0 -> 1250 bytes .../StructureNuker.hpp.D41E291A19627F12.idx | Bin 0 -> 1064 bytes .../StructureObserver.cpp.8EEE079D59E92523.idx | Bin 0 -> 956 bytes .../StructureObserver.hpp.0DA29E161AC1EAC0.idx | Bin 0 -> 794 bytes .../StructurePortal.cpp.F4CD690CE4B9F602.idx | Bin 0 -> 1082 bytes .../StructurePortal.hpp.04636A27B975C96D.idx | Bin 0 -> 896 bytes .../StructurePowerBank.cpp.2E439E9B9CC61915.idx | Bin 0 -> 974 bytes .../StructurePowerBank.hpp.5EC6D8CC939E6680.idx | Bin 0 -> 792 bytes ...StructurePowerSpawn.cpp.B4C19D20C2431943.idx | Bin 0 -> 1422 bytes ...StructurePowerSpawn.hpp.638D66BF36262F84.idx | Bin 0 -> 1182 bytes .../StructureRampart.cpp.363AAC98BC28E853.idx | Bin 0 -> 1136 bytes .../StructureRampart.hpp.3509542E9A73A5C9.idx | Bin 0 -> 916 bytes .../StructureRoad.cpp.121BDA55F4A35F9D.idx | Bin 0 -> 870 bytes .../StructureRoad.hpp.94CD76219DBB3777.idx | Bin 0 -> 646 bytes .../StructureSpawn.cpp.2D619CD6209466A9.idx | Bin 0 -> 3408 bytes .../StructureSpawn.hpp.E9DC7C76E49ABBD3.idx | Bin 0 -> 2146 bytes ...uctureSpawnSpawning.cpp.0906078A91D44C73.idx | Bin 0 -> 1536 bytes ...uctureSpawnSpawning.hpp.CD0AD931BFE5558F.idx | Bin 0 -> 1084 bytes .../StructureStorage.cpp.407DA61191A6CBB3.idx | Bin 0 -> 904 bytes .../StructureStorage.hpp.817E4B0E08E8B7FF.idx | Bin 0 -> 646 bytes .../StructureTerminal.cpp.CF1D1FD0AE56CF3F.idx | Bin 0 -> 1308 bytes .../StructureTerminal.hpp.50D5C6B053FEDE4E.idx | Bin 0 -> 904 bytes .../StructureTower.cpp.469033BF734FE09D.idx | Bin 0 -> 1458 bytes .../StructureTower.hpp.DB43B0C64E48435F.idx | Bin 0 -> 972 bytes .../StructureWall.cpp.EF38448006CEF8F4.idx | Bin 0 -> 706 bytes .../StructureWall.hpp.68B809ADEAF6EFF4.idx | Bin 0 -> 536 bytes .../index/Supplier.cpp.653AC3331FD903C7.idx | Bin 0 -> 1362 bytes .../index/Supplier.hpp.7FACFFFA2FC16D8E.idx | Bin 0 -> 666 bytes .../index/Tombstone.cpp.D34611EFC561B052.idx | Bin 0 -> 1522 bytes .../index/Tombstone.hpp.76921569AB9A4B2F.idx | Bin 0 -> 1230 bytes .../index/Upgrader.cpp.1463660062599EEA.idx | Bin 0 -> 930 bytes .../index/Upgrader.hpp.A02E6E3404446D4A.idx | Bin 0 -> 530 bytes .../index/Worker.cpp.AC4D69C3CB022252.idx | Bin 0 -> 1610 bytes .../index/Worker.hpp.6F205FEA875D8531.idx | Bin 0 -> 916 bytes .../adl_serializer.hpp.DFD7552AF68FE10C.idx | Bin 0 -> 708 bytes .../binary_reader.hpp.77F442882BD57B3B.idx | Bin 0 -> 22920 bytes .../binary_writer.hpp.0EC7500F2801D410.idx | Bin 0 -> 13592 bytes ...tainer_with_subtype.hpp.97C866A94F13D654.idx | Bin 0 -> 2060 bytes .../index/cpp_future.hpp.230BBE72432B6E92.idx | Bin 0 -> 1826 bytes .../index/detected.hpp.BB153C6A8D459B62.idx | Bin 0 -> 1022 bytes .../index/exceptions.hpp.E13CC7C08A9DBC9F.idx | Bin 0 -> 7850 bytes .../index/from_json.hpp.C6F363CA71288CC1.idx | Bin 0 -> 6426 bytes .../clangd/index/hash.hpp.272F5FA9757DAA1F.idx | Bin 0 -> 1188 bytes .../index/hedley.hpp.FEE34B5A64B966D9.idx | Bin 0 -> 6822 bytes .../index/hedley_undef.hpp.CEF4F1A8A53DC162.idx | Bin 0 -> 164 bytes .../input_adapters.hpp.78C7BF4E4CFA778D.idx | Bin 0 -> 8594 bytes .../internal_iterator.hpp.C19C9622B56D9373.idx | Bin 0 -> 622 bytes .../index/is_sax.hpp.CC7545652AD71E55.idx | Bin 0 -> 2132 bytes .../index/iter_impl.hpp.033DA638D5CD1012.idx | Bin 0 -> 8856 bytes .../iteration_proxy.hpp.3BFE4F050EB7B1CB.idx | Bin 0 -> 4242 bytes .../iterator_traits.hpp.458CB3C9BF8F7D7A.idx | Bin 0 -> 504 bytes .../clangd/index/json.hpp.19785BFC18CA466E.idx | Bin 0 -> 33232 bytes .../index/json_fwd.hpp.26742AD87FD27039.idx | Bin 0 -> 414 bytes .../index/json_pointer.hpp.D59DE1A3B73204F3.idx | Bin 0 -> 6968 bytes .../index/json_ref.hpp.F45F50989F8F1001.idx | Bin 0 -> 2032 bytes ...on_reverse_iterator.hpp.58F28C260C78DDE2.idx | Bin 0 -> 2244 bytes .../index/json_sax.hpp.6F91C040B731D348.idx | Bin 0 -> 10168 bytes .../clangd/index/lexer.hpp.8FE107E6D18CCEB7.idx | Bin 0 -> 13840 bytes .../index/macro_scope.hpp.86C0DD8E57B5E3F6.idx | Bin 0 -> 2292 bytes .../macro_unscope.hpp.B14BD9ED4A7A08FB.idx | Bin 0 -> 198 bytes .../index/ordered_map.hpp.B456483924567A36.idx | Bin 0 -> 2506 bytes .../output_adapters.hpp.F2A206223E0FED28.idx | Bin 0 -> 2260 bytes .../index/parser.hpp.2C3D9C29D6D2D60D.idx | Bin 0 -> 6958 bytes .../index/position_t.hpp.49DF3AE7DB121E52.idx | Bin 0 -> 682 bytes .../primitive_iterator.hpp.95B7C71D0080D177.idx | Bin 0 -> 2314 bytes .../index/serializer.hpp.03D5899F3A9CB88C.idx | Bin 0 -> 6986 bytes .../index/to_chars.hpp.6B92F0DD0213E55B.idx | Bin 0 -> 7656 bytes .../index/to_json.hpp.244831C63D3B9EAF.idx | Bin 0 -> 7928 bytes .../index/type_traits.hpp.8754B458E8251A51.idx | Bin 0 -> 5202 bytes .../index/value_t.hpp.FE2C21E499B13E29.idx | Bin 0 -> 1892 bytes .../index/void_t.hpp.FAA1F91E4E048462.idx | Bin 0 -> 408 bytes compile_commands.json | 2 +- 157 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 .cache/clangd/index/Builder.cpp.E54C6D6632153280.idx create mode 100644 .cache/clangd/index/Builder.hpp.656949760E64D2FB.idx create mode 100644 .cache/clangd/index/Constants.hpp.39349C605E733E23.idx create mode 100644 .cache/clangd/index/ConstructionSite.cpp.1EF145D6E14F2CFB.idx create mode 100644 .cache/clangd/index/ConstructionSite.hpp.BCC6A29BDB9B63FA.idx create mode 100644 .cache/clangd/index/Context.hpp.E1B33B5021D437FB.idx create mode 100644 .cache/clangd/index/Creep.cpp.A06D696B9A17B433.idx create mode 100644 .cache/clangd/index/Creep.hpp.783E092EC895D4B6.idx create mode 100644 .cache/clangd/index/CreepBase.cpp.A09022785B8F4C70.idx create mode 100644 .cache/clangd/index/CreepBase.hpp.4B48E690924EBC82.idx create mode 100644 .cache/clangd/index/Deposit.cpp.B320E3725B3179FE.idx create mode 100644 .cache/clangd/index/Deposit.hpp.329D291877BE420C.idx create mode 100644 .cache/clangd/index/Effect.hpp.40CE6F99A9A45745.idx create mode 100644 .cache/clangd/index/Engine.cpp.2029BC7F602F68B6.idx create mode 100644 .cache/clangd/index/Engine.hpp.EB7BBB1AC251CC3E.idx create mode 100644 .cache/clangd/index/Flag.cpp.18EE25E4561258A1.idx create mode 100644 .cache/clangd/index/Flag.hpp.65DC977F4438F2A9.idx create mode 100644 .cache/clangd/index/Game.cpp.6D9E1D09306771B1.idx create mode 100644 .cache/clangd/index/Game.hpp.36D2CF5D5132AD6E.idx create mode 100644 .cache/clangd/index/JS.cpp.E833D04113D5E3C4.idx create mode 100644 .cache/clangd/index/JS.hpp.2B52BA2A72DFB1AA.idx create mode 100644 .cache/clangd/index/JSON.hpp.177AA010EB3375B3.idx create mode 100644 .cache/clangd/index/JsonTool.hpp.43B3A95F8C53CDB2.idx create mode 100644 .cache/clangd/index/Loop.cpp.5DCEC9BD3A29150E.idx create mode 100644 .cache/clangd/index/Maintainer.cpp.D42DBB105AF62633.idx create mode 100644 .cache/clangd/index/Maintainer.hpp.DEE88DFF2AC5402B.idx create mode 100644 .cache/clangd/index/MeasureTool.hpp.6F5AD01338354ADE.idx create mode 100644 .cache/clangd/index/Memory.cpp.99C5CC5CE0EDEBD6.idx create mode 100644 .cache/clangd/index/Memory.hpp.0E095D943C15E333.idx create mode 100644 .cache/clangd/index/Mineral.cpp.906707DE7CD459ED.idx create mode 100644 .cache/clangd/index/Mineral.hpp.00E84CD1847DB6A5.idx create mode 100644 .cache/clangd/index/Nuke.cpp.929267C62F55D0BD.idx create mode 100644 .cache/clangd/index/Nuke.hpp.6A65FF1B6B8968CB.idx create mode 100644 .cache/clangd/index/Object.cpp.DB6A28EEC8F0037D.idx create mode 100644 .cache/clangd/index/Object.hpp.8949917CAC1F6766.idx create mode 100644 .cache/clangd/index/OwnedStructure.cpp.A246A9112B141B28.idx create mode 100644 .cache/clangd/index/OwnedStructure.hpp.54EE5107B7783033.idx create mode 100644 .cache/clangd/index/PathFinder.cpp.858789D071ADF3F0.idx create mode 100644 .cache/clangd/index/PathFinder.hpp.1EA1C755B007E529.idx create mode 100644 .cache/clangd/index/PathTool.hpp.0B8302584BF05C09.idx create mode 100644 .cache/clangd/index/PowerCreep.cpp.4F3CAAACB83DA5F4.idx create mode 100644 .cache/clangd/index/PowerCreep.hpp.71736AC67B4D210A.idx create mode 100644 .cache/clangd/index/RawMemory.cpp.F75BB771690FDA32.idx create mode 100644 .cache/clangd/index/RawMemory.hpp.17858094617AA46D.idx create mode 100644 .cache/clangd/index/Resource.cpp.D0FDE10CE7481DAB.idx create mode 100644 .cache/clangd/index/Resource.hpp.5E7884E3AB08BF48.idx create mode 100644 .cache/clangd/index/Room.cpp.34D30EC50DACDA10.idx create mode 100644 .cache/clangd/index/Room.cpp.D1D6ED803D6C3CC8.idx create mode 100644 .cache/clangd/index/Room.hpp.5A49AF77237812D5.idx create mode 100644 .cache/clangd/index/Room.hpp.7F05D3E1000893AA.idx create mode 100644 .cache/clangd/index/RoomObject.cpp.161A2E8761542871.idx create mode 100644 .cache/clangd/index/RoomObject.hpp.A1A7070FF0E2EF9F.idx create mode 100644 .cache/clangd/index/RoomPosition.cpp.0B476C3C5CD7FA77.idx create mode 100644 .cache/clangd/index/RoomPosition.hpp.F4DAACF771572D8C.idx create mode 100644 .cache/clangd/index/RoomTerrain.cpp.F76E5D67082E7FE9.idx create mode 100644 .cache/clangd/index/RoomTerrain.hpp.CD1C754FC01647D7.idx create mode 100644 .cache/clangd/index/RoomVisual.cpp.98D7648C7BD209C8.idx create mode 100644 .cache/clangd/index/RoomVisual.hpp.97A79B8D0CA58BB0.idx create mode 100644 .cache/clangd/index/Ruin.cpp.DFB1E433655F6515.idx create mode 100644 .cache/clangd/index/Ruin.hpp.C5021FE3C4ADB897.idx create mode 100644 .cache/clangd/index/Source.cpp.03C4AA7308EF880F.idx create mode 100644 .cache/clangd/index/Source.hpp.AD70F997F5385824.idx create mode 100644 .cache/clangd/index/Spawn.cpp.A2B98557DED9A2F9.idx create mode 100644 .cache/clangd/index/Spawn.hpp.74C2EDB25D3C2355.idx create mode 100644 .cache/clangd/index/Store.cpp.3D16BB890A71C6AA.idx create mode 100644 .cache/clangd/index/Store.hpp.9697CC94B4B78E03.idx create mode 100644 .cache/clangd/index/Structure.cpp.436AB412D074D6D0.idx create mode 100644 .cache/clangd/index/Structure.hpp.B006C3BF9576A9F2.idx create mode 100644 .cache/clangd/index/StructureBase.hpp.D3A2D45006602D7A.idx create mode 100644 .cache/clangd/index/StructureContainer.cpp.8F4A1E4F620A6882.idx create mode 100644 .cache/clangd/index/StructureContainer.hpp.4E5678BFDB16B77F.idx create mode 100644 .cache/clangd/index/StructureController.cpp.AE363AC9C69C4863.idx create mode 100644 .cache/clangd/index/StructureController.hpp.027CEDB2F8AA04D6.idx create mode 100644 .cache/clangd/index/StructureExtension.cpp.5A4270723DAE94EF.idx create mode 100644 .cache/clangd/index/StructureExtension.hpp.3008167BD64960FC.idx create mode 100644 .cache/clangd/index/StructureExtractor.cpp.2E57717532C79F20.idx create mode 100644 .cache/clangd/index/StructureExtractor.hpp.595B69B7237EDB46.idx create mode 100644 .cache/clangd/index/StructureFactory.cpp.68FBD58EA690A4AE.idx create mode 100644 .cache/clangd/index/StructureFactory.hpp.7ABD3C626D684582.idx create mode 100644 .cache/clangd/index/StructureInvaderCore.cpp.BE2B2CB0D2F86D1B.idx create mode 100644 .cache/clangd/index/StructureInvaderCore.hpp.61058AF11F94AA3A.idx create mode 100644 .cache/clangd/index/StructureKeeperLair.cpp.EE0632050194B55B.idx create mode 100644 .cache/clangd/index/StructureKeeperLair.hpp.ECA1F284CC94F97A.idx create mode 100644 .cache/clangd/index/StructureLink.cpp.CCEAC3FB78A709EE.idx create mode 100644 .cache/clangd/index/StructureLink.hpp.F1C6A2728A3AE28B.idx create mode 100644 .cache/clangd/index/StructureNuker.cpp.FD80C79FBFD912CF.idx create mode 100644 .cache/clangd/index/StructureNuker.hpp.D41E291A19627F12.idx create mode 100644 .cache/clangd/index/StructureObserver.cpp.8EEE079D59E92523.idx create mode 100644 .cache/clangd/index/StructureObserver.hpp.0DA29E161AC1EAC0.idx create mode 100644 .cache/clangd/index/StructurePortal.cpp.F4CD690CE4B9F602.idx create mode 100644 .cache/clangd/index/StructurePortal.hpp.04636A27B975C96D.idx create mode 100644 .cache/clangd/index/StructurePowerBank.cpp.2E439E9B9CC61915.idx create mode 100644 .cache/clangd/index/StructurePowerBank.hpp.5EC6D8CC939E6680.idx create mode 100644 .cache/clangd/index/StructurePowerSpawn.cpp.B4C19D20C2431943.idx create mode 100644 .cache/clangd/index/StructurePowerSpawn.hpp.638D66BF36262F84.idx create mode 100644 .cache/clangd/index/StructureRampart.cpp.363AAC98BC28E853.idx create mode 100644 .cache/clangd/index/StructureRampart.hpp.3509542E9A73A5C9.idx create mode 100644 .cache/clangd/index/StructureRoad.cpp.121BDA55F4A35F9D.idx create mode 100644 .cache/clangd/index/StructureRoad.hpp.94CD76219DBB3777.idx create mode 100644 .cache/clangd/index/StructureSpawn.cpp.2D619CD6209466A9.idx create mode 100644 .cache/clangd/index/StructureSpawn.hpp.E9DC7C76E49ABBD3.idx create mode 100644 .cache/clangd/index/StructureSpawnSpawning.cpp.0906078A91D44C73.idx create mode 100644 .cache/clangd/index/StructureSpawnSpawning.hpp.CD0AD931BFE5558F.idx create mode 100644 .cache/clangd/index/StructureStorage.cpp.407DA61191A6CBB3.idx create mode 100644 .cache/clangd/index/StructureStorage.hpp.817E4B0E08E8B7FF.idx create mode 100644 .cache/clangd/index/StructureTerminal.cpp.CF1D1FD0AE56CF3F.idx create mode 100644 .cache/clangd/index/StructureTerminal.hpp.50D5C6B053FEDE4E.idx create mode 100644 .cache/clangd/index/StructureTower.cpp.469033BF734FE09D.idx create mode 100644 .cache/clangd/index/StructureTower.hpp.DB43B0C64E48435F.idx create mode 100644 .cache/clangd/index/StructureWall.cpp.EF38448006CEF8F4.idx create mode 100644 .cache/clangd/index/StructureWall.hpp.68B809ADEAF6EFF4.idx create mode 100644 .cache/clangd/index/Supplier.cpp.653AC3331FD903C7.idx create mode 100644 .cache/clangd/index/Supplier.hpp.7FACFFFA2FC16D8E.idx create mode 100644 .cache/clangd/index/Tombstone.cpp.D34611EFC561B052.idx create mode 100644 .cache/clangd/index/Tombstone.hpp.76921569AB9A4B2F.idx create mode 100644 .cache/clangd/index/Upgrader.cpp.1463660062599EEA.idx create mode 100644 .cache/clangd/index/Upgrader.hpp.A02E6E3404446D4A.idx create mode 100644 .cache/clangd/index/Worker.cpp.AC4D69C3CB022252.idx create mode 100644 .cache/clangd/index/Worker.hpp.6F205FEA875D8531.idx create mode 100644 .cache/clangd/index/adl_serializer.hpp.DFD7552AF68FE10C.idx create mode 100644 .cache/clangd/index/binary_reader.hpp.77F442882BD57B3B.idx create mode 100644 .cache/clangd/index/binary_writer.hpp.0EC7500F2801D410.idx create mode 100644 .cache/clangd/index/byte_container_with_subtype.hpp.97C866A94F13D654.idx create mode 100644 .cache/clangd/index/cpp_future.hpp.230BBE72432B6E92.idx create mode 100644 .cache/clangd/index/detected.hpp.BB153C6A8D459B62.idx create mode 100644 .cache/clangd/index/exceptions.hpp.E13CC7C08A9DBC9F.idx create mode 100644 .cache/clangd/index/from_json.hpp.C6F363CA71288CC1.idx create mode 100644 .cache/clangd/index/hash.hpp.272F5FA9757DAA1F.idx create mode 100644 .cache/clangd/index/hedley.hpp.FEE34B5A64B966D9.idx create mode 100644 .cache/clangd/index/hedley_undef.hpp.CEF4F1A8A53DC162.idx create mode 100644 .cache/clangd/index/input_adapters.hpp.78C7BF4E4CFA778D.idx create mode 100644 .cache/clangd/index/internal_iterator.hpp.C19C9622B56D9373.idx create mode 100644 .cache/clangd/index/is_sax.hpp.CC7545652AD71E55.idx create mode 100644 .cache/clangd/index/iter_impl.hpp.033DA638D5CD1012.idx create mode 100644 .cache/clangd/index/iteration_proxy.hpp.3BFE4F050EB7B1CB.idx create mode 100644 .cache/clangd/index/iterator_traits.hpp.458CB3C9BF8F7D7A.idx create mode 100644 .cache/clangd/index/json.hpp.19785BFC18CA466E.idx create mode 100644 .cache/clangd/index/json_fwd.hpp.26742AD87FD27039.idx create mode 100644 .cache/clangd/index/json_pointer.hpp.D59DE1A3B73204F3.idx create mode 100644 .cache/clangd/index/json_ref.hpp.F45F50989F8F1001.idx create mode 100644 .cache/clangd/index/json_reverse_iterator.hpp.58F28C260C78DDE2.idx create mode 100644 .cache/clangd/index/json_sax.hpp.6F91C040B731D348.idx create mode 100644 .cache/clangd/index/lexer.hpp.8FE107E6D18CCEB7.idx create mode 100644 .cache/clangd/index/macro_scope.hpp.86C0DD8E57B5E3F6.idx create mode 100644 .cache/clangd/index/macro_unscope.hpp.B14BD9ED4A7A08FB.idx create mode 100644 .cache/clangd/index/ordered_map.hpp.B456483924567A36.idx create mode 100644 .cache/clangd/index/output_adapters.hpp.F2A206223E0FED28.idx create mode 100644 .cache/clangd/index/parser.hpp.2C3D9C29D6D2D60D.idx create mode 100644 .cache/clangd/index/position_t.hpp.49DF3AE7DB121E52.idx create mode 100644 .cache/clangd/index/primitive_iterator.hpp.95B7C71D0080D177.idx create mode 100644 .cache/clangd/index/serializer.hpp.03D5899F3A9CB88C.idx create mode 100644 .cache/clangd/index/to_chars.hpp.6B92F0DD0213E55B.idx create mode 100644 .cache/clangd/index/to_json.hpp.244831C63D3B9EAF.idx create mode 100644 .cache/clangd/index/type_traits.hpp.8754B458E8251A51.idx create mode 100644 .cache/clangd/index/value_t.hpp.FE2C21E499B13E29.idx create mode 100644 .cache/clangd/index/void_t.hpp.FAA1F91E4E048462.idx diff --git a/.cache/clangd/index/Builder.cpp.E54C6D6632153280.idx b/.cache/clangd/index/Builder.cpp.E54C6D6632153280.idx new file mode 100644 index 0000000000000000000000000000000000000000..1168af90c4dcfe9a54fd1104260fc834fa9b46d4 GIT binary patch literal 1240 zcmWIYbaT7F!oc91;#rZKT9OE4GKc_iaY<387!w17DJKI%#hkTMqw{YWh&237|JEYI zd?{{1g@j^uWk$EhuIndmEbk0gSKlPN;C~&TLD5s;?r|hs!U0P@Oh${cP#S(uy_ zH|psmDW8vy_x^+lAA6U%^xv_i{y7YH>Sh#jmouLixvRTEe{IdFxSrVJtLN_3tkKrF z%=Nt5BJ|z2*>MhK&J5?6*E`9iw??oY+Ox*`wZn$g@LzVX7zd2K7w@H4oV;%z;gNCcLvBDq+wFT>qqF^KCI=T+<|f4gQ%U(I?F%d`7Mln#>54N*Tgq9QNDA@_ zDl>2Z<$xgZZO-C|iw{%V5&7V62m?VJG;&S5JlDxdU zQZQ+TqSUlvIYtHs?eytuo_?Gq$;cyZ!)qf8vlK=%%SdZ;Xv@JYlaV&!FoN@>z^=Nk zwg2U&&^s?-Y8a)!u7L?Ro77m$tNN7=w7^=%S{34W1_qe>fT}@`gQ-5`@^7d0v8NLm zWu#>|WCUQU{8q{Y_tqQE2MQ~3D2c#?oeu0$Dw1s91{5|EFcX2fKr(o{<;NL*XV8RU zb};iui;IfOzzpG$RRF{GKhcxIT(Y1K?%WB zL@+fGOc?}I9>IhM1_Of{T$EY*v8;8|o#)ePg|xNg<&+ha6jjwU)HP*PWF@5-)ZywF z6c9`;1XBvZlteJK5lj^XQx?J0KroYYQ*uCB1;mAz*w~pl`T2OnxVS~QMY)ApSvYtZ G1sMSFGNmE_ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Builder.hpp.656949760E64D2FB.idx b/.cache/clangd/index/Builder.hpp.656949760E64D2FB.idx new file mode 100644 index 0000000000000000000000000000000000000000..b5e93f6580e1f5061e81b45d8731e94850e5768d GIT binary patch literal 658 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

5N$ZLr@kf>@%CZPJ!_ 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 bv!w_VF-I5(k1aA`30OjwC2VMHO0oDCH>7WZ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ConstructionSite.hpp.BCC6A29BDB9B63FA.idx b/.cache/clangd/index/ConstructionSite.hpp.BCC6A29BDB9B63FA.idx new file mode 100644 index 0000000000000000000000000000000000000000..720450e3999b110697210ddbb8a1db9f001a3bd2 GIT binary patch literal 1122 zcmWIYbaRVhVPJ4h@vO*AElC728AO1%xTGl4gOP#ZJ`)2&#hkShcjp~8;Bhtmt<6!g z{hN=bQJKd?wii0yK5Gt$u})m|c>nr07X56p#+^bZi`RRE9=ui7CTS)T5wz`*W=-Y6 zNg0!lGw)%ZuFa#X#=<;(QB2bL3k&$&H(U=ZDGmLrcy=$(vMJo(CQkBH4k&ig=D8%* z*kY)dJi&VA!DmxW1)GO;yG*WCH_Z`BN|D&J<-^{)wGPgCEg3-zBZZ$Cedo|(`gYK7 z>yJ#g7cbM9q|1%Ug2c7zHn0oJq|6I?x{KlL9h<+oXFD!*xx{6@JyCSF>|03mtF4`J z`~MoBSefa5CI5MU_=0)aSFX2iin_b_`K(FSKlr-W<*huvXde5O`JK-aUmZRE)n@)y z{%xoEzB*kozQFQuSMNvBHSERu4)@r%9BA5Y6?SiBU5E*bkCvL%w5y+VZ%m%yr>Z0E zT6+6$UC)X-##!@tKNeT!CRqT(Q#*b7nx`LUNwPCBF*C49ut|u42?j|92B0h>8>?gG zk%{h(8u|iET%foB0ybSXT@D5g2uFIY>fzJ!tGxu6cwo}jtk%3RX(=8Pv6~0@;sluZ zVA6rCf!r|Zy$g=r3)BBoD8|GDla}X_mx4(PF37g~us3a@0241v+KJUk2qqo%{l8t7 z+b^IrKTO(-*9)%u<=WFX=Hxri7GUCrNt^JRz;(x5HhGgC@NttU69-H>Tqs-)X1Ex~ zo)D>dDZ2%jIAPLiylVU~>7vxM;vA&#W8wmbTV1nx$8_d`S3GPWf4~A47KV(H;IM-U z!@>?I3<@)tFf7b~!l1B%3B$q)D2!}&FsJL@+*E-+W*#;*HZ>lYvw7G|*i3j}LBPZ2 z#pcBW3olr(0!;!1C(HtvG*B26j4)xC89-rB@WF(IjorRIs^2=Bk&BIugH08Z8WM3!Zoxii?tql|fEmhq;4+iS1s`&KJvsjHWWNvNN#4#Tfv8P;ol| literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Context.hpp.E1B33B5021D437FB.idx b/.cache/clangd/index/Context.hpp.E1B33B5021D437FB.idx new file mode 100644 index 0000000000000000000000000000000000000000..0f178f16017dffde67e56eef8ab0327c9c50f822 GIT binary patch literal 812 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Creep.hpp.783E092EC895D4B6.idx b/.cache/clangd/index/Creep.hpp.783E092EC895D4B6.idx new file mode 100644 index 0000000000000000000000000000000000000000..4de6b8738c60e968723bb4c92aabe07f17e068c1 GIT binary patch literal 4984 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/CreepBase.cpp.A09022785B8F4C70.idx b/.cache/clangd/index/CreepBase.cpp.A09022785B8F4C70.idx new file mode 100644 index 0000000000000000000000000000000000000000..d8d7e8f8a19d04734a68f45f5345713f1a13a0be GIT binary patch literal 1614 zcmWIYbaQiKV__l^v4%}LM8&RG=a7@w1Terq;w z#k&CK{TW*&$dav#ZhKmJM!#A7^Wf&Ro&85l9#2W@K56iJ`(nwG{VQIDt-hTm zp1yfa@73wv_x$JX5jtF(wVg-BanZHcr*$59?C+@ZJ=k2*yLwOL@%epeHoDipSn!7j zO;uQ=A!jIa^_Ru{xO=|^U3+g7XvII+y|KXPtjfGOv(@J)SpUk|!fY#Nu=k$f<<}cS zbFKDOQGb_zdVU;8J>R>)=0hfD+!(uQoTd@aZKB%;F9$BM|D%w-=F>1VCzx7 zo9%g~SjRg*lVTO&N5Nm^V}1Wctl3w>{!w`DdZ$}VdpVcx4qNeP^3uekTpYgr%TqTm z_WAX~*x7i3o%6E-VO4vV|NHK>)^}};X)3PFO_~pk_tndntrJeaohrbjEWse#$mr0> z7%ZuytK-1H0h9%TLoWYzS|58lQGiJWsGy%wp`TGhQk_>_6sEv$rA%;dz2STTCRLyU zX$5H=No`(jNtkrOE9I~9kG?M#XHo-7i%5&eNGb^^3Bsh~UC#C{O`LT_j7c0Q%`45T zBB{us2$yCkN=++%!^FTKJk?tDQ>QWqBabYv9+qVqsb+ekppA-lt1h43PlGNA5o&TwSiBH5xa z-5v+u?Z1+whejndK%E!PDY+iMq!wKmusn5?CI3h3o1&M0n}F~9&b%eH{=B!jnGew^WV21ECa$9FTg zi%mQS3Jc*dc=W(*We3K(0Iwu0)`2`=LV-#0$chMvNW$C;rpcCz9l!JvV%zR)7AzR?uf2&DWZNgQcX(Ph?bv+4f;!dIfu&;7_2j{frjMla&Afv$Pxi@Atp9N<_%{da<{;zTLeHA!MLGPkY-Nx9I;V1|jc9{y^#0u^dfjtga*DZiqX+ zDOl2VzxA>zI5qU4^)>rDr*~aFm49UK300TV@OL=2<|rO~y!ewfyTe5{s=}vpCkLE+ zqW@$^t7~4IsJ!jqeLKg_dtbgi^~b7-l5JNiY9c3&U3QkYhBC??`|e_6a^K`kwrg8T z>oVijU(a0&q|I7C)(;{zBX}@j>(g zKeDhPbR=u~!BfAq*B;GlnqM{Y>~CUoS%1fF_wk|dxplpoE!9GM;o3)E>fhQI_1Q~p zZ?!b+_On6 z5|APR5nja$a#$=gBw>2ga=_m$Xmvxu^&HHz4cX|+ncB@d#L{_@6$LrO=j)2kx;OS_1_(CL{prSZiyUBntnk6fg7NFL zEP}j)cNn3({o0L@7y409hZrg^u!2qwarv@=3)F%-zFD z*aGD=lBS1pXvaXOEwFA>i<9W(EP}-(2Pjwm`P2Jm&VNyfG2L$BOrjj*?Fdo#YYTty zf9md?GGPqzsch z>E527OJYi_QZG8sa;y;Fj@s%QJXMr3F<4-q?@DK}hS>Br6Xhjc;a7SPbb24K< zriNHpiyn*s-WX2i3}%2bnwIE-G_Xa}5?EkYY>_FNmVkn8Ac?Wa1VJ|tM7t$?pu1A_ z{5Q?@q=(TED{mEH72w2JWsE=sFrwNLK9B}{sJ6roXy0SZ;ZXh~2WgsN8T&(X5dxN| zh{O{-QP2&KPSX-ekiL1S(W|V{|Akc~kxMkebu`3bcjSU=KpMTX zL>M$tzTR}_QFoS1fBMkazS*e5w`57=$DUi?&iB>9Iy6}Em9Sng4kAxmohOOTVlu9r R?k;KC_#UH2daxRy{{ZF~(K`SD literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Deposit.cpp.B320E3725B3179FE.idx b/.cache/clangd/index/Deposit.cpp.B320E3725B3179FE.idx new file mode 100644 index 0000000000000000000000000000000000000000..61b0eab4a3a159d80600f58b6610fa875cfe0b39 GIT binary patch literal 1296 zcmWIYbaUfiWngel@vO*AElFfyU|9;>hMvy5Z6NSu>rXC5 zTPcyrFFLScroSfb9ccI5~yEmJre`rz*o?cv# z8>FoIDMKY^W!Igx2ihNtn4S1othGC6E9Z*(%WnQN?SF}@l;0Tm3bGg^Ok$V*U32XTkele{Mbr%?dD8vRFR9 zXb01A@6`!gWOyXz$M`Oj&)3hGn0oniN{#VuzvbaKOMm@L`;|B;<>o(5*0e<%R0A&l zk~^|>v%LeG{;yB3pC4{sz<7CU(_%)YmrA@FOcov&^~&9N@?lc^Im!QRX;ZU9_Do`Z ze1GY=vy%!>{!m*TU&8r9zP4df;prXB`Pu4?+9iu)?><=_`5>sq_gGkBY*#eDpU&2~ z&#gGGJ@podTJN>*Q_Q6OGIC53{nvg}JiYC)+IeD#e9_vYKO<|z=6C7M`fA<#SY%yk|Y#FJtt6$&EW3LXXBtZ9E*Bs>dy0Vtww` z2FU~0KbHpoc;AsR<%Z+??>Qa1ugljwm*@L^py0%{`;yy=H*RFzclE)(%iYs%Ib^+6%y|T|;kGsAJVoXZP4C*YLECOnBTyla8 z96&iB_`c(GX8MXx3k8@|fzrI9yb5YMygCvL5)2HWR4h|3yZ`p}XPX6>G=S1VqC(R>)#lma{d zzyt1hUSKYR(d<0xEDS8{FjYVv(2p=l9(4{D4sMt`c+`1$c!gnJ=1~{o5fX;^kVjpd zMVuSvAs%%Z78!1s1A{qT_vWSw^f3VqVCCgTGJsWx8)g7Z6zEJ)Fv45_lLiWdf)6I_ zbYPcKk!1TeMj3S$6BY}Y>yNMFy#0S7|4v4rH&j^kV8SqG0Sy5KGRzRk;O&+lXZW2# zGX&;cplVQ!v sHzh|2C@iTU!_Lja!6zZkFCZ)+Eg&QyC8{VWA}^vKBFDwaE5;@Z0ON1$Bme*a literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Deposit.hpp.329D291877BE420C.idx b/.cache/clangd/index/Deposit.hpp.329D291877BE420C.idx new file mode 100644 index 0000000000000000000000000000000000000000..38dc74f4f210c3f9aa6a0c6a7fb0e641c0f4698b GIT binary patch literal 1042 zcmWIYbaUfkVPJ4h@vO*AElC728AO1%xTGlaBqIYuFe?K?#hj&64(8o9;AyK}JHN@{ z{WaU=yxayn)>~dMz0vXhvgWK8%!a(IBZ~>cY5}53anmtJb^qiLEQ#Wo}>Q>wAx-ed=ChKe5bkYJ9Qh;MG-E|Fjs! zx?5=4|Ly%WCF{eeUzEmd{^Ri5vvOuO&*$3MeXCfD`no!wDy~00 zpO!eCwWU=|lBaYoG2pth32-u|%MCbk2YFqh%c3_YbXlAjVK!nVWPQ z7_;`uK6gFt`X-1mv2!x;v2d~o@W^q=2{Ld1<$&P81MYZUU`k+TV&`Ds5oZ(U1rrRC z3=C`x42(Ri-*=qOOkeS7p#T#%P(QCIuL6$_uZ{$R1Oo#o@yOK6?!SHg*=7MIexS6F zsE|01F|RQ{NE(=w7%n}w%oA!8JSo5=0F)Nz6_@0(Vzm+kNizYZV~d((&NrMqBf!K3 zl;+^&5am&2RpkXq0}~^|LeW#s%)yS=1egSY(lWd$(*rY)^KmaDq#0BF~fpfrrPK&6o$~X_zR`UQn3842DSqg+XBf6F$C<^Y;IV{5u(Wc*MoU6=A}# zAOfle1r1CX7BoO%P>{fcVL<{E1_cF7xF|IzQ4r`im>qCWG87jj7mI_u%?l#HfQjew PgL8*UaF~@hpS--;uJjaXQ1xGmD zS>~otcr(-KQQtA)l$E=sCaG<@Yj{sC|0Ua`r8hp_x3Ay9SGH)6OY8Q+BP+z@XB4#9 zhPfS#WMz_Zb~~_|!D(%00fX+e2SG+t4lh^zwJusR>>x*wVUUM{ln84H7nk9gf&>3M zPIQEtU1*C~^OTJ%e&?mFi(=TM>d&|*t)6$N(0H`~4bJ>0f4yYF{K)7x+7vn79Lx)&&`n#`N;<+fPw{)_uN zW6mkmJ-vVL^UcdLmyH(07w)_GYvncT48eV;A3grOdS-pq$E9)KI8LhCBo=vn^!_%3 z`K*cjU40JiIqb!ixk+`vFw(a25NDs!CCkUa$-=-U$to!fCKxz?azIdF_vF^U+d((~7%*)=b>?I@)xeE0{D;800*dDwxZF!XRhCgo{#h5<%7%7bO>q YgBa`}0t}eg7VO&}|C(oQ3nM!N0EHUc+W-In literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Engine.cpp.2029BC7F602F68B6.idx b/.cache/clangd/index/Engine.cpp.2029BC7F602F68B6.idx new file mode 100644 index 0000000000000000000000000000000000000000..1d099ed740b2be0ef0037947216dbf0e66d11195 GIT binary patch literal 1614 zcmYk54NMbf7{`w*v;xammk>Hf^p@iy^d3Q9q^m*RjKhN`j?tLyY z%wRC^F)Sz{>_AFlM!YqKVHAAQGmJ^mIEGylVAz3*i_rsnN4!K+HGfxTel%NfBS_IF zOG*--os~Oh$y=v14eXZrqk_`F@MfpXg9Rg3DkR;f>w{?56X(x75Pdskmmggh()WCq zPkU=iM{vx^nqWWEZP}A@W7FlTV!a_aMj3L~`>}iKG51HlxXI?7AfeFrH*7;!<)<^o zJeP)kaH-O#D5pDaX!gYm%`fJAqjg`ejw_t@ZhrPfSVzX-4eK(mh)=Sgm#dBeHeWwo z6835$v-5MOE1S*rbDn|2-@FNrFMOI?o2_VUN@h>5>!f`(X&bYg8Z!qEo)cf{zfXVV zm2Wa7?v61vKWu0`v8_o-NMv7j9xm1AAK9v1abaukSmpGs-#R%+rH@j z54B@6J3abpl?OiVq5}FZg4|2>QCmk&9KN47{W$WbG%Y#!wcmKwpGVr8&eynh+$lNi zrW~$W`Py)ucs44DT^?cNE#6=g*t02O&$XE!)!(s`W**63w#Q2~o-;SuUagF9?Ywoi zwxq~^bzx{;keQO7mNVNw2$>nsj>km?w{*!GZ1>rmsi+uEp>r%4aT zdRFWiy{>Lsxg)pyO)*Igt*_V@eJ)(w^Vi90>GQNcYJItUUP#Uswb`~^h`3Sv!|sQ} z^}Ka^I~jG_<`+LnCza*Phv(LuB2%SLP7N4U3GTjjx-;c=QDRfCw`_f^;>hau7PH+5 zCEedRf7R#so2S9cltaz7#S=f*ZD@TP{!(Ay9)ERP|E$k=MOF4^b&(UX9g=u6U*76= zb9>gt2US@5!IT|lxMemmZg<9eCkPqtOk+Su3za%Y+;I^`W0(@+&G$P8O9jbGMEEj@ zC9FiPqXd+_1-8kGThQZGi<8Q@R)i_x5E=Es{7<5J747@(q5G%CJnl(#nO0RDV`A?k?+6A(Zs63WoqfEm0?1PLIKN)%jUjZ~xH zihD{u6BPYXwE literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Engine.hpp.EB7BBB1AC251CC3E.idx b/.cache/clangd/index/Engine.hpp.EB7BBB1AC251CC3E.idx new file mode 100644 index 0000000000000000000000000000000000000000..af3c06feaf61c30ddbff8007052cad0bd7fa0243 GIT binary patch literal 894 zcmWIYbaN|XW?*nm@vO*AElFfyU|Q%QQ2sKfYhPI&Z;o#|0<7KgCV%=z8RQDeikl>GCe8KTNydEwlFN zeA6K%UD}g)y5n5^;#nv94q6sWQ8cPjCqHF%Tk4(=tZo&o|cAtoUX z1`Y_Py4v3~vT&LL9}_d7rd=_8=reEG|tT5Xp*d>Hv(t_zXmo2|AA1KWRla^tZk$_2C*VS?F zy_0ZVfQbbrEyXS+0+Y`BRJLSJ_4B_1OzbdeId(Z|m~>HUS}`|L_%TX?!wu#oShz8A zfx`(wSnvUbL170|4WpU3z`uVDCWuFx8L_)@B9B3r1kUjq9cfJ ztTs)rOO2)=2x0+VLuyJqhm0WKun{D!^iF74@&gx($`dUI_Qt$r zin*^T&2{13;psiwEk4E;y}kxm%qs@No$FnsUyy zFi1PRviZ_zjjk-a3>^;6OIW}cmFXussD&#YSW)+^p%3*o4!3>YJhS!D==SNvH@zy= zNk!X>E`#K_dfe*^Q$=scKOe4r!Qz=oeKPbJ3Nf`hhm#on>Un^Z^W+b%u2H4^$HqslPI_&m)}ewh`$^RX-j)I~}*IVSFMYP}!osyQ91(zJrYG6tTuAUVu7Q9$R1U zSmpLO;gnlPC%-ela=BFau}M+=Sexmku7dqft|eyg*(4X@M6Aj9Upn*&%5UWc@+hV{BoQ|at612Hqho$ z&Djv0?=C8;=nGsjU-(s~se&#%I_bSTD@=UNvbm`$v*A9r%eTmTN+ln=EKm)r&tz)y zYvKY-M9(zR^aOupb;*eL{?%H)ZoOSVf8y(jl$CxzqX&f6vaEVUQgD)P>zS_xi30nsEmsc*=90_^i^SasA#W z{E<})9q-wPM27Sw1b6P8y1jEW=kVubqlQH>r0YLfXM!LTmouwUXC(8vr1??=XS3L5 zn3O7IAyx=N0+(mRxVZ3lk=mC_as{-UB^O{})G#hVGXNbIs`vVB#4&fd%G9b2FQ*3()J^ zGszJRM*!^tXcY&>tmht0Nb2PQEKm#Zn2dL~7z}X*58O%{-bqT-$Tb zlH>rq=`=bE6SKq|82sC)V;&V*l147c3D8_NmxnpioKZ+4DY`g=AJ7k~Ya*JJHf}UU zTyOo{4X!AP(-AraCIf#U(R&hSQ`ig`0mZpgE)(WOaRF7pgbJXz2o-UmTqtfsv0*@M zQCvcmFkzoiTt<;Gpfo5hr^p$w#VD?%C>gM2D6XQY7*Hi>1I|Ir04&iuPh}M}Z|g=A z5LYIX!?-XTuqH+VTEox)CPo3muu=dMBLLxG=8AT`j++Z&i>M+tJRMwtH8By;8cG3R zViF(>D*`Yv0T71A0x;2e2*W-A_`i*Sq63)dG_+QK*Jht0+}~tkjnfyvg~82>$BP4d{^$FuYEv3Lg7+4jS!u1rpkOJwq-Zdch#@7$ zu#ng|5}$XE3~mqvd%q>)9^*5w_!pyDWK8CW#OPy_>;Y+QYs2E0v3YYvd~-{4vAMu} Uo|VL6j{Teu=Gd8{Tp`o;U#H%vCjbBd literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Flag.hpp.65DC977F4438F2A9.idx b/.cache/clangd/index/Flag.hpp.65DC977F4438F2A9.idx new file mode 100644 index 0000000000000000000000000000000000000000..a5d9bb744ca984e4e66b4f656c6b73c7e32dd60b GIT binary patch literal 1516 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Game.hpp.36D2CF5D5132AD6E.idx b/.cache/clangd/index/Game.hpp.36D2CF5D5132AD6E.idx new file mode 100644 index 0000000000000000000000000000000000000000..95dfd8dab991f7370c245c0fecc4278e5afa87ea GIT binary patch literal 3404 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 S#Vx`u$}P;w!okZZ$N&HfsPMo5 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Maintainer.cpp.D42DBB105AF62633.idx b/.cache/clangd/index/Maintainer.cpp.D42DBB105AF62633.idx new file mode 100644 index 0000000000000000000000000000000000000000..9ed77cd04f47843dd992da13327176257a40aeea GIT binary patch literal 1224 zcmWIYbaOkv!oc91;#rZKT9OE4GKc_iaY<1oKNADPQVs@&iaBei#`ix`5IFGD=zEGr zR*}A%-JGr4UpMbQw(I*Xg)`gkI4x&f^=`ZUnsrj<|12*r;Waq(hb@gwVTzE~(opRU zR~ED+-g_xvRVS&wc>D4TCpV?cI`;Ww&cr<_n~#3B`DyC6`Av-)huRtkW}l?JY-XE( zh_{rV;p7h3>84|#-K4zO>tu*#iSEN`H}~Dm@#FP*`TbYx6!+O*Hl59$AKoLLS`kuKv8&A^;pe)dZ|c2)t8Q&DXP@>|YI@9aIo1Hzg=>(ZpqambeEcNco zFT0;)C>)Ll~?A9>fH17-KkakQp87ot*YVtF+!&l{oLb z<8>mn_@FDJPRdcGU(UPap1=KcTTVlz^GNVN#{E;<@*nm%y}Tp;h~wmri?#Pw^Rcy zcHngogIRLO<=;;0V^1eC%1BFaNC?1O?zd7VxVPSLK2TVWLrw%H>~vt4Qjui)HlVPT zfRzZ$BQP515|D3TE`ia^JklbfBJwapc%+p~lKy8FFugL;dK`L4JTne6I8O>3axfXsexchA()Z~rY3@^gkY+{nat9E_;)Yb@H+63fTo75 yjG~-^yt0a#s=AVtBtvp;N)E^<0dXNFHg;xCem)*CE^ZNSQEp*Y77kuUK?VSOI<__d literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Maintainer.hpp.DEE88DFF2AC5402B.idx b/.cache/clangd/index/Maintainer.hpp.DEE88DFF2AC5402B.idx new file mode 100644 index 0000000000000000000000000000000000000000..226177976fd0d6c29a42a782787f32d7884dee49 GIT binary patch literal 670 zcmWIYbaR`=#K7R3;#rZKT9U}Zz`!5^#Kk2=nX`a&IwJ!^#hkT$j@*X~c-($>pQ#O3 zuMlKm?GL(ie(Nq>)m-&|)!kgp4}JL?pV(F$*%I_l=e9v2$Kq_M%`Dc^$70x{p4LdT zYiK_4y}P@8XNw%KV5OwPIyHytsoECmUTYkD^v@K1n{U!O@%JN#*W2ga)|P*4-=%)> zHviTof1aAJ+se0dYxCO&e39JG7gR+H_i1FM zlK>M769c=5qKFO_mLH>p*g3(M|VE@`a<%pPZrilZn7Z`vrNtoY(dO?1M2?PC{ zlc)rA?&gY*5(~^0sWHOb4Ra9#OlfgZa-5dg@04$zmDLo4}PUpdWNq#@$}dV;o_BR zELR#&&0tvYfJ-qynPc_=@hyQ4_bSS_)oA=GS4cl?<$hy(#{sVXAod#F&4+&PKT>CQ z_WG;t1Nr@Z%8`!^-$dFn_6xMd7FXsbDFXe_BEP*$bm5-|JPaJn3~cNI>=Iytfs=`m zfrXWkjg_G&HLds%Q01xEmKz%vei3DoVdE3zlZ0sm@>KYAV7xWE(xfY-Qx`FEu`zNm zY5=u?feN2Yz=@sm8fP5%wFfK!YU$pTJAPPhd{sX2)t=M)zu7mI@!>>vUR RnAkK}<9TIz#giD>833iuwC(@^ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Memory.cpp.99C5CC5CE0EDEBD6.idx b/.cache/clangd/index/Memory.cpp.99C5CC5CE0EDEBD6.idx new file mode 100644 index 0000000000000000000000000000000000000000..5422f0f62547d436f89c058d70e732b46af697d0 GIT binary patch literal 1010 zcmWIYbaQ*f%)sEB;#rZKT9U}Zz`!5^#Kk2=nI9M#7^bo^FjUOh8gf7Twt>L4*T2Gl zB<4E?U7qf!@Id$EE}l=#7I)c_C8BrTh)O-}v1$6h?|YA^d2+v;mdD)eSHA0g-+Mdx zom_{mXx(5@4z|kAe%P!s!!hyAVWq#Ehc>S^XIv;^pBc(LP0a0(!RxOavgeOa<}cr# zapYr)SZ~sRFntyNj;;`hRQ;bbG_5P_-QbnlzP#2r@l@}rAJa2ZmaO8gdw$@P&uo*66V1&|He}xw*-{vyuwP`G zoY(RKwKav+=lAhU=P1x8-l1zuLte zEykn(l;+^$kW!Url;>rTU|;~IDTaCe$8@SnmL1|{kXK|-W8-BLRy7temST`(V31Q# zW>jS@N=+;N3RDPl1)~($39Qq$=p#mXfJGml4&pOs$_W+_YulL**}Fyo|943Ih^yZR6#a|WY~nxMF#G)(W} z>%08b=5;J(0$QNSWrAdZ62C4?5zItJF0ci4&E_4`nG0Sq6s6`Qf&#g?D7jb}#83qh zV8E=F_2FIiiHx)lOsXmjDllONhUDCo93>!ER6&B7or8r-M3|e0pGTaBk4H>UmRCSp OKt@1{jg?b~NfH3ZiFZK& literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Memory.hpp.0E095D943C15E333.idx b/.cache/clangd/index/Memory.hpp.0E095D943C15E333.idx new file mode 100644 index 0000000000000000000000000000000000000000..5614bdede59d0541be3cf90e845e2ae8d677f904 GIT binary patch literal 794 zcmWIYbaNA8W?*nm@vO*AElFfyU|jI^X}4V{IHbqbz-X0#S^K42PR*rd-!Nmc%R74 zBBl8a!5udy{zzhKmXm7gTsimtEJLjWK0!PelAIhbx1DfqZ_Zfr^MO#_<((D&ha6un zD7H?B>1O>U7IPr%RGPWEzL@OKb5*mFulcaldMSrTZ9iCW@+ZFm1m%U9K{a*p}6%xdlX*FD!(|MK{kChO^Sx4lv2^%h0l-!m1j zS$_R@FK_GDW4^jCbC!v(-Xwp#UP?E!uSc!#zDaRerLKE?Os3z(U++qDGZ#0lkx89< zUcXCorT>+s_x2T6<|fSthN^?nUE#9$H+lk0JZwNN5OC2or0Ksc<^w&?Hau(V`n zVqsLSsA%F z*f`jvAc_&rXOsjx8|GXX&CCUMZe6o^$8_d`S3Ddbx4|TNIE>kig<(!;kp8<#{L5um zMjj4H8A&CWBAEYx79i_|`HNAI1LPl=YM5b+oM3;z>;?KFCs7dSW|$=mFbxdFMajj= dKp7^E5XXRX-Ugn0(ZV~zYqh|j8;*X6o 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 ZUI|`)UU4BgK0z5lSwU%bHZEaiDFB3^g}eX& literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Nuke.hpp.6A65FF1B6B8968CB.idx b/.cache/clangd/index/Nuke.hpp.6A65FF1B6B8968CB.idx new file mode 100644 index 0000000000000000000000000000000000000000..54496ba3e613ae76ffa3be8313f828eac8d42157 GIT binary patch literal 742 zcmWIYbaT7M#K7R3;#rZKT9U}Zz`!5^#Kk2=nU0JM4CX+&iaARsp7%R!z;mqnU2ufc zodD$tJKmUBEN;9Jcfk9usZPC?_040qAD1Kxr!Vp7)UCI#FPkMc?b>3FHK*p8+}O03 zF-}43HK$~gaN#_K{uzlbjk{i?Sn{#uutzL3Gl(SOp;8*lhn+z)BGTE5nCyBZs6 zP{6feUN(0yYr*wHX-o1?^ss+2P+tY;Nez^4fgD`qTlZZo1T&y2#UN zcGJO=Gk2eE%X+wc)xGpMZr`)!uZzDX6;@x}bF6ut|I9R>#wjso{-!pUA%xC@d)=DF-u3`KRhp_phlt8M#>5IM^g0o@ZcyIUnc%kh5W` v8H!SK5(R;ZV5Tv^Wr~ZEiVwj4B4I literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Object.cpp.DB6A28EEC8F0037D.idx b/.cache/clangd/index/Object.cpp.DB6A28EEC8F0037D.idx new file mode 100644 index 0000000000000000000000000000000000000000..48ff8b9bf0e91ef0ee4a639e4e0738121b573147 GIT binary patch literal 1162 zcmWIYbaQKBVPJ4h@vO*AElC728AO1%xTGl4nu&qoEh_^<#hk4nzWGvy0$;cO;krNZ zy5e*%50Bi&Z6RJw5l+?7lGO=!E3RwTf4JyeU!5N5#37p58I`$ouH^YWl6x!7GB1`F zFHdx2-ym?2MJxAZbGK2%^eq|P-())&=5Psv(mKh{uRMr)CVMe#?xmRx$N zbz!Q3pg`iRZ2ynkx4pa*&rEacpZQsr$zrclu+&4_GLD@bA=9lg62I^}$ZyFG+^tuC z_^an@URC$a_R^KhVml5cG#@wMo#ym%F>{nTcf~56TSw6#VDx)seopb+a{pqPyt9;L!@7}HUX0_hLkhKx2#fSDO@;;qp z;CVwaJKu!!R(@?mlY#dP=KRHz4@@cB`*^2t$WbT#pE_@&mnI*4Z)>s7q)gAJi(An9 z!Lc=5+dgS1w6ysiV9mS|wCU6C6M1~Ci+?q2dU$>AlF2b2)n>i5UHsgarJwWj%Mznk z{?*|bY*(YFZM^$#kE;GB%l=y{)YJ65p8b{n$RNM9Q8`a|Nz-X2exoJYC;#)O1+9PN z8l$nN>cPfC+6;?U+`ap^QONhor}(Zj)+c9Y&p)wBsXpk&&t*X;WGuXnM@sYksJ{Z^|O?AR*KqzW{ghl7VxF`hA=31l}gbu&De-S+>t$LA}e zOv*rM30?_NFafq0NED@}6$=902=f7>6xjI<(tkIJf4S@mqd9q$SQuE?V5)#TpdVq9 zJW3o49BeRW0(n3uBII}&c-UZW|o>q2MkOY7&1ADpin9+l6gY2?bgk04ZMdhCNe1I6dt&+$f}L8)L&4L{jZWzaX=e`?^NgKZx(2I6*aM_ zGTTmG9T@aURkd>cnZzT`-EO6O-Q>6f(_~C$@~m6;t;#=ikh z@5ty5nm$kC+tQ^feRIEdO*Jj9;7r!LeQw^|&3fL~bA+}>-1&FOd&L#6%T62@Z%lJZ z{jJRuGG3FJrcZKd$HuMz2~H99#1;$k6leU{Py?ET7SDb1|N%m zImMN^Ns_=&-+t=Nh9yTin8lcwS%HxO1nfbKLF^115RUUl?#5F#8-=);m{=Luwb-?I zzywVCkg~JXa=#10d`w(G=?v}+K`;T6Zjk=FN&L%YS9T_576x{CHhCT}!63=N0JNHs zo%OjCW7>?vl?4J!oG{xBcnkz#`qf;2SMqBfEJ2bs6EYKrNv}B5@ppysp@~RtkKl?B zfJq0>^;@lCuw$z@6F1E8c*b}pnDm_WoxHP(E^r9cHJf)#XD)cfgJL8PJIMJkr9ABMOz|8r z9xSAQt^kD)Oc)kIKw(hGz=UBT0~AI!Qr&Fx+7tU+mjWHf&A}}NiDCu@SU@ofvV#H$ zW(X{RfQEnq1}0pTnv-Y@)C%J>c-Zy cD7jc1WGx%aZU!dy@CVOKHq|V1Vq{|g06TbZ`v3p{ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/OwnedStructure.cpp.A246A9112B141B28.idx b/.cache/clangd/index/OwnedStructure.cpp.A246A9112B141B28.idx new file mode 100644 index 0000000000000000000000000000000000000000..9bb62ea3126c02ac6f81045158bc4131f958f01c GIT binary patch literal 984 zcmWIYbaT7F%)sEB;#rZKT9U}Zz`!5^#Kk2=nPN-~3

l7%Jv$4LO~6+d$yS*1uf$ zstPoZ?GzD6Sg`i(GCLJRrKN9uC!CmiWR?)?q)(6E@17)kl=IaVzNm(VX{T?>CY5P? znpSsaP177dZvpL9MX$V{YOI@^scSlWmQ{ZA!)R{CCf$UP%V#8flW#kPH!4gpxm~LI zK673c`;{L;Z`>?(s+>v(%! z@cV_u=?Og3w`B273w1lRM532t_T4kj=D%NW;4$fEsmb1GoyR|YH}&klch>&wB9+Rz zrcPFUU)GpeWz031XZ;246{_nv7}so%UYE5nnloMeL&p4$&ahq4_(=*^<#TR z){-pky8c(6oM!7>ooH^R+mO9?-Hls@jlYa;RIQk6w3YkXy7OPYPpAle9=!JFQws@p z@tXO*eAa6>)w1<-76;aBpK)w5H_zTVBBj<+z4jBtzn+O&`gE~TdgIS8Ria9YKw>d6%jw+2#3~g3Q?uh&6J=s$GNA7pI#SgD` zEmN#7x|LZpu}jDz>V(u|cKLn#?%(VAzfRDqYmUsp_g6W1Drc#%Z!@Tw#qT^R`TB&< z*KI#OzoY8+XiuB^vB9?$Vipt9s0!+$4 zX%0~iaYb!5Z4Qt$BS?EuYFhClAkAhmvpYZceJ&%95{nUwHOx{N%_s%7IX7o^->%C4 zmxDQ7_vWSw^Z`}#vhs4n+yJA2szDBcsfM`$C=7A{OxWqbE~O&L_HB$ZN-T~nt}v@4 zgST6LoZ)u{O&F$&1?WHq7CxA2AP*QKFi9RI4pt6fn0-LU@$gE)995K>lL+#0aZz%y zIEbMLBEW!INhOkR$G0lmw~UGm$+;;xNkUicrzw{Fy+2At3}hz?3PA}RYS=(IqMH8@s9*m7vwZH=1<68S;^;nG^%8!z<tgJ<;X~pY-Hbw4u{{HO6Tp>m-RxS=MWr*Dj3~UxNyYqA3 z=Q8rJ%E`&8!;FKunNbq#R+w-wr|aI_RDnLAYC|?d9+=Z%G*C6j=`htWrvrsSPKF7? zXeKVOQ|p?|JEk)iyy8KziJ>SpCs7ILN|*x~VA^0b!@bm7OLy*yI#*njTr3V$$;8@i T9)5LI*=}w|HU>7B2N@Uu6Ko*h literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/PathFinder.cpp.858789D071ADF3F0.idx b/.cache/clangd/index/PathFinder.cpp.858789D071ADF3F0.idx new file mode 100644 index 0000000000000000000000000000000000000000..2fa16c7869b6feb797e8b363bd0cb2b4c3692b2e GIT binary patch literal 786 zcmWIYbaUfkW?*nm@vO*AElFfyU|9;>hQ#L2HW2yx`j>Xa zjp&r!FHbM=m>A)C>*>NwkxOgyIo?Qr$jV8Pp7!^*WrNccy}LoVLPFQSKfZJNRILqVr`97-$RmxXAk zW%G%PU)b^a4Y&8xU%Q$b|j^CH9 zGz714NN?C>#$zC!R%K(J7?tblxBuA0XN&Y+PG)s3Ub#8snBQy@cCFOlN5_(${XDv% zc)^+v-<_mxSKYGQA%AsOh*y=dT5^%Eb^fLKOHNqz^DE~(K3gT2yX^YClA2kot4yTo zo$^1;yz2C+ac1|V%r6u69hf_z;E3+WkbtmX4v$_c9sPe$<@f3eVR5h1@fop|bDg8! z^`GfDHTjM2`ltIvW}5c!*>fa@w*FhP>2q)7DXs-^c5d0_7asinXr=hiT4B9f$+Umh zeFS>nMLWu`o#3$DS|uZNwZsGlUdNJMSpoL9Qj8*&TiP8{lRun#BfX{Y2Uptb=W_#o z?K@idC$x3{{nH2PlqbZ;#C%dMuFOqx0LJ%Ry|fTt<8AYJ8RQiiR9OUBq*W9p6qOhx z85raglo?f6e=TcPF|ls?BgUkl#GuM1#HOSo%P1?zAi=-@OePFPscFUeNaiqdfeoo^ zHt(3uT=1&Kg<+|}L7DB$JgO`VECMjwcvRUK*aTok19?DWVM<}5Od?>DU|OV56anqc zNd#KUP+XK;EDmC*fCw;PR%Izl?-Oir+RmuLker*6qXZNdRghq2=V0Ly5$5LM=Mm@O W;}H{-q>B-YV0G)`h$wH&x|52ym6Z*Vt;P7qRk)+9Hjqyy49g&)yEq*!Oc~behH?yxzVmPWOw!S}V z&h-_$?8?^5UCsG>uf}xtVoURSgSp$Tzx0(~w?y{X%$~Z-N}V@vy?OmM?Z)lIk`%KA zk&2=6kL?|g$MD~foqh81Du&|9+@wTcSk2W-3-LAHHjkHqnH9(d0!~EYnf-Iw~AOi=4 z!%&o(R@@I{H%R~8B>v^HDhEFj2v+90L1~~vet+I literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/PathTool.hpp.0B8302584BF05C09.idx b/.cache/clangd/index/PathTool.hpp.0B8302584BF05C09.idx new file mode 100644 index 0000000000000000000000000000000000000000..cc2de97a5d8e6eb91570286eed8012e5d8604703 GIT binary patch literal 608 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 PE;2OJnx!*u#=`#s9bCV| literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/PowerCreep.hpp.71736AC67B4D210A.idx b/.cache/clangd/index/PowerCreep.hpp.71736AC67B4D210A.idx new file mode 100644 index 0000000000000000000000000000000000000000..a20126b3be192368d16031bf81fca7a6f73d4d1a GIT binary patch literal 4168 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 WJ{~baSzZBY0T}@)Hdam{CP@I(pD|4U literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/RawMemory.hpp.17858094617AA46D.idx b/.cache/clangd/index/RawMemory.hpp.17858094617AA46D.idx new file mode 100644 index 0000000000000000000000000000000000000000..2fa8558a4fe257c7b8904d4abb301827248c39e1 GIT binary patch literal 660 zcmWIYbaU%rVqkDi@vO*AElFfyU|#s>c)8t^>lVu%7;I!)cp~GcIs3uYJa>+Z?pdbZ7`Q?@mov8GfL&nC zG`Yo$vU8+uUmxXu!Mnh6(e;#Vi}-BoCM(Z>woyv4$!@7*)>5AfL7jar%^@?F6eN5t zm|Iht|5`gPC*$HfGhs2+@5-5ak&cB|yLP`7Z}*I+2&YCV#%SrtR5z5l zL|{0snEz10WH&!QF9S0xkP8HyisFh243Z2COf2k-oU94{`l^$<#PryiSXdc2#o5F~ z!30PFF!+HACQZqU|9gIxgBTMF8`uB_PFY4-0R|2ThoLAnt+*e^hS|i(3AUlG*}P*q zbHOW^`OI8kb78_fU_)S%Je-Q`iefMmU^X&Jq9|&R{<}&1%Vk$a9!_z2aaEY!sA?rQ zzZ`}Cj9i>-9Bgt>R{>K_YEGgckO$Mo0Mo!wT$Efa4wPZyEI#m3gXP_YY(@^acYxvm DahT#1 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Resource.cpp.D0FDE10CE7481DAB.idx b/.cache/clangd/index/Resource.cpp.D0FDE10CE7481DAB.idx new file mode 100644 index 0000000000000000000000000000000000000000..7c335c8abcf38a8223d24bbbe54b6e4a1b5891f1 GIT binary patch literal 1120 zcmWIYbaRVfVPJ4h@vO*AElC728AO1%xTGl4hlzn9ij9GxV$Rl(+kKY}1iotj7OiCI zdi-{ug6k@l+ijQHl=QV|L0|1mX6(ZLDXYn()^j0#+G)5J3rn# z+uPE5o&EVvnLS&sY%Q7>SHZSs9WT58s@x@$SbxmOKXBDe@zoy9L#y8l=(XRXKP{Q}IZEu&iZh`n*I4_=KVYtU z=MpWyG-1yXho+*RKmR}cV($J?MSn_|&4yi0zn!DZiVM8gKf=e|ir> zUH?7VcsjT8RB=Lv+~Td)79W1r^z#0f6|Cxv5&0j(9zXf-v^Q2P2jw`KF2!6 zqy&`a;NuWcHefa221zplrKcrc_`I}e;$HzKRiHGl7_Wq~1+N7^NSYZaU6h(uEDBTy za|5Fk*a4r#^JmrdJ?@3s4HO1h3=@Xg2^0od2or|UtUM|#3@jWlGl4vypJ0+aDjX~v zJTMb@RCsxKMPQEPQ4!)15`kG7%;~x}H&vjI38;vbmm5hDs}MI#k<)=)N=1_G+Zbh3 zSjB^ zN-h=$F_b|B7%-~{EqVQs?K1OhMrDTN+>{(8ps=`t6e}ke8;_VMFP|WvB%c7Egs?on QkgSlLkPHVqw+M?g08J0P82|tP literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Resource.hpp.5E7884E3AB08BF48.idx b/.cache/clangd/index/Resource.hpp.5E7884E3AB08BF48.idx new file mode 100644 index 0000000000000000000000000000000000000000..1194d71d1bdd7de89589628a184dd790319b0740 GIT binary patch literal 1046 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 m7FU<9tfIiwX8O+jGQe-`VhE3NDR literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Room.hpp.5A49AF77237812D5.idx b/.cache/clangd/index/Room.hpp.5A49AF77237812D5.idx new file mode 100644 index 0000000000000000000000000000000000000000..3c4fde844f8a05f596af6c086797166af6afe14e GIT binary patch literal 782 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/RoomObject.cpp.161A2E8761542871.idx b/.cache/clangd/index/RoomObject.cpp.161A2E8761542871.idx new file mode 100644 index 0000000000000000000000000000000000000000..942c269c9d558a0cfd481becc589534ea9d513a5 GIT binary patch literal 5688 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/RoomPosition.cpp.0B476C3C5CD7FA77.idx b/.cache/clangd/index/RoomPosition.cpp.0B476C3C5CD7FA77.idx new file mode 100644 index 0000000000000000000000000000000000000000..2d382594f3734d47d3db1fcbbb89dacc6079b39f GIT binary patch literal 4748 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 F003RdICB61 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/RoomTerrain.hpp.CD1C754FC01647D7.idx b/.cache/clangd/index/RoomTerrain.hpp.CD1C754FC01647D7.idx new file mode 100644 index 0000000000000000000000000000000000000000..7f5f06ad8db6f1cc42f0c1ad5892c5b2eb716d4a GIT binary patch literal 710 zcmWIYbaUIs#K7R3;#rZKT9U}Zz`!5^#Kk2=nYoM%3^##t6?2wOyy$({K;YQ#JNq9w zv~XV9(Wqa&sf+*7vQ50TGLcnVCz^Ebyt3>6z16F4{aO*=@#*Wn`?b?mG-EWBI}@J9 z>^&&3WZRmzO~-`fnyN3e3VAG@kiDomLh*>Rq==DMfvN{b&bdn^9E_Pg*__|jy{uW! z+xGW_>~}dww+UtZ_a^q;ihNOH%WKx0q^kQyV9!gw$(tt!XUycEtoc5MAuIK5qLKB< z8%sM4mvV2lQQ(w1w8>C&14rDkRadrM_%<_IJYcu^nu~6Ei6O~$wpY#;Id%jbeUYi> z@=zpo3DctGK0Bj4)*rq20NeRXJE@%GqfuW!E%-WM^aZ|T?IeKkLp z>V7)DXLqZ%pWxEoDWUh4PvD7CeeK-$^G~|@kF!N9d5bavcS>1SU0(EH`I|`-U$p;- zx_`fQ+bI*)E;%(m9`CSzr3}Kbg>|Z<2MOTiUiHVtkO_EJg5KJ&gGB5z+gprLkPiuk-OJcI6023z* z13SAUy9}EqhbA`z2T(H*yqx{!+@x18_KPtw0i{`aStZyMcoigI(hNnZX~m5|bufFF zxWMMuHJf)#XD)cf16B=_gxSR?3AO_!+#vmTllYg*u8cfvlG2ijFyXzk1y`Ia@{VBS zVq@cAQvkUJ1Yj-#8Uk_&Of}FYIf;Tmd6;Q%CovQkB^N7$v_ky^WHGTFeDcLi=Io|C NCRPpxR*)nF002AU3Jw4O literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/RoomVisual.cpp.98D7648C7BD209C8.idx b/.cache/clangd/index/RoomVisual.cpp.98D7648C7BD209C8.idx new file mode 100644 index 0000000000000000000000000000000000000000..ef3fdee69062cae9eeda144286c2b61c065668c8 GIT binary patch literal 2082 zcmZ9M3s4hR6ozjW3}&+?D+$XQ64>zA1w=$^pwgOx3{(Y75m6vWMFACgl!pNXA`go? zAflp(Lj?wcWpc%^B{ zEwV3NZZUbZ9^Wc0ifUdPT@keXvm#*QMoQL0JXk~YmZ1D9r6Y+P0s$com<^gPQZ? zrINB2Nx9y}&^_rjH%?~_Y+PUtJu;ekZ)1b0UtQI|L7Hwc-d40I^_|Az;Ibm@@s$&A zOKRFaoN)FWI-Z&n-mCN*`lZVM=92lIVSU@&T4?9t3&t&>ZyH;AeGV>O)g7jPS9<-t zxNgr)>BMh^ABB#Fz1+6J@mc&M=3CGGKV0>xA-}Y^>U4d;xy3)ScI~xu!>_`RL@arG zp*W`Y0_eA&xuaxJy<3BZe6KPguj%>k6+?y0B~~qO%*--vcmrHYSB_=ormWj40>J3x zvV`h1xlkCR1)P`=Q>^0*M_T}o9)G#6C}^-U-=0Havtigk8#HX8h%6M@poETFk$WFK zaa%@Wb76vlR;bw^GDwNSHHmqDFONN!Lt<_)tfO@fY$};L_4uAKX}fV}PYH>6!LXLr zs@Z5VdTO=htu-ZWhga<?T_SRqurD@Uawvqh@^oIY{8ZNpvdU#C$rlzE4dTxj>Y z#ddNqP(*NIcd-{*j2wsAyxk}p)dpqWW+Wqrq0HNh?JrEA)^E$DUuOL0Teju znBWwIf)dDvvS9?G0gVgh(F9EiWKY>M0%?I3M;*id2`wd%6XnDR!~qT$jsQn+ltA;T z`HVn1pu>>`1g9f(lt6k)&j{oX{Bg9;1m{oqQv!uhA&fud%1Z?P}395oCN z2tV)0`&r=~3nvaO@Bd#mG8|^}Q09jn$*6WH^FxkgWG9sQ(MEDc zLUJ7Z?*N$@>oe!_H_rUmf0qS!z;FNNl?B~DTd>Y9zy;|5u)^*7l=x&vh_;MsngkaU dl+6s;OxY|MDWeq*a%+vXy|sF}l~jq@{R{9l=;#0d literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/RoomVisual.hpp.97A79B8D0CA58BB0.idx b/.cache/clangd/index/RoomVisual.hpp.97A79B8D0CA58BB0.idx new file mode 100644 index 0000000000000000000000000000000000000000..ca4c6d03d4fd477d18606188d503477a92dac489 GIT binary patch literal 1562 zcmY+C4NOy47>3WiTna6xm(%ihOUu84Oo>D$0t18y6$sJ=27&UYXx$`hSx0&(0MfCL^W~3K`zr2x!y@fMOY3RB7`OAC{lyjk zlnk>^zKWbYk`O5yoB8zlT;x!j&mBi(5#QijzViA?T@xF;F!tCyJrgeRk2yUY^lf^~vDPJ!PV>i&-&k!@15| zyA$QnL&<{iO^uII^t$AvfToIfu8c^3wkgOkOb695Jm1Dj-mhn-MTd6qO`~PbQ~vtW z{q{P2ZbIs#;~n>kXPy;_rQV8nBfNenxiQ#UpOh96x9yCZEIP#8{kYeS!Z*uDn?i;c zlY%3BJjB(GzwF!cO4lMhIQX(AGh0_NIix&2eb-bHV--46d)w~=ZPVL=;ql>>IfF>O z5Tf>#cGl*ds7>_}E{yb*cF)g8Ng5iq?`o;c?D*!PrlsJ)WJY`Wosf8GvwhvIzVAE) zi61?+n$>+9<(B)GVJYbA_R^67liB#h?Gr22L%Rj>Jv#9Nw)fu)$pZ^>H!nAOUgVbQ zuM46^|NLxJdMfFaXIb7GgZAW7m!)z?&9dS4T;dDS)T3A88G8MT;WvfJhe+iNE_+tQ|HfaO7+Ep!#S+5vOS8b4cN^Xkp=$Gs43 zjco;|aDasrDx_>kLC09)g{SkLQHbVnffZ*ZgK{LdCibPny5})zT{(yrV|ypJ(+O&j zX8rTM&n$jQKG&;9v;^BOoQn)9k#c=EGnT4v|01CZ(Kgr)i};q}-M0{Jh4*`K9u822R5pMEzyybT99-rfYbd*q zXc4yg9A5^#k+-$cHjewXC*jv;7SBFJG#}fUT&4r8q);W!jtg+>0JB(>?>~?>foOAF zz;di33_t<4B)gOSrO_3^i%CS=VmpOPae&1XD&FW_Ky_g7w5D$gVLE{2I8Fu?NU@$C zWT_5oH{m3N5hYn=Lt+y)SYBg7j6&&3o88Ml!YK%)_EKje6I8g~h=|Ci;?&xK*Kac^ z0pywUoN%tyhmgb7Mq;Fz5W}*O6p`cj;oWK#D#u4Eot5sSiU7pbMsTE>{0jxE!1DFG z&efP4orV942cb9P%@Rfs1~36E={SUPM$VEz5Goi2OS*|~z$jUA0|-@&iY0>pp@z}0 zBpQU-Og2mI2yqvgLW(7Ag_ssoOtAzb#Ppd;iX~$~zKOFLhl*q(7sj%2n21bvVR>zc zh(RJ@!#F%dCZ}R~ZD@!=Vq(KMEJV&yeSAQK!4dX=7(knKP`lTN)MAzE>IucepyGHG0Y|=cEtrDb_bXy)X0#-K9PC?xLqpW||wHU;I3s?Eu4)aM?-& zze`J`dL_=}rG3sXzaJbR^7(bmt|*=BpJylS{I_vd{JBqyer%r9zoA;yrcq!0r!id)_KuUZprK>haGR{XZr7GB%#xa*M}9%b4S5)z%s7 z)YCP4ih^#InMlQN;QxAOi`VJ$RKKiaFH3*=gnM0X+-Bq1cxZ{!#3zrwUN89cPt)#+ zs_+xzZN44zye=<4v|6om&Y>qy>rEm*Fomz(6l22sd-ndmculWBVYSB<&mY~Zo&Q`~ z=g0q!N&PnhAM%?%==-X8+b}(HeyU`(PqE~q=lk9rh*NL%U;OiJVI1S)JDZ*tSLPb_j}>h)K}m}KP`6j<0;xa4KIWce64fN~&El$uuD2&Cl|nnI5n^37!8QD9+U zVS#A_@<3Xkl1>M9DHTb!Z)22EV9{eSf+;$_j`Q~aiTpbmfvV+LG+@G#!P_lA&hR^f zrWz*AD1~A+&?PyEAQu%EB^Qf>7$E0E0JFl`*($OdoX)p0$}=SArsOCA#YGgvnb_Ew fIfaF|xcRunxOurn1!Q>mrTC@!C0SWG1Q{g&6^9*h literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Ruin.hpp.C5021FE3C4ADB897.idx b/.cache/clangd/index/Ruin.hpp.C5021FE3C4ADB897.idx new file mode 100644 index 0000000000000000000000000000000000000000..299ac26b8b72af858f6bf05a93e628d55de9820a GIT binary patch literal 520 zcmWIYbaP{1VqkDi@vO*AElFfyU|@i_BWs z|9kB;;R8A`2MR@$)V3K-;+=h4S-mm9Ira7H|LQ9rk z)h9|Em7gS87B64&;CK%c^Sj(fSGK-&+i>mKQF-nD-Tl|^TfBWxdgyA@!Sx5^-A;=L z)<{KlsImIp{N#|C(z)*(!~Nou(sNqxY5e@ja*cIe7f0~9?zlP978%PO1;pPnxjz># z;y*t1YDIFN|6l92J5Ir0pQV<^>pfrpDy-jRvEkh#g1s?z7j3z(ui2G+?0fZoYp+B- z=3UK?&UxP5qVvD?rd$1i6)m<>I=@(zH*IlaD6Y&+asc{WUZE-Us3G4>b|xlf1~xG^ zF)lE{Aj!Z03>8K;R=cbFa^0)fUln6wVqsusVPoN9ljV}-W8eU427;p0wBjrv4Ks%c zqQ9=$ykk0Z!7CoHVwhxw!re%*h8ND zx?Soj-g;AGbK;7twIP>-bV?(q&faA!xn#qZ0yo)H)h^dgy?QVDYEeP<*N|p=FWE(2 zmj!C~?zp(F=*E4+*e;<du~%+U6ohF|Kj?B!t&1M zj}-+|zvi`@FFyGE6%O zr%szVUZ2>--@2BqWcI`7=_eyEJ@hTPQzvPgsbt|Bal&o;;d?7?A509ndnau9^7Qv&!aGfg}$@Ujd_nSn1n3R5YAUlUiK69jVwL7 z48@hXNwb0JbbZ*Kt@l2}#fUK}DKeT>A{FmM3nfZ#dfrkx5Ij(Gx1%0Ouj z9u6T@Q&v-M1_=fRMxgX9hTS`6O%+-%z@!e877`H>Q+4Ha8f5wPm#x21zpmrIjwt=o35Y^-_RI11K%dBQCD$&+0D#k_P4+28N>4v|=5g zH83|aN`W1?k@IxV!9eSD7|q6`#=^kD22%y(0eu0J z9w8x^A9&QnS;V~V^n2G&P~Zt0t!ngNV9Qqv-66J d@$n1sOYsZxONuB62+Ik}3(InH@QAX?008CF=sf@c literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Source.hpp.AD70F997F5385824.idx b/.cache/clangd/index/Source.hpp.AD70F997F5385824.idx new file mode 100644 index 0000000000000000000000000000000000000000..7f263100454b1bf2212031e1538b04de9964f1b0 GIT binary patch literal 1288 zcmWIYbaP{1Wngel@vO*AElFfyU|mz&pw5zU+dx9mV$oop(VxQ`GpU*qXw6;`lxvX|o zdKKIIck;HnHz(`7-t_+V=0;=Ioq9($?p4oOJM~ZOWc{WvZR5^oDqBmHeAgP+?YMej z=MJeE>moZdcR7}C{?~e^HcM=g@>AB$V$*b=`5j*R>TCI}*mE(~2c+6f56-GF?3kL{ zsb?*+-;1qlqFI>86N&GPcfDsG@QS{*;md3DsOi=}ez4f(EIs}3-Lr4pYqn-ANIG^? z^Ni$q>xN~M_N1Pk+57PBP1ogjs?0(TU4C64`-?3nw0xHKVr>(@MZU=v&8)e{-5DrnIgL$QSK8vcUC{?yt7)%e-5y^y+>;{Q9WU!fJ;@f5xnDQ8^jQ74NLS zr>3KQeT#W#sHl;%_s8musyA7(omU+UyXEV=e81b|AFibb&$RhuY|!{(c4hl&wT^rD z^+YBATC!ZZCSB_tyfjm7szmSMS9bdQV(;qb*WEey%=?0xoyCs*bJmL4KQ}nF<>tX{ zxd$hGoRHivqh!-Kv)^r2S)pXFI{O|&m(v3COl0pJ+VN)L z?#T^XByTiHDa&}rrTC}HZs!|MxkoV+SLP<&2BzHgVSBdT`w$l+#>BzSz{kSD!pE!2 zr7OU|0h9xRjhv@@4hCAMvomq9G4QIfsqugb21y1`Helpsea^UPr$UBfo&XakP(KF` zhY+tRt0^~w1W*>J{}#jU9kZqitruVt07?sq2#N8!^1AYaq(OOS%8uWC)zk0p5Mbg0 zO7rsYO7YsV+6sfDnSs*MPL3KYHs+oeW#VTCa)E$1LMTEG<~XHGGy24idc7225(MfN z=Mfj@^=I`L0O%5!ieRAu)C&p)n4Vxx*S)!^0)0RS zxU#wOzybwE166|p1*RGnC_rIQV8Dcruj9P^eu6m~R+4!C?avhJ_8# z5Kx%Fgn?m_lPC!ECCoH<3^NoLB^N6LWtezfCONE literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Spawn.cpp.A2B98557DED9A2F9.idx b/.cache/clangd/index/Spawn.cpp.A2B98557DED9A2F9.idx new file mode 100644 index 0000000000000000000000000000000000000000..8a597c9b96f00de8c202de756e54d0ff26f383e1 GIT binary patch literal 878 zcmWIYbaP8%W?*nm@vO*AElFfyU|99YP5 zLx%}+8~K@aR=)h?9A?dW%X6|w-PAIR^4#{#gsssz?$&aRr~ht`QNXRePk8;$EN#R4=&CWt1Q-=SKydq)^bl?>2%SDsjAiI zo~Rx$z0baCZ?#39>w!h5lm2l(419ZCXkN@#?-PCdKI~2_KNNTGN#-okiLx0yf#?4* z@Xxq%k)gOUH%T5CUs@gir(bFMG*^I0R-8eKO@>WDQkYj*kbwgz2LeT@X~hD-_*`3i z&f~TCF=j>{DK=3yDVVmuCb!kqoWF9h@JOjEs%yc7d8Bj{b&z<5iiSu$Get8v@0>!` zb)MKY!a#G?b<|B@2K?>Q3#?cp=noXu(b0hmbEN4q?0OWR0TedVF*Ady4(4>-o0}@o z2NYK3ROW{XS3Z2R$$JUIRG_e-j-fG3xM0`Au+)V7X^b*boMN1CufU`krNF@e^RR3G zttMHu30HxJa0+sY!c-Nd<|Kl`r?@D&*cwPPODXkDzR6Ued7njEMnaN71|$gq5- qgCv3}jbJ9{rsRNR1jL1y*w~pl`T2OnxVS~QMY)ApSvYtZ1sMQ)7i41q literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Spawn.hpp.74C2EDB25D3C2355.idx b/.cache/clangd/index/Spawn.hpp.74C2EDB25D3C2355.idx new file mode 100644 index 0000000000000000000000000000000000000000..0e5e2b1fafdd584cbd4528e2b36ac92155f8a3e0 GIT binary patch literal 672 zcmWIYbaR`*#K7R3;#rZKT9U}Zz`!5^#Kk2=nLR+-mXU#>V$RwLhJ1$%cwCE>_N2S; z^my1Ztdd#GvUH=U`WE5zd{L&UGbCp0` zi8>4w^EmF5c@>n(476@yY72+^r_vimNG3vf}?a=4YV_XmRm&FxV<|fSrx@m3gIgi)k$C%lfm>C&ZIJr3a!2|;* zP>z9tk%jeoSG=9`rwCawCT1oE7Jd$XUNFJH0an1Uw&1w$yD99sd`uibX&wb0RWJdQ z*6R2_{YulPxdKe=z<>b(7GYjtL74Px4l||NtZx^^nK*&E1vvyc!30d2p(r)2_ybTA z%$3YsVAt6`<%pPZrip_G>=c+J4~rnDARmkeb2p24(y7*=yP!W$Hk37teK>{FO9%%_Y( zU?0MSHUB?dYc2EhJJ1kD4n{?A2my(r)SN^mAPsXZJOH`{@{P9%Ut7)yv!=KxxmX#f bl8HrGZKb}Ugx@kIHdY2Um_ZB-tOzCm$xF$v literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Store.cpp.3D16BB890A71C6AA.idx b/.cache/clangd/index/Store.cpp.3D16BB890A71C6AA.idx new file mode 100644 index 0000000000000000000000000000000000000000..570afcadfa39fc9de0a29ee95d335f618738ace0 GIT binary patch literal 1682 zcmZ9M3p7-D7{Kq08D_@3G84BkQ)A5a*iy-T;Chli8BeU2gk*aSNzMu)@& zU;qH1!;c`2AMUIG09^zCNGxmdj@~<|PhA+F-~V1y!d2{cdHt%-oABZmA!5)!!>#C% z>+{0C!fE=I@UO{g+R>wG{yx@T{RGqB0hfBiAlsJ}p_F zNSyoB@F#iBzdpICZhF^T_Q;9ZuVpKlv%s0%)OBup%>HgqxYob1ol zi;~t{JjBwR3cXiyW)w8-2~!DP!`I=z^qH^rpdPu}3}ba{Nn);BvZ-CDxfd@6&vp~GQD zqqaIl>fF~ZzG2L7HevWL*gvr;VT|Q9U3#+fqo`ai@DpX|l}tF7zUx+6{OrfQ-dnG{ zk9z**NlIMD+@~X*A-d)L@>xi`D+EPFyr(H$FT5U*zH)kb&M^kM;%={W-t}43wv{vIW%q{HjuRJ zje-q^rpQat8!O^f(VDOtql6)HbqG2X0Qb$C@nf6mk~X1^iq?kJAOqCp+R|-Ta-(63 z3bR!Eo{!sRsc0=&O=Hj?t_j^_!*X!=DggK)Jb^N7=dAbJ?)I}I3`HV@0Wer3CoIAF z5G4_!(P$tNkqCh_5Jb`wAr_4VB8?zI91I7K6o$;A7%RO&!Xa&er#|x= zObD|HqmQtx^K3JnD{&qA-!zgI4zj#2kRb4$hzeNVTLONNKn?yXK(?(5SI3P+3MekX vUDkXXLD9ic9QYSxt1A+el}Ku;WQq!fL0LmtM`u%M>uDQkEIf|57R&q(K?IV8 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Store.hpp.9697CC94B4B78E03.idx b/.cache/clangd/index/Store.hpp.9697CC94B4B78E03.idx new file mode 100644 index 0000000000000000000000000000000000000000..7bfbb1d2a5adcb7a090785cfa71adcd526ba5383 GIT binary patch literal 1174 zcmWIYbaU%tVPJ4h@vO*AElC728AO1%xTGlaG$R8;6*B`v#hj&+{QEB(2plaww|oZo zr7*3H4v!{X)(gDJofLRl?m|{;O!_5>pxd8r+G%z6y)+(1 z_eTnB+TnhjE5qrP`-Nw%*{|I<$lmztAM(&E!gGFD&CIX*_d+i{7~*<+=251k(ZDu=Xt8Q_5CR z@f8JgU7j-TqKMN$v>OzUL9~)=et(&*wL9XT6Z%`H=a*7=+OPHdWq9{)A@*J zB2S*2+#o-XS?ZG6)#f{&_jm5MxU3bpKbWWUpP6FElCz0U=W|pKm-2KvU$cC5xomTF z#T~QR^0W14zy16D`I0j4jtfgJU;n!0b=uZv{jU~tT}(E9{Nwr~z0Z-;yfn&YCdbCF zdfBw3^NXI9ZGvvgi?@QV*^fDohUYI|t*Ej6%=^!g8H?L)EUFL{<`-VOs{EaO>oSA- z7cQSp>wSIp*Zp5-xqM4$qkXeX7jxUQueX-`5`G=iFVA^9)uy<yRz@0fN$ik*ptiGfX#O_3W+Fi0{m0ArkyjkRk>L5X|XTSWmTE@1S709&9) zpfUpogtL=DZriVV`l*KFP~ow?u@ z4;#oTm?X>}jFMpY!-N~8|85fha@m!UhfPsbQ5q)9P$9Rj`1{lVMlLok4lZC|K!D6d zYl$G)f><^lHgh&}KA8J}JZ*Dh1kZ)dg%9R69yS+!7jpzJkS&l8<`y2dK>a{-7!MYd zjDl>SAcQ$3zN14&tTCy88E8w8c_fl8VJ@*q=7t5v!c2mNI?%7kK@iO8x;HmfppOM; zlBKyll1a8M&PXQN20Ft`;$cgYPEv%q45kKXE-0E{E`%8b6b3~POqii4H78LJ7;vyK nhDQ`baZz%yGAKydA>j%nnb@k#F0M4WzSf?Jm7ReVF3tb|e2lBW literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Structure.cpp.436AB412D074D6D0.idx b/.cache/clangd/index/Structure.cpp.436AB412D074D6D0.idx new file mode 100644 index 0000000000000000000000000000000000000000..0dd5f8e139f8e55a1d8289e6b136c724405a9c4d GIT binary patch literal 1968 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 JQosZk=zlc#@Sp$y literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureBase.hpp.D3A2D45006602D7A.idx b/.cache/clangd/index/StructureBase.hpp.D3A2D45006602D7A.idx new file mode 100644 index 0000000000000000000000000000000000000000..4757eeaa8192bd2be59a85f56b1b7740455f31dc GIT binary patch literal 382 zcmWIYbaN|XWMFVk@vO*AElFfyU|uWp0uK&;_CFUms?ePYq;eVrFDuVdr8O2NMjOKsg2mMi$m?fqdg_!q=7y zFtIT)uyBcTNrDLm4zL1-qSUlvS0EE+4kH&>zwJ|wh#6;^IAFRNrNFvis${xVPu=Qm zT?JIl$ib)zF$zc)rRF3mA(_Uow)ULIYw=^uaC5Xe{!hQs^l5H!QF5_3NFOVR00SnL QhUpJC#M)jz&dACD03zsp!TyPO#hk67f&RA*1irogAv*2b zrj z#Qt1!BddM$iDXWh#ry~UHmR}g{G|8nn4<@Wgo4?@kCF>7nP&at4%x#l8UBIc#q0$P zI}80o92nw`MI^_2y%kkk!Q{}}`DyBzY~}mQ3{ARj9VnQ6-O#G)@J+ev8COg{9dk{V zH+?J>QrF!dv3uF9%Td1zt!K(k*&qGGfwBIvgZ-6*-`6j@yLHCT!05fH`Yg6qGgMgu zD|wq2T~AIbF_fy`XSLXITJQPG4@-(HrQ=hkZ(e`-468jZYySd@VR5{ks-{sdyi+%c7xVG^Z53f`KqoLXwq3T|M|A9$#D%^ z$|5^exm^Yp$8N1~1!cMJYccLn*Ce2YfUL{xc)`saapSBvjStd^frDHy?b{&V(^B%L=IvnPlIg>IQJF~;*}eU{qWFq>#` ztt;0ztu$mivAS$k(@M`2sY%oSUr3RdQuAoXid|{@i*F|~X@#qLYzq8fm$&!Fuc~b4 zf4iNYXq6R6^J!12*p_+m{d?tKwcF%VxL-MZzw)|o&l|mOOO~Adaoei;{^w7N&POc$ zt-0Z@^|ZT;e7xnq8Hy`&lVX9XDI#IFvH8oOKmjHdc?M-JDK2>>b#`?g1_=fRMxgYI z1#GdtqU%?SF)0A0*+kgXloYrWWEePrazOC2%e^LX+SRQBOsYU>ehGdRB|TO>L6B}> z3T0p@N=++%1f;!mk9+T!c0r1fN12O(ixp-mjAoPq+uR$@xM{byVmORu;ZbH|U=xD5 z0muW|50eC%#Kt87Gl55$pM_rx<{UPQncexh?{k6Hv01S>!wi7YKMhT$GxV2=Z}pQF5^|h@k``AV3kuU|?2$ zoG$%LDDFHrlaeAsa&AfvNST;|Bnt;8E4Qc!53c~P1TR0YxR4y5pp2lbpfo!hmoT#w E0A7)f)c^nh literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureContainer.hpp.4E5678BFDB16B77F.idx b/.cache/clangd/index/StructureContainer.hpp.4E5678BFDB16B77F.idx new file mode 100644 index 0000000000000000000000000000000000000000..da42376f52af5bf6e5843695351c86c18486106d GIT binary patch literal 734 zcmWIYbaT7L#K7R3;#rZKT9U}Zz`!5^#Kk2=nWBsg3|>IFiaBd1dgmQB;BndeO_QS} z|Ltb4i*gGbiWptxj%OubR9IP)7k|_9j{mMVULx-K77JF*y7urvXlC-H=G24S>YoiA zyS7a3=$q&HUMcc@ZjlJxo^>dN#gn!HW;*`?=x?SFOJayR)<0Z2; zEn3>w%5(U{qo+oj>-fDsIPIOTd?o4DWH)W)QgB$Zz(&qKdhl@b71(ntuk9KDjZnh`{3YD!(Gemx0@t(2Lx~38MOLp_}3G@ueS8O z3S70T!lCm)m0Up66X83vKUg=d-0iw+{`1Y-V zZqNH!8kPN(la=$@VTR($+@$%yQ1a3}?!9B$1u1qW7GOAm06PyG4>toRn9az}8j-Nu z*!*Qspa2sGGgyp)U7cN>hk*ma=?!PxwA))ToSli4iGf{`O;Q3(Fi0{m0K*=r|HT5f zSYOfgtHqdDVfq!g6l7rfe|EXoBu=}!Re*^TCauS+CkT^fC`wH$-V3w}=1wL~u>0zo z%{!(u7rf$OS7%gbgSin#GfINp2y+{ZX5s?74WSq05SV1Jn5^GIyUJWfE_OB!Hg$;a z7#P?rW_IW2zRzXkVV6{r)P|{s`3h(gvLP_v0EI!mfT;%hA}3K0Xe7)u2DnUdQF5_3 YP=<-!z>{aDnoY}DMm7dEnC%P<06KW`t^fc4 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureController.cpp.AE363AC9C69C4863.idx b/.cache/clangd/index/StructureController.cpp.AE363AC9C69C4863.idx new file mode 100644 index 0000000000000000000000000000000000000000..33e6502dc81fc1d5a3cabb81240d2942faabae9f GIT binary patch literal 3010 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 HKxY3Jk=@wK literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureController.hpp.027CEDB2F8AA04D6.idx b/.cache/clangd/index/StructureController.hpp.027CEDB2F8AA04D6.idx new file mode 100644 index 0000000000000000000000000000000000000000..1955426a72b12f502e58b3e11894503de396174c GIT binary patch literal 2190 zcmYjR3piA17(VAPV~jIr4#s4VdO|L{m6=v{Q#Kj%l-m;3DvC&pqzsLS>E<5gGPJ^K zQIX5Ds#SKilC~7KT`4Q=s-D`E+LV+_cK!7%5L zm2r`qV}dj>3=^QQJSIA98G&J2Sr`^qTq_nf)Zho@YOH5Cr$yGEmP*dAt%3Hj#+UQ(P+3=q6`TI%X?au;3)4f)ob-dJh za>qighv}s;Ih*_seJ`@o_*oTStF$heUF&!- z+D%o8?CZk1gWInz_4Ezgsho&49saG$G+#Qfe0FESKxve&joT0N?24b?>|zU?{PN8E zhWRtuuUk zcjUm!fFajsdTASmxO;Xq=y>1D=pWhN(Po~g8Et#VCd;MtpUPU>!XLlb9q}+|0}kQ$#~-vBhoo zu`LPGHz99j8T6A`K(x$r+bwJO=yF@8D}-) z20&1H@Os34+G3gz03lJ3XaaEg_>uhBLyzsX2#y9uTCuG}>Vkj$1cmt1gdR*E#fs7cSbAh|u;OTF7)5ZA+LiA*LtOwq6Yln+ z=9PtlCWN5Q!Ub8lIS{7wmC;qh{6w0V3505#RgLQdp{^siYkh#el1*r7Vx$wtiBuPW zYYL=-)WUZeG$8_g8O|#E=y)#nRb~cUs-y@b7Dn2$?P+xZeVSh>);8hWOcONdgIU2` zfW23rt6O!X_aZtRq_(5%gz5rtP)W(*c_|P2X+j^=3KNATz+(%YPNw-$_t^x2)-K^l z^wkC6hO*|T5jrOx(F7mV0qg()z+c&B$tU$6A=m)mRGgKH3xQCb>{V4{VE&jQjM3Sz zV6Wh+3&0+#R&7Op*(;hb0sS?cbqyzh&>!qzng#-r(-dyjQ0M{pY_U%p1eMb|z z0Ee-{cmQM3n?vQpA2}Qsy>~WP4xEj1)sBXn1VJs9f~$6J(ti82 zLXGWDNRnABfZ$@(i?J~D0{5aR8P@{aB*(#U)y(Yynk1=UD=4@|l1yYLQm_n?%);4O zI0YUi(e~IXoPtDy^-)X4_s|mPsO7ZPp($7$0n-)-0F-EhjK5)+>Bm>$`q1x0_QTfH zE@=wt$K`OXrr#bI1_?mZPCFm;KH4tLk(=pk4U)9evg3i3Nm8mM<-vK8q)bc3gPT&m z4-0C+BnA8nAweyea6ki?5wV$M06TK)(d?#O|8?UeX=P?51~wcrnuN&+41)@7o(TvH zql@7yj6efPL0TpuK!Svz;pt=m0LefrV`2dZ42eMe=_CLjl7N7ZO$7-+!;JHRjhw$V tNEe+y>=gTe$fJYh3z(as;Ce7j=fhuu{9P6Itz@A9;>hQ#JyHW2x${abWe z#hRS;)sCw|I5Q5vIP7*cmjkN>6|Ns*{;tom1p^ zUvF=l=-xJuWL6WG=Z(8W^-30O=uBuXo0hzw{YI6yagW#T6;I74O!P`mUbuFfDl7NC zngzG)Cd)Boh$aiWIccaf^Iu{%Y4i^7UUczMsZ_1@Ms}6odt~QyhfgtRoByebcivUM zgF9q+IA-7ToBX}}dd8E=qRD<@n=7Z?dG`6uW2H)S-_L)p%a)vRd79+G0hU2%EZ=&}h zmBimG?!90tso)UIIwX@Q*Oa}NW!V;a`=h-&x2NhIeO~ftN?vxM_<`(3&b^{+oX*;P(zlRbeoLeJouVa9C#1}amUM^zU#@n)?@>zZisoJ7 zxx$Ou7v0ladYyMtk6PAGepj(QBIoZ2-!yqro@LGFAhwCA(dg5;qkF~Tta>DRPb{3gW&^Wbfd1}JN#FH8akYQkUdnf_xbC8G&`sObPuMwv z^`|owSLPy}a)^TRCjn6bCS^GWB`zs0c|~=0bsh!@1_nl;^w*bt-y7Hcej&yr z50qvTVN+97;8Kub-~h@2K~ZX2@m?SeGlfwKY=ogF+g^?>_v*ZKk9+T!c0r1fM~RDp zixsAd&0=PEe(w8RpfH;in={M~m@a0ZFaw(qOc=-mS__i|n#9H>0W-WoY`!oplEK?8KhE$wgC-1<2D%d2NT4rr5<$KxE=n#|2GYz*?+#tomo$@CWKvXM zPymWRfg+5-z>u7qlA{FViYiDjvvaU;i3oG^@bifC@bQQV%JK?G3&;pav9WRrF-Zad DonT== literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureExtension.hpp.3008167BD64960FC.idx b/.cache/clangd/index/StructureExtension.hpp.3008167BD64960FC.idx new file mode 100644 index 0000000000000000000000000000000000000000..ed9f107c5424d28bc33466db91c2b6edfd96e804 GIT binary patch literal 706 zcmWIYbaUIq#K7R3;#rZKT9U}Zz`!5^#Kk2=nL&&U3?|GB3>9*lW)j~NY=?A`QbuWrYDv1a6+^hR@^ zho$=Rb85GLJ@~wIWp>2Ql4&2^lv|ItIV^9w$~9G*|C(1> zx0z+F*v7i`=AFFnJ62YQulZ)TplkL#wh->eoM+W9Z;?zAGrs=0#>{S)L0N{FF7-frf%8Dy$ix$HJf)# zXD)cf!>-P#&IZ%-A^$C>$8#MkMlN{Nu2Aa}teVa^6R2U)l%H78LJ$!NI$8H$UNi^V}Uvw;XOU}9(DHhfp`=2kKz8v_9O CS^kCq literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureExtractor.cpp.2E57717532C79F20.idx b/.cache/clangd/index/StructureExtractor.cpp.2E57717532C79F20.idx new file mode 100644 index 0000000000000000000000000000000000000000..b31be61701233efae5f756e65c2d1d4f83be6de5 GIT binary patch literal 868 zcmWIYbaRVgW?*nm@vO*AElFfyU|P;zMA$>n$ASjTqPuC+?K5^tZD8;R!|9kZ;pnx*RUuBol= z>PrK=J+ggv_u_*CrY)YGRA4^O$9?oPCP4HpbB8C7y@RUA z?W(f>SG^?G=d6C1)1+Z`V%CeATc5Jl^51#%BQbuR#Q(HEK~ak<7iS&YudQ8sbVpLn z{H?rZoNV<;Ovft{Y?#{2v>x0#^6&DllRoz5Q-4J9G?}dx{>~8?Vs>VU?unep#tmgJ ze+cbVs<$kaw3+q5F#eJ9r-=4tL57~$M?=luKbxM^Jni;W)6Kk2w|kNe_e%3G`|Hg$ z`Ca(Fw`vC8gGzy4=DdmT3C3Tu0n z;w`pdmY3JOMSY#sf;~3>neN;c*g1Wj*X0fNzPCRzO$jmOkXkI^bnE=1*I&(;f4*T75#-Ofe>TIR+&b5f(K?IW9RF1`ePc5J)O~4!G~uyH|io0VvHO!J(k2 z%BsrCAi=-@OhODrscFT_fHce$Mk%lnd=kud3C-opU^Fw25(@*15KI-22ebz!$)m)< z!XXB;$mzf?r6S4pZHzKXEPgCOFfA}?pamdD!1PK6Z@2t7!|x25>fD^!eY-0EUuFc_ zWX0kEGo&arClTbS;-chYaUjjCq}acad#XWYE~6rYB1i@Tl5c81qo($4i+vE dVQwCN9&sK%9x*{#UIA$V838FaR!$)%NdSy&PBQ=i literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureExtractor.hpp.595B69B7237EDB46.idx b/.cache/clangd/index/StructureExtractor.hpp.595B69B7237EDB46.idx new file mode 100644 index 0000000000000000000000000000000000000000..4507b51f78e6b62ce3e1a08e51136caec1b77d48 GIT binary patch literal 602 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureLink.cpp.CCEAC3FB78A709EE.idx b/.cache/clangd/index/StructureLink.cpp.CCEAC3FB78A709EE.idx new file mode 100644 index 0000000000000000000000000000000000000000..3d00e56f810e6612131c5d787c4327ff5282a77c GIT binary patch literal 1270 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureNuker.hpp.D41E291A19627F12.idx b/.cache/clangd/index/StructureNuker.hpp.D41E291A19627F12.idx new file mode 100644 index 0000000000000000000000000000000000000000..f931dbe462154d7cd8971ced936685e2444bb9c8 GIT binary patch literal 1064 zcmWIYbaPW+VPJ4h@vO*AElC728AO1%xTGkPmx+PFf|Y@xV$Rx-*!7nUc;0IN7M&&_ zthca}REimSgzH7 zQ!}RKdpIes7D#>1m!;@yp^TSy}fGmrK#r5`C*w1m`T~GoJk+ zlaKM;wDe_5ZkFdatqQPOVLEZ$1oKRmShL2G3ZEtSQ}S+}-sd!V`ksS*&%Ga)J?h`X za=-c6VrG*UX8j7jjI%F^SzS@*KGdEdU2-XzUE?Xg*@8{Wf1fSP?G{{f;l053tJMp` z`SUzH%h|e}Q&r9*s2_ilb0@0c`UbG^L{ zM{bBHmx#0MM??R~g*Q$9dlcWhSg)`rV#jOFlPkT2N}YsG$Y!ldU!VU|aQ!`wd*=I` z7d@_Xzbh*6mqqO4^#csWmAOfCfvKZ5hUo~yG#_IDCO$R>9#IidIc_UfD}DwE1_oxJ zbj@2mubhQ%a|D?9fzkqE0@B<@>_$8wX<(9KnB6e>dU^kmb}=S)pftMxyBxO)mx=@f z2T%?OlES+-v~);r6ky^2N^^^F%W!M6YV(40GXkaWrQTY)b63)xeD;{nmMk6+u8*dlt z$%*UURb}MjX5(N}1~~u(U_NA&1p5qTDNGko7~~_EFw93lVUSN?!Z4ozg+V@m3Bzb6 zF0jiH?n2g^n=`v_SLOf9j6B@3a9;>hQ#JyHW2x${abWe z1*7Qk+i?@LLKkgWxH{qGlqJ$OuIp-V&rmH)v0nP8I&azrzbSlXjUp$nfB*dC$Bic~ z`=TRxvv);UZirscr1f^s3Y)FRrZ67MPIRr@-tEF^a<(ySZQ`{ni|?|nFuzj5dy9*E z-$v2igQl&^FKH}TFD8HgftbBWCPLnZT#`Zra`oISKx zy+`cyO;)``o8O;y$v$Stcvt(jZH~5b?1Lq&D`FLVPr9!CdHTq0Hzlzb|Ie}6o|15! zzh^;<;h!m2C6ZJh$>g#zA6j)3@An+FvQh<8z)b zV>xoMhPf{FZ1{wGALTBdFWvrl*Cf})4^Fb$ytK(pjQqJzFFY%Lwv7BX3-vc{;n9H^ zN3&)Me~T1bbW1>ubNBgIy?Tzj-=A~#oS}H8$+&mwfhpS-x9^zvDr>FzAFG)XOJ`5g zpBT4K^Ng2Br+HXTgZR;HDbdHHWDRaqu9#ysm3!N}bH(k>iXkDffge6^exPIVbgud9 z^47RgIUeC>lT7CMU%IF{E3Vfp)L3H9Ue*3jJF`j_emi5MIn!V7sBX;#R+|TA4q7{O z3@0eYI{vG#VtX5Cb4%Q7d0u6(b-v@2w_#DS$|o}xP5U2|a?Y!+A~Gd*vVG^OgXvET1EocI_r z@7m`dFYPM$PV)1q>9`hG<|f$zQ&a2P8I7#}eQX4nl;ju`Im9`X6f{^h1Q;Y37#M-l z8H-!2JEgY;i809orCEeoR1_4r6r>qAfO0@kl$ut&7fA1N%3kiZxn7!?N0EhrMG&S7 z$OGztN%AOiuyBaNEQHaFQeazQieOrS!pM4qIbHYWrV8{i0u9mQFo9`yI zOg<$yG`4gxDljMj1)v}~Hzh|2$QD(QU}ooF;Sv$%=HcfN=i%cK6O`o@kQR^;kYZ!y I6k?JD0NlxXzyJUM literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureObserver.hpp.0DA29E161AC1EAC0.idx b/.cache/clangd/index/StructureObserver.hpp.0DA29E161AC1EAC0.idx new file mode 100644 index 0000000000000000000000000000000000000000..37530624adeea2f1386600405d64954ab82a51f7 GIT binary patch literal 794 zcmWIYbaNA8W?*nm@vO*AElFfyU|?xy7nPE3yI)}1Mtx%ub!sWR3#bE`7BnQG7MG0(rJ;rX!2 zS!#Pgp2SN|N2j$nJs&r$dAmvAz3R!l9ip3@BTPBeuWf{iyC=?a$J^v%JFL z_J*fdA3fBXmgtf(=XIr;ORi}88jg+6eQx@li0j_Iy>Aa!RKc6RO@XPRF3a;3ICWM{ zJyS5T(kPA3=BU$tqc6&5ue{M-Z{dCUq+8Mi#s4i<Z?yy?glJuZ)N(^1LC}EKK?q zFJwMHVKyJjF{_G8Ys_^IO>4Ty=)J&3&`-FF+0sF|{pQwPm-(_4GRq$3y)wD9ng6j< z^A_s^`y83)ZS2eXfAo-G=sVtP%M-Xxz7@2bJ=b6ShQy!0x;I~mIagl1!Pm^O-~D6r z8)dEINmGp9o6;k#g(~9@xZv-<&?eLYjeFcI}gweY-0EUj_d#hk4nvH772<*M|a9UpC=lHsmFkElAxWh*3{f_v66AJ5VI(GW5FmqVb{J1=H@_F6)Rq=i{vuc0(bL8*f zzjO84FRh}@56-#w2}rB3JaFw1{kG&vTw;?JL&yw`_)~j~K9x#2ug#G0+4eYkhxmGn z->sDpwSYP(yvm#9xos9CwU znuzfE(A`J39eAMZrZMw_4~s)QJFC;|3;Cbbmfk(2^YnSigRLvQEBghWT>4d+clm|$ zK9tCZc)l`s%{}enpp7zjo@oEb(Al!Z*Mn=Nmsg5Pc+emDGfQrE zi5D((**mGU)zBf%Y`)fvE|+Dhl|T7?+Z<0G-n?j4*WYtl$Cs~;5mh+peDL>=oFkt< zZp-^q?vSEcR>I$RVq(R%!|%WHUD_*W-Lc`C?+G!J7QL09`}XAAzwhaI`%`&AdwrSJ zBg5TW)`x#%-ffWoh@rSLHz^jFnwFZYf1bN5#87}qQJz7COP9++SxZ(+gF%9Ufe|Qe zY`8S@+Jd6*0!*qvX+cpzMP)-)LqU)RL0OqgS(1SR zC9d))GOo1+k1ky{ufkFjZ_8GrRM1-{%5_*-Y4MVb;ZWbm)jRCKUjMdHHxn zVXB=D>{2R{Y~RKxqr&FQ<_=RW8NA){;|#wuXu>cT0bK$L4wy?mEKILpj}!a}atR-o z6wGXxVL;W$UM)(^Nd$#YaZz%yGKc{tKnwz(jIxN)CuC mrXb0}!O6-kD#F7nz$?Ma&nqq@$0sNwC@Uz<&c-FoECm22U9H{# literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructurePortal.hpp.04636A27B975C96D.idx b/.cache/clangd/index/StructurePortal.hpp.04636A27B975C96D.idx new file mode 100644 index 0000000000000000000000000000000000000000..8d3411bf46ed503b2fa81c69a4bb1da28ed3d78b GIT binary patch literal 896 zcmWIYbaSg z4Yv~#nafUQ)*tBOzP7JH$#|<-q=<`F=DoTpk1g`5B&lVFS)_Q*Tn?ip3 z00*`fxyYI=k2IOymYz0NIhEwRe52&jCmi;{w%Zx&1bd^C>Ury(D)^@;P7~1J{9)@N zlrY6B$wk6ND8J|B$-?7$%4+XqdXK5)-@E6j=Xd(yx0t%4x%VADpNZM?`*6Ub9~-WP z$*248*|h)qgNS3Y&pa!qnzjC$f461l^7m5>Uhhnp`B1Ik;yH>toHON8{0Fc1wQlOV7F~hj zUoXE6=<5)C;t{O*?!oPn!~(NJ9__DYthC|TEFEqsADJ_yAj@%+?SqsWYnRDCAK8{l zOqss*qw+QFy?bsJpWAfXskq$lX3o0RvzJtTDOnzwX;v*C@OpNmTS#}2%jUCRqJJMw z`?hnBynJuJ-W0jBF=uq1Y%C0%GHf!UV1hxCfdLrPjGU}X z&DB58-4$Xez{JkVz{RD@Wx=T>tEIsp0h9&mH#S_Fd2K<_cL63|ptPWn+a literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructurePowerBank.cpp.2E439E9B9CC61915.idx b/.cache/clangd/index/StructurePowerBank.cpp.2E439E9B9CC61915.idx new file mode 100644 index 0000000000000000000000000000000000000000..fb3a6bc6a5b96a7623dbb79ddd7bdb247c4b0043 GIT binary patch literal 974 zcmWIYbaOk#%)sEB;#rZKT9U}Zz`!5^#Kk2=nMzCy3^8mB3>9;>hMdm3Z6NSu>rXC5 zTPcypF;X49{N7%F+?@?hIerbd~Uf zxoN68P1PS7^%Xq4gR|vlxCYEj-_UqPV%oafsVn2!IyOGYUfukI;Xsq|)~6SiST-#9 zu&;>uSj$7bk~>TxdQX<6WUAgge&Y5lW$`moA7Y*FUy7;aI5E#m|K}yv2;Wt)fsG9F z_U(|(-KA&j|?F z(Zw38ZuS0?I{&QZ*T}hhZmMo-)YSIjT(P8%&1~~C@q+ge%U^!oA7{LB=PK4Yya^Z8 zE-`q&wT@9dVr^y>_vSY5Li;6gOTD;9tqebNqzVgyzCb2MU9X zh6%%H79J%Q1{NWhW*`sfJeVYp5(f*17|aA7C0-U@F_?3l4(w7Yl5F3`D5J#U#}WiH zKr(o{<;NL*XV8Rmb7uGLs{DVM5om!Giw8_K%rKziKpunH3-nV?BFJyWMajkDK$=4gNf<0;~I7!?^5K{61KoSTxP1Z0XSNV0HnvT}=x@bC%%P2%Sj7n0)>lo6B_lxAn+ I5@wbH09fN~*#H0l literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructurePowerBank.hpp.5EC6D8CC939E6680.idx b/.cache/clangd/index/StructurePowerBank.hpp.5EC6D8CC939E6680.idx new file mode 100644 index 0000000000000000000000000000000000000000..3606a0eb01b25a1aebab2d06a2d99b6c11ab710c GIT binary patch literal 792 zcmWIYbaNA6W?*nm@vO*AElFfyU|o1~s5S#hj&+eEkj^2()fiT`s}7 zaV@LR>~#!^8Svbu3e3;Y+p&N=NPA*M5Fe7(8BVshkm_yoL!ksKdidw(V6A7 z>|5ln-4Yb+j$Y+8VZo#}oy(nx4YFUh_F5+`%sTMpJ9Fals=~FO_AJWUeOd5|pUBfK z53O%6X}qj9ji)O_b&1yWzY8ReJuUwIi{s~n`dvQ`e%tdsM7G>pV;cMGnt!&lW_^B_ zvhl`_Hj~Dc&fc?>-=5S-s!$a%b6&Lm|Lxg@a@of16X zSis^X)4%oOt7ne(#kJXAR$BfK`Vy;kZ2g`eEPXXK)eOazxk+`vxJixTnjaCBt}VvI z#>&9SBEq7^p}?ge!@vQQ1A@Pu_e2yw_%;eKaRa3}BsgR_)LGTJ7$g`NfDy_N{%{S4 z$uyz4>`ZJd3>=bdk`iEoL6U(1m<|{@SWP`li=WT)`*_wjE|{qj?0Qh4qP4MlKFE4mJ&-LNI_i3aA?77?^4p&BO(EL|wCa z$8_d`S3D?2=H|@q+g17hG9wR%q>`ioOb^VRKqEo!g9#U<<|GON?S$!qdzhiPD7jb} eBO}JZJ0F*!)`tB5k$1|8;rn zzIjAu`|g=7En9k*$wzT(G?tc6EadCFexom^{ZhUC^Ti@o3s}uKIe-6{^SJ%GzM0j> zeSW6xGs`)zZI-N9b46;&SBEA)d0V~MDbni$_!rm)UtoW^TZ(tvl}pmQnY2P)e!99w zcjYwRhUt;fGxQWYla87DFpC^Z_Y#OI_++j*J?`~gdU-^9D+7RAjb^*S9 zY>U0lJ}B6+>%7~xFikh^Q#)$cnANuWU0@YoS`k^frs(gs^KPfwo-v&GdPte|PG`oN zOCQ)atvEURA6uI3vL#Dnie~EZ-^?*Sk@&#$n$!mm?d{!>yDqL0eZPHy;tZqpAA~;G z@zmFRYBK0yKU`?DN1El~XA=n?_37b-5-x{5Z}2Zldzw^K{P`otTImB9C#M^h&3E~1 znV};SsQ>1|=3e1n@BTPJp#NBS;)l03U5}@0>lOGKsUBE3h2LQg z-&IM8OHQ`6`eH5K)24I2iFH_{79`4*d3%?R=e+F2Z)fw`E7u%X3>}UZ(L?@hhd8hA4b5A=ZO+Fje|mmtJzT0F%sgw!&RLiC6e;^Q zKKU8*VCTWBoyidq6WX*h|Lk0;Z0i0fpm%AdpWXbQ>Hjn{7ZqBc{<)=dM{0|&3E%qP zkMFINzO`ifsZEzHe>auAved1dXQRD2-00=~OVv9bSgy%PAghGOUXfZgufcPlQv?JB)!#ZJzPzb3b&_~4 zy+(jZ7bq zf)pc8mlA7}WTK@-l+nccUm^8aOE$gtV4dBIe} zoD4J@6c;eFVbVZhWKS2R<|Kk*p|~iySQ*6701*(N4r4GdYwD{SDECaboWi7`&XAm& rlA{EalTwi7;Nj)umy{3?6cLmW6c&^gQxXzY5LFbF=jP%QXO{y2_ly&3 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructurePowerSpawn.hpp.638D66BF36262F84.idx b/.cache/clangd/index/StructurePowerSpawn.hpp.638D66BF36262F84.idx new file mode 100644 index 0000000000000000000000000000000000000000..91afaca636fb1eafb418f4d1f48e081b1ae190fc GIT binary patch literal 1182 zcmWIYbaR`=!oc91;#rZKT9OE4GKc_iaY<1oI}-zgE;|E5#hkTMZg<@_5NIonwm<5i zxg|g;>V@yRTfFb4m321nT{zuwwa+!JZ7C%gleVwV(e&H%`fb_dri1Kf|DRuevB#5X z{`)Nlcw-i`Mk^I8H}&Gy2)zH^(c^!pM8*{{(;02KPmg4qL@ignQ^mM?>gSJH!m4jK zIksH7b<9UIRy$9vE&IqZpB<|-vsr3mBi`=#e!w+5revSv{5?#cR6-9_aE5eT%$Ran z=6w6>8n>HCOD(b`#LMoh)wZomvku(-YvHF$r_L@quaUaIlDSA@&xVG2SCg>JKkS>7 zj@7{ZrdXoH}icCBpfc07M2dHSk!x|JutcG?}2T%&sV1Q?aI+EysNM7(6wN$ zU%$WdtFoUT!-X797A!jH7V_d^#>%WO4SC&H%oD8{+T5-juHC-a>C>sT6OVoQQa$mk zdg|qv4C6a5>J4PF?@r$>b=H0EkIu=)yUw4xU$f_v_}>qmzqWn->#?g(p;=zUQdaTO zU#1iCYKar{7>X-%lYRlyg~ZcyDVv*q@dz-9a54xeODe1K`?C59GDt8mumPnfmNphlMy>Js?5&}w#NQ%huTd-Pifuw*erG?E)E8M88#V7Fu@?nzyM5!jQp(1)08;);!jKwVB!Yq=aS@-=htG@;s)tw z1nU2{R$C>1X7(BZCQ+cYoV1(*zZ<(74@jC7DD4^|({!LA{IviR4^Wz4l3$(QkkwEa zB+U$z<~$<#)IKrvs~8g(P?}AYO@m*VOIenI11JXsMX71Ul0aKvA;2gJ_BqVWUb@G< zcTBq=#l*?a&&JPP*KFP~ow?u@55F6u8yn1Fu;2me1qBOC@9lygx>r_&7&3D4vvII# zLhM6?7Em=Plwhi1G!qv%bPzUyTnm$gg%nUPD1>0bFoytzK_LSZ&dr(Kx2y91Wkw!; z8D$wmm@q8BfT}?O1rvq^6i^u1N?-`(Bnko@4>JuOpA5xC$;J9W87BVL>0FIJWMwBa U^YIEY@WFh_z`%=Of{cIy0G!aM$p8QV literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureRampart.cpp.363AAC98BC28E853.idx b/.cache/clangd/index/StructureRampart.cpp.363AAC98BC28E853.idx new file mode 100644 index 0000000000000000000000000000000000000000..54739948da053bf008359bb9b32478126dad3ae4 GIT binary patch literal 1136 zcmWIYbaTsKVPJ4h@vO*AElC728AO1%xTGkviHU*1lAVE}V$Rmk!2DYV0^eT$($;yK zDqMQ!TdI)IC94G4TU;6o-`-P7mOpa1Q~7q|xBKs%G?s>xXy01mVLAW(zTbcD9#vHT z^7%^UjEi|}MUG#4+I*^Cxx{gaYs^YDHH~tUc%cxoZo$FO0CqF!{-ric}s1t zOq6R#Q=GEz?9NS>+~ceoF1cTN7Bgkmet!X1C7C0>OFe#nlzRU}Ry8^(TwntKg#}L! zU0%g;%jWrVhc5R0&UsB2U8njV479GEww=#*(jBSvq-xV6#!Z|;F{uIb|B61mpj`B; z;*i^cgiJlL4a*;0d;KMd<%VSh&px9@uhk8861DbA|62I9FZQ(BCH?Jjnx(|OxPKB~ zE}j0N^|Rthpl!=?H-ol*C%p#|eN(MJhjnkbx8eH#qT*J!S>M)A&a;v5|8=;;=BLPxdjMQ_}=3SkeS|GpR!!0qps9#&t&pIoH%C{K) zd1PbNf3D)OuetW(<-P3NIX|CNktP+{lt5*MA;;t4)WiFmKr83yyeca;{ zbywNSw)6&Y>AjBh3tXr1+kQsi-LCLL#qU`MS6^ahS6V;)(n}#%H{tZ3`t4_|PsZ11 zZqhk9KkaQnrDh77O#6vQ>1~rMY~qaj{_}C9cgf@&QnXd_He85A;Mw>w z%j#Wl{YizxeS3I6B_zx1XK&iefAXDw!yh*G2h(R1SLPMMJtWOm=qNl zlv#vWl$7MS6Oct?&`nI zzgd7u4Jgek#;c^H!>S_)k_M)7hQ$6!FGRBAb_p=40;Pq-gyfY>SWUpXnSs(pscFR@ zfHcevj8b3+q#gSh;(4Sf7)G=5D6=rI2*6YUc|cdfBzcrMSUE&t&g4<%W#JWpxr#?w zh($;Q<_I>6ncexh?{gV}2AHwf!;FJz1zHaB9?V>r89-r>w_w6f2X-kHNw#lelu>4J zW$}a=0<#0C8stluYRTa3mLF&Mok3Gwl$w(W^fp6rQF5_3kY-k1crSQI56 wKr#@JoSTvZ;)*Lsv2t>;@ra4?@(J=u@(J)s2+Q*e$qLB{$#Af9i?B!o01{op+W-In literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureRampart.hpp.3509542E9A73A5C9.idx b/.cache/clangd/index/StructureRampart.hpp.3509542E9A73A5C9.idx new file mode 100644 index 0000000000000000000000000000000000000000..85a26f2a093685d194cb09a5f02494665fd83212 GIT binary patch literal 916 zcmWIYbaU%rW?*nm@vO*AElFfyU|Q zQ0|Ks?f1K; zYejZQn=vohb>_mA!+GX?2a{L#99J?aYM%UjiKUG57U|-!)%WACM?QR`B{KEcqA9-G z;fqDySNY7}TP+%`VS9SUz5M)@nOoj+`J7k1G*fTot#9>(zPCTUpYr7Ee3Ph*Wv>O# zN=xXjkNv{EZ^p_>hT_WHq`APju4uTRo49DDkr)#@8v_@M5Q`G09G9FF0|!tJ2-1#y z4Dmct6wJ=V&dR_k&L%DfCKx0c7=Vd`k(2eoW5FLYD`Y1LFmVI*bBJ@ubE>kb@-avN zWr6xvE?c^*|2F?-0VZCcG_M%15~mKUjvz>y2`HV|Kk0=?cHAxjCLW-)keHA>rwOYG zST`_TGB6aSrWLOT((C+%yhMW3@K*RdN6T literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureRoad.cpp.121BDA55F4A35F9D.idx b/.cache/clangd/index/StructureRoad.cpp.121BDA55F4A35F9D.idx new file mode 100644 index 0000000000000000000000000000000000000000..8764c8422e95069185404ce0fb200f0424058841 GIT binary patch literal 870 zcmWIYbaRViW?*nm@vO*AElFfyU|RrG3=>%y7%Jv$4e`ytZNPK2^sgve z8IOwTULFpCgy>17mRq=!%5R?yP&sx@DYDIO&zJlCKO<&~_-+@GPB@_S^M{8`kdpY# z->ug-oLQ%swy{koYbRG^)*`cv*Apt$LzX#o{XQV@R#EMK3aiuX6!8bf+ikpVIhmhe zm~ho_TjGJ8MMfJGY#pR$luYXm`@FsKi>H$8nT>3>CyC_kIk~@LvY^+;;JES!D@(cB zLf5;$_)%u_v!cAWebbyfPZs|y3G>N29r>}+?x(@I)1NX~WP{_Zxo^1q;;eagmw$rc zhg$3X|6iM4?=|r}c$3rSex+IGw$9&sqE;Ti^QUB^et1jWWncB4uq{(f7v5hg=YlVC2Ii}ASdm|32=RR=`dy#qbnQT4^Pb|5iM;XWx8FWm z@7}`g>gV?$(r|`y^|yl$G%O@0D9_fJC^UcZ_1O37t=V%9Ro0yM|McOm@_vSMk<1Sn ziYs%I?11T^O3a=yXmN3p7?ZplgCYw*i;RLSm#jDg2T%?O*cl_%ESPa;hX9ijP?|%S zLta6JRYj0Nf`I{;h!~1e(~6e?>CCeo43EFPlI`0VWfWQLS)5_QFvEa`fZPVNNiul5 z<;NL*XV6p^rRF4pJXKtjTr3V^D1ZnsU{?Id!}!PhZu$&H1%~9@lpH0Xu&9CrGdl+h fmxwSo4?mAM4G{iaBd19rQbFAmCE08gD36 z{`;OVhswH+Z|pJYmnDR(Ki%5$$2QxXSJzy{uW#;5^T)ok#Q1-|SaFZm^3jRTyu9TBe{tz5^k?_5)KidxSRRqdV5YBKDfSRedx z)XgmA5lEZz(ud{x;dUVlY4w#$uf?lxvADKb?CiIk8##6J@^qda{krevU5`o2+6^YA zJX3yoUE`uP9c;}`!WMI^@jcR6dmJBCBF zxH2~>9vG6DXFC`kf7{E(&cw>hz%IrnCJZJRBpDchVav$QS|w)B7__)JNsNh=g@J>G zpGAgUmP=Ngfdi-+2-q1T)-0HDXNLe2Cs3M0m_wdjg;hn6K?0~5Bwv)8R@?}rVfHX_ zfz7XLHt(3uT=0qqY#2-uW*4I*iZGkS%|(NFYB1IFcj^8wY;oVg$i>da z!KMVV4Fq5=0vZBx2~0K6B{_+LKzW#Ha3?Vo7bO>q17(=lzu%tjROotd6C)b~8^|mO F003PX@x=fD literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureSpawn.cpp.2D619CD6209466A9.idx b/.cache/clangd/index/StructureSpawn.cpp.2D619CD6209466A9.idx new file mode 100644 index 0000000000000000000000000000000000000000..f6b3f6a9b8ec667a0eb7d4bdc063a63f174cb1e9 GIT binary patch literal 3408 zcmb7FdpMM78-HiaFnBShnTatBavBEj>o5#*l?f|{LMs{TJS?#cwdt^5C(>Gpq$1gb zT~gULrzJU*=p2PmQE7A7Qcg=+zGrs7XY=p(Uf0aL&;9)F)9*fvkDH6j7fJ{sjBrbi z6K@M8AqYYTpQLSx(Y|B^v7{nMazW$fxcC7+wWoJ}^ZPr$kjnK8{Ri&(ANnbCe3xfI zvtR$)oHf2tr%m%G3QFk|myUgKjQS6{P+>O1@_seO0hD*Z}f&|P|(VDwSOe(gy4 zb#JEmulf!QueW$;H>sFCqv{^*L4MpQHXnPqVdgxXNwU>O9e2<=vv6ft=3s#E_=8S44fiISp2yIvu>RFrX!z$)92SeqAVMb>>I+A{c{ zI=7sE`;trbjCsEf$^J5<YY3$)@a0<3hRLb!}w~EDx4;l~`_#gCC)eNrJzgB+md&lnsd(V1j zoq3jbIr~uhu^&32vPrJ;|3ZYg;Obk&KtF2@ekYv;UOmd|*#} zU9;s4{V%$SNv5TqS4t*(OFAwNNNN|Z$f2j_dVMKx_9^5{+Q_7Gcq^K6K*#eY&+F5Hx@b9Z!lGHy}NDCef3)M+8mdP~+ zgU(yWDL-#z6g`~q?q0hl@EprAS1Dkkbk6-&;ztQ{Hb0i*>zZ_wN z-BV~ZsC~+-J&MtpVt3+>W`!LS@BPLG?AM7eX21C@%SY2;{9Ct?66V%LbM}e1zrT+u z`VX(}0BN;af@CNw?9e&arktVZI|CnoJ6Hd%EFx|DF_XIo6+#TOZ zihP@#SN(3&uCdr|m1S>}&z$`3lRJIvt9kA*NxiMz9$oCeh~Vnq!k;=l4#$b9#Kmh?ZO>v^9;o5T2iR zJ3dcOV{mjaWV2!6Qs&7`^8(SX#X*mUu`lNDPH9xcY-A-g_Q?7?I9V7xsQsVT?$K|b z6M`NkU84+oEm*v8WdX+m1zcouOiwyJ3k~%wCuXCV0O$?tR-g8 znvcpQw~=GJ`OQ8lytY)eI}BcvN@PfRGIgcTnLU&r*ukCqewxkZ7KUd_4hJkcWkqgdI8MQwT{NQmcMp!f_nE9QSE$@6Jbz;BB(~w8VDOhi8&2wx@G4Wc%4%!|};DD$xXl z7oruShout9sYFGoJ^|=^-V}}qb9E(5A{PLJETJyeLr~};(4YmY9ZfOSWyAwi;%eZ4 z!{lgSF>*1eR9_D08!w4>_eGEjs6=~kjnOeJ>^OmZ90d5k1i$nWZk9!#0Dv_B2ZSn$Tajz8Kl%MC3K7Kxh5{a>6vZ9&9gSg&bUh#NQVWb! zR77#67SjMW7K*dw*{YvULaI;=79IV&;7}38U3FZ!&?ky}us!r(<|yt>_hv&TQQVL2 z$A*PNaS=yk2nPYhL+BxF*mo!{ri>*RLz5A2|ctLcY)eW)8;&prtbd(d=w{ zH6P7{uK=1!W-38f@S1_*6ojG-`wg5xufav}I)`iD|IRMd3!RQGCltA{*x! z^K4-FY~0$|+6IOXRY3)$YYFy3@ZrNe=Kin*Pyv=QivdZ3sQ|QeM?o|{{XSyWvr{7V zB+FA+=1JCC0eXVe0$u6)g7xy1cW#UmQ!`0`a zK`F2+-Fwh3tOyWGw;dEiQh`{y<6s8R5fDo^8$>%b*Xt&#r`5=?amqT%7qH{lIC~{q z1CqkVg-${jNR7I0t>D8cue<+;N?h#e%=(>6j{w;ejN%Brz+Vv4@&<=Z0>siK3NwIx z1;o6XInCg1! O`s%AxlxZ4@y8i`G&=92n literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureSpawn.hpp.E9DC7C76E49ABBD3.idx b/.cache/clangd/index/StructureSpawn.hpp.E9DC7C76E49ABBD3.idx new file mode 100644 index 0000000000000000000000000000000000000000..973d46ca609ae91ee9e9648b9e3b4adb09977471 GIT binary patch literal 2146 zcmY*Z2~bm46#efd|3iL$l21rt1gTYI8!C$nNNH&$2CFD7VyU8nfT%=LDa$BU(Z)Dc zQ7b|O1zMGnqIE24MF*;2wQ)opT*g?$g5pwyq9}-nGW5lG!T!lM_nf=D`_9R%X<=b8 z_7tUAG;O6mDI;D;QIvwb(=*bNWtgH^5?EQhKWgUkMnCR(Lyf`HZx6l0Gx@6iidRFG zL|{2QhvkBmn=hTawdex>pz7s|($~4Q1q&E;fHou~WJlW0voZ6u!bY`|OVPT(UH| zv%3l!W}llYMY~orb;^{s(#lEEhR>%LtY0@P_fotx@SbZBI6nf9sr^>S(6p3~QQ*Q`;R zlN%MDj3nXK&3%X32gVe)mGA+Ih}8aveS%LCGQC%qI7J5hQt|9=VbG7s5BVIAv*u2Z zjIM{8{WF{{@+|}VWxTn%>$BdB=Jd>>N6muNVsGt8zgOa@V@u>zdX_$6GttGhrp5^M z{KaBBObaNs9;xcldvCueA}8yU)Oa#>ZNJcg$4Y@M!sa77AIX5AN>s{L^(82ItgyUA8GJwkwU5*?e|BO7oRCg|`gvUHI=tgw+Py^k7DgoExKi|0nBchE%J8(;E zUm33OyQ#tqvkV8XNs4=$-2d)^uFPVOKTV8m!i^xzKC zk`|{=CV-3z`mG%&7yGKX{siWaAcd@cfHEU;gVnQKQWp?@91|ynDF7C-Z|pI&cdL#7w6QR1^|pq0GqJ@0AmrrW+(t)DFm<@2_~Y_l2YPF6Lo+v2LI&Y i2ozA$(-PC)=tvA=qA1bePt3+tUQC>r_qrX6#MFOsjkcx$ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureSpawnSpawning.cpp.0906078A91D44C73.idx b/.cache/clangd/index/StructureSpawnSpawning.cpp.0906078A91D44C73.idx new file mode 100644 index 0000000000000000000000000000000000000000..04c8438a1d68625153acd349536bd336262eee19 GIT binary patch literal 1536 zcmZ8g3s6%>6kP%#gnW1b0^t$N$6(%5K#a;$L_i@Z3{nK4f{KI0R*^`}hk_p{pNg#& zD9E6dS|w-)(V&Pa29Y3+!jvK{4%KS4ewa}NY7~?*NV{ogr=9N1o4tF^y?5`u=WRlC zRMaFLfCyD|u6nC3-2njL4nM6lZ{6cbyqOvyUVg4)M=)}qg496FmfUrOHdrP=4YmQb2-i$cClo-)k zj4CR1m>%>xu!gH;#Yc7CE^0b^V?k?7Uhg3=ojZPv|QK}S#D9nVyhQ3F-ahg9Pi za&%zH+pD^LF`qsP(5#8|+?5!g95WSaH9eLD%k*#RBM#&i>tAvWi=UH|j)@m(sgc{5 zR(9sFqv*QNgYn~+_8JCuAl#rg>y0Zv7I&Wl~(RjtZZD zw&9enB_p*xJG&`YFNfTe= zrEJg_4~CmN`XUMsthipZuzD!Gq@}p+{)(*SHLR(5Ubv*OC@uKB?qu&54cEQD_Xw{} z^-w)u{p%K|`@8$&@X@+cJCboOFMiXKEM<9lo#9!9sWF90)C?L+)R7x2Z+zIL`$(`q zjqPC`o+t}7FeYk~5{t$wsQvOMX2zEfW=chTX>#W$K>Scj~?)a`8xKiS;> zz>vGXy8A@HnvRZpXCAIndcw4HnpcRXTmLs{Jh4FN!`~s@=V*LOn>iv<{B_ zQ79sBO}&X~G?kggqMusIgXU5nGp88!3u1QxZJv6|B>ZPLJ^j4dY1v+9jOHr^B#UG% zBuH0M2%I1X*YKHZ);S?RFUM$pkj8~LNrcivU4Z}qdq|I5F6^4=F)A@y0Hj57ksqPN zlzba)dla%J(M~sY<`InM4{1_JlEgatI#-ljMTnn->FtkVw0V%`3;8mFqEj4OG<;nk z@WQ}8lDN{~L7NR}hJX=3NS&o(6ipRStueLP=P}w`NMkaLAObmoJXz{gSJY!Y|CaWrE#DRL3{qLH#m znS%^RU9d^gfyB`~Q3R~cCJDM2g+kaS1%f~Ee%I_dKA^ONWv*nbMn#(~EWOfjHyy$v zAmXCnM5eM`y%j5iFh<8%sBm;O%x%*VK%I9&r literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureSpawnSpawning.hpp.CD0AD931BFE5558F.idx b/.cache/clangd/index/StructureSpawnSpawning.hpp.CD0AD931BFE5558F.idx new file mode 100644 index 0000000000000000000000000000000000000000..01e90a9e3cacb235be63f2be5722c3cfe06ee501 GIT binary patch literal 1084 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureTerminal.hpp.50D5C6B053FEDE4E.idx b/.cache/clangd/index/StructureTerminal.hpp.50D5C6B053FEDE4E.idx new file mode 100644 index 0000000000000000000000000000000000000000..ab0b882672d6d85e86e31220ef6c8908a1c6078c GIT binary patch literal 904 zcmWIYbaQK9W?*nm@vO*AElFfyU|9J%B%{`lide`DtWAo z)=g-iQEQZXR?xbF)iQIz-f#}P=7hY)z>FsiOkNJRl$+)5Ub)c5zMf#HZE#V6cTLqFrZaVOFO*pSHsCZCn^G&b+2=>qeAc6@ zGQMzHB}vqLn?1vPx+Bx%(o~7b$C7S1tM0zst>CmiD&=8}x1$tiPs9>V6N~soyMM2p zI{9_&?2U7eO09Z&aA(AvaQi)zD|UyoF1m8bEIigH!!pL7Icip6_q*no!p&XQ&#cbw zp4)A?WTR{OnrG{nO=~slS@f1a|090xZ14IRi$A>K`0k%?cIWZt#fv5`d*>s+;@1B) zucQ~OQfyM zFzKL-AGRjP6kiK4al@qb+4Xr~(hNnZX~pV5cX;U@_uet>f)pbUhd!e|8%&$bL~Ds4 z*@9T0u&t=AEX*>PpP0D7eyM9V@0iY9@QQ~64~LDY4HC~**;W%K2MahxNpOI{ z?1cpwP#D=cxjD1@c2)kr40Mi^qLe;NHOw%eYEZbrgkb>y6b6MCOc)qmIf;TmH^WSW pM=wKhQF5_9$TyrYFEKE2=*VVW6+Jum1v48vCj%Q?f`J{u1OQG|Coup3 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureTower.cpp.469033BF734FE09D.idx b/.cache/clangd/index/StructureTower.cpp.469033BF734FE09D.idx new file mode 100644 index 0000000000000000000000000000000000000000..5f680c58b2c203044d1519f1cd73471a1df64252 GIT binary patch literal 1458 zcmWIYbaPw9%D~{9;#rZKT9U}Zz`!5^#Kk2=nOm6{82Y#v7%Jx64UNseY#{Pg`%jn0 zo`$Z+x%wVcwE}Nl2;H#7YZLE0rRzI=&rGt|G&k>0b>5`1*yW`c4CUHFR(|{YY3K3d zJD+U*T)0qGXYRtSF)@~RHpVPZkX^{AC4N`*`kosRi+Qa2lcyfOJw?r}d2Q)SmV{R_ z!J$m&Zr_~#y-%EFqkZ?In@iub&d#-wcUyip?NvO_e!t^|COm3!TYBgJDm3__9+%#^ ztkL|Qm2G{Qo#jz`{TVg&*Jbh<=A5~8>WifJ6oYk{hEm}xnm&4MGGBOgt3!{#%Iphy z?SH;%x4(INKgUS!$%AXZ?|(En$d`M2;h}d|gv>7`O!xhUvdMd^7* zF6(1koTYofV$+`KwFU>oj`Hmbe(=*#>#V^;)qB3p)yqFKXz6{OEVAnMmFXv(+V?zc z4Em!Qwa(!(Qz8GQxc&M6ZL6TMPmHxx6^TDmjp z!=B1hHmuX0uWnk$lUw5W@R(EP60P3dMr)TIov09!Tsd#^+m*{E^K#$&C38PN5qDj)`ZhyxWp2_gU@DfVr@PXQ(sptPWfpp=Fot06Z?nh_{n zvbk6&WW%30h_sl9n3RSkt0h<(m@^pkucZ6duVX6|V^Rj{<`CeJ(@^44l3?Hf$^k*x zIZ>TO$Ao7JFlhm$rA4GAG#ptSIYEYlGTBDvN|WoiId2ItX#=GdL=>bnJXt-#h6A%B zLs4p4@ob&T3%WOW`&pTaqk_|E=V!*0R6_p3iCCL zW|RVZ{aCeX+ooSmZ(wEsg+X413B!B~6b5+}Cd_6rvpYZceJ;=eVv1r~FjYL73W^F^ zFi*gO0;m@h4luni_W^}L{)Y)W9oVH*B-y@=QAU%)jl&D3Su%LL<;NL*XV8Rmb7uGL zs{DT$=s6A}4hNWOnAJeDL4gM|8%DDORWoq#!BhizNbUj#6B~~REO>w+%OWTQ3l*R@ zS;T}8-jrsM7J~T$=xG)OA(+j;ILb)`#dL8|a9;h26`7AR^Ul}8=SH1 zcF)c9sq+@h_0(I?Ad``sFk#M-?fS<&W4E8qYnb@Ou4)Av-!k_!3op6eo|%3h-F8kn ze>0eU{ekmr9nOr+i~%fXpYzEi?q}u^GgAE`xyVB6`OoH_g4-qmCnYv4&@C0Y5ucg* zz(^Rr4Sr((|>j?tT(apZVFxP^hB#l$1kYjaKRd|GsSmPLk7-2Oi&^V;^@WxDy^ zkNMS(1K)ms-O74yuCJr+$`$Kef{twMW)|gs-20`v&ot$)!RI~i%ilJ?boc(XaM514Bzn?@mnI-}!0+OkBXQ1OawUc1<1z z4hUyI>wiZzvvN-XCRUiVA*&%bOuA%qu~5i{KXFLXmaLX=Y5gndzV++a3dNXMV7isK zlq6uf!_JB7EIKAUQ-FyBChf@T$O)6)$Xsc1{Wj+<0VYnEv?r@4-0)-7s%@KoIlWQv@n=49t#wQ>Pa#ifSb)HS6=)JDIAJEi z+zu251tUy2H)nR=uFC(H8F|>H<)n3B!Z5>tszIR&6Nb@DT;R||I0xA#^{?$sR$BYt zFmkc8aj+>vk_rPbymJx-fgG5P3^2nOii?tq#ep(R>?t-`EIa4D+`!1jzy{ODzyJV2 CwMWtb literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureWall.cpp.EF38448006CEF8F4.idx b/.cache/clangd/index/StructureWall.cpp.EF38448006CEF8F4.idx new file mode 100644 index 0000000000000000000000000000000000000000..ea6fcae951da432948ec0865cea22052f0ced78c GIT binary patch literal 706 zcmWIYbaUIq#K7R3;#rZKT9U}Zz`!5^#Kk2=ne!MK7+wMeD&}kr_Vs^kAn^77%45zu z6x9s`kJsS7Yf)d)cnzmdzrhaJWW`30> zcYT?_-PPB#LwYX+Ub@IT5HC5%`&0BGCXbRZ=CJI12cafIum%*VxN}$%l1oKj_dk|EHKavRM}PWx8C6AGZFbm zlRkbDOn%+G_)<>H!;sk?ercCJ*>|0>ZmcW_YE_=oGZpLJR_~XLS*|V9{{5fof2M*X zCo799bCcwOvBhVc$-jH~IS?pHO)G8$(rgwpyYqA3 z=Q8pruo$pd!n8RZ*rik?*}jcYMuEki#Th0HqZy^ZM*iSwkGl2a#Cgf!?Uo;B_?g2I1?K?GpDc+7dIcb7&kAssDKO)zZAbTza%RQhajT_06;DwEdT%j literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureWall.hpp.68B809ADEAF6EFF4.idx b/.cache/clangd/index/StructureWall.hpp.68B809ADEAF6EFF4.idx new file mode 100644 index 0000000000000000000000000000000000000000..8b9fb4f47345a3431580a124c46ca827bb12011d GIT binary patch literal 536 zcmWIYbaNA6VqkDi@vO*AElFfyU|3h?&k;N2{m6gIwvyi| z6)olx6)E~@sW(nBJWK6%UG{qSTy3K_naDZe%DfN-h=$$}q8g&F=_comIik M$jZP9vy*`V04p2EeERrG3?3W|3>9bi04ut>;VqS15$+^nZR( zpsOXSKw=Gp)>PSlHqJ^L>Vj2&&t9$(YVhW2W9rglme+T>pY~3O(&ve_&`LU{vBu_# zU*g+It+zc|o|W$0xA=2R_OET}&71&G$Y2GUrCGw|;x7tkvAQ z>2uDWwb9T$KU*g4ZsfsBYqj`&7mMC-F*#ewA)#&`kuhicfwNWGYqB2AeQacQdTG&| zGVz#@14+I*i|&iRF1xpF*W1RVPLE$l>>u=BDwuLc#q8WxPQM8~X4Cqu4=$f~>dxC3=cwfKx`Br$JVqERA%X8TC7O<-n~X7J3sLC|BN5nD{fwo$QPbvUUO5c zpzU;XHhcQ_XOF`F+tsZpKfWRIyU6wFZ^S;bWO#D!uKXg~d0Rt;Z-?mB#=bwyvA?+0 z8Hy`&lVXACp`dxf{3WMvXbUh&h%-nD%M0sB^78UZF#wYX2n5(>Rf&C>W-q{`36xf{ zQwoz5&=GKfNne|0zkq+i#VrC%T0m((c|Q|LL0&;6m^4FCYFhCnU}`&XadW+LT#Ym% zkCeT-y&23@nB|O8V4L4dMYa7o!o3M54HO312ov6QfVyhq^3Gk&KichaM8oox>f@lL7}e%r2(`yOfF~+qVIo z;w|7U0y7}y&gMf-1<^Zz{xMZDHG~OE25-0gIK%G@n(AZKs%@KoIlTd@cGP#Yg{kIY zF}SL_YW;tpu$8)%6->A&H7602K#Gf!i}!;V3LpXkq+tvO26+Ti4#8AIFl7)-Wdu_N z!Bj#pWf4qu1XBaSRD?5`rJnHfoM~loi{RH#myuSGm6uaeR#j0`lw^>ED`HSZFq3mr hazHWy;zCSp?980}d^}=Y+#=kf+`_CZ9K4Kz3;?qS)Bykh literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Supplier.hpp.7FACFFFA2FC16D8E.idx b/.cache/clangd/index/Supplier.hpp.7FACFFFA2FC16D8E.idx new file mode 100644 index 0000000000000000000000000000000000000000..87051ce1f79e021677524e7891342fed2a7c30c6 GIT binary patch literal 666 zcmWIYbaR`;#K7R3;#rZKT9U}Zz`!5^#Kk2=nNxvuEF%L$#hkVMj@*X~c-($>pV=EO zYQrULbIQa1`m1eIw#@zUUUygQv%vg^wx2xC_?>EgDxk)bSaNNaX@*x%Z9~}Bo@0t$ zT$T1tyO-~5lbhDDhesj&x}*D4X$y6)H4Z-cXNo=+Pdjv?ws65)cm1cm{U7D`ZhrB% zJu2wmuAc1GhyN5$-ddp76}(z>R!i8;^>Zp2+ut?)WGJr8O_~dIT|x7N`AbgU&=z1~ zVPaqxmKWAx<>lp-V&DME0YQLmR+ZS7Y4!q496)I$JEbsI0UZGsm~^h5=dw4~&rTC# zVrF7s<>KHH0246j_fk=9e~xf(VrODzWMF0IViy7v44h!I8ChAcO|xIXzu@8)0VYnM z@qY4tCai+If=V#`3`MDF#jk;ig{NApe(F@_VB}%tlH!twS^GmpOt^FL8g51zRxV90 zeV8!JPmGdazrb7p^9xWI2 z#0B=4?Ng438E2X}fQo=Y0h5Gz5@;{Tb1-41d3Esz?`1z=9;>hThM=tswBM^sn}W zZxV^O_W5*)WJXUat;`TNeYefL`@qq(tp}OsZ2AB9oc$}8lb3X3)gz5$%J0|K++nm_ z{C>LM;jTEx1&YkCnoAwta;e|CoY1Wr#pCkgg+j==3le+9)?WX_e!^j?sbj`s-&+b6 zAGQ?<)ffjWh)m^MutfUdN|AH6i_&|aGiHc6y=+Fsr>x*#y?pV_<1=3CC) z3n+51$f$gunc8&jyG3%Irrck-(qK{Vg0p<(O48SZJxv)l&b_kHeTS%nx#WzrYpWKR ztg!W3sd1}T=Cf_92$$R@3E}_K0#m=7=UNfga69g$U&r&lUEMQ$H<;Yv_VZgkizE4m z=JM+gA`(S=E*)&xaPn-*uaEDz*gcK*#`WZ4PT>`!aM(6B3=or)zHQjg|5L_H@#Q{99{W*NJMU zy4@(B$vs&}jq~;1U5>98{9Vi+Adtpc{YrM(7U{R2+)~eaE&ua6DQD_BuDa(3Kbma! zo_PJNM$m)GeR?-;8F&6Ns^Cc2v+bCB_WcMcIj)tz6h6&~k8=^fXqms()BN<;Ofo3z>Gu-k@M!Hu3i-HdpCs&t1LNNZs=D$E`cs{jJ(%bCstwon{gjnxcK` zAAeei{L#%j0xC++uNKX-*^4m!`F<7h7%XRlIIYNyrjtA{`XLU$1lUoFwgq^6Gaa_V*Rq|+q1{N#8WGn z{xEOfPN%3nRt&mxoWZtwrYWU=hW{Nl>oq?^EWDc`eQ z@Zc&YaWN((MFvd{ZVnL*H7+$_24FG;fmJP~&kIA$T?Lp_fYLJjG7=irtk!%C5)2H? zKxqw*H`DoN<^>8c=>VnG1l7beJlQ>YK+=pr>5cyCi@0xRGZUw}y)C@rimY^Y%(YoZP_oS`T+t@tI-75g_IUSB^miHU|^kC=7}Wm@rHiP#6>mFkzS{fWn}_hY25E5s=60 z#?gXiWiY4f-rQ7yKA-~?SrxfqnwL1=mUTMxYc`r{SReq+2E`oAY^MXel!_$Vw*ggi zSa8_D!s7Tk&fEVd^6vzi&7r|z1QUkE0MHOn{K5>84Bl?}afaU+G(&(fo|6bn7!1Wl z$;H+nhAN1F01X&}fmyS4ZJU^F+Q&o|4OKOD26ea$gBpUFoSTxP1msF6NV9Qqv-66J d@$n1sOYsZxONuB62+Ik}3(InH@QAX?007LDFX{jQ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Tombstone.hpp.76921569AB9A4B2F.idx b/.cache/clangd/index/Tombstone.hpp.76921569AB9A4B2F.idx new file mode 100644 index 0000000000000000000000000000000000000000..c9cfd74fb6d2a11027937b687a7fa073d07bdf08 GIT binary patch literal 1230 zcmWIYbaOk#!oc91;#rZKT9OE4GKc_iaY<3;b4CV+K2`>XiaBdT4)$F(5coQ^=BNip zVK=ML^mzhnS{@uwnk8TG_T;hMTh%M(y#4lmro~MY5wQ@5t|=CkpP!xmTpYrhUw$%~ zTi(F=oq$EK(}FOud5Xa|PR{Pw${_qq(KUl*>)e3d(OV>Sj^@;S`MAtLB}HnItDbiI zu}0qxTN$2aQ%zY`%TI<%C6?d!T)Z{$=`8NPY;VWe_g+6gduiW^Rr4Buc@}*8)|c3E z^Zj`f@BHk(8Z}$K#P*dwJ67pj@OBk#YFl^gmiiXf7U%YjYt+Q&xRCVuZdCR!E4_m*WTY937$ zBFSMBSFU~)av&kd@K{R85p(Be_CL45{R`jQL)}MTk?5#QDji%VM%nKXOFG`d7B;=m{ zC45mqEMEd^mi0pO*_SUjO`m>xvsV1oNrG2@*?M{34Rpw~kqM~xG}*Lio~q3~dATk9 zW%d?ViiQ7XR{!1k?$udkn(#Kg|T!N$NV&nC|g zCKx0c7=S5(k(X7zXS?9RRZQYyOdRYCd>q^yBD`u`YQhX0K+Qm~s-^UKVTie_023Eb zT83Xng4deWnvX$(fq@w)t-+v=KxsvBMM+*KUMGH#Zcw_-*wb>i{bJk${dWGyaH?j+%QG3z+sd`QSGIB+!x% z%B}w^pOK4~je|`V7#Ls>%;~x}H&vjIk%!lb&4~x585WK}LqOpNGvxR>&fEVd^6vzy zmY0-Qh6%%h6{s2%oG@YAD@D#1wXeMfhL9kepa3j{ic)hD1%Z~s41)(ZLvc}Zu{Fq9 j{9w0%2qxat7jE17*aVH7%Jwho$8(c$UvasZ~C_u z8RkoI6D)F^w>`ZeCU_$|?Yv)|HF@L$go_R``f?T(b>n7X&^WSV_oHQ4PL~UjA z=Jk@8HkWVV;^~3k4C;9%FFG;rbBWcwGn=L-8CB0p+wWExD3jfkaAsOYgJ;gQ18QRb zn?CeeCNgGi7vtu*(iSol)x9jfY?6aP6>iyg4L3KZ$Jg<%W-NNNG^>=|B z&q9wCtnIy`4of#3exL5a5|+OzrT&x1(k!0Y)*IGb+3~>YdqyRv&+DlRwcTAiBwBmh zPid}+*;EwWd0~&%ZELIZThso=UGmY5D7vcDK70QmI@5wPO^ECHH3oGLx9HQ$_dZPcuu_hv zqeW`&r%2Xqe-!c)H!~)GFS&g3+UW_mt1F(rdLnks^S3P1yrkO#Q_Icgzh+u3t5hJj zvyo$l=AzD)%GfQ}CMHbYw&Boa5yt8H^G{1G_|S3e;SIMRYI@pNR%~DKwcg}B@0B;7 z#RY|DU9XW9wK)9s;#TQ&{%4Qe|0~w4`93-E?lqC?*WZLaWXU*beD-HA|OBp#$aGjKrlfrhXQpNgMmRB!IVWXRS`@T1XCH#WR`mCRD8kPE5BMmQ$top zQBFZ#Sw&4%U0O+!K@P5pK?A|mL@<>QOf>{k62VN)P00aq1;mAz*w~pl`T2OnxVS~Q OMY)ApSvYtZ1sMR$PC0`B literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Upgrader.hpp.A02E6E3404446D4A.idx b/.cache/clangd/index/Upgrader.hpp.A02E6E3404446D4A.idx new file mode 100644 index 0000000000000000000000000000000000000000..1dd24f631cbecde7d959f60d68d685d420eafeca GIT binary patch literal 530 zcmWIYbaUfkVqkDi@vO*AElFfyU|U z3|?7WnVS?3w4EvSB=^MpEI9!t7N9#pfR&e*SBilH!r2*Kc=E2?*?e{;W<~~9b}n`y zFu}kHmS$vS%`w?GThMghOED&9CI(h64lV&O0n^V=l$ut&7pPcxs`XX>#eqgki2?lmxp5<_Z|i#07SR?Ng438E2X}fJOrCg-O2k z{@{4xBX1QW7b_zNqaMT`3=FG-b_+QPiLPeiVP%(LSAwYq>P4~_W8bU#nG=&@-MIJ7_VbF8t6y;OxOP4H{PW%B+VXt@UYtuW ztzhHP4LD>Y-OCYcqq}JL^lJSjnO`K@Uq99AoOdbo(}uo%I*&|jV?TDOp5Dlyw(%Zg zwB#SgLy>8%j4R$a>KdH=>(;8J8oczv))w!)zdP>lFV*n6e*1aQzptJ4-zw(`X>o*p zTV5I<(A6TfAwrrlM9a9oy3HZs=PILbx_p7Fb|vVG@tiiv+tDX0HIMP~F3pVOl^+Bb zZzvClYF)}JRegcu?CCXo7njClo6TjJoN&e}_tyC>w@Re;`>g1l{ME?kS+c&B<@r-p zCbRlZ-n@~Mwe)G_=t=u*D`qMIt3H}0{@;}A)Y4N^ylKio0r`{gMNk*!`4o?wjeqOYS-SE>DbcuKIqfPmpip+W(hsuJ$i&yUNF0@UD`PIpJEz zQHL4NeY0%^a$3VI?{~5tINJWsg5|{bGl>?<#Ma48dzyVk^2#s!dFMp0yf`nP=#dfg z@$P~HEamFg*R8dj)$M=T`v1n0>20CW!7=fhvj1>in7|VgZo_FFr)Fu+dn3->B*|5$ zK>1VL=hg3<_A{2PRu(I+%uU(_OdUT|#DqH+ui+MBk`QN*5|I#*ljP;#3tk`j`Vl6)L|oG@v#g@^hd zzff-yVA26f%gM?qN(%4_2*RX488c|C{^igiz@!V5PLNH|l$79=kc3J9w5ggFnf&X5 z0FxF_+QrhvLsDE*+yW+Dl$ur?0!-J!Q>|4$bt-c(@<@qji0HyR1fvL4L2=gbCjFdWuI$T%^>}8l3CdZ@uAsps)jng9uC*ri%j@&H^H0uR!@wYi5Y<31H4#iD1XB{hR6{V6b5n9aG6Ld4Ol<7Tocw$| TVqDxJ+@jpVtSlV7jDidRF$NK2 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Worker.hpp.6F205FEA875D8531.idx b/.cache/clangd/index/Worker.hpp.6F205FEA875D8531.idx new file mode 100644 index 0000000000000000000000000000000000000000..6826558516b87e6217477bf044f39df1f8b49645 GIT binary patch literal 916 zcmWIYbaU%rW?*nm@vO*AElFfyU|A?46 z@V+?n+9LZ?3wkDB_uT!Wv?cWY?xlBj`7N<%4(~Iqxn6I-MLl~nLvdwpk|fZ5KUBno zI~T9v7Gq*&0y-H8*mya3`4~7LoXr&J|++eC< z;l?P)1`02jFf6=)hJXSKCJYNFpdp~}feFLH2Pg~*7nm@NX66EihwW32h#6;^IDno5 zMmtQBhmDVuj~~Vhet&U-1Xu3`U#899I;UQ7bJYoKl z(>Jt}J&z|w&(faA2y<}3E9I~9kG?Nwg!va{1jBo&sJ1^xxHrLUW`N5S7bO>qgMyD0 V7KRK=Y?j;Ymvi)4oML2U004e}3@ZQt literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/adl_serializer.hpp.DFD7552AF68FE10C.idx b/.cache/clangd/index/adl_serializer.hpp.DFD7552AF68FE10C.idx new file mode 100644 index 0000000000000000000000000000000000000000..213e1f74f51c30bfdb69179d3843a7ffe84f7a24 GIT binary patch literal 708 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� zUnsR%$P%Q8`h#TuL6Vr8dsu37m?cQjCmNNYm5LXf6ryfWj15X};I|K6xcDz~NfCWX z$8MhfhvE-6WY-N@0dI$>6^g4uQD9<+mk7~;h<6t}+AZ9o$A+TCF=-!Uu(X2zyAOsqT*8A(`i#GId>j_m{u*V_{b(j8JzfVm@cERxaQMEZ~MR zKFzf~&73J;nCh|9+;i+#T;9!zZ6-bikS07laDPE zi!85z&*BSeMiek-%*W#jtdp2L(-x7*oHLp@WE+=ho5b#~M0-RcbJl!8&~b_ON#MNs zf}jzl%z5+ixKbxd_Rb*@In0@(@4_JCa>yihKV}ON+041~1x?3g|mgRNTZSk0V4UyyZtwK#>{zYStU19J|2LDz8&;v^=| zmD}dB7Z>>+8+tNVejc2DUl2ATp9Q^r{7k<5B9kAL9Y^ILSoP8VQQDR&o!O{6rSv_e z3XD;E5kXt)H#FAIXPr<4w(U0 z+4nx0$=SjTu(H1Q(M+xuX24bSy^m({B5?*>HQ)PaUaA)V1y{jKugc^GaR%dD`Gs8h zE$C(6`)H=-%kMBgr3^l$JO#b#@xS^EdR6$a-dx_J<~r@w|2wtu^UTQ+ul4VClkP!$ zDtG);j)5~o40<(Jiw(O)A0m0i{7f*L-j6Hhe2L@TzkqeXbM(MvyL+ zCH;^T14a;fj^=Fcb7=e6^zQM$e~ndC=n5}%^@IuS&B?D$^tEQ%o0Fzh`u=#}S_A~N z^zr?Fq3}mQfQS9*WqM^!fd2=Xs)z;v literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/binary_writer.hpp.0EC7500F2801D410.idx b/.cache/clangd/index/binary_writer.hpp.0EC7500F2801D410.idx new file mode 100644 index 0000000000000000000000000000000000000000..3a740060c85275c975892695b15831447f3d248a GIT binary patch literal 13592 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 ucZg8IbV+ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/byte_container_with_subtype.hpp.97C866A94F13D654.idx b/.cache/clangd/index/byte_container_with_subtype.hpp.97C866A94F13D654.idx new file mode 100644 index 0000000000000000000000000000000000000000..d0029bca7a042d67165d989d16e5e84468068831 GIT binary patch literal 2060 zcmbVMYfuwc6y9AT+^j1kfF_ZUmnITL0t!tmRuG05v0uXNp7eQ`{&gH>$>l}vekRSUk~a-Pv$J0Q#f^%(``RvRrVvT;?%4y zU&J5i?F_b*?uy=cseka=t?7=}cbq5+Eoe66FPR>4Bg)0g{KK78Q|q8aS{~G8Z0$T> zb9=@7H>L-k{gbYg#@&pYbh9Y=Jm2|Y`+@>)LT)2Kg;n<@8dPw<9?6Sn^{}H~Q$SWl4Y3kL}$>wLgCNeaph#pES8m zsJ*5zxz;{tY5Tn{^RQ*f&>3y_#4kM;NjAT#y_$O>qf2@;o?6(Cjy*im^tNvC+G1IH zLR>ED>HJMLuOg<~DQ2hqaOC~4A+M=>Rc^xbwTG|IjepVRxc}uQ{i^Pc{Y;qXXH}3n z;nK6K1zWw-`@K^LJXaEX$tYIu7P(b1v3A? zv!>#ic3Q{N$q_4nJ}~vn<(`eAa3_lALLiZ&NNE#<#DT)LNi<5(Hm7<0@o&ub^J<=2 zj#vTb&$T|UYHbRNb*7xL_cBsgMvfm|K*hhMI!8+Or3)xGtYYSy-E9Ks;v2^_YvOs? zb_ZIXR*qN!bm<|QKD1t6DWDj9dJE~cg_I31pmOoT^{0DJZLbkfu2?02A0V^|pd;@2 zE7}8NP75eUOqY=S5^~(|0xG4Znu@49_f9)gW3Wm&$uGw$_61b74#vIjnH|_*57U$9 zDMzdTx^m^Bp|+mJZUNwDNY!IwG}CKnXD&$PX0S1klbt9{OZM)4*uT z3DX|5hu9{7Ceo6Ut$*Qpg<6xYwi-k6pvHKctu1WBifCI+Z>DC1G#BX>L%ZNeb$C zQlySoFM)}dB8^O=;*c&?w*i8YB43%W3J}Z&zArlyU{?}dKclaB!7u;YF4Pt$jGZX3 z3vGtov6BSbFhnl2ZFpcCx4XY*2!zNW87&iYNU2f!!&Ko>n5SIKAr-9>b4aaF`#>`A zm>AVD9MaGlF^9Aotv^>oZK5`XLzC&rVh-sPIv+?PgLDbHH5~G#eZ_#%l0Hvl|IDpv i%dI;0gJy;O84VuyTP#FYAi{cbi@J6MANui>)gd*0WBLp0= zBP9YV^(cz>F^W(HMS3V!u`M2znc~oh&{0dTQN*@X`gWaf?9Sw$eeeCh_kH`m-)?$J zaDbYfW1H_M_v~Ny;n{Zmh1TMu7ivf7)mc08--!sx zDAhfWJdm-lBgWHza96{(n|2@hy{&QMf#CDbn(yw9@ITq>H7QTB;n2ngFZa@0D>o

$gv=-+NznZF-?)+8X`LbDf1P zd5LG;x%Sx)rv!|vTz~ZqUHhAT|BSju*FW_?68>kSAv>UVCi-|TH&ab0rU>dG0|-G6gdN&f1t{^13uDm4kr*n!kG-^%oi?6&4Ag*N3@-zJ@> zchFvv@F{ObPnl-sl7zfr{a+efWRaH79dB|!zPZN2bSBQbo*A>QcS36KvU5Wd?%a@< zRozgeT>02xJvFE1qG5kmQF*mi{@!3 z9(LOK#IfBK72mQYF7>03)Xsk+iaK7Piiv3r$hmG+Hlh&P_Q9-;(ugxWn$l=VtI36f z_(3Wp5Rpa1!#=8{^ogT8a{@$ESP;Srp+e3H^5x7Z>T`8d?D+(xh%#vrW@yHr6D07b zU&c#r-Af#}yGSdd)Wi@?M+b6(1OYxT4R^!4HZKUhokdgQh{41+sX0LchUJe`uwlxc z>^NQK`!p3y3>J+goD-yy@MWAKCM;=bklIryqU6LNqD2x;kV?pta)u#UlZ|rLSFkAr z*eo@hIDu!V5rn&&x?{J}l!3&@@?&M3AeBEI!o^p3RvgwnyL^PLz!zJk)*wzGUi;p_ z*oN4$lTu1gj!3CjnmB>w(?#F!SScQDX0!X^2x)|g6IeF?aB3_tX=@9nLUjn+lr{|~ zuv|9}8$3R|FWCl(v7WD2aRSTDb|2?;sA3` zIat6=$~A`CU{Q?2{KE{dM$zMk;>t$#8{zG7~mkqSgBS916E>eWQ=ln3}BHY zXF-H4VCJbg_F!LNkGNUzzzx-qQd!`jasiIl#v5P+MeL}U;} z!WltEA0Y=IxWyPtunr(30IT)kurV1~^@*=W2B9GkM#~oQDz~}sJY)Nw%FKbj!$zbg z7G+3UV9#IvI{8|_*9^gFK_?O1Km>wB$XSr%B(FI_N>*N83b;WO?tT&Vn%g{FNGX)) EKOMeHH~;_u literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/detected.hpp.BB153C6A8D459B62.idx b/.cache/clangd/index/detected.hpp.BB153C6A8D459B62.idx new file mode 100644 index 0000000000000000000000000000000000000000..38103643d2885f8a43126885d52b239b807a0b78 GIT binary patch literal 1022 zcmWIYbaVU0%)sEB;#rZKT9U}Zz`!5^#Kk2=nV*34FGdE2iaBd1oXk3GAkg+z!)l57 zW5vvB!F3Cle*bnQTj0`?FbQubZ!xD|Z$cm4nD8js(cn@1KF6f9kG6<(rS$xfH8%>j z3a=@Qy1OO(*6HLwMQ-s=-6wANt|Dw!8oRxQqxQ$@pC)C8%5Ao<*||9EkN$>7pVw$c z8t7i05uhr5*NE7E7eQY&d- z5O{s=_x~sFP7PmsS=RKpLFtvluhz;$*g0EO#Vl9w?aFcCG~CcKW8$&=8K!GDOKg6n z_w4PdImZ>eAGXGpZJfI##%$Ak%@5qIDx2RGSLP;J0evkL_qOWG>}EzWCN53}7G4%! z9x%bc0Spx&*s#qa_{mINDTp*b3qKDFh=55?RNlqBMkHSeA}zooz{3I}VA7ldLB}k8 zJ8Za_csUqYq`9O8!30ctl3&XCMD^a8;!J!%yZKo7SiuBLdZAM$Q`N^=OW2s0*%??Q z*(LeG1Oq1%(A^A-EUax;dNcX=+}_T{#06Bq&CbmaCKx!uP6sMrUG<{+Ovn0@0!-XM z3xqg@1i=K%f-P;6w(U?}bpawR$SEku0wQ42y`si%83ayNXvPWJ z-x0{;F}F$9wy=3?vbLu_b~}sieW6%&&9(6sCv|i0%WuD#jF;$6KIGF#8q8;kWO-m! zmHHnG&*UkK`8OAy zJi6*ro!(nQf<}g%%5HZOu9o9|c>C)vhn{M)BTd&+FVaXcFo@Yl2EJ!1Q4+ae7^%~t z%gJ~BZC;R<%p-jnp{2s=!89;w%18WKS(4;BhUe1S>a?cd2lbelz)!o|NZh?;_A9r# zbQ)S|+V|a9E`r!!3Gwaj8U`)$^3@ z!yJPPtIy8gw&xSkD>y4DLcsoo{(OsceECg(pG^I4-3>2{11H(%%6$ks;{qZUTb4tg zmup*}nkG*_Ia@5k(liu&GmpcCj3Vn>>!9@R6CG#tO_r4^N5fa9WvGkT*S7t=joY5;kaTFum4_#F|`v(%yf2m+o$;AsI2A|=84*p zI0HtxC4bBKJ1x0hA^4Fu$?flCdGMhV${IC1OzW$r5ar}JP}eXhsmx;OcURTSw88OZ zWP}?%`i@#M;8}wSFOYJl4X0v7J0pmmNLE`{AgvL1+8snOPG|L)S7HM=10$8v3c{6K zt`&-3OZVp!N$Y*KfB9CF&ldge7FEg63NgPJ0?qiiR@~!2u8()6qqx5NBz`bIZ8S7U zbzYgMhFpNu?B|=m`c}5$q@Q^_hw^45km58>-_DR=mGeq0EW{xiD{-kJd!#8n)7iVU zl#Mm-?sb2i{3eSbBKs?aCtGj(DtR?hgeFb9mXfCIP?QrOFuWhgd*-W# z(a%n$1Un2*`X=%u_fl5pcw?DvZ>%mnx*LZiX)^ryf<3!{M!j5*|6&DJlFAS5x;{nn z&Y69bP8ffxD0CLYxw#>HuHCec9D41^_GA6w4K-h~^Dcez8lDy_X}=oW>j1Bvs3sOy z;g}G&*jdA4O}Y1_9mFW zyiMuw=Ic@tI$*uiQ1M(APphg2C2I%oz5WZ%Ow}hca~6ulw%IU03^!isoGj2#OKu#R zCueI9<0Wo1Mdy__&zq+fN5(0~P6mt+Mo_L^^{5Q5`|hxpxYJ{0eENOG#*E>p6rW#% zOxSRebu`gJh6q_!>xyVdnW*qyn8bKV8tbi$d_nHh`dQvO|y zy`}r0(o~KV(^qyunQ83b8lAJvwIhl#SWf4wuP0jM(rl~^2|w}uN^;9Xeo;HTxV}{K zw2-dt_5_Eap=WQIYMgeX#uShK?k<5qkLkT!1exP{k_URcRh9#y0G=g$M^> zRSL^wPUyou&qmKmLi9 zMpujhgJ%y2LHU8uD!2`L(L)ACW2viKkY=5mMuvnoNbd> zUuC4yz+EAT;Z)48w);$;%qoFcbJb>C6x7Uk^fy-{TZF^|pyZjd_f4URYFe&snebiv za>jA20|Rs5UYFz;%IV};EtjdC#g}QbPZQ`!L)2(vTQREQ);vtbpWNh!A0bDGIW{_E z;(+V4X_mjT)YS>%B{j6nN%>diFwy5ymrUDSBUe}{d3OdnHU~OF$P`m|WnBV8IfEG6 z!$!$neecAIiFvilZc`|Ajd?o#{OZ=%q%|JC{7ObzTE0OlE&XM^+?l!;Qm@jD*!?M5 zvzkf56S-xz!@Iab$5KguO?FD;M<+52dgWK}?B0muQk@-OE)n9LHO2KxI?i2=xgXh? zx|li;-O=`W{(alX=eCiJh0v+BbrUqsNciB{HZ|cVIg*x!#QyLFsqtqE874}V0Z|%U zwY4lO3)G#$I^>Rm`b688R0r;3SWE)ixNl8gUL?IBw2!!Q(=5m~1xNR0g~^Hjr*ck1 z{HnIIw=#7CB?))z_nRZWU#MB+)Z>_{4mLOyQ=+~2cPK7kDS!3f=MVC!Q`B4@oIOL_ zzxNC*btL=}VBBfRz;!Uf$q-rQH08!5MZ2$M58yqD zM3Av>#+j-ne9ZWDRRr5ddUC>yUtB)P)OBw#az=ujpa@WusOH*z-Py->)>ErNiH$q) zTmbb#7HM-qZJuv;F{xwW!gLa{nly;-jpAhPeZEJqZhS*5*TE; z%6!rK{FLyEcr;yLnqutJ!~l%EFIl1h;d%h&>vwh^`gFooE*T2W+7IL>tcg2(XSJU@ z73fb<^SHdpQ1Xksgm!&qYtOKEyf&T0k8AoRmmT$onOY=HmuxUxE!*r((;w)WyE9{^ z>prB@M>PLPf&=@PiICSmW zlp(zJxN|z)3;RW8jXv04bHTaU6&epI;-=$6gIaCqXq+c-&DX1wDBn|yTLKid->GAo zZqF*6Iw0b2G|glvmF=mL(e-9tYw^SF85#feq=eKv@!PsfQT6G9zO<4mag`r*wqeQi zHUfIOvJ_{|>XWQ6%Dui+mdNRqs%^G%g5A49(pX-Ztjv&A`$kR9a#Qgp1FsN{_i_*7 z)Y*fJt9E$V>G2C~I^VK1?^Rqy{4MvOqxn;coW@IG5yqHbYl7?;)-2;lk@Y4H{sV>% z!LcM4KkK)zc9UCu6f3Q1*VW`h7aGj6^5)hT`U~IE?58TnGMAeT)$m@af49!iXW|f{ zA}5X9Ot|^3I<+UNDLPwu=Q)3xRcmpVd@d3{v&Tshu^iNFbN68?`}>Pa$g5qr zp+&m-!v46{xbrgRxi1Dfn7F)<;g81fNi-7loK>4`!E1jr^_A{e)bACUem4-muvXWl zIvD)dfF(0Yl`9Y5yKgUJ`Uy18e~9@mP40b8Cf+;qAyV7E2)!{|v{z}CY4lD~ydrm? zRC+^y$YJY1DU*8>|C1+IU~8X)6(pMPYaP(vPw*M`lNy}+G4WN~XmfpnGl%vqZs|s) zR^-ngLYG+jUTqb1w=MqQ$AvRx=u|hWcInKBE7FsZPAuV@37_-!t)}Rdei>IakG9tC2;SqM>?6R+swI$Ixr%kk90Trrq6!&Oh_zU=by0_hYUy zJULkYhQrc-gZs?51H!g(gAPeEE%L-REz}3!t@g$Pp`v8OdX0sJDRh~)Bq7%Hqr_Ndy+r># z-(7p%wsAwB1eSxH?X8i=7SW?6C0LQ|t_|R`VXYQVW1XXR?tnJ$*h%{ zaF*>PbRh5;!ie|~+MKcElC$4vuIW`F3GG8pc4bEiyv)8ySeWX@!4?);LL&0%U`<5hNV-c?P3ES~otNE|;_sauIMOU4`6 zaduL%cB<}(wM)J-oR?kYtIVrgueQPykvGKr%qQ4IhZ>LjWwkaJY--nh$|HQ7E{{{6 zQKF?Qp%h)vE7C@Da9s`E*(= z_>M(GsF2s)nW+Z5Ud=_}F5nSvH2Sg`WpRY3>-Zv*;>&hBv3a9{rJ`>={wp^ERX(1` zxRM=z<79$Ys)q#4LE~Dv<*xDII@MAw-LAOFo6PkVUKG>%=DC#cGpbW5mCwc^6}nfW z^9N7(W3mmR&vQ(WyT$Y}h^rjbFs@8hv26`T--`8LspTGu+41VBdPRf|zJXJn8syLY zK2t!WcxUFP!Y>lfy7x@esAVqKF!IWefMgBU?0ZdV0eUz(=Ys9$Faqs-0%03Tza(e% zl(r~GKaQzo^ASIrCQfZF->BuDiJNIHh8g*h`~yldq&an0x^Sg7`$j_6wdEC)RxkEb zU4L2qwVl%9f8FW;BOQ}qEhxIF+2hkP0_-c^ka``j72iURSb88nACA}yptY}dhx{j$@bVd+(g_W(GB++(?Or&^^1a!;vbz)(sptn-s-xBnUtedqiSPue!9tu zR%nb*x19TW+hWKz{lSi2tUnJqVX$!Ct^BC=eo7bkBZ%5S#1p z;#8E-`FjeQCw|#k=)b4uY)DbFDdDfZ7;Wp&d768>tD|~->bAGSq}~Stf+kt7FZ+R? zY>8#$htZmDs;GeQ*$@?L!T|N z@Ir9J+q0)@26U8Wrm@aTO=o~@tR)`d=H+lpiU9h3W=SF}rt<@W7{t>eP^BPIDTp}| zh!Y3|h(G`+!ZvxuZZ0*?lNgYO4uMjjS77{oL6AT{?m&MlY4H&TX&F2ikOYT7g@D)) z5Pu|K6ULsw3G6#pL1K^;I!1sK69Xb+K#C&)o0JlFMEkX-o`pO)fj~t7^br8lk$_F2>Jq4_PVXoY zgVc~God8iMfISk2-asjV0^a_1nQUZ8QWe?E z!rz`;eih4rk^5{0c|wmsjeztcAk&e6_u;(nINR}b(FOxDLq}x-^qBzHk$_E}*-R?9 zp4fB5f{f5EGazyXq&yO^No$FS6J-ar|DV(a0`!4U>i!7W#MNnyD2c}=ju>Qt91aAD z0-+lH5r+;#KldG`E*@#RF!L)73sOU=8v>9+0PT^0_i@R7@Z-mq*h1(isMZxALj}lu zBw!PoQ*P8WO~S>*AQNj^{_s6bX|S%gZ2_V)!|j>;Un>e_i>8w-*`%W_CL^4}MD+5bce-)L0vFD%FeWi%Z? zrUR5m0yc5Auyk91`X9y*5_Nlvoj&jvxZXec7G3XmQS7LBR`DXT!nWBpH)!yCxA zP1baj4G{onR1R=D2T+B}df=>Y{Fc~*1VlsS5C{Y$;Yy*QA`4^!lCU93ScjgExlZPK^5va~QjL zR4~913~<9{cvKX?5e0C=pu?kj0ghgP8wL*^6$WyIf!r`X;8D*(j^`jZoB=#)4CELC zx#1Rv?I581;SjjrUtV z836R5fh&!MD1fyS;Dy-%4aLIH3$Velpiv(H=tBc{H&hD{7YK5|E~24W8Nxs|I0iIC zOs8W&X_&LnPIbn`KL%CuY1KHqQ zp&|4N&ww&8u;J$*;{9)%;f_cYJ{WcgG7JYP!@(1<$G9UZg(HG91y$n@kHV>iQv`MV zAND-1M>jy$4KN<(tPh~<16YprKWqSR0N;mB_`|U90!*z0Xp|VG7!};eXq23koHPtw z)Ni_ls}IvHh&m!!*xSQGb7lZMaG~LZLf-#j++*)YK(Y}Kdz|5Mka8Tv9qWH+6W)M? zTP<86v(gkok1$f0_4gozF0eTi)E}~j?R&7+Iu#jb%n9(QXh0?!P=XVThhWK`4e-IR z#6$RJ&pFoN`-d|XUSKtb%a)W~fRU9Q6r9h>Ch0lXDZUup3Ef7!(1hnAI z4}nP@4A30w5rA?8a1qYNAyCPq0GeYx6QIfjuy7X8P_IaK1M+b590HZR7Xs$d#70Bh zAshlq!fkyBO!6?0=2)))MJqt*W8ggp$)AHX$NC5;G6G7$bvy(f`4~t8>o7c^{`oWc zj{7GBBntuQjt}}Tz784T@QnrD0A>=XEdPZG?r2)VXi%vSUA6yWnF*mG0^pATM2=IF z22iE}ba3yZp%KNL4sgP)4u=HQ^UsWhIRLIJ5$g9)J&qs{APWSr$E67cC_@3PY@#J?xG)fjJ%K(EOjd~9t z-vj^Bqd{ae_%FQ{MArUWp9YcB$2uG}5$^YE2pksv|ArL)|Ar9$|Aq|y|Aq+u|AqwI z7!U>hx3Y(6`gbL9M=v{YB@wO`_NJatw6JIYy!QNa1Mb#;ZosVa&keZo|G5G0PVFxn z)BQkE7J#b@H_q{KZmwo-s)yMohf|IKQ5u-F2Qeu|vipQHSZP5w9bwVd~M~BI~??%Vz3-=hN zOc@d3eFC}8f+b))`C#;iT}dZX{Mm`{#0qO@uUhzW2I?*8j=9Dgh#IL9|;frLWbO` zT4El0H^HEMxuJ3Tw>wK(I?o(xX{>acyv87Gyh+!}4@-@6E>x7HwyXKAzn0;+Z)3&T zow>=w+WPBf&fMdh6PAQGDsJ0$tXr` zX)!LQ-X>dd`;ncSU)AmlRZCJ*c)HH@^QRhnuXX$0du(3e>Tmb{R&h0co35+P)pY!p zKm51%toE||W9D2~XtSv+MkM(w@A{G(;|m|^1U(Ljcd3yYf0J4NgZ-&qWBWZ#_72lK zY>x_7>aVgmWKw(LfHdcL%soMPyXjM%f26H<*9(4SLPbgH%nEo9r@b-AJKOH%WAls4 z>zv^(3zO$DP+6-kqEhv1;qFi)T8BFCU6@6Y$^n)yF8gkX=p7%RjaC7U)F;9P6Y;(@=vRnI<)<0}5 zo)#F5UE#C#z@ke|3o8~ByuVeQAC^+7eJXn8wam3!XKni?EY;k-AhyA-_jk>S?}jC* z8@eCPCC29eARobp8&ouU2iE>p79%e+-_&1v^6heUD?wnw(RYH2y*ElW*!Gz25G=eG z>SJpV5$@rlmf~CSYK0qBIi;q_HDX$U|I@ONh~7f`$W3cP{pl0z6!N6{sD+U}flZx` zQAL1X1SEq4hLZx!76TMt@nLb&(TEXZ0&}O8UO@f}s5v-bxbT|lHcIg3@Kn6&vvd|QRGuP*(r;QiGNs?dYpf&r*D07ZiXhSQ9UDP2(u{0|j5UEax9=?DCN z+7&ZkxUnW<>1XoZ6H}qaE=K7JYXSz6f^7`uw3UIUfaK#a~Ea-m`{ND-`J98WKfCqvsr zQt>>kc%Fon6L`V|o*2m|@#Pr)+IJ)!io`+Uia_tk*!@Fb#=%iSl9I}#X6V03N^T;z zL!x1bfU^Rn}^pETtP@DLhK6x{s5+Oeka^xeBe}t7u>gy^J z)c`OUY$(XB`m0-#tWbRqx>OsXbtAMvI69;>dNj;Sp7z-}L*+%|!?Yb_>T6?K#IwH} zY*Fe>yDo)#rBI5HLEVe?pzK;hwI98A-RO?2`3gFNBp^-#=IEdx4x$NxX?d)N|0aZ3 zYp25W;?UW&g-oED2?&(?yzFtOm*|@NeFhF{nRMt(qhw8g-G(6opbaV8=}^sl=XNmE zNfxx8N6wUqp-_~AAcRfnnXzf%Z(c;u8Eyxv+krX)FJjl> zfQN10MA8dAP_+lDqq_dFctrDDpA(Ugq$+{1l1udsK-j=iJ-QHpVT0EIlw7!aU{9T^ zN8A@JsL7lsUwG=UT}V(;fmEAmkQhc#azd`hN*)3a&YD7?;7B2Y5RQ}x1c`tnrvpJc zSMCOaZmv841Or?-2?~-R=l2zmsDPYEnxLSGyWR?kR_=Ni6m)Ud`ykQBt|P*xYk|2E zA;7-+HKp^g{4-AV7=W2pKVs-we>ZdSAh<~}u44|8yj^J|uA?NaWHLh6TF9KADs z@*tMFJ$yX^P=yneVzy!)Y8C_)GCO1*VgiD0akCPEKPoHj1l0qqdH{v! zji6iH>;W(jAx6+GZgvvn*sFkk6)=dk-vnnhL4Sk;LASWMtuT<4yWp%Y=#Ofgpj+JB zJ{XAPh;=VjQ%0@)n65}F<)o`GH{zr#@{n@U6)B{gbVVVbh)59^UlufrA zh`NE4o33a8NV(~Xl2{@o=#H*m0gbrnikhI5O|KQ|w?ZRU?t-E&C`IWh)79^TMo7+o z7Po1B^MPG7W7k6KT1cVG_KBbFp6$7EbT7RS2dv|O6Ux8^t0wYo_-XXQX6?y5dZ54GMr%f5fH`gzzPK0##xyDZ>@2$-O9fMyQRVday+?j&$x`K|wGfgx%+B-IFv8i6IsoTTn^$w9+`BjrJH9+V-21pS!N$cH+t zTmUr+xbkVJahfZaLXA>ZMnz872=g=?YL!$xn{lACuDbC5{)$3S(l;IEUCKuI-#4B8 zF2=$PXV2m<*6EasrN$AG#A15)s)4W?h}hk02Et|_LM}-v9SYN-2!V?(9&{+o>-T?! zf*w&od+-H}?h6;UPhSIMu@#?Px+HT-oIBHJ-u&vAqAxZ78KZLh7JcZ7!1y8{M{Izq ziEr@nkLS=;*JrGE0t;$+4x~!5^luDEs(FRFvQQ0C!xu06bkNh3(t)czggz}s0 z({xnzs{OjT@wY!qDP#M{fWo%?JM_XupnDOJ2nwxh)G;TJ2W-7UML{qH?ZpXIpzh;O)R z_p(PcDp#QO6=;iYA)VM;;f*aFt@JOdphgwcN4ce4azD7?JF1<23OeXH7^7VxsMApI zG&DwVPv5U{`PlEZ9kk(8V4Vu=QU7!*GLi-_P3-?-%n{30FIMtdWW zsWHumsrsYI69Esto2_T(vEQy+BpWR~|Jmd}-!sgOeVh~&e(0QDRi*X#ww`f0gu?z-KlzfPz=7|Z4)bI;16a_s^(~=c&`2DOV1q( zY9#|$R&3nB&{R!@$GKz$wckD*z@KBw3gk`PdmbSp)r_ zM&9DOKZ%Ed1E_#om|F@=Fi5g8vw;;9rKT0P0%OtU^OQTcqWKsYc{oEgLd{_Yv-e48 z%(~~|1r$!yNYsM~!)RtHuzeX1Wskg!YRZz~G*LCtgh|S9+Ns*Xd9LU6Zg4zO>ty2L z^j7dzfhpqQOi@UI^I*;ufH)Iju9mQt6ikZ@r@n-~Jc4H|ZY+o3nTVSp@vJ4RkyP4= z+abxh3A-Vg=_Ble#0wG*LgGaTMt<^m2F7eYPrf)XF@ZsR2TQ#7J%wvP;Y_Vec!W^!%$&hQmbI9emx1ZIKF^y-x-O0IqZdc#P?NCPI!!|AHv3XfDC&On7gBwn~eI1(>b sAr{VKC`!#q1UaL)D7jb}#NY-I5WodvFfeh}l|ESOFqwHG6BjoF0KJsqdH?_b literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/hedley.hpp.FEE34B5A64B966D9.idx b/.cache/clangd/index/hedley.hpp.FEE34B5A64B966D9.idx new file mode 100644 index 0000000000000000000000000000000000000000..35055d42c209aec207859bb93dbf02005f543d84 GIT binary patch literal 6822 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 F008B0ILZJ3 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/input_adapters.hpp.78C7BF4E4CFA778D.idx b/.cache/clangd/index/input_adapters.hpp.78C7BF4E4CFA778D.idx new file mode 100644 index 0000000000000000000000000000000000000000..3d68c718305f63f29a7289b2b15fbe4d16b32085 GIT binary patch literal 8594 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/internal_iterator.hpp.C19C9622B56D9373.idx b/.cache/clangd/index/internal_iterator.hpp.C19C9622B56D9373.idx new file mode 100644 index 0000000000000000000000000000000000000000..7ecc60a36049c305f3fa3bfe4035c6311bc64767 GIT binary patch literal 622 zcmWIYbaP8%VqkDi@vO*AElFfyU|vJZ-l3*I&3` zc;xJbryPnV(F+4IUPRT{Eq$I4?KbVRw+lE`C9O|-te@{5baqp6yR?De90h5` zwz(f!XQxSe3S4VGJ)yOG>LHG4UGEuv%l>i5HZ=;#9_1`?eem;ZF6%afyKjPh*JMA>UifUgI(O=fvma~sMCHyo{^~L_>lNFn zwy(sO=|-KjigxpPUS*LXzE-ksK=A4I#%Nvs*QfcISb);P zdcrnf0w%rjxog&nt^U{en7Dz`qLQN8U;-vxl$ust3^WDi3Pvul?HLbckGza(%7WPq z6b4xgQ#C1j@g2S8Q@1kmu!^#XO2F)ZIR&U1m^4rrWIs%pp(r&c5#)p7qU2(6 Y5Q7awfB_S0&d0CsTAG*5VPsHq)$ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/is_sax.hpp.CC7545652AD71E55.idx b/.cache/clangd/index/is_sax.hpp.CC7545652AD71E55.idx new file mode 100644 index 0000000000000000000000000000000000000000..8d88479ea8008dcd0aecfd3f251fb6831a403cec GIT binary patch literal 2132 zcmYk73s6*57{`wn_u}4*EMB<_yX-CxV+Gya+0{TynJA36Xy~N58ZEfO5@-VXLMtQ{ zD42>I1(Z^JB%omAi!pRCU#O{=sVS7NQ7|84>1w0ccdqlzZD;ns_x!)_obQ}-f8T6c zVq9FxAVOkiCoal!7CHtJLVV#{P?+zUKY);d3PKjG+y3>$NglyIE1!l(|7suRs#sIu z%1{}XjM{1J8RXn*?(AUM?k&BaEIcr)aL=6$O67z0(_SaZzFNbrA%?UwsVJbd1YpJPhn;J$VYR>KY4rDUk58oUQB$_ zu>OjxwCLE(-rZS|z4uf6>?}w^`@@|>x)A*a2 z-_59A*0F1gEoe=-@#)m2zpbUsZr76I`@3vMTa&ZQzjvO=FS8`vU7zQ1_Z+I-{6LKI?$+ z5Iqs2*eIvM3H1W(Uu)LFVY9+z& zidFTBhgWVvI1IwsT(%$yhWnd4cU z?}ehYOrG(9u#0mEl3=*`aQCFWj=dl8Ob{&Z&3cQH$d{u!buIm1v$=$4hCzbJih+_4 zB~SYU>X%u!$FFEzTg5X*C@_bc6Ceo|sGI+wI#oBhk!1p4e!6G6P7Dq$54|ygS67;NIF9}g{9xoH3 zZremQqM9mqg&f zrnKX}5Oc68<7gw?U{kVjZG;+ZN;KME6pyWGoc}n7p28X%fhFM-){F>DLgHaA#T_dl z=U`LF(MGz#rfB0L_zN~g8ncmQuqnuBBf(%(e9^}JflZ-B8)*fbqKa8aDcBTIw2@A* zDVk_kml>w->}@>fqZ7T2-ex?sPE-qO4W1Q7ud2t%Bdws-;QP^u+6e7S-^Fgnp_GLDu<7Qv!H40NI;++vkSHj`~M zUan4z8W}YT`NsKhe%gC@iMSoGX~&_Btp+yjGrTR5@62^TGm?V*%z}9OK>zq(ei*S> ebL9G%s%g;*KaIbyny4{Ch`;=(kstl!$NvD-f4CX| literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/iter_impl.hpp.033DA638D5CD1012.idx b/.cache/clangd/index/iter_impl.hpp.033DA638D5CD1012.idx new file mode 100644 index 0000000000000000000000000000000000000000..26fa44379090f9a95293a8894f56bb369e0ba157 GIT binary patch literal 8856 zcmY*f30xD`*3Vt2Av2K)BoIO%Y!btcXi;#*D&k(AZLPLyvF_T|rGDD_6Xl5;idaFZ zC<`3#w2kwCvyf1@mUiCJMzATZLlLw!Dvuzq-{^di3kW5SyDNP2n*=WUZR{ z53h^=?z2GXek^OWW$u?phHdnX?lL#=&7YNJ`Q9(4UKwUj>sN1E9NKUt^hFx4BUnn}4aRN9^(h^#saj{dC^Y8Wuu%gN#GfmQ zIvvRE-fhLN-;S_p^qC%c=Dj(h_&B!DB${UT&Fz@l*{fT=m@#)q$oIj6x}7+hw06m~ z4O;_$3fVWQ*NmmM$9jw#dN+K|FS@K<8|-$xYgL9-El}o(eL5*@ewch(Ie+;3zo^y* zEN+_8a`2(p$LptAGy2ezM{d`6E^q$mQt9sGK08Z>F7(L|_4_`4crG2MXL}bq=ff_!U7pTb@Y_%SiF6A7#`gD5x10{JtjqRykd}=Nk2m!iwRxCN zV^mbuy#Kzv@hnBv?T^tjA|Frnown}8^@V3>%8kKkA0*6P*zM1GJzUo}|0zy<^6k1g zWmVcaG5Otp)P3i@V)ud(-=$Z@%$)L1UvpvOfYpNrH@dE$pWWry)MyXS+Leaz*2@dS zJ|&JD97psno<6>As886QvA@-y-07^^YIjZDdV19}|6U_Tej+WJ+9TwOm+AdWGa4?c zE{waW?)D(cJUQs~m&eVShxAU5(Tp2S4`(mPK9Tk0tl^Wes+%c$Bd&Wa&{x%bJt5%i zo0dbl!)s?=n&fsYVB@@^_$Nh`xl8x7F6mYC{oGRXLo(pAO*MuIe=HiMe79yo@eAT~ zKR$H6Vwg>oTl1{BFY7DE4SDhC{SEggemdwUbUl# za#-(wvYgzBd!4qg@yxNv3Ev)R*pO7wuq7(!+a(qIYbPf4cJo+RZ1>lr#0J0CQI{sz z-G5X0b<95f$`9WBCq&ojM&a&b-#vKq@tgJIuO!#qudhfPc>U9Szld_Tv4(D!>jINH z2S?xD)$jX=wDRKC$wz%2|Gv1}IEVQ;MQ#;|R}9VO>gh=#Pv^cY|Kv#A_0sxE<#(qW zaM;Zz$8lZ0%R4(E^wfsG&`M+MCrm%9O%>8F_Cy`7f+o!2#9Dl zynZ*lJRwHHK1}2SvAw`H%}PMz=4^dLlWxU71gvBt{Z;*)+b_T#R#BBWt@g`_5;imT zYGk(>Idu>aDUFVQK6UK01p*FXB7IeTwe1&RFEy+>ymWVVqJ%vdJDX~=sj-8A$i-Ec z{(H?gd4qucnMkB6Qqz6`c2dE}>M#$qNy0|P-a~BnuvJ(Ih&;QqJ$Z6juPqV|WFiNU z?Ez%pK|n-VwMsQ|^wJ#?_GKcsiS2Es#Y#ZL^YarM3eSF&WnF9rvddtLwGt3XslM~` z#gWyy0(N0q0#$+b?H6EQa8!9N*?i}usBmMZ-%NFzscQ#OI8%bOZRS6L8$}w%|w10L?*0EIn=bq?H8+-Jgm)QF=Hhl zvN1Esqq6_L3lg?4Emw){Ri?#CK;&j&#o?Fp{jOL8A_dVDq!z3MM8f_&K(p`ly(M8k zrlpv6E@s|pB_ML6eEQ|r&kjDYY8g(4tA(};u$S8Ci%olOKay}T(@;-4*HecM0wUul zr0j~GXH#p{u#_%U3vCx*Z`^+7_01QvUUtS#OhXHeYN5kA2#B2f+%juw)(L4JpygGT~%h`D?R#(iVoio`=tOP`gzp(7C>i5f^0@g7t5vmB6_6x8(=gti1 z9PReTny8*)yQj=_Rstf5c~hp&AMDJtCRVj)OUMeM5E~TxJ|rTi;dR@;b~lSiWXqu~ zR0k`)dN*$Bi5}mJL=-IP$g%_R`#DdlT7d> zqL7aa`N#xOA_}*V;TAH%mWe_uGPEKSq(4#Efekyb338n%RA55|Hi6@cLNhirV-xI# zC~PH$t;7UgD+;HG;S@1J&K89_VyGh~NNS>xM-6$@1gSw3E>Ob-Y64G#k{p zL$nU5`C}GST1?e&o5*~M)>AdO8x$T-Q5e&0OgP_-vC>#QM{%k+dvHHdh;xqf;AkyU zu0;|gK~Y$XoYx``j#H5;71=`&i9#xJPDLIZ??lR-NP@f~3OkYWPUOMyK_neSdTy5- zWX?fB93MwM$59~1SCMoT>ABr%khum0aeN2)+(CgHze3V0q~{y93L95pZ;rQMX$#hK zJMYIX`>_|tXR&k^>$%-uVCeuDMEagd_RmiS0Fl^OkCty7Jgvjp%Bm=CQgOnO38&99yd#zdHqKQ;;i<-3&xCkebJ8 z1~O%!t{mrKnupa;hDBDv>1nLyv2qX7dsq#&6a-5A_vauidk|-n-r(|O0J9Lyd9VKSIBZb7Jkoa-@jJP}_ zetgBb)Fqet!4rx?8FeY6empx=QkP0OuAwe9a$HLtYN;0lP0OnfgQA&Ietb0o{>;kh*8L; z0l7337Gh)z2`HnXun?nANdqe7xP}JQ$Z;+0QcL|{Az$C>vgloyFpTw!3AkSZj^Yd1 zi~H@xQSjjK04)5i6A0K;E3BY)E2tAV6HsP+>l^}t;H^x9b?g9!R=7^2>qHOk3uA~< z)jocJSeq9c9uW&XiOBRD;;99`u+5A0iPQ|<*XG5h%`{N%wfanImU}JDrVg-`B5P!w zi)mNb%AqS>PbMdieatFC7426=hX7-FTwJqF-yg=eWpyu0Ab-9{&&U8-R(Fi@fUFLg zhHZ*M}8>N+&^j%XoiUksoEzkxaH#W zNBfstT(XP}q(#KPhy;K`X@wFJTtY$scQWW=U|4j zj;o*utik%ywjmWhX6>cZ7&j=PBCCLO6BZzdShGxNGZmm4g#^#ETW45Mvwh;&%JZu# zH>pJ7Gu>z2Twe~-1vQSZ}OUvu^GwI>Nf1Q4F~Y=FT+d;GL+-TRR5SaQScnBhp^7s@cdAD*ut!1H85bG8N)hE10#6* z)@cuCyxWgOA&H1d#2xG^3OPi~;kfce+NhadE33d@D{6!wKRJal~pm zF+3&iJUiu3Lk@KZ2NH$z)Nr1_!_ z`Ep!{G=*|}9cix1hk{#3b4!jJk)}~T1hgVes~j)Gnq^ovB>adqKgx%K9aytNj?ZDu zIr&gffi)F!{1R(k%7=tztZA0xEkv_LJ``*vnyqqtf@n_2hk#Q=b4re%63tWjP*6uS zb#k0TH97JjA&+YE-K4U5ognXA~Zwt`GPm*W;LC%UY$~ zaaM=QscSj)02hM7#$w5Ox&$4yPmi~u2h)AeXhh*-<;M;@lCqI98_Dn$q`V@>^+;JS z$4y9TLN5INH%NLT$EjGEie>uJv6PNw@|jr5l;aYtERoAU$I9n&yoo3`5t+VYM0re( zpAh8}IX+002dPZ{3{{?yc(!_rT;IwQ zc@}od!u~v4RbtOd91KfhCq~$_1qbtNl}=pKi65*?6w*m}IvK)o5pgY&_sd13R}qQg z*{q&;){|hK&GM-+pZfA_mQQ=;)4?2$s>AFY1f^uVnu`udf&DjjS2 z3bu*$JAonL9Hk)t6x0*6h^$tGWuSpjJlf93yjy566zL-ayMFbr1XVR_q7tw+0sC-| z-HWw*<+zG!tEi0skctnf8^|AdGHB+$yiwH>3sv28Gq+X|(iI^yw^k|AmCEr0qs`Z6*RX|K?;Un}hb`QC8N@Y%4+(7jq;Ccp&8=5LTub=S zAhMpWPYD^tt=B|!O~lNtS3r#gG>}`Xfc7q+BRQ_3{#CRuSns!)4(|ztd#l-zhrN$| z4@fI)G#C5~U?dP`Cbk{`0|O3#8ACpsyU zl$l86KA4GgnaG*r93nYLJ%u&>bY*k>dwQdLYNm z$f+5*a36b%^ly=o;{x9UToegpSa7gYZ><7K3a)gE9Lka zw!elQIllqBHee6#!!6jgMULNL`*+xp^V5hvjTpI4r;+#5NI1voM4v9_r;{G(q!;IB z5PgQ6pFw(MkUpGWMD#_($YY|2bT1-3IW8gk5;?zw^eiF0IlrE`))NmNLrp|#B3h2~ zsZ&06;W3m?L-T1E#|6}>K+Z3qVFfgT^UJAcIrV`s64{Vxu9BZPJf;qhsS|V&s*ayH zAUwcNSU6dK-v9=Tw=A5jKW6~rK=;<}yM7+fYQxS9u&xXn!F24*0P8B{xB=@Lun|mU zWW`0-BFFVaS5J(v6>!?gM$on&N#Oh7cJ?6FUqyg%Sied0$HA(<*!*0G428&z$ILQp zSccuW4_~B)i_{JFXx^0BU$mv_`ST{v|G&03QrpG)vV%7Y1^Zti@Y28=HqY|6f6t5x ig^GXLnZH&4{T2(Ru*&K!X=ce*V{fYx)t&7m#s2`)LkDyK literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/iteration_proxy.hpp.3BFE4F050EB7B1CB.idx b/.cache/clangd/index/iteration_proxy.hpp.3BFE4F050EB7B1CB.idx new file mode 100644 index 0000000000000000000000000000000000000000..680a3adc9a1fb49294661cc5748502ef121db35b GIT binary patch literal 4242 zcmZWr30zcF7k~G$zj@38TxJKx0ftRbm{AixL}N)r4V5KX1PnwJ6A=`_1^EdGiiByH z8hj#ZU@nzN1}>_uPBV|D0(PLqp4i z6!qr26PISDE>1S3D9VofXD?nfcLq&SN#+!_blayhBIjKnA?(gxxyC#ptJ^ta?6VOY zW!)tw63^A!g|E&s{C;KNkC9i))`U+w;ab=J}-K z#XUFI-KxzCdv9~gWDocM?D3s_Sdy_OXVvOi^WwgZ3SJSH|Cs)`U`e6RgHvf^gi;gUC2v)dh%7@pFd68DWeWU04)YfW`n6in||Sv)b-F(OT;bo+d<`WO{-13HV0^qa1WlefM zT0V_Ody?5QMke9}z*FnSHf=rfPLhyzC$LVgQ*#2~fu8#Q+Q#xE9zC4Eaz<{;34r(X zN&bkrdug7Kb|bKl+(*p`fYThbA2{B8yp%`l2rOl!cANk>>^E`n_W}NeJlfBP!VQRN zK>XJa_+-g~c0a{i_lkJ*2x39WC^07hR(#eyVV3i#3L$Mrd|&Cd(vuSaCyKig@Al59 zw5L^MwwJZnFirsM8-C=|8%GP?=hM~%)<`rOP5`{oYf5j}Y4v74EhNUXT(Z150dUCm zXq_nk=O&g?lDiX_32Zn)S<#3ZB_Q`Unp!VC^q{8If*$E@j&~#T-N^R!18m$r{lalW z$@O+2?Ll@BXcZ{p1i(ESFfNg!a(cEw3z-#CMefP*q^T=f0~DwtB!-=>x-HPRMXfk^Y17RPW5y87!8HrCyLu zEEmP_DT{qfeWZ|yEY_Loq>$At4wMD@K$NjKSQhL94zM`SG*1fb!Qy;DzOzAFX}VGh z*~Q{QBq&7A2E7!iO3|o6_QI7&Rryc74!P8!u@IjuiF(i7C(R;mC>!8UsibN{ndxmMgXi#%U-i39F&Y~#jFxpf^L(o@mrlG@-wmkq-rAL$P^A! zLFUI)qIg(9fvb>p6|w<6y*0#qhiF2$k-cHLjtO5C?we!;OuJLjF*4#rgb^@tXPVAF z;;+d@09*o+aYPQW3PetlM9<=|!xeT0ouPK5}A&>-=v zXL~RML{F^iSssSRY%0jHtZYj*vL1iG;=t9ih7=><8~gNWpKl-cE&*%=HWFaT=UbS+ zo{Vcw8#4UUJWWYZ-<-KdW+0x)HuYr%_LG>x-}Q#(&G|#jycl2qf2Z;(Lx*pNZ<>&J zs#`z&Zvqjn&^&2VcV>~Zk*Fjd&?7*C5jxNpD_E4pGCP?AoIi`@_HrjUFNk4sZm$X$ z1Ua0yDZ^DPgDnlK5kuu+u{-0Afkjyy&V*y2j*?}|bVVukYmGKvRbG@X{Ux_-$QeL( zlCaSiLI@kEf#e|d1rYWDJ0Py=3m*)#I7%Jm3tM1utT@&cG^mHfBYiQ11z4QRC#77M%uT8J7JtF6=mC_*fD z5xIzgvsqk%_$9~=Qj^6S5PyR~kL>E(X%_pW)@ZGst8@13TxGJu2)OvTdTPdkLk%P< z;$`tp;J3L?`;N~J4{IdD3bjH9MXf2(V^>|up#wBwd{LwXz9w@;@q-#TLWoM=Apk8Y zaFkt?3Z}%(iNxD0wzL>+2x5r@*Q@qnY5DC(o*zq!Ty-z~_HFezNwySW8DYzHvP3BF z9DOg#((a6rA*cW(2=q+`+&1(V48!#mFih&pIIj>092SpeMhk&9SR5n>!eEbR@*tH# z3l)T7LwyOAhpG(P6yX$m@R-F3;sm8ZOBbYLU}UHo#OYTp4LH5*>C+0)3Cj*6@4yb> za(#ybZYW4?h$%%gAwU$k3|W^UA?ObUCw0kVJijrr*Hjc)w=PU;3~X8J5PPt(OeXS`|_$zhbodf4_3caGhdul>q-FP)GtZ zhU>tOSs&5ai)Lp}*T0DM;?>U{UMNaxc$FAlWrkPz;46(k3hRh6+s6wumq=xDdolGl D(A%0h literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/iterator_traits.hpp.458CB3C9BF8F7D7A.idx b/.cache/clangd/index/iterator_traits.hpp.458CB3C9BF8F7D7A.idx new file mode 100644 index 0000000000000000000000000000000000000000..c7f82ce17df0e66e643921c8488abe1c26064f66 GIT binary patch literal 504 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� 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/json_fwd.hpp.26742AD87FD27039.idx b/.cache/clangd/index/json_fwd.hpp.26742AD87FD27039.idx new file mode 100644 index 0000000000000000000000000000000000000000..b2f9fab8d8cd55e348883805622baafe3fe05c04 GIT binary patch literal 414 zcmWIYbaR`=$iU#7;#rZKT9U}Zz`!5^#Kk2=nT#%_U%h#D(B85CA z8|k0mZ<=^+V^4|tyCpaN)!wVOvI@Nt}+ioGMnId9wQ89-*n9uZvEs z&1yX0xy;5O+3ex@9WAdzx~yZ)eo^`R^xv)a+syZ}I%29L86ie4Mn(=sHK;5DuY9b<9*GO`jGT-P><&UO(;{Zvta4sltPB*EV3!bu3GaLI zJIGc4Sr<^)n9Ufjy7k?!QGn4)tW3--tZWRda47~R1QP(tn0OKZ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/json_pointer.hpp.D59DE1A3B73204F3.idx b/.cache/clangd/index/json_pointer.hpp.D59DE1A3B73204F3.idx new file mode 100644 index 0000000000000000000000000000000000000000..fca0ca55baec0fc9688576b5405bc23178c626c5 GIT binary patch literal 6968 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/json_ref.hpp.F45F50989F8F1001.idx b/.cache/clangd/index/json_ref.hpp.F45F50989F8F1001.idx new file mode 100644 index 0000000000000000000000000000000000000000..ace38859ad257828badc404175307ce6f7b152c8 GIT binary patch literal 2032 zcmaJ?YfMvT7(PAy+REYMwDev%Z5fOfgq{|LfH0EEX3Hg@!68A%q+DcWGjlB%3=oz5 zz_?8^jfiF<3(B&KZZ6AI#)M?bG9b<+(`*N1}%qN1oLn#(%3wzLNjMNxY43AcxWOXQtNQ&i{cCtv%b9A)FFuEmVSVN+n? z)clEe!@tCJzf@gV=csryBe>=7^oI-ETL*j3MlMz#>Cb)e$I6Lyj8 z@|Map@{^ZSezNQF-!lF>aARHX`E45mefuZs`VT)hGSStYvFU}Oaz;@*31IQy~j?Aq#=o6a4- zTUWK`=XcuXRva@}n@%6wJsM6qaz)|qSt|cs(R^_7gYb^6jftcJ74Czk{@_lErI#g8 zs8n5Q7J*tuDnuUV^qL;|klU=GHH79_-Y5dl)0vvvPgYJ?RCFAs5LRMV1j-_(WfUbt zihADVoj$<1j5I^`yO0Zu0Q*Pw%na6_^5?U3BB6aIUy2AoCtrPW>gg-FtE0QKP!>i4 z0L=%k>Vxz5*08je?DlK?77>89|FCd-v}4L|qVpsSj>dwr>`t#=C=-MXqJRlWGu3Y0CZ)?^obqs?H!8lHX##60swvUDEn#n^7c^;9Zz=WsB>&0 z0Db4qGi9~+`8f@(CbZY+wTS@qhKQ&8dwTG0Jgp-nk3uDnigc#WwyAFzhQ96^ZgTi8zi*pSSEF;bp3=GVbOe@Y4xZ$m4#5sEQJL`oX zH}6mH{R#I+haW(z%jgb}`}+k0D}W*?5O! zxse;gtYG9eyOSl$qwplanQ$7(Sdam@K>;d^w2amuRas}yB}De3(y0R4YUWY9-MLQU&)#-axyZeOmf?bLzk1L#6S;IvMt*p-TneQ4ueupg)v%f< zC?U}VQ4j^`Ojbw;BeUI{Az3*nhlL0+DndmpR0N}9uGk@2UgTvVJkr~wk~GQkVV@C( z8zVpRvoL7gCV9_c`O@NlS{iD3J|O(%ghNeXx9~+FfcVhpc3WNCB%wgQnVN)28kdM6i~{gD1weq#X1Nc zXgvWbAhlEwXtkZe0}w|GtwprnMX^$`v=pr!&zXL^_-4&a{*(9q`+fV~_kNqzX(A%p zcmy#gNwXn6d2J#^5QGE%=B&+59Y+$xKAhNav_jYZ>0Jf=;&wuNC#s!jnr@yutwnPA zWc^=?VLOLylHS&kSl#51RK;+Av3#$@wcjIlUqgDptu0i?RD*_Bx@$P% zUSbrlSfL%*-J+~(F)rM_F!$6KZ|C`S=qp$Cx@X>U?e=*&wV_c>-hn5hZ7s8!#8v&*m-GY;2)X6i_SXjaeCFL$T8{}SU(9WSyKR_o5$=eN5* zOxk|22HKC%)%+`{%7*^V`QqwzieuEN?Eh?ut>}tm)2*KR+5ResSZ4*Qv&) zt&K&Q$8Bm}4JB0^O7P6t+_GSBu=-$G<1NkI6{9v9#~Kxplb3F?#WZaEnfmun^081r z+F29G=wKAHLSTTH54p?6#q+dknt-ISonnzfvjTQp#gXg9l5T$iX^U;GNbA80*!myT zI)}>gKudBQwxxWjkQK1~k_Yp3sWXEGqyXDNq96}ez`mp~|FKNJ;k~VNQ+gprz*ep2 zefOYXUbuj?$E#ItDlb;Rt{RZUZ8X%*A8SnStd}50!1fM2n;QOL*RrwI;i7O4#0c1) zMNwBP983w8yA3>5|I(J0Cq5Px7q@M%wRlNij-u zPIH0w#3;)-%LN7r)!?-ZM6ebh!f6H`NCQ0Pd=?r=xPD!q?=FkooL-SBWpP3k?$Wr{^2%!*b zJ_{(U#rIYEgu#7j&|pe-61l!h>vE{)=C;>8?m@v?Y-h@g5qKKnSOJe+iKXlYRz zZU#R)VB&&57#@w3lv2nQ93To%a8VEyB;?8u5rrtYNJXiHTr+BsTERu(RJf39EkYEb z;36%h6>^P6iJ}x-6ir17xwds8oq~(>lwQakfyhq-@PMDwL85#Rnzz>2%buCxi-qblAGat{hApQr;?FT0S literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/json_sax.hpp.6F91C040B731D348.idx b/.cache/clangd/index/json_sax.hpp.6F91C040B731D348.idx new file mode 100644 index 0000000000000000000000000000000000000000..f306eb39486064bb9aa5fe1f68f9abe1df8c824e GIT binary patch literal 10168 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�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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/macro_unscope.hpp.B14BD9ED4A7A08FB.idx b/.cache/clangd/index/macro_unscope.hpp.B14BD9ED4A7A08FB.idx new file mode 100644 index 0000000000000000000000000000000000000000..35a432db03369fae9d8e7437f8a68ca161eabd75 GIT binary patch literal 198 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 Sy5a85-vNxQ46Gm-2mk;{;MH{i literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/primitive_iterator.hpp.95B7C71D0080D177.idx b/.cache/clangd/index/primitive_iterator.hpp.95B7C71D0080D177.idx new file mode 100644 index 0000000000000000000000000000000000000000..c54effda445c05a8865028ddb5f9ae37188ddb50 GIT binary patch literal 2314 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 G$NvE1q{JBj literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/to_chars.hpp.6B92F0DD0213E55B.idx b/.cache/clangd/index/to_chars.hpp.6B92F0DD0213E55B.idx new file mode 100644 index 0000000000000000000000000000000000000000..7f2d57e6b956ad28cb6dc7817571186e20f135ac GIT binary patch literal 7656 zcmZXZ2|QKl`@qk8oqNu4ookOS*S+PKR|L*70dC%ALocDdt`##%yn&;!?)ue?W(?fhV zuUi=vgdzx{O8<+Didf@BAc&P3f^0sXy>Ln7Gds05>lp4P<8_8h)Msw`lz!Rj-KMhw zSBGw!H7l%SaeX)0u!Difyxf96zuamB(|ivdHc49cz5c6+pB&mtiXC}(o*n*6f8|Yc z&%}wPi}Zt&`s3HkT^r;v_q}h{&U1%k15ER?9`^>sWz})_&NPbiUHvrEZs)#PtxbXF zDy(YDg1ZBBX8sTut^Cs6Q1g*UB&z32UQilXHa~1G@xbi;Mza~g$4u|X{agPw)H5X~ zQ1Vx3Uf`9$9{+QGw!s4X+Mktw@7e3waeP5GQg*@mV6Ty94P_9Sv|&sByy<=;HJ5bi zPN>)f#Vpjh9iX@%q@d=ZmSNuRHcQonS5E@kH~3LK`Ew2jhMYF9xIT6E@?>##;5GB~ zKuN2|ta{DQZAKll>X*4;8yr--?mt<1F3RX&d8&hC@(Y#SB^Q(u+-o}@xFkhlTEh?4 z_oO>lmO9K4$<6M&-h2CP*1-;yXIG5&tqLU?y<@U6`4JOeW~6VY&^y{=+#&}qT?Az*FxvXsQj3LgyHJqM|1o4Ggh4VHh{`}#7 zZiSZBD9CHgu)1<^iPG*Oj?3}x`CA_FxB8`~#-N-m{_|sXp5b~~OOU}S`=f6v`7F%x zdUM%Vsbc3{LnCp@aT9GIdXF{#tT$+}I_}B5^QZT}3Z^6{cIfztA73gi+MSn@yJB{m zdF^EH5LdF~K()@J3Vx{lOiZgwsQ&Tzwv!#l+8xsht<}18W^S^4dm*OY9`kx6st@)d z1mDGnPHz^4r+)ZAz5iIL{pJ2h_1=oE4b%VW6eWFp-Q;Wk$|QJ*U#RnEY0;aO&s&v) zeQSCi-Kg*8mc4yZ#WhS5r1m&QY~2?0X_`(;rDNCdNJjZ?KSx8NWMkf%>96=Yn=^y* z{0#Ojl?gBDm3R(Cx75~fURpj785cL*ZM=Fn=a6@!^I`21X|X>!mY%CmQW=SsEdS`d zV$QKo)k&)sh+b5@a_f3odnahfzxjymIV<1yNjYW5 zaH2u@7Vom}wO^gD8%P-5IVJaX|B(X8#X@v&U5(#ib2Zz#i#hsl63-moc1iDwc#GC2 zt=6Inots5FJ}Ns8BwTuwV{Z_^oz_v;;XF9F)im(0>;6AG#_qf`^KH)O)$6xZ{xdv0 zO%&i%)MWgjceJ|Sqqk_oknZEz1vfTwDk2lTbEAAyJL`AtO#2W!P+O;sIwuZ4{|(Hu$0a$K_nY5~!)`X;O&r=HSsu1#Z2+;OPb1H8c~xuj z%dYj?GCCGDnyD=O{j5{Cp_rRh_2UV%{fQPOT`JBI7Jacjo2wQLWqSMdEK-=B;hcA# zs>!_kd(_R`@4h%7qgCslEwauHNfY*5E=qpAV@6JIwt3TsdY9V?Iop@47-^T+a2f8? z^BhKOZ~b~Odd;Vn-29NxzvqTt>%Wj!Bm2I^dCB#XKM}iCkq-Cz6n^3S^t|m_WPR1Y z2JgLmj&m*x3y&81J@;O)MQ#CqqA-iU`R;-wGflI`s=!IP*<9z&bzeM+QM=&8CmI(& zJf2hi)c=Yw-9>OhB)H<$ftRR?8@xgmne01!>Q?;SI}N5P#p~9bT)1?q?#SX+#a{{o z-*7aeW-eV&*#5wabIWq%)L|mqt+d|BS?Ng_r@Z0u&QD7fPb~~PWFsl7Xediflu39V zaQ(%@t=0Mu&M&4(HB zZ>y?$Gize&^0u1J(_gKdw(Q|OGoKwhPFX7C|5apIyCgH2St< z1$aZxD6n&3#K3XCWrj!0qg_+C-Bw*`eNE@_wX~XL$+N0{bnYL{Jo|f7oc!!LQ{zsx zKN5ydr@2i?cqkQFua}uO@N?0gL(kHBQY6P_ zPh86vzj(3Ht6_1f(-v+)M$%g2u7`tfFpHdcBWJWVfG6$^h|YLovFt{*^7WjL`UyEX z#_K-k-k4hU%-mM()Uv4J?V>YrqMd%r_$R~seVUe+-2U|QlfMUxFAnpY@5Vi|FYr8L z=V-wr6Q32{Up>cEd+y|0+qR6pAm3e%@0tQC8!SE)mV8-P)p$8?y5fz8E>9Qy*tmYX z@ul@qRk8{m2e5PZCBaT9Kg}1N*_Wkh`Dxktn7BeKf0Z!3ig%;$H}Dp$+NggfyV^gr zFY1W;{oHvl`wyU*!)k&pPrjeo_t&XxraCJQp4xE`H54yIYYaawoa}=j>ZpePz;*7 zxO`{lS*;oW%s=?x(~&T-!Ohg}oyHf?sQa-^uR`MnWB)l+vop5Qwuaned#N^j`wh+9 z;zj05qtxOIW@?qq?tZuZS8>Fbqi0u7so9sAeQ49E%z5B&(+;)4drL=B6ts6;_4}K* zxEEVu^k=&4XSp1IXYI)7b-|8wIdQJ;{F45~tGLP>Umt`L10^xg7;g}|!1(&plXnaK z>kmUdA93?Ss2q-b4o7voL1byUnK7Wa4$IZv=$|%H#5m@(5`|Ob*kw!sL1={sd!uTC zoJb{k#B~Nj<#C8Sj_h~?2THjfGX1^pETKFiqE&J^L@uo&ZJ^4d=LWvhi&qNeIdi=c zDiiQBf!uflRo3PvM173RHpUPWdM1}S_+^gDc*D%5yIyve&q@Eu@*E5LwQZDbRK_l_ zkJoLFox-+#u;y^4c#f?BLK*N3RK}l2R+8b{uAaGKM*Tj(S z=~0w~pX*i;|)~#eACP(e@@YF@|@|k$~nM02NcE|s8T)E>%uP)t;x!q zne-sZKq(n$jWkTmQjRBr=(vY%Y+?rB$R2B2bY<^$qCBR`(?7sXFOq^O0$^ z(nXH^McOQ-4I)4goiVcvGFYU(!FAq6jH6F0odNh6pfuhv#t_!g_MOMxfXgJ}Oe-a$ zWHLH&yg_6qDj;LqIjH&k#;woWuPJjp=xO^X`KXRv;FN8q-u8PF>U&d}Gn*DWD>aQ?7oel|=ODVUlou5-uEX5P=#Wj9JQs1;&Sv ztLr;S#F18dfb$>V8siNjP?wh(Q!0OXZTtCnwE+_Gqm?G%lhns9h^)32qWjgKk%*P6 zBA+NS5kv;Y4Hyc9R1eVY0j6*_h13908301ak6*^Dx?#J81SC}kg3G`vD1ZTn!y6AX z&>d+-RJjbD2v-x1WWgH?HjLU=^M^u`a+Y&eg!@C2rn4@K%$zBPeB^u-;YO2`kEV|< zi_Cl|hQvTl3>0DXBCj+@;pa^Z9qz&9K8JIGh3D8U+3&R;n`v`gt$U^ra zX}3bNfGqSll6nMqkAMPPA(E;BYE?j!;cB2(&E^ik>tO4506_=PX7t|z-dnc369_wj z9wYAp!Y(%V0A3GUzXu3<*!}eZULRZD2Q>PC4%6QNAP0aF!*@}wyQn_gNRqmXn%_k& z*=&0kbz-;y)o4I<7=DUsJY{nW%4>cf$ zVA>`rcV%}KCK9<%bQdrbViaP`#GaK#D_OM4Xcdb>jY3(pA1Ln!Doj*50OSt<1%^)o z<&!{#iAo*7r~?=?UfKyvI+*}YQeD8Li_HzFT?1;*c->Rf?kSsJqtt7*SGS?sZEUY? zLnpPNCd~8yawq@GHDfphGfcsZ7;eUNn=w7Ouq4%j>9jD$5C2YQB56$qcTh-gHTnn6 zgIg`6iU@@wVgf9z;NLkK;{_V?;C~f8CBtu9qYA&15mMbazZ+MD<|w3waQ+aR#ROkW ze3MV`7dxwL{>~W)sZ4^ONvOi1q0!JoORGO-XbGk(!93tg!3XH_Tv`FHex)VpSiEy> zS{_&L-Q0m0bl2vx<_a)zL&M^0jMahA>QpIr1@~{+P?g#R6n24cIZu^32^3B;c}w{J z@{ExBZ=MlS|II5x>c4qJNLvg$kEl{DsA3DM0(VrED#a8_F#&u@RjL_NY{t|XZow2= z7+2a66EnnhIk;r3WH2lP7SL3!SF~?V=xkcX5z=vv--xR)8#99QM;L~6FumT=BA8k4 z9#pvpHH1?mCi%p=q~!+5kknBeIf@IV=KusDsrxu`pUo!-B7~yKs4@wUM%!9cA$pt((1(J%#dGWX^91)%o z=-47XAixKOR34Yi<9@42g;XkrreccFj$qhEHO9^h%$k&AdgYiQv~(d=f$3GSxf0W> zWEkcGdi<}43#OX}RIh=tS|Rlm)qBdYvF#`8i^-EqOi0R=a8+S!cp5Q{Me%@$2P{ql zL>imZ0g=w;e1PTy1*W$GfEKX%kqr7sh9$3(L95tYD}&auxlRVHV{?NH+Q85=42dA##zrF$I;_#uENnO zHdo_lHJdweq7!G$KZ8Is2v&au1X{r6VgfB@a~Xk_vALW;%h_B(pcM?;a}WDvOe`+_ zpNIi{g!Xsok(hC+b_{LDRH1ilE_v1ZD_Z@4ju?X+jX{nM^lx}%R^^Qym7!aZl>Ib& zH<$wH+Dgk^8+s5)=e!BKfEsknudKNX2pLWU@`>y!DFp~qfEEmIB%Sj_9Zc#W>6~ZT z39OjN(FH8K*xUzP`hY7VZ$ara$U5t^piV95RJa&)Nsl_cX7g#T%W1AFBhTe}=5oCl z9^je{aLpN(V6!BcA6z?<&Z!p7?6Xb_CThVfpd5Zypfif}V*)IM>A;Wam16o(5q?~t zcT4(Zf!VDCgxmo_1LoYlU00s`x=W?wfA$+H&^<^$J1{-mC)Dl}1~A8%%m~j`pJvog zC$C%#$;H0@pXb<*q$|o6`v-o%kk))e${|uirG7@hgB%1+%9S zE5n1nju#p6W8{jjH`ZS-(w`-~K@fZ9*7n;ihjM)J(_G&3m}1<@+Q!z--V(9C=!XFf)9+!s8P#E1XmP% z5g&*cRK%=^f~-ndANW>$p{UVFOpGKdqOw6HW;ev$zH>RwRHo|RpRIrEr^@cz)n~d- zpFZb1-)W;Gh7J4KiD8CLjaW2$+WbTb!!UOApJ9I5j1p|ye;=!?SRU!0wit9Yw8g{ z)(yQrrdp95iryk6)iI7=`&Sp6p$3J0j8Jt#({kpPYcU!`oIn7UoBN zik1~d9e8rG`kzi0uiJgHv(M=8-xfacTQ{I3YuB?x|Drn=_gPh*`tDxSj04@j9@==h zPX7C#;NZ5X{HM=*Zr=3Cg34DdWp|R@AJ-gvJ7@yu#CJLNa%F!T`_k8;DHWUR50}_K z=$p~>;Wf?SCtY7Y`^%tI#onc}oTJlr7Rgq7tPRPE_bhpFY7&`jeRPVeV&w}-uWNfQ zA0g5C^M>|!Bg5whyJXzYaM+Z!cFOKPKZe|od*dzbn|tr0pO;OK3s+x1rwW<0V{x;W z?JEy7X6|3dl*kkC7VqZ3^DfiRZa+9a{^WhVU+w_IZ(pAG-=}}GZS0Kv9c1b7CZ~k` zF;&-6zf7F@NPBA6*PG&ecFq5NSA2GU-S}l~^L}r5`+d`);eQ`JGx^O^c}vnS^76=U zfd`kory8d2s=I9xuoqt(|!NLB!#vOW&2muD><+S-)Pf3j%jM*?XaG_U{w77@*FSs7madG$?cC+zCuOmx;dwXtDrs87}ojHHhdOT>mupsXP;jm7`U~Nzv z8(5>8yZ8CJQFA8=(;9LVSsz8}_6|gTX(x;pmb0zMbFig;^P50~L-(##;lH!`;3+Tj>R6bP?d$6PpY1@z&c*VRc zTi)B5^ngJ;xsSWu$KBzAF5Qk-P6)h+EGDdT1Is_*nh@s6LDcIYasw;#qyot+kR6QA zed9M&UUeH&cWc1?8*m5!34ps*XCtUjf9QDb>BNkgENMiNMx+EWmNX+tGg5+=+rQ4y z+}-lj+KMMzkYWo`f@yhj2&oSt4Q$Ml8%S{jDZxV^TOd_?j({C2RKD>aluwdbobj8p zOwhumL0!ADB;7UL9gv(QD-gc|IRntJWDVliAZPFrmTX1*R^$wdv1BLWcOqv%ahB{t zj=PZ7G%iDY8FB{2DM}#6a-=nlbFnrT>)-$^Da6`BtTS1t6l+Vd?p@@O3aqWbx_1CX zYOuBj>mZ&WBU-79nGo)Qr-s)zB41dRr-s)zBVRB)WJ=V%JwE~*Kz_uXjd>Bw%94jj z@(?M($G{V*n2;n*Vr@v$W)cG{cj|1+lP0lTEXl=6b0bI!v6-8cVo51hnj1kcVIyh=JiHN)hU4<&DV9IQJxt?gxZ5-A0OP}hYmu&`m$QZUTv@XG zNN&av7mJB&&u5+8ZP?RW!V-h4!3T0COBV5q+yRMLl8LpMxF1-LB{^7|V;Y0=P;VCb z0N4$P0KHu?{X^2_Nfp*tVYBdyoVOTlqJ5ruNI8N zl0p0+EhK6IEVYfu4PsUROKmf9gP4sdPWE#c`F51W&hP^pRXc|R_g9haSh^jvrg0^f zR+^7*W9e=4@ef$~gK6B+@QF>4t*grOjhusO{iRKl7fWkq9fRbe5 zcW@*GlqAPAc6xp)*QWWWIGU$wF46 z;sn4V0jo4mvCcGphI>B41jfLgX{3pq8P4|au;IhTbqDWd?@O{!1#(~~RXfE77~)AT zcF)B=fY&@tTJD9|2W-HTQtV!eeE_d1ZNTmo*az^Mr%B7b2KxYBL)=mj5~w-^^&dg# z@hn|dNNdUr3q^m3+#H&4?oO)31dx3sGm?C`3_t>!A4Fmg6CHK%{@JyR=bgp#=*EYT z?IC0jX?;Vb`eDqdG6TKEJfz4&4!{=#L61YIF9`Ca4k_x80}vT75mikrC;n5_+@>eX zVpw^m(dF%Hu^L={R+ovdZx0H~?67KCOP2U$Chb{mVP%L3sHLnWUjNNeWiKyXxZ338wUaw12R%Y#1aWs=;*z=<#|26@fAy{-XAD4>_nke ztgm1P6?uiEuaFtE{sT$>VLo1trOQoFsv@hfbd_n`Q4JwU&}bK`ILIz^ng5aJ4Lkm) z=G5oOJ7}?W2KPB*3PG0K!~O5!AgB$ZZnqXoC%mNO_74`ge=lWk@n=>=788L^1N1A4 zh7@(!uYhWz&h7Ok*tGUaCqRe+nb)+IyWvU|$yuk%BE@iNaMJf}6P3O~HARh=t zlVSx@LBbGDb|2rvNV5k z6<7nwLGWj;%KZ1$n5)Jb@Mo6hSFQ$YAiow2)OO1c99G%k&!Odt0SW{pJL8UkZPA9N~pb8uUr{hUA z4z9*S;56|mQTAV~%Rg>`IDl1@Hi)lGrm$_mk_PMm_jzh{#B9_v<1{^g$DS1&8>;8b zv$3P-@&^>;#(fpovUT*;|5w8-dHs5w?P;597TUqRQ#=!&)J%rySpEB=+gZQF0R44~ z9V#=UcCQ)kYdLXvn$&O^Z@xiub3GnVkHg`T+^)|ou;06)uETc#K}$28`1A)+|L=G$ zparF`;)5W-)&DhpJ<;9yv#<^7yB1agw4|yF&yE14JgruIGI0>V4^OKVpB&Q|0*NXv zzC-@E6o)K814ww(gcQM3xbtd713sIPzH>+v)B@r= z>VL}u^Zpz?tJAA#!h88u?0yw{0!xM@NKGTW)D#Jr8wv)~C@Bn>1F!VnLhso3X0Bt literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/type_traits.hpp.8754B458E8251A51.idx b/.cache/clangd/index/type_traits.hpp.8754B458E8251A51.idx new file mode 100644 index 0000000000000000000000000000000000000000..54403f9f0eaa316ec2e316b70854190b1d54f0e2 GIT binary patch literal 5202 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 literal 0 HcmV?d00001 diff --git a/compile_commands.json b/compile_commands.json index 4ef3144..3b72d93 120000 --- a/compile_commands.json +++ b/compile_commands.json @@ -1 +1 @@ -/mnt/douwe/hdd/Projects/Screeps/build/compile_commands.json \ No newline at end of file +/home/douwe/Projects/screeps/build/compile_commands.json \ No newline at end of file From 6fcf742cfa8ccfaaf3412d9df6a1d7d1a6d97e93 Mon Sep 17 00:00:00 2001 From: Douwe Ravers Date: Mon, 22 Jun 2026 23:30:49 +0200 Subject: [PATCH 08/22] Miner not working properly but implementation is close. --- douwco_hivemind/include/Creeps/CreepBase.hpp | 60 ++--- douwco_hivemind/include/Creeps/Miner.hpp | 21 ++ douwco_hivemind/include/Creeps/Worker.hpp | 1 + douwco_hivemind/include/Engine.hpp | 2 +- douwco_hivemind/include/{ => Entity}/Room.hpp | 0 douwco_hivemind/src/Creeps/CreepBase.cpp | 234 +++++++++--------- douwco_hivemind/src/Creeps/Maintainer.cpp | 13 +- douwco_hivemind/src/Creeps/Miner.cpp | 42 ++++ douwco_hivemind/src/Creeps/Worker.cpp | 203 +++++++-------- douwco_hivemind/src/Engine.cpp | 4 + douwco_hivemind/src/{ => Entity}/Room.cpp | 2 +- douwco_hivemind/src/Structures/Spawn.cpp | 128 +++++----- screepsxx | 2 +- 13 files changed, 391 insertions(+), 321 deletions(-) create mode 100644 douwco_hivemind/include/Creeps/Miner.hpp rename douwco_hivemind/include/{ => Entity}/Room.hpp (100%) create mode 100644 douwco_hivemind/src/Creeps/Miner.cpp rename douwco_hivemind/src/{ => Entity}/Room.cpp (98%) diff --git a/douwco_hivemind/include/Creeps/CreepBase.hpp b/douwco_hivemind/include/Creeps/CreepBase.hpp index a3b5027..efd649a 100644 --- a/douwco_hivemind/include/Creeps/CreepBase.hpp +++ b/douwco_hivemind/include/Creeps/CreepBase.hpp @@ -3,47 +3,35 @@ #include -namespace Screeps{ - class RoomPosition; - class RoomObject; - class PathStep; -} +namespace Screeps { +class RoomPosition; +class RoomObject; +class PathStep; +} // namespace Screeps -namespace DouwcoHivemind -{ - enum CreepRole - { - UNEMPLOYED, - SUPPLIER, - UPGRADER, - BUILDER, - MAINTAINER - }; +namespace DouwcoHivemind { +enum CreepRole { UNEMPLOYED, SUPPLIER, UPGRADER, BUILDER, MAINTAINER, MINER }; - class CreepBase - { - public: - CreepRole role; - std::string target_id; +class CreepBase { +public: + CreepRole role; + std::string target_id; - protected: - Screeps::Creep creep; - JSON memory; +protected: + Screeps::Creep creep; + JSON memory; - public: - CreepBase(Screeps::Creep crp); - virtual ~CreepBase(); - virtual void loop() {} +public: + CreepBase(Screeps::Creep crp); + virtual ~CreepBase(); + virtual void loop() {} + bool isNearTo(const Screeps::RoomPosition &pos, int dist); - - bool isNearTo(const Screeps::RoomPosition &pos, int dist); - - - protected: - void moveToTarget(int dist = 1); - std::unique_ptr getRoomObjectTarget(); - }; -} +protected: + void moveToTarget(int dist = 1); + std::unique_ptr getRoomObjectTarget(); +}; +} // namespace DouwcoHivemind #endif // DOUWCO_HIVEMIND_CREEPBASE_HPP \ No newline at end of file diff --git a/douwco_hivemind/include/Creeps/Miner.hpp b/douwco_hivemind/include/Creeps/Miner.hpp new file mode 100644 index 0000000..f9afb35 --- /dev/null +++ b/douwco_hivemind/include/Creeps/Miner.hpp @@ -0,0 +1,21 @@ +#ifndef DOUWCO_HIVEMIND_MINER_HPP +#define DOUWCO_HIVEMIND_MINER_HPP + +#include "Creeps/CreepBase.hpp" +#include + +namespace DouwcoHivemind +{ + class Miner : public CreepBase + { + private: + bool arrivedAtContainer; + + public: + Miner(Screeps::Creep crp); + ~Miner() override; + void loop() override; + }; +} + +#endif // DOUWCO_HIVEMIND_MINER_HPP \ No newline at end of file diff --git a/douwco_hivemind/include/Creeps/Worker.hpp b/douwco_hivemind/include/Creeps/Worker.hpp index 7804459..277b9c0 100644 --- a/douwco_hivemind/include/Creeps/Worker.hpp +++ b/douwco_hivemind/include/Creeps/Worker.hpp @@ -20,6 +20,7 @@ namespace DouwcoHivemind virtual void depositEnergy(){} private: + void getEnergy(); void harvestSource(); std::unique_ptr getSourceTarget(); void searchSource(); diff --git a/douwco_hivemind/include/Engine.hpp b/douwco_hivemind/include/Engine.hpp index 625ffe9..0e1620f 100644 --- a/douwco_hivemind/include/Engine.hpp +++ b/douwco_hivemind/include/Engine.hpp @@ -4,7 +4,7 @@ #include #include "Creeps/CreepBase.hpp" -#include "Room.hpp" +#include "Entity/Room.hpp" #include "Structures/StructureBase.hpp" namespace DouwcoHivemind { diff --git a/douwco_hivemind/include/Room.hpp b/douwco_hivemind/include/Entity/Room.hpp similarity index 100% rename from douwco_hivemind/include/Room.hpp rename to douwco_hivemind/include/Entity/Room.hpp diff --git a/douwco_hivemind/src/Creeps/CreepBase.cpp b/douwco_hivemind/src/Creeps/CreepBase.cpp index 95af63e..679239d 100644 --- a/douwco_hivemind/src/Creeps/CreepBase.cpp +++ b/douwco_hivemind/src/Creeps/CreepBase.cpp @@ -4,144 +4,142 @@ #include #include #include +#include #include "Creeps/CreepBase.hpp" #include "Tools/JsonTool.hpp" -#include "Tools/PathTool.hpp" #include "Tools/MeasureTool.hpp" +#include "Tools/PathTool.hpp" -DouwcoHivemind::CreepBase::CreepBase(Screeps::Creep crp) : creep(crp), - memory(crp.memory()) -{ - role = memory.contains("role") ? static_cast(memory["role"]) : CreepRole::UNEMPLOYED; - target_id = memory.contains("target_id") ? static_cast(memory["target_id"]) : std::string(); +DouwcoHivemind::CreepBase::CreepBase(Screeps::Creep crp) + : creep(crp), memory(crp.memory()) { + role = memory.contains("role") ? static_cast(memory["role"]) + : CreepRole::UNEMPLOYED; + target_id = memory.contains("target_id") + ? static_cast(memory["target_id"]) + : std::string(); } -DouwcoHivemind::CreepBase::~CreepBase() -{ - memory["role"] = role; - memory["target_id"] = target_id; - creep.setMemory(memory); +DouwcoHivemind::CreepBase::~CreepBase() { + memory["role"] = role; + memory["target_id"] = target_id; + creep.setMemory(memory); } -void DouwcoHivemind::CreepBase::moveToTarget(int dist) -{ - // Is move required? - auto target = getRoomObjectTarget(); - if (isNearTo(target->pos(), dist)) - { - memory.erase("path"); - return; +void DouwcoHivemind::CreepBase::moveToTarget(int dist) { + // Is move required? + auto target = getRoomObjectTarget(); + if (isNearTo(target->pos(), dist)) { + memory.erase("path"); + return; + } + + // Is wating? + if (memory.contains("wait") && memory["wait"] > 0) { + memory["wait"] = memory["wait"].get() - 1; + creep.say("Waiting.."); + return; + } + + // Is there a path to walk? + if (!memory.contains("path") || memory["path"].empty()) { + creep.say("Searching route!"); + auto target_pos = target->pos(); + auto path = creep.room().findPath(creep.pos(), target_pos); + auto last = path.back(); + if (dist == 0) { + Screeps::Room::PathStep step; + step.x = target_pos.x(); + step.y = target_pos.y(); + step.dx = step.x - last.x; + step.dy = step.y - last.y; + path.push_back(step); } - - // Is wating? - if (memory.contains("wait") && memory["wait"] > 0) - { - memory["wait"] = memory["wait"].get() - 1; - creep.say("Waiting.."); - return; + if (abs(last.x - target_pos.x()) > dist || + abs(last.y - target_pos.y()) > dist) { + creep.say("No possible path"); + memory["wait"] = rand() % 20; + return; } + memory["path"] = vectorToJson(flattenPathSteps(path)); + } - // Is there a path to walk? - if (!memory.contains("path") || memory["path"].empty()) - { - creep.say("Searching route!"); - auto target_pos = target->pos(); - auto path = creep.room().findPath(creep.pos(), target_pos); - auto last = path.back(); - if (last.x - target_pos.x() > dist || last.y - target_pos.y() > dist) - { - creep.say("No possible path"); - memory["wait"] = rand() % 20; - return; - } - memory["path"] = vectorToJson(flattenPathSteps(path)); + // JS::console.log(std::string("creep pos: [") + + // std::to_string(creep.pos().x()) + + // std::string(",") + + // std::to_string(creep.pos().y()) + + // std::string("]")); + + // Get step from memory + int pathStepData[5] = {0}; + if (memory["path"].size() > 5) { + for (int i = 0; i < 5; i++) { + pathStepData[i] = memory["path"][i]; } + } else { + memory.erase("path"); + return; + } - // JS::console.log(std::string("creep pos: [") + - // std::to_string(creep.pos().x()) + - // std::string(",") + - // std::to_string(creep.pos().y()) + - // std::string("]")); + // Is the move of last tick executed? + int x = creep.pos().x(); + int y = creep.pos().y(); - // Get step from memory - int pathStepData[5] = {0}; - if (memory["path"].size() > 5) - { - for (int i = 0; i < 5; i++) - { - pathStepData[i] = memory["path"][i]; - } + Screeps::Room::PathStep step; + step.x = pathStepData[0]; + step.y = pathStepData[1]; + step.dx = pathStepData[2]; + step.dy = pathStepData[3]; + step.direction = pathStepData[4]; + + if (memory.contains("last_pos")) { + int last_x = memory["last_pos"]["x"]; + int last_y = memory["last_pos"]["y"]; + memory.erase("last_pos"); + if (x == last_x && y == last_y) { + creep.say("I'm stuck!"); + memory["wait"] = rand() % 5; + return; } - else - { - memory.erase("path"); - return; - } - - // Is the move of last tick executed? - int x = creep.pos().x(); - int y = creep.pos().y(); - - Screeps::Room::PathStep step; - step.x = pathStepData[0]; - step.y = pathStepData[1]; - step.dx = pathStepData[2]; - step.dy = pathStepData[3]; - step.direction = pathStepData[4]; - - if (memory.contains("last_pos")) - { - int last_x = memory["last_pos"]["x"]; - int last_y = memory["last_pos"]["y"]; - memory.erase("last_pos"); - if (x == last_x && y == last_y) - { - creep.say("I'm stuck!"); - memory["wait"] = rand() % 5; - return; - } - } - - // Is the creep on the place intended by the path? - if (!(x == step.x - step.dx && y == step.y - step.dy)) - { - creep.say("I'm lost!"); - memory["wait"] = rand() % 5; - memory.erase("path"); - return; - } - - // Lets move forward - int resp = creep.move(step.direction); - if (resp == Screeps::OK) - { - memory["last_pos"]["x"] = x; - memory["last_pos"]["y"] = y; - - for (int i = 0; i < 5; i++) - { - memory["path"].erase(0); - } + } + + // Is the creep on the place intended by the path? + if (!(x == step.x - step.dx && y == step.y - step.dy)) { + creep.say("I'm lost!"); + memory["wait"] = rand() % 5; + memory.erase("path"); + return; + } + + // Lets move forward + int resp = creep.move(step.direction); + if (resp == Screeps::OK) { + memory["last_pos"]["x"] = x; + memory["last_pos"]["y"] = y; + + for (int i = 0; i < 5; i++) { + memory["path"].erase(0); } + } } -std::unique_ptr DouwcoHivemind::CreepBase::getRoomObjectTarget() -{ - // Check if any target is present - if(target_id.empty()) return nullptr; - // Check if game can find target - auto roomObj = Screeps::Game.getObjectById(target_id); - if (!roomObj) - { - JS::console.log(creep.name() + ": Game can\'t find target id: " + target_id); - return nullptr; - } - return std::move(roomObj); +std::unique_ptr +DouwcoHivemind::CreepBase::getRoomObjectTarget() { + // Check if any target is present + if (target_id.empty()) + return nullptr; + // Check if game can find target + auto roomObj = Screeps::Game.getObjectById(target_id); + if (!roomObj) { + JS::console.log(creep.name() + + ": Game can\'t find target id: " + target_id); + return nullptr; + } + return std::move(roomObj); } -bool DouwcoHivemind::CreepBase::isNearTo(const Screeps::RoomPosition &pos, int dist) -{ - return DouwcoHivemind::isNearTo(creep.pos(), pos, dist); +bool DouwcoHivemind::CreepBase::isNearTo(const Screeps::RoomPosition &pos, + int dist) { + return DouwcoHivemind::isNearTo(creep.pos(), pos, dist); } \ No newline at end of file diff --git a/douwco_hivemind/src/Creeps/Maintainer.cpp b/douwco_hivemind/src/Creeps/Maintainer.cpp index dbc9c0a..ffec34c 100644 --- a/douwco_hivemind/src/Creeps/Maintainer.cpp +++ b/douwco_hivemind/src/Creeps/Maintainer.cpp @@ -17,6 +17,7 @@ #include "Creeps/Maintainer.hpp" #include "Creeps/CreepBase.hpp" +#include "Screeps/Constants.hpp" void DouwcoHivemind::Maintainer::depositEnergy() { @@ -61,22 +62,24 @@ std::unique_ptr DouwcoHivemind::Maintainer::getDamagedStruct void DouwcoHivemind::Maintainer::searchDamagedStructure() { - int lowestMaintaince = INT16_MAX; + int highestDamage = 0; Screeps::Structure *selectedStructure; auto structures = creep.room().find(Screeps::FIND_STRUCTURES); for (auto &structureObject : structures) { - auto structure = dynamic_cast(structureObject.get()); + auto structure = dynamic_cast(structureObject.release()); if (!structure) continue; - int maintance = structure->hits(); + int damage = structure->hitsMax() - structure->hits(); auto structureType = structure->structureType(); if (structureType == Screeps::STRUCTURE_CONTROLLER) continue; - if (maintance < lowestMaintaince) + if(structureType == Screeps::STRUCTURE_WALL || structureType == Screeps::STRUCTURE_RAMPART) + continue; // todo cover this situation as well. + if (highestDamage < damage) { - lowestMaintaince = maintance; + highestDamage = damage; selectedStructure = structure; } } diff --git a/douwco_hivemind/src/Creeps/Miner.cpp b/douwco_hivemind/src/Creeps/Miner.cpp new file mode 100644 index 0000000..12e7e37 --- /dev/null +++ b/douwco_hivemind/src/Creeps/Miner.cpp @@ -0,0 +1,42 @@ +#include "Creeps/Miner.hpp" +#include "Creeps/CreepBase.hpp" +#include "Screeps/Constants.hpp" +#include "Screeps/Creep.hpp" +#include "Screeps/Room.hpp" +#include "Screeps/RoomPosition.hpp" +#include "Screeps/Source.hpp" +#include + +DouwcoHivemind::Miner::Miner(Screeps::Creep crp) : CreepBase(crp) { + arrivedAtContainer = memory.contains("arrivedAtContainer") + ? static_cast(memory["arrivedAtContainer"]) + : false; +} + +DouwcoHivemind::Miner::~Miner() { + memory["arrivedAtContainer"] = arrivedAtContainer; +} + +void DouwcoHivemind::Miner::loop() { + if (arrivedAtContainer) { + auto source = + static_cast(getRoomObjectTarget().release()); + creep.harvest(*source); + } else { + auto container = getRoomObjectTarget(); + if (!container) + return; + if (isNearTo(container->pos(), 0)) { + arrivedAtContainer = true; + int x = creep.pos().x(); + int y = creep.pos().y(); + auto roomObjs = creep.room().lookForAtArea(Screeps::LOOK_SOURCES, y - 1, + x - 1, y + 1, x + 1); + return; // fault is here somewhere + auto source = static_cast(roomObjs[0].release()); + target_id = source->id(); + } else { + moveToTarget(0); + } + } +} \ No newline at end of file diff --git a/douwco_hivemind/src/Creeps/Worker.cpp b/douwco_hivemind/src/Creeps/Worker.cpp index ce2685b..e9003e0 100644 --- a/douwco_hivemind/src/Creeps/Worker.cpp +++ b/douwco_hivemind/src/Creeps/Worker.cpp @@ -1,123 +1,130 @@ -#include -#include #include +#include +#include +#include -#include +#include #include -#include +#include #include -#include #include +#include +#include +#include #include #include -#include #include +#include #include -#include -#include #include "Creeps/Worker.hpp" +#include "Screeps/StructureContainer.hpp" -DouwcoHivemind::Worker::Worker(Screeps::Creep crp) : CreepBase(crp) -{ - harvesting = memory.contains("harvesting") ? static_cast(memory["harvesting"]) : false; +DouwcoHivemind::Worker::Worker(Screeps::Creep crp) : CreepBase(crp) { + harvesting = memory.contains("harvesting") + ? static_cast(memory["harvesting"]) + : false; } -DouwcoHivemind::Worker::~Worker() -{ - memory["harvesting"] = harvesting; +DouwcoHivemind::Worker::~Worker() { memory["harvesting"] = harvesting; } + +void DouwcoHivemind::Worker::loop() { + if (harvesting) { + if (creep.store().getFreeCapacity(Screeps::RESOURCE_ENERGY) == 0) { + harvesting = false; + target_id.clear(); + } + getEnergy(); + } else { + if (creep.store().getUsedCapacity(Screeps::RESOURCE_ENERGY) == 0) { + harvesting = true; + target_id.clear(); + } + depositEnergy(); + } } -void DouwcoHivemind::Worker::loop() -{ - if (harvesting) - { - if (creep.store().getFreeCapacity(Screeps::RESOURCE_ENERGY) == 0) - { - harvesting = false; - target_id.clear(); - } - harvestSource(); - } - else - { - if (creep.store().getUsedCapacity(Screeps::RESOURCE_ENERGY) == 0) - { - harvesting = true; - target_id.clear(); - } - depositEnergy(); - } -} - -void DouwcoHivemind::Worker::harvestSource() -{ - auto source = getSourceTarget(); - if (!source) - return; - - if (isNearTo(source->pos(), 1)) - { - int resp = creep.harvest(*source); - } - else - { +void DouwcoHivemind::Worker::getEnergy() { + for (auto containersJSON : creep.room().memory()["sourceContainers"]) { + auto containerID = static_cast(containersJSON); + target_id = containerID; + auto containerRoomObject = getRoomObjectTarget(); + auto container = static_cast( + containerRoomObject.release()); + if (0 < container->store().getUsedCapacity(Screeps::RESOURCE_ENERGY)) { + if (isNearTo(container->pos(), 1)) { + int resp = creep.withdraw(*container, Screeps::RESOURCE_ENERGY); + } else { moveToTarget(); + } } + } + harvestSource(); } -std::unique_ptr DouwcoHivemind::Worker::getSourceTarget() -{ - auto roomObj = getRoomObjectTarget(); - if (!roomObj) - { - searchSource(); - return nullptr; - } +void DouwcoHivemind::Worker::harvestSource() { + auto source = getSourceTarget(); + if (!source) + return; - // Check if found roomobject is an actual source - auto source = std::unique_ptr(dynamic_cast(roomObj.release())); - if (!source) - { - // EM_ASM({console.log($0 + ': Can\'t cast target to Source')}, creep.name().c_str()); - searchSource(); - return nullptr; - } + if (isNearTo(source->pos(), 1)) { + int resp = creep.harvest(*source); + } else { + moveToTarget(); + } +} - // Check if the source still has energy to harvest +std::unique_ptr DouwcoHivemind::Worker::getSourceTarget() { + auto roomObj = getRoomObjectTarget(); + if (!roomObj) { + searchSource(); + return nullptr; + } + + // Check if found roomobject is an actual source + auto source = std::unique_ptr( + dynamic_cast(roomObj.release())); + if (!source) { + // EM_ASM({console.log($0 + ': Can\'t cast target to Source')}, + // creep.name().c_str()); + searchSource(); + return nullptr; + } + + // Check if the source still has energy to harvest + if (source->energy() == 0) { + searchSource(); + return nullptr; + } + + return std::move(source); +} + +void DouwcoHivemind::Worker::searchSource() { + target_id.clear(); + + auto sources = creep.room().find(Screeps::FIND_SOURCES_ACTIVE); + if (sources.size() == 0) + return; + + int x = creep.pos().x(); + int y = creep.pos().y(); + + int closestDistance = INT16_MAX; + Screeps::Source *selectedSource; + for (auto &sourceObject : sources) { + auto source = dynamic_cast(sourceObject.get()); if (source->energy() == 0) - { - searchSource(); - return nullptr; + continue; + int dx = source->pos().x() - x; + int dy = source->pos().y() - y; + int distance = dx * dx + dy * dy; + if (distance < closestDistance) { + closestDistance = distance; + selectedSource = source; } - - return std::move(source); -} - -void DouwcoHivemind::Worker::searchSource() -{ - target_id.clear(); - - auto sources = creep.room().find(Screeps::FIND_SOURCES_ACTIVE); - if (sources.size() == 0) - return; - - int x = creep.pos().x(); - int y = creep.pos().y(); - - int closestDistance = INT16_MAX; - Screeps::Source *selectedSource; - for(auto &sourceObject : sources){ - auto source =dynamic_cast(sourceObject.get()); - if(source->energy()==0) continue; - int dx = source->pos().x() - x; - int dy = source->pos().y() - y; - int distance = dx*dx + dy*dy; - if(distance < closestDistance){ - closestDistance = distance; - selectedSource = source; - } - } - if(!selectedSource) return; - target_id = selectedSource->id(); + } + if (!selectedSource) + return; + target_id = selectedSource->id(); } diff --git a/douwco_hivemind/src/Engine.cpp b/douwco_hivemind/src/Engine.cpp index 9f17eca..b0a55f1 100644 --- a/douwco_hivemind/src/Engine.cpp +++ b/douwco_hivemind/src/Engine.cpp @@ -6,8 +6,10 @@ #include "Creeps/Builder.hpp" #include "Creeps/Maintainer.hpp" +#include "Creeps/Miner.hpp" #include "Creeps/Supplier.hpp" #include "Creeps/Upgrader.hpp" +#include "Creeps/Miner.hpp" #include "Structures/Spawn.hpp" @@ -57,6 +59,8 @@ void DouwcoHivemind::Engine::ReadOutCreeps() { creeps.push_back(std::make_unique(creep.second)); else if (role == CreepRole::MAINTAINER) creeps.push_back(std::make_unique(creep.second)); + else if (role == CreepRole::MINER) + creeps.push_back(std::make_unique(creep.second)); } } diff --git a/douwco_hivemind/src/Room.cpp b/douwco_hivemind/src/Entity/Room.cpp similarity index 98% rename from douwco_hivemind/src/Room.cpp rename to douwco_hivemind/src/Entity/Room.cpp index 7d5ca60..8fd52c7 100644 --- a/douwco_hivemind/src/Room.cpp +++ b/douwco_hivemind/src/Entity/Room.cpp @@ -1,4 +1,4 @@ -#include "Room.hpp" +#include "Entity/Room.hpp" #include "Screeps/Constants.hpp" #include "Screeps/Room.hpp" diff --git a/douwco_hivemind/src/Structures/Spawn.cpp b/douwco_hivemind/src/Structures/Spawn.cpp index 0d15a0b..c602990 100644 --- a/douwco_hivemind/src/Structures/Spawn.cpp +++ b/douwco_hivemind/src/Structures/Spawn.cpp @@ -4,70 +4,76 @@ #include "Creeps/CreepBase.hpp" #include "Structures/Spawn.hpp" -void DouwcoHivemind::Spawn::loop() -{ - // Only run every 50 ticks - if (Screeps::Game.time() % 50 != 0) - return; +void DouwcoHivemind::Spawn::loop() { + // Only run every 50 ticks + if (Screeps::Game.time() % 50 != 0) + return; - int energyAvailable = spawn.room().energyAvailable(); - int energyCapacityAvailable = spawn.room().energyCapacityAvailable(); - - int required_upgraders = 1; - int required_suppliers = 1; - int required_maintainers = spawn.room().find(Screeps::FIND_STRUCTURES).size() <= 2 ? 0 : 1;; - int required_builders = spawn.room().find(Screeps::FIND_MY_CONSTRUCTION_SITES).size() == 0 ? 0 : 1; - for (auto &creep : Screeps::Game.creeps()) - { - CreepRole role = creep.second.memory()["role"]; + int energyAvailable = spawn.room().energyAvailable(); + int energyCapacityAvailable = spawn.room().energyCapacityAvailable(); - if (role == CreepRole::SUPPLIER) - required_suppliers--; - else if (role == CreepRole::UPGRADER) - required_upgraders--; - else if (role == CreepRole::MAINTAINER) - required_maintainers--; - else if (role == CreepRole::BUILDER) - required_builders--; - } + int required_upgraders = 1; + int required_suppliers = 1; + int required_maintainers = + spawn.room().find(Screeps::FIND_STRUCTURES).size() <= 2 ? 0 : 1; + ; + int required_builders = + spawn.room().find(Screeps::FIND_MY_CONSTRUCTION_SITES).size() == 0 ? 0 + : 1; + int required_miners = 1; //spawn.room().memory()["sourceContainers"].size(); + for (auto &creep : Screeps::Game.creeps()) { + CreepRole role = creep.second.memory()["role"]; - // if (energyAvailable < energyCapacityAvailable && 3 < Screeps::Game.creeps().size()) - // return; - std::string name; - JSON opts; - if (required_suppliers > 0) - { - opts["memory"]["role"] = CreepRole::SUPPLIER; - name = "Supplier: "; - } - else if (required_upgraders > 0) - { - opts["memory"]["role"] = CreepRole::UPGRADER; - name = "Upgrader: "; - } - else if (required_builders > 0) - { - opts["memory"]["role"] = CreepRole::BUILDER; - name = "Builder: "; - } - else if (required_maintainers > 0) - { - opts["memory"]["role"] = CreepRole::MAINTAINER; - name = "Maintainer: "; - } - else - return; + if (role == CreepRole::SUPPLIER) + required_suppliers--; + else if (role == CreepRole::UPGRADER) + required_upgraders--; + else if (role == CreepRole::MAINTAINER) + required_maintainers--; + else if (role == CreepRole::BUILDER) + required_builders--; + else if (role == CreepRole::MINER) + required_miners--; + } - std::vector body; - for (int i = 0; i < energyAvailable / 200; i++) - { - body.push_back("work"); - body.push_back("carry"); - body.push_back("move"); - } + // if (energyAvailable < energyCapacityAvailable && 3 < + // Screeps::Game.creeps().size()) + // return; + std::string name; + JSON opts; + if (required_upgraders > 0) { + opts["memory"]["role"] = CreepRole::UPGRADER; + name = "Upgrader: "; + } else if (required_miners > 0) { + opts["memory"]["role"] = CreepRole::MINER; + opts["memory"]["target_id"] = + spawn.room().memory()["sourceContainers"][0]; // make logic for more + name = "Miner: "; + } else if (required_suppliers > 0) { + opts["memory"]["role"] = CreepRole::SUPPLIER; + name = "Supplier: "; + } else if (required_builders > 0) { + opts["memory"]["role"] = CreepRole::BUILDER; + name = "Builder: "; + } else if (required_maintainers > 0) { + opts["memory"]["role"] = CreepRole::MAINTAINER; + name = "Maintainer: "; + } else + return; - spawn.spawnCreep( - body, - name + std::to_string(Screeps::Game.time()), - opts); + std::vector body; + if (opts["memory"]["role"] == CreepRole::MINER) { + body.push_back("move"); + for (int i = 0; i < (energyAvailable - 50) / 100 && i < 5; i++) { + body.push_back("work"); + } + } else { + for (int i = 0; i < energyAvailable / 200; i++) { + body.push_back("work"); + body.push_back("carry"); + body.push_back("move"); + } + } + + spawn.spawnCreep(body, name + std::to_string(Screeps::Game.time()), opts); } \ No newline at end of file diff --git a/screepsxx b/screepsxx index bf5fd1f..b81be2b 160000 --- a/screepsxx +++ b/screepsxx @@ -1 +1 @@ -Subproject commit bf5fd1f69b251c6829d7847e3d5d2dbc7764a3b9 +Subproject commit b81be2be5d0eb6f6a19e5a0abf8bf199a61ec7e5 From 1e9b14f21c78a3861cc4b35046ea9ea125c17f6d Mon Sep 17 00:00:00 2001 From: Douwe Ravers Date: Wed, 1 Jul 2026 00:24:25 +0200 Subject: [PATCH 09/22] Improved miners and workers to work together. --- compile_commands.json | 2 +- douwco_hivemind/include/Creeps/Worker.hpp | 5 + douwco_hivemind/src/Creeps/Miner.cpp | 6 +- douwco_hivemind/src/Creeps/Worker.cpp | 115 +++++++++++++++------- douwco_hivemind/src/Entity/Room.cpp | 9 +- douwco_hivemind/src/Structures/Spawn.cpp | 3 +- 6 files changed, 98 insertions(+), 42 deletions(-) diff --git a/compile_commands.json b/compile_commands.json index 3b72d93..4ef3144 120000 --- a/compile_commands.json +++ b/compile_commands.json @@ -1 +1 @@ -/home/douwe/Projects/screeps/build/compile_commands.json \ No newline at end of file +/mnt/douwe/hdd/Projects/Screeps/build/compile_commands.json \ No newline at end of file diff --git a/douwco_hivemind/include/Creeps/Worker.hpp b/douwco_hivemind/include/Creeps/Worker.hpp index 277b9c0..47b1b9c 100644 --- a/douwco_hivemind/include/Creeps/Worker.hpp +++ b/douwco_hivemind/include/Creeps/Worker.hpp @@ -2,6 +2,7 @@ #define DOUWCO_HIVEMIND_HARVESTER_HPP #include "Creeps/CreepBase.hpp" +#include "Screeps/StructureContainer.hpp" namespace DouwcoHivemind { @@ -9,6 +10,7 @@ namespace DouwcoHivemind { private: bool harvesting; + bool foundContainer; public: Worker(Screeps::Creep crp); @@ -22,8 +24,11 @@ namespace DouwcoHivemind private: void getEnergy(); void harvestSource(); + void collectEnergyFromContainers(); std::unique_ptr getSourceTarget(); + std::unique_ptr getContainerTarget(); void searchSource(); + void searchContainer(); }; } diff --git a/douwco_hivemind/src/Creeps/Miner.cpp b/douwco_hivemind/src/Creeps/Miner.cpp index 12e7e37..0722278 100644 --- a/douwco_hivemind/src/Creeps/Miner.cpp +++ b/douwco_hivemind/src/Creeps/Miner.cpp @@ -30,10 +30,8 @@ void DouwcoHivemind::Miner::loop() { arrivedAtContainer = true; int x = creep.pos().x(); int y = creep.pos().y(); - auto roomObjs = creep.room().lookForAtArea(Screeps::LOOK_SOURCES, y - 1, - x - 1, y + 1, x + 1); - return; // fault is here somewhere - auto source = static_cast(roomObjs[0].release()); + auto roomObjs = creep.pos().findClosestByRange(Screeps::FIND_SOURCES, 2); + auto source = static_cast(roomObjs.release()); target_id = source->id(); } else { moveToTarget(0); diff --git a/douwco_hivemind/src/Creeps/Worker.cpp b/douwco_hivemind/src/Creeps/Worker.cpp index e9003e0..09c4431 100644 --- a/douwco_hivemind/src/Creeps/Worker.cpp +++ b/douwco_hivemind/src/Creeps/Worker.cpp @@ -24,9 +24,15 @@ DouwcoHivemind::Worker::Worker(Screeps::Creep crp) : CreepBase(crp) { harvesting = memory.contains("harvesting") ? static_cast(memory["harvesting"]) : false; + foundContainer = memory.contains("foundContainer") + ? static_cast(memory["foundContainer"]) + : false; } -DouwcoHivemind::Worker::~Worker() { memory["harvesting"] = harvesting; } +DouwcoHivemind::Worker::~Worker() { + memory["harvesting"] = harvesting; + memory["foundContainer"] = foundContainer; +} void DouwcoHivemind::Worker::loop() { if (harvesting) { @@ -45,21 +51,20 @@ void DouwcoHivemind::Worker::loop() { } void DouwcoHivemind::Worker::getEnergy() { - for (auto containersJSON : creep.room().memory()["sourceContainers"]) { - auto containerID = static_cast(containersJSON); - target_id = containerID; - auto containerRoomObject = getRoomObjectTarget(); - auto container = static_cast( - containerRoomObject.release()); - if (0 < container->store().getUsedCapacity(Screeps::RESOURCE_ENERGY)) { - if (isNearTo(container->pos(), 1)) { - int resp = creep.withdraw(*container, Screeps::RESOURCE_ENERGY); - } else { - moveToTarget(); - } - } + if (foundContainer || Screeps::Game.time()%100==0) collectEnergyFromContainers(); + else harvestSource(); +} + +void DouwcoHivemind::Worker::collectEnergyFromContainers() { + auto container = getContainerTarget(); + if (!container) + return; + + if (isNearTo(container->pos(), 1)) { + int resp = creep.withdraw(*container, Screeps::RESOURCE_ENERGY); + } else { + moveToTarget(); } - harvestSource(); } void DouwcoHivemind::Worker::harvestSource() { @@ -74,6 +79,33 @@ void DouwcoHivemind::Worker::harvestSource() { } } +std::unique_ptr +DouwcoHivemind::Worker::getContainerTarget() { + auto roomObj = getRoomObjectTarget(); + if (!roomObj) { + searchContainer(); + return nullptr; + } + + // Check if found roomobject is an actual source + auto container = std::unique_ptr( + dynamic_cast(roomObj.release())); + if (!container) { + // EM_ASM({console.log($0 + ': Can\'t cast target to Source')}, + // creep.name().c_str()); + searchContainer(); + return nullptr; + } + + // Check if the source still has energy to harvest + if (container->store().getUsedCapacity(Screeps::RESOURCE_ENERGY) == 0) { + searchContainer(); + return nullptr; + } + + return std::move(container); +} + std::unique_ptr DouwcoHivemind::Worker::getSourceTarget() { auto roomObj = getRoomObjectTarget(); if (!roomObj) { @@ -102,29 +134,42 @@ std::unique_ptr DouwcoHivemind::Worker::getSourceTarget() { void DouwcoHivemind::Worker::searchSource() { target_id.clear(); + auto sourceObject = creep.pos().findClosestByRange(Screeps::FIND_SOURCES); + if (!sourceObject) + return; + auto source = dynamic_cast(sourceObject.release()); + target_id = source->id(); +} - auto sources = creep.room().find(Screeps::FIND_SOURCES_ACTIVE); - if (sources.size() == 0) +void DouwcoHivemind::Worker::searchContainer() { + target_id.clear(); + + auto structureObjects = creep.room().find(Screeps::FIND_STRUCTURES); + if (structureObjects.size() == 0) return; - int x = creep.pos().x(); - int y = creep.pos().y(); - - int closestDistance = INT16_MAX; - Screeps::Source *selectedSource; - for (auto &sourceObject : sources) { - auto source = dynamic_cast(sourceObject.get()); - if (source->energy() == 0) + int fullestContents = 0; + Screeps::StructureContainer *selectedContainer; + for (auto &structureObject : structureObjects) { + auto structure = + dynamic_cast(structureObject.release()); + if (structure->structureType() != Screeps::STRUCTURE_CONTAINER) continue; - int dx = source->pos().x() - x; - int dy = source->pos().y() - y; - int distance = dx * dx + dy * dy; - if (distance < closestDistance) { - closestDistance = distance; - selectedSource = source; + auto container = dynamic_cast(structure); + int availableEnergy = + container->store().getUsedCapacity(Screeps::RESOURCE_ENERGY).value(); + if (availableEnergy == 0) + continue; + if (fullestContents < availableEnergy) { + fullestContents = availableEnergy; + selectedContainer = container; } } - if (!selectedSource) - return; - target_id = selectedSource->id(); -} + + if (!selectedContainer) { + foundContainer = false; + } else { + foundContainer = true; + target_id = selectedContainer->id(); + } +} \ No newline at end of file diff --git a/douwco_hivemind/src/Entity/Room.cpp b/douwco_hivemind/src/Entity/Room.cpp index 8fd52c7..167986e 100644 --- a/douwco_hivemind/src/Entity/Room.cpp +++ b/douwco_hivemind/src/Entity/Room.cpp @@ -1,6 +1,7 @@ #include "Entity/Room.hpp" #include "Screeps/Constants.hpp" +#include "Screeps/Game.hpp" #include "Screeps/Room.hpp" #include "Screeps/RoomObject.hpp" #include "Screeps/RoomPosition.hpp" @@ -28,6 +29,7 @@ DouwcoHivemind::Room::~Room() { } void DouwcoHivemind::Room::loop() { + if(Screeps::Game.time()%100!=0)return; if (placeContainers()) return; } @@ -36,7 +38,7 @@ bool DouwcoHivemind::Room::placeContainers() { auto sources = room.find(Screeps::FIND_SOURCES); // No containers planned or build, planning now - if (sourceContainers.size() == 0) { + if (sourceContainers.size() != sources.size()) { int controller_x = room.controller().value().pos().x(); int controller_y = room.controller().value().pos().y(); @@ -84,5 +86,10 @@ bool DouwcoHivemind::Room::placeContainers() { } return true; } + // Check if containers still exist + for(int i = 0; i < sourceContainers.size(); i++){ + auto roomObj = Screeps::Game.getObjectById(sourceContainers[i]); + if(!roomObj) sourceContainers.erase(sourceContainers.begin() + i); + } return false; } \ No newline at end of file diff --git a/douwco_hivemind/src/Structures/Spawn.cpp b/douwco_hivemind/src/Structures/Spawn.cpp index c602990..914821a 100644 --- a/douwco_hivemind/src/Structures/Spawn.cpp +++ b/douwco_hivemind/src/Structures/Spawn.cpp @@ -64,7 +64,8 @@ void DouwcoHivemind::Spawn::loop() { std::vector body; if (opts["memory"]["role"] == CreepRole::MINER) { body.push_back("move"); - for (int i = 0; i < (energyAvailable - 50) / 100 && i < 5; i++) { + body.push_back("work"); + for (int i = 0; i < (energyAvailable - 150) / 100 && i < 5; i++) { body.push_back("work"); } } else { From aacf582e109785c69297e29f189be0aea58ee4bd Mon Sep 17 00:00:00 2001 From: Douwe Ravers Date: Wed, 1 Jul 2026 00:38:15 +0200 Subject: [PATCH 10/22] simplify the worker a little. --- douwco_hivemind/src/Creeps/Worker.cpp | 2 +- screepsxx | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/douwco_hivemind/src/Creeps/Worker.cpp b/douwco_hivemind/src/Creeps/Worker.cpp index 09c4431..a737a0d 100644 --- a/douwco_hivemind/src/Creeps/Worker.cpp +++ b/douwco_hivemind/src/Creeps/Worker.cpp @@ -51,7 +51,7 @@ void DouwcoHivemind::Worker::loop() { } void DouwcoHivemind::Worker::getEnergy() { - if (foundContainer || Screeps::Game.time()%100==0) collectEnergyFromContainers(); + if (foundContainer) collectEnergyFromContainers(); else harvestSource(); } diff --git a/screepsxx b/screepsxx index b81be2b..0eca2f2 160000 --- a/screepsxx +++ b/screepsxx @@ -1 +1 @@ -Subproject commit b81be2be5d0eb6f6a19e5a0abf8bf199a61ec7e5 +Subproject commit 0eca2f2867dfab810eedec5ae76efea87592abac From fe24faafe6df1ad4962623bae5ec1d1533884241 Mon Sep 17 00:00:00 2001 From: Douwe Ravers Date: Wed, 1 Jul 2026 00:46:18 +0200 Subject: [PATCH 11/22] fixed workers again. --- douwco_hivemind/src/Creeps/Worker.cpp | 2 +- douwco_hivemind/src/Entity/Room.cpp | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/douwco_hivemind/src/Creeps/Worker.cpp b/douwco_hivemind/src/Creeps/Worker.cpp index a737a0d..09c4431 100644 --- a/douwco_hivemind/src/Creeps/Worker.cpp +++ b/douwco_hivemind/src/Creeps/Worker.cpp @@ -51,7 +51,7 @@ void DouwcoHivemind::Worker::loop() { } void DouwcoHivemind::Worker::getEnergy() { - if (foundContainer) collectEnergyFromContainers(); + if (foundContainer || Screeps::Game.time()%100==0) collectEnergyFromContainers(); else harvestSource(); } diff --git a/douwco_hivemind/src/Entity/Room.cpp b/douwco_hivemind/src/Entity/Room.cpp index 167986e..97718ba 100644 --- a/douwco_hivemind/src/Entity/Room.cpp +++ b/douwco_hivemind/src/Entity/Room.cpp @@ -38,7 +38,7 @@ bool DouwcoHivemind::Room::placeContainers() { auto sources = room.find(Screeps::FIND_SOURCES); // No containers planned or build, planning now - if (sourceContainers.size() != sources.size()) { + if (sourceContainers.size() < sources.size()) { int controller_x = room.controller().value().pos().x(); int controller_y = room.controller().value().pos().y(); From 69816925abaae8bd5d79431025b4f7a6c6e9a7eb Mon Sep 17 00:00:00 2001 From: Douwe Ravers Date: Wed, 1 Jul 2026 01:01:06 +0200 Subject: [PATCH 12/22] Made spawn way slower. --- douwco_hivemind/src/Structures/Spawn.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/douwco_hivemind/src/Structures/Spawn.cpp b/douwco_hivemind/src/Structures/Spawn.cpp index 914821a..1d6af57 100644 --- a/douwco_hivemind/src/Structures/Spawn.cpp +++ b/douwco_hivemind/src/Structures/Spawn.cpp @@ -5,8 +5,8 @@ #include "Structures/Spawn.hpp" void DouwcoHivemind::Spawn::loop() { - // Only run every 50 ticks - if (Screeps::Game.time() % 50 != 0) + // Only run every 500 ticks + if (Screeps::Game.time() % 250 != 0) return; int energyAvailable = spawn.room().energyAvailable(); From 078c824c478e95c16ebabaf284931da8f2753df1 Mon Sep 17 00:00:00 2001 From: Douwe Ravers Date: Fri, 3 Jul 2026 09:57:59 +0200 Subject: [PATCH 13/22] Updated the supplier behavior to also use storage and implemented tower. --- douwco_hivemind/include/Constants.hpp | 9 + douwco_hivemind/include/Creeps/CreepBase.hpp | 2 +- douwco_hivemind/include/Entity/Room.hpp | 2 +- douwco_hivemind/include/Structures/Tower.hpp | 24 +++ douwco_hivemind/src/Creeps/Supplier.cpp | 194 ++++++++++--------- douwco_hivemind/src/Engine.cpp | 16 +- douwco_hivemind/src/Entity/Room.cpp | 26 +-- douwco_hivemind/src/Structures/Spawn.cpp | 71 ++++--- douwco_hivemind/src/Structures/Tower.cpp | 23 +++ 9 files changed, 227 insertions(+), 140 deletions(-) create mode 100644 douwco_hivemind/include/Constants.hpp create mode 100644 douwco_hivemind/include/Structures/Tower.hpp create mode 100644 douwco_hivemind/src/Structures/Tower.cpp diff --git a/douwco_hivemind/include/Constants.hpp b/douwco_hivemind/include/Constants.hpp new file mode 100644 index 0000000..d458238 --- /dev/null +++ b/douwco_hivemind/include/Constants.hpp @@ -0,0 +1,9 @@ +#ifndef DOUWCO_HIVEMIND_CONSTANTS_HPP +#define DOUWCO_HIVEMIND_CONSTANTS_HPP + +namespace DouwcoHivemind +{ + enum CreepRole { UNEMPLOYED, SUPPLIER, UPGRADER, BUILDER, MAINTAINER, MINER }; +} + +#endif // DOUWCO_HIVEMIND_CONSTANTS_HPP \ No newline at end of file diff --git a/douwco_hivemind/include/Creeps/CreepBase.hpp b/douwco_hivemind/include/Creeps/CreepBase.hpp index efd649a..237e13c 100644 --- a/douwco_hivemind/include/Creeps/CreepBase.hpp +++ b/douwco_hivemind/include/Creeps/CreepBase.hpp @@ -2,6 +2,7 @@ #define DOUWCO_HIVEMIND_CREEPBASE_HPP #include +#include "Constants.hpp" namespace Screeps { class RoomPosition; @@ -10,7 +11,6 @@ class PathStep; } // namespace Screeps namespace DouwcoHivemind { -enum CreepRole { UNEMPLOYED, SUPPLIER, UPGRADER, BUILDER, MAINTAINER, MINER }; class CreepBase { public: diff --git a/douwco_hivemind/include/Entity/Room.hpp b/douwco_hivemind/include/Entity/Room.hpp index c87412f..5704977 100644 --- a/douwco_hivemind/include/Entity/Room.hpp +++ b/douwco_hivemind/include/Entity/Room.hpp @@ -19,7 +19,7 @@ public: void loop(); protected: - bool placeContainers(); + void placeContainers(); }; } // namespace DouwcoHivemind diff --git a/douwco_hivemind/include/Structures/Tower.hpp b/douwco_hivemind/include/Structures/Tower.hpp new file mode 100644 index 0000000..408e74e --- /dev/null +++ b/douwco_hivemind/include/Structures/Tower.hpp @@ -0,0 +1,24 @@ +#ifndef DOUWCO_HIVEMIND_TOWER_HPP +#define DOUWCO_HIVEMIND_TOWER_HPP + +#include + +#include "Structures/StructureBase.hpp" + +namespace DouwcoHivemind +{ + class Tower : public StructureBase + { + private: + Screeps::StructureTower tower; + + public: + Tower(Screeps::StructureTower twr) : tower(twr), + StructureBase() {} + ~Tower() {} + + void loop() override; + }; +} + +#endif // DOUWCO_HIVEMIND_TOWER_HPP \ No newline at end of file diff --git a/douwco_hivemind/src/Creeps/Supplier.cpp b/douwco_hivemind/src/Creeps/Supplier.cpp index 40fbd9f..7f798da 100644 --- a/douwco_hivemind/src/Creeps/Supplier.cpp +++ b/douwco_hivemind/src/Creeps/Supplier.cpp @@ -1,120 +1,122 @@ -#include -#include #include +#include +#include +#include -#include #include -#include +#include #include -#include #include +#include +#include +#include #include #include -#include #include +#include +#include #include -#include #include "Creeps/Supplier.hpp" +#include "Screeps/Constants.hpp" -void DouwcoHivemind::Supplier::depositEnergy() -{ - auto structure = getEnergyStructureTarget(); - if (!structure) return; +void DouwcoHivemind::Supplier::depositEnergy() { + auto structure = getEnergyStructureTarget(); + if (!structure) + return; - if (isNearTo(structure->pos(), 1)) - { - int resp = creep.transfer(*structure, Screeps::RESOURCE_ENERGY); - } - else - { - moveToTarget(); - } + if (isNearTo(structure->pos(), 1)) { + int resp = creep.transfer(*structure, Screeps::RESOURCE_ENERGY); + } else { + moveToTarget(); + } } -std::unique_ptr DouwcoHivemind::Supplier::getEnergyStructureTarget() -{ - auto roomObj = getRoomObjectTarget(); - if (!roomObj) - { - searchEnergyStructure(); - return nullptr; - } +std::unique_ptr +DouwcoHivemind::Supplier::getEnergyStructureTarget() { + auto roomObj = getRoomObjectTarget(); + if (!roomObj) { + searchEnergyStructure(); + return nullptr; + } - auto structure = std::unique_ptr(dynamic_cast(roomObj.release())); + auto structure = std::unique_ptr( + dynamic_cast(roomObj.release())); + if (!structure) { + searchEnergyStructure(); + return nullptr; + } + + // Check if the structure can receive energy to harvest + int energyCapacity; + auto structureType = structure->structureType(); + if (structureType == Screeps::STRUCTURE_TOWER) { + auto tower = dynamic_cast(structure.get()); + energyCapacity = + tower->store().getFreeCapacity(Screeps::RESOURCE_ENERGY).value(); + } else if (structureType == Screeps::STRUCTURE_SPAWN) { + auto spawn = dynamic_cast(structure.get()); + energyCapacity = + spawn->store().getFreeCapacity(Screeps::RESOURCE_ENERGY).value(); + } else if (structureType == Screeps::STRUCTURE_EXTENSION) { + auto extension = + dynamic_cast(structure.get()); + energyCapacity = + extension->store().getFreeCapacity(Screeps::RESOURCE_ENERGY).value(); + } else if (structureType == Screeps::STRUCTURE_STORAGE) { + auto storage = dynamic_cast(structure.get()); + energyCapacity = + storage->store().getFreeCapacity(Screeps::RESOURCE_ENERGY).value(); + } + + if (energyCapacity == 0) { + searchEnergyStructure(); + return nullptr; + } + + return std::move(structure); +} + +void DouwcoHivemind::Supplier::searchEnergyStructure() { + int mostEnergyNeeded = 0; + std::string selectedStructureId; + std::string storageStructureId; + auto structures = creep.room().find(Screeps::FIND_MY_STRUCTURES); + for (auto &structureObject : structures) { + auto structure = dynamic_cast(structureObject.get()); if (!structure) - { - searchEnergyStructure(); - return nullptr; - } + continue; + + int energyRequired = 0; - // Check if the structure can receive energy to harvest - int energyCapacity; auto structureType = structure->structureType(); - if (structureType == Screeps::STRUCTURE_SPAWN) - { - auto spawn = dynamic_cast(structure.get()); - energyCapacity = spawn->store().getFreeCapacity(Screeps::RESOURCE_ENERGY).value(); - } - else if (structureType == Screeps::STRUCTURE_EXTENSION) - { - auto extension = dynamic_cast(structure.get()); - energyCapacity = extension->store().getFreeCapacity(Screeps::RESOURCE_ENERGY).value(); - } - else if (structureType == Screeps::STRUCTURE_TOWER) - { - auto extension = dynamic_cast(structure.get()); - energyCapacity = extension->store().getFreeCapacity(Screeps::RESOURCE_ENERGY).value(); + if (structureType == Screeps::STRUCTURE_TOWER) { + auto tower = dynamic_cast(structure); + energyRequired = + tower->store().getFreeCapacity(Screeps::RESOURCE_ENERGY).value(); + } else if (structureType == Screeps::STRUCTURE_SPAWN) { + auto spawn = dynamic_cast(structure); + energyRequired = + spawn->store().getFreeCapacity(Screeps::RESOURCE_ENERGY).value(); + } else if (structureType == Screeps::STRUCTURE_EXTENSION) { + auto extension = dynamic_cast(structure); + energyRequired = + extension->store().getFreeCapacity(Screeps::RESOURCE_ENERGY).value(); + } else if (structureType == Screeps::STRUCTURE_STORAGE) { + storageStructureId = structure->id(); } - if (energyCapacity == 0) - { - searchEnergyStructure(); - return nullptr; + if (energyRequired > mostEnergyNeeded) { + mostEnergyNeeded = energyRequired; + selectedStructureId = structure->id(); } + } - return std::move(structure); -} - -void DouwcoHivemind::Supplier::searchEnergyStructure() -{ - int mostEnergyNeeded = 0; - Screeps::Structure *selectedStructure; - auto structures = creep.room().find(Screeps::FIND_MY_STRUCTURES); - for (auto &structureObject : structures) - { - auto structure = dynamic_cast(structureObject.get()); - if (!structure) - continue; - - int energyRequired; - - auto structureType = structure->structureType(); - if (structureType == Screeps::STRUCTURE_SPAWN) - { - auto spawn = dynamic_cast(structure); - energyRequired = spawn->store().getFreeCapacity(Screeps::RESOURCE_ENERGY).value(); - } - else if (structureType == Screeps::STRUCTURE_EXTENSION) - { - auto extension = dynamic_cast(structure); - energyRequired = extension->store().getFreeCapacity(Screeps::RESOURCE_ENERGY).value(); - } - else if (structureType == Screeps::STRUCTURE_TOWER) - { - auto extension = dynamic_cast(structure); - energyRequired = extension->store().getFreeCapacity(Screeps::RESOURCE_ENERGY).value(); - } - - if (energyRequired > mostEnergyNeeded) - { - mostEnergyNeeded = energyRequired; - selectedStructure = structure; - } - } - - if (selectedStructure) - target_id = selectedStructure->id(); - else - target_id.clear(); + if (mostEnergyNeeded == 0) + selectedStructureId = storageStructureId; + + if (selectedStructureId.empty()) + target_id.clear(); + else + target_id = selectedStructureId; } diff --git a/douwco_hivemind/src/Engine.cpp b/douwco_hivemind/src/Engine.cpp index b0a55f1..edf01c8 100644 --- a/douwco_hivemind/src/Engine.cpp +++ b/douwco_hivemind/src/Engine.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include "Engine.hpp" @@ -11,7 +12,10 @@ #include "Creeps/Upgrader.hpp" #include "Creeps/Miner.hpp" +#include "Screeps/Constants.hpp" +#include "Screeps/StructureSpawn.hpp" #include "Structures/Spawn.hpp" +#include "Structures/Tower.hpp" DouwcoHivemind::Engine::Engine() { ReadOutRooms(); @@ -66,9 +70,15 @@ void DouwcoHivemind::Engine::ReadOutCreeps() { void DouwcoHivemind::Engine::ReadOutStructures() { JS::console.log(std::string("Reading out structures")); - auto spawns = Screeps::Game.spawns(); - for (auto &spawn : spawns) { - structures.push_back(std::make_unique(spawn.second)); + auto structures_src =Screeps::Game.structures(); + for (auto &structure : structures_src) { + std::string structureType = structure.second.structureType(); + if(structureType == Screeps::STRUCTURE_TOWER){ + structures.push_back(std::make_unique(static_cast(structure.second))); + } + else if(structureType == Screeps::STRUCTURE_SPAWN){ + structures.push_back(std::make_unique(static_cast(structure.second))); + } } } diff --git a/douwco_hivemind/src/Entity/Room.cpp b/douwco_hivemind/src/Entity/Room.cpp index 97718ba..f049525 100644 --- a/douwco_hivemind/src/Entity/Room.cpp +++ b/douwco_hivemind/src/Entity/Room.cpp @@ -9,13 +9,8 @@ #include "Screeps/Structure.hpp" #include "Screeps/StructureContainer.hpp" #include "Screeps/StructureController.hpp" -#include -#include -#include -#include -#include -#include -#include + +#include "Constants.hpp" DouwcoHivemind::Room::Room(Screeps::Room rm) : room(rm), memory(rm.memory()) { if (memory.contains("sourceContainers")) @@ -28,13 +23,13 @@ DouwcoHivemind::Room::~Room() { room.setMemory(memory); } -void DouwcoHivemind::Room::loop() { - if(Screeps::Game.time()%100!=0)return; - if (placeContainers()) - return; +void DouwcoHivemind::Room::loop() { + // Check on building setup + if(Screeps::Game.time()%1000!=0) return; + placeContainers(); } -bool DouwcoHivemind::Room::placeContainers() { +void DouwcoHivemind::Room::placeContainers() { auto sources = room.find(Screeps::FIND_SOURCES); // No containers planned or build, planning now @@ -69,7 +64,7 @@ bool DouwcoHivemind::Room::placeContainers() { room.createConstructionSite(best_x, best_y, Screeps::STRUCTURE_CONTAINER); sourceContainers.push_back("under_construction"); } - return true; + return; } // Check if construction container is done. for (auto entry : sourceContainers) { @@ -84,12 +79,11 @@ bool DouwcoHivemind::Room::placeContainers() { index++; } } - return true; + return; } // Check if containers still exist for(int i = 0; i < sourceContainers.size(); i++){ auto roomObj = Screeps::Game.getObjectById(sourceContainers[i]); if(!roomObj) sourceContainers.erase(sourceContainers.begin() + i); } - return false; -} \ No newline at end of file +} diff --git a/douwco_hivemind/src/Structures/Spawn.cpp b/douwco_hivemind/src/Structures/Spawn.cpp index 1d6af57..672bccc 100644 --- a/douwco_hivemind/src/Structures/Spawn.cpp +++ b/douwco_hivemind/src/Structures/Spawn.cpp @@ -6,68 +6,92 @@ void DouwcoHivemind::Spawn::loop() { // Only run every 500 ticks - if (Screeps::Game.time() % 250 != 0) + if (Screeps::Game.time() % 100 != 0) return; + // Get energy data int energyAvailable = spawn.room().energyAvailable(); int energyCapacityAvailable = spawn.room().energyCapacityAvailable(); + // Calculate needed creep roles int required_upgraders = 1; - int required_suppliers = 1; + int required_suppliers = 2; int required_maintainers = spawn.room().find(Screeps::FIND_STRUCTURES).size() <= 2 ? 0 : 1; ; int required_builders = spawn.room().find(Screeps::FIND_MY_CONSTRUCTION_SITES).size() == 0 ? 0 : 1; - int required_miners = 1; //spawn.room().memory()["sourceContainers"].size(); + int required_miners = 1; // spawn.room().memory()["sourceContainers"].size(); + + // Count existing roles + int existing_upgraders = 0; + int existing_suppliers = 0; + int existing_maintainers = 0; + int existing_builders = 0; + int existing_miners = 0; + for (auto &creep : Screeps::Game.creeps()) { CreepRole role = creep.second.memory()["role"]; if (role == CreepRole::SUPPLIER) - required_suppliers--; + existing_suppliers++; else if (role == CreepRole::UPGRADER) - required_upgraders--; + existing_upgraders++; else if (role == CreepRole::MAINTAINER) - required_maintainers--; + existing_maintainers++; else if (role == CreepRole::BUILDER) - required_builders--; + existing_builders++; else if (role == CreepRole::MINER) - required_miners--; + existing_miners++; } - // if (energyAvailable < energyCapacityAvailable && 3 < - // Screeps::Game.creeps().size()) - // return; + // Check if max energy used + if (energyAvailable < energyCapacityAvailable && 0 < existing_suppliers) + return; + + // Set creep properties std::string name; JSON opts; - if (required_upgraders > 0) { - opts["memory"]["role"] = CreepRole::UPGRADER; - name = "Upgrader: "; - } else if (required_miners > 0) { - opts["memory"]["role"] = CreepRole::MINER; + CreepRole role = CreepRole::UNEMPLOYED; + if (required_miners > existing_miners) { + role = CreepRole::MINER; opts["memory"]["target_id"] = spawn.room().memory()["sourceContainers"][0]; // make logic for more name = "Miner: "; - } else if (required_suppliers > 0) { - opts["memory"]["role"] = CreepRole::SUPPLIER; + } else if (required_suppliers > existing_suppliers) { + role = CreepRole::SUPPLIER; name = "Supplier: "; - } else if (required_builders > 0) { - opts["memory"]["role"] = CreepRole::BUILDER; + } else if (required_upgraders > existing_upgraders) { + role = CreepRole::UPGRADER; + name = "Upgrader: "; + } else if (required_builders > existing_builders) { + role = CreepRole::BUILDER; name = "Builder: "; - } else if (required_maintainers > 0) { - opts["memory"]["role"] = CreepRole::MAINTAINER; + } else if (required_maintainers > existing_maintainers) { + role = CreepRole::MAINTAINER; name = "Maintainer: "; } else return; + opts["memory"]["role"] = role; + + // Build creep body std::vector body; - if (opts["memory"]["role"] == CreepRole::MINER) { + if (role == CreepRole::MINER) { body.push_back("move"); body.push_back("work"); for (int i = 0; i < (energyAvailable - 150) / 100 && i < 5; i++) { body.push_back("work"); } + } else if (role == SUPPLIER) { + body.push_back("move"); + body.push_back("work"); + body.push_back("carry"); + for (int i = 0; i < (energyAvailable - 200) / 100 && i * 50 < energyCapacityAvailable; i++) { + body.push_back("move"); + body.push_back("carry"); + } } else { for (int i = 0; i < energyAvailable / 200; i++) { body.push_back("work"); @@ -76,5 +100,6 @@ void DouwcoHivemind::Spawn::loop() { } } + // Create creep spawn.spawnCreep(body, name + std::to_string(Screeps::Game.time()), opts); } \ No newline at end of file diff --git a/douwco_hivemind/src/Structures/Tower.cpp b/douwco_hivemind/src/Structures/Tower.cpp new file mode 100644 index 0000000..d9f261f --- /dev/null +++ b/douwco_hivemind/src/Structures/Tower.cpp @@ -0,0 +1,23 @@ +#include +#include +#include + +#include "Creeps/CreepBase.hpp" +#include "Screeps/Constants.hpp" +#include "Screeps/Creep.hpp" +#include "Structures/Tower.hpp" + +void DouwcoHivemind::Tower::loop() { + int minHits = INT16_MAX; + Screeps::Creep *target; + auto hostile_creeps = tower.room().find(Screeps::FIND_HOSTILE_CREEPS); + for (auto &creepRoomObj : hostile_creeps) { + Screeps::Creep* creep = static_cast(creepRoomObj.get()); + int health = creep->hits(); + if(health Date: Wed, 8 Jul 2026 22:29:02 +0200 Subject: [PATCH 14/22] Upgraded the way the workers work. --- douwco_hivemind/include/Creeps/CreepBase.hpp | 2 +- douwco_hivemind/include/Creeps/Miner.hpp | 3 +- douwco_hivemind/include/Creeps/Supplier.hpp | 26 +- douwco_hivemind/include/Creeps/Worker.hpp | 44 ++- douwco_hivemind/include/Entity/Room.hpp | 1 + douwco_hivemind/src/Creeps/Builder.cpp | 4 +- douwco_hivemind/src/Creeps/CreepBase.cpp | 16 +- douwco_hivemind/src/Creeps/Maintainer.cpp | 4 +- douwco_hivemind/src/Creeps/Miner.cpp | 64 +++-- douwco_hivemind/src/Creeps/Supplier.cpp | 4 +- douwco_hivemind/src/Creeps/Upgrader.cpp | 2 +- douwco_hivemind/src/Creeps/Worker.cpp | 269 ++++++++++--------- douwco_hivemind/src/Entity/Room.cpp | 31 ++- douwco_hivemind/src/Structures/Spawn.cpp | 29 +- 14 files changed, 275 insertions(+), 224 deletions(-) diff --git a/douwco_hivemind/include/Creeps/CreepBase.hpp b/douwco_hivemind/include/Creeps/CreepBase.hpp index 237e13c..124836b 100644 --- a/douwco_hivemind/include/Creeps/CreepBase.hpp +++ b/douwco_hivemind/include/Creeps/CreepBase.hpp @@ -15,7 +15,7 @@ namespace DouwcoHivemind { class CreepBase { public: CreepRole role; - std::string target_id; + std::string targetId; protected: Screeps::Creep creep; diff --git a/douwco_hivemind/include/Creeps/Miner.hpp b/douwco_hivemind/include/Creeps/Miner.hpp index f9afb35..482b586 100644 --- a/douwco_hivemind/include/Creeps/Miner.hpp +++ b/douwco_hivemind/include/Creeps/Miner.hpp @@ -9,7 +9,8 @@ namespace DouwcoHivemind class Miner : public CreepBase { private: - bool arrivedAtContainer; + std::string sourceId; + bool arrived; public: Miner(Screeps::Creep crp); diff --git a/douwco_hivemind/include/Creeps/Supplier.hpp b/douwco_hivemind/include/Creeps/Supplier.hpp index 247d299..695c080 100644 --- a/douwco_hivemind/include/Creeps/Supplier.hpp +++ b/douwco_hivemind/include/Creeps/Supplier.hpp @@ -3,20 +3,18 @@ #include "Creeps/Worker.hpp" -namespace DouwcoHivemind -{ - class Supplier : public Worker - { - public: - Supplier(Screeps::Creep creep) : Worker(creep) {} +namespace DouwcoHivemind { +class Supplier : public Worker { +public: + Supplier(Screeps::Creep creep) : Worker(creep) { ignoreStorage = true; } - protected: - void depositEnergy() override; - - private: - std::unique_ptr getEnergyStructureTarget(); - void searchEnergyStructure(); - }; -} +protected: + void depositEnergy() override; + +private: + std::unique_ptr getEnergyStructureTarget(); + void searchEnergyStructure(); +}; +} // namespace DouwcoHivemind #endif // DOUWCO_HIVEMIND_SUPPLIER_HPP \ No newline at end of file diff --git a/douwco_hivemind/include/Creeps/Worker.hpp b/douwco_hivemind/include/Creeps/Worker.hpp index 47b1b9c..8647d39 100644 --- a/douwco_hivemind/include/Creeps/Worker.hpp +++ b/douwco_hivemind/include/Creeps/Worker.hpp @@ -4,32 +4,28 @@ #include "Creeps/CreepBase.hpp" #include "Screeps/StructureContainer.hpp" -namespace DouwcoHivemind -{ - class Worker : public CreepBase - { - private: - bool harvesting; - bool foundContainer; +namespace DouwcoHivemind { +class Worker : public CreepBase { +protected: + bool ignoreStorage = false; - public: - Worker(Screeps::Creep crp); - ~Worker() override; +private: + bool harvesting; - void loop() override; +public: + Worker(Screeps::Creep crp); + ~Worker() override; - protected: - virtual void depositEnergy(){} - - private: - void getEnergy(); - void harvestSource(); - void collectEnergyFromContainers(); - std::unique_ptr getSourceTarget(); - std::unique_ptr getContainerTarget(); - void searchSource(); - void searchContainer(); - }; -} + void loop() override; + +protected: + virtual void depositEnergy() {} + +private: + void getEnergy(); + void searchEnergySource(); + void extractEnergyFromTarget(); +}; +} // namespace DouwcoHivemind #endif // DOUWCO_HIVEMIND_HARVESTER_HPP \ No newline at end of file diff --git a/douwco_hivemind/include/Entity/Room.hpp b/douwco_hivemind/include/Entity/Room.hpp index 5704977..170082a 100644 --- a/douwco_hivemind/include/Entity/Room.hpp +++ b/douwco_hivemind/include/Entity/Room.hpp @@ -10,6 +10,7 @@ class Room { protected: Screeps::Room room; JSON memory; + std::vector sources = {}; std::vector sourceContainers = {}; public: diff --git a/douwco_hivemind/src/Creeps/Builder.cpp b/douwco_hivemind/src/Creeps/Builder.cpp index 4590c02..0833a67 100644 --- a/douwco_hivemind/src/Creeps/Builder.cpp +++ b/douwco_hivemind/src/Creeps/Builder.cpp @@ -77,7 +77,7 @@ void DouwcoHivemind::Builder::searchConstructionSite() } if (selectedConstructionSite) - target_id = selectedConstructionSite->id(); + targetId = selectedConstructionSite->id(); else - target_id.clear(); + targetId.clear(); } diff --git a/douwco_hivemind/src/Creeps/CreepBase.cpp b/douwco_hivemind/src/Creeps/CreepBase.cpp index 679239d..9dd6f5b 100644 --- a/douwco_hivemind/src/Creeps/CreepBase.cpp +++ b/douwco_hivemind/src/Creeps/CreepBase.cpp @@ -16,14 +16,14 @@ DouwcoHivemind::CreepBase::CreepBase(Screeps::Creep crp) : creep(crp), memory(crp.memory()) { role = memory.contains("role") ? static_cast(memory["role"]) : CreepRole::UNEMPLOYED; - target_id = memory.contains("target_id") - ? static_cast(memory["target_id"]) - : std::string(); + targetId = memory.contains("targetId") + ? static_cast(memory["targetId"]) + : std::string(); } DouwcoHivemind::CreepBase::~CreepBase() { memory["role"] = role; - memory["target_id"] = target_id; + memory["targetId"] = targetId; creep.setMemory(memory); } @@ -127,13 +127,13 @@ void DouwcoHivemind::CreepBase::moveToTarget(int dist) { std::unique_ptr DouwcoHivemind::CreepBase::getRoomObjectTarget() { // Check if any target is present - if (target_id.empty()) + if (targetId.empty()) return nullptr; // Check if game can find target - auto roomObj = Screeps::Game.getObjectById(target_id); + auto roomObj = Screeps::Game.getObjectById(targetId); if (!roomObj) { - JS::console.log(creep.name() + - ": Game can\'t find target id: " + target_id); + JS::console.log(creep.name() + ": Game can\'t find target id: " + targetId); + targetId.clear(); return nullptr; } return std::move(roomObj); diff --git a/douwco_hivemind/src/Creeps/Maintainer.cpp b/douwco_hivemind/src/Creeps/Maintainer.cpp index ffec34c..a9919da 100644 --- a/douwco_hivemind/src/Creeps/Maintainer.cpp +++ b/douwco_hivemind/src/Creeps/Maintainer.cpp @@ -85,7 +85,7 @@ void DouwcoHivemind::Maintainer::searchDamagedStructure() } if (selectedStructure && selectedStructure->hits() != selectedStructure->hitsMax()) - target_id = selectedStructure->id(); + targetId = selectedStructure->id(); else - target_id.clear(); + targetId.clear(); } diff --git a/douwco_hivemind/src/Creeps/Miner.cpp b/douwco_hivemind/src/Creeps/Miner.cpp index 0722278..87bb6ca 100644 --- a/douwco_hivemind/src/Creeps/Miner.cpp +++ b/douwco_hivemind/src/Creeps/Miner.cpp @@ -2,39 +2,63 @@ #include "Creeps/CreepBase.hpp" #include "Screeps/Constants.hpp" #include "Screeps/Creep.hpp" +#include "Screeps/Game.hpp" #include "Screeps/Room.hpp" #include "Screeps/RoomPosition.hpp" #include "Screeps/Source.hpp" +#include "Screeps/Structure.hpp" #include DouwcoHivemind::Miner::Miner(Screeps::Creep crp) : CreepBase(crp) { - arrivedAtContainer = memory.contains("arrivedAtContainer") - ? static_cast(memory["arrivedAtContainer"]) - : false; + sourceId = memory.contains("sourceId") + ? static_cast(memory["sourceId"]) + : ""; + arrived = + memory.contains("arrived") ? static_cast(memory["arrived"]) : false; } DouwcoHivemind::Miner::~Miner() { - memory["arrivedAtContainer"] = arrivedAtContainer; + memory["sourceId"] = sourceId; + memory["arrived"] = arrived; } void DouwcoHivemind::Miner::loop() { - if (arrivedAtContainer) { - auto source = - static_cast(getRoomObjectTarget().release()); + // Find assigned source + auto source = static_cast( + Screeps::Game.getObjectById(sourceId).release()); + if (!source) + return; + // If arrived just harvest the source + if (arrived) { creep.harvest(*source); - } else { - auto container = getRoomObjectTarget(); - if (!container) - return; - if (isNearTo(container->pos(), 0)) { - arrivedAtContainer = true; - int x = creep.pos().x(); - int y = creep.pos().y(); - auto roomObjs = creep.pos().findClosestByRange(Screeps::FIND_SOURCES, 2); - auto source = static_cast(roomObjs.release()); - target_id = source->id(); - } else { - moveToTarget(0); + } + // Otherwise move towards the source or a container near it + else { + auto target = getRoomObjectTarget(); + // If target is set move to it or detect if you arrive + if (target) { + bool targetIsSource = target->pos().isEqualTo(source->pos()); + int closenessToTarget = targetIsSource ? 1 : 0; + if (isNearTo(target->pos(), closenessToTarget)) { + arrived = true; + } else { + moveToTarget(closenessToTarget); + } + } + // if no target look if there are containers near the source otherwise go to source directly. + else { + auto structureRoomObjs = + source->pos().findInRange(Screeps::FIND_STRUCTURES, 2); + for (auto &structureRoomObj : structureRoomObjs) { + auto structure = + static_cast(structureRoomObj.get()); + if (Screeps::STRUCTURE_CONTAINER == structure->structureType()) { + targetId = structure->id(); + break; + } + } + if (targetId.empty()) + targetId = sourceId; } } } \ No newline at end of file diff --git a/douwco_hivemind/src/Creeps/Supplier.cpp b/douwco_hivemind/src/Creeps/Supplier.cpp index 7f798da..d4e3a3c 100644 --- a/douwco_hivemind/src/Creeps/Supplier.cpp +++ b/douwco_hivemind/src/Creeps/Supplier.cpp @@ -116,7 +116,7 @@ void DouwcoHivemind::Supplier::searchEnergyStructure() { selectedStructureId = storageStructureId; if (selectedStructureId.empty()) - target_id.clear(); + targetId.clear(); else - target_id = selectedStructureId; + targetId = selectedStructureId; } diff --git a/douwco_hivemind/src/Creeps/Upgrader.cpp b/douwco_hivemind/src/Creeps/Upgrader.cpp index 814e6d7..6cb9507 100644 --- a/douwco_hivemind/src/Creeps/Upgrader.cpp +++ b/douwco_hivemind/src/Creeps/Upgrader.cpp @@ -21,7 +21,7 @@ void DouwcoHivemind::Upgrader::depositEnergy() { auto controller = creep.room().controller().value(); - target_id = controller.id(); + targetId = controller.id(); if (isNearTo(controller.pos(), 3)) { int resp = creep.upgradeController(controller); diff --git a/douwco_hivemind/src/Creeps/Worker.cpp b/douwco_hivemind/src/Creeps/Worker.cpp index 09c4431..886bd41 100644 --- a/douwco_hivemind/src/Creeps/Worker.cpp +++ b/douwco_hivemind/src/Creeps/Worker.cpp @@ -1,4 +1,5 @@ #include +#include #include #include #include @@ -17,159 +18,179 @@ #include #include +#include "Constants.hpp" #include "Creeps/Worker.hpp" +#include "Screeps/Resource.hpp" +#include "Screeps/Ruin.hpp" #include "Screeps/StructureContainer.hpp" +#include "Screeps/StructureStorage.hpp" +#include "Screeps/Tombstone.hpp" DouwcoHivemind::Worker::Worker(Screeps::Creep crp) : CreepBase(crp) { harvesting = memory.contains("harvesting") ? static_cast(memory["harvesting"]) : false; - foundContainer = memory.contains("foundContainer") - ? static_cast(memory["foundContainer"]) - : false; } -DouwcoHivemind::Worker::~Worker() { - memory["harvesting"] = harvesting; - memory["foundContainer"] = foundContainer; -} +DouwcoHivemind::Worker::~Worker() { memory["harvesting"] = harvesting; } void DouwcoHivemind::Worker::loop() { if (harvesting) { + JS::console.log(std::string("worker: harvesting")); if (creep.store().getFreeCapacity(Screeps::RESOURCE_ENERGY) == 0) { + JS::console.log(std::string("worker: harvesting full")); harvesting = false; - target_id.clear(); + targetId.clear(); + } else { + getEnergy(); } - getEnergy(); } else { if (creep.store().getUsedCapacity(Screeps::RESOURCE_ENERGY) == 0) { harvesting = true; - target_id.clear(); + targetId.clear(); + } else { + depositEnergy(); } - depositEnergy(); } } void DouwcoHivemind::Worker::getEnergy() { - if (foundContainer || Screeps::Game.time()%100==0) collectEnergyFromContainers(); - else harvestSource(); -} - -void DouwcoHivemind::Worker::collectEnergyFromContainers() { - auto container = getContainerTarget(); - if (!container) - return; - - if (isNearTo(container->pos(), 1)) { - int resp = creep.withdraw(*container, Screeps::RESOURCE_ENERGY); + JS::console.log(std::string("worker: get energy")); + if (targetId.empty()) { + JS::console.log(std::string("worker: No target search energy")); + searchEnergySource(); } else { - moveToTarget(); + JS::console.log(std::string("worker: has target with energy")); + auto target = getRoomObjectTarget(); + if (!target) + return; + if (isNearTo(target->pos(), 1)) { + JS::console.log(std::string("worker: collect energy")); + extractEnergyFromTarget(); + } else { + JS::console.log(std::string("worker: go to energy")); + moveToTarget(1); + } } } -void DouwcoHivemind::Worker::harvestSource() { - auto source = getSourceTarget(); - if (!source) - return; - - if (isNearTo(source->pos(), 1)) { - int resp = creep.harvest(*source); - } else { - moveToTarget(); - } -} - -std::unique_ptr -DouwcoHivemind::Worker::getContainerTarget() { - auto roomObj = getRoomObjectTarget(); - if (!roomObj) { - searchContainer(); - return nullptr; - } - - // Check if found roomobject is an actual source - auto container = std::unique_ptr( - dynamic_cast(roomObj.release())); - if (!container) { - // EM_ASM({console.log($0 + ': Can\'t cast target to Source')}, - // creep.name().c_str()); - searchContainer(); - return nullptr; - } - - // Check if the source still has energy to harvest - if (container->store().getUsedCapacity(Screeps::RESOURCE_ENERGY) == 0) { - searchContainer(); - return nullptr; - } - - return std::move(container); -} - -std::unique_ptr DouwcoHivemind::Worker::getSourceTarget() { - auto roomObj = getRoomObjectTarget(); - if (!roomObj) { - searchSource(); - return nullptr; - } - - // Check if found roomobject is an actual source - auto source = std::unique_ptr( - dynamic_cast(roomObj.release())); - if (!source) { - // EM_ASM({console.log($0 + ': Can\'t cast target to Source')}, - // creep.name().c_str()); - searchSource(); - return nullptr; - } - - // Check if the source still has energy to harvest - if (source->energy() == 0) { - searchSource(); - return nullptr; - } - - return std::move(source); -} - -void DouwcoHivemind::Worker::searchSource() { - target_id.clear(); - auto sourceObject = creep.pos().findClosestByRange(Screeps::FIND_SOURCES); - if (!sourceObject) - return; - auto source = dynamic_cast(sourceObject.release()); - target_id = source->id(); -} - -void DouwcoHivemind::Worker::searchContainer() { - target_id.clear(); - +void DouwcoHivemind::Worker::searchEnergySource() { + // Search for storage and containers + std::string containerID = std::string(); auto structureObjects = creep.room().find(Screeps::FIND_STRUCTURES); - if (structureObjects.size() == 0) - return; - - int fullestContents = 0; - Screeps::StructureContainer *selectedContainer; - for (auto &structureObject : structureObjects) { - auto structure = - dynamic_cast(structureObject.release()); - if (structure->structureType() != Screeps::STRUCTURE_CONTAINER) - continue; - auto container = dynamic_cast(structure); - int availableEnergy = - container->store().getUsedCapacity(Screeps::RESOURCE_ENERGY).value(); - if (availableEnergy == 0) - continue; - if (fullestContents < availableEnergy) { - fullestContents = availableEnergy; - selectedContainer = container; + if (structureObjects.size() > 0) { + int fullestContents = 0; + for (auto &structureObject : structureObjects) { + auto structure = static_cast(structureObject.get()); + auto structureType = structure->structureType(); + if (structureType == Screeps::STRUCTURE_STORAGE) { + if (ignoreStorage) + continue; + targetId = structure->id(); + return; + } else if (structureType == Screeps::STRUCTURE_CONTAINER) { + auto container = static_cast(structure); + int availableEnergy = container->store() + .getUsedCapacity(Screeps::RESOURCE_ENERGY) + .value_or(0); + if (availableEnergy == 0) + continue; + if (fullestContents < availableEnergy) { + fullestContents = availableEnergy; + containerID = container->id(); + } + } } } - if (!selectedContainer) { - foundContainer = false; - } else { - foundContainer = true; - target_id = selectedContainer->id(); + // Search for loose resources + auto resourceObjects = creep.room().find(Screeps::FIND_DROPPED_RESOURCES); + if (resourceObjects.size() > 0) { + int highestAmount = 0; + std::string resourceID = std::string(); + for (auto &resourceObject : resourceObjects) { + auto resource = static_cast(resourceObject.get()); + if (resource->resourceType() != Screeps::RESOURCE_ENERGY) + continue; + int amount = resource->amount(); + if (amount < 100) + continue; + if (amount > highestAmount) { + highestAmount = amount; + resourceID = resource->id(); + } + } + if (!resourceID.empty()) { + targetId = resourceID; + return; + } } -} \ No newline at end of file + + // Search for existing ruins + auto ruinObjects = creep.room().find(Screeps::FIND_RUINS); + if (ruinObjects.size() > 0) { + int highestAmount = 0; + std::string ruinID = std::string(); + for (auto &ruinObject : ruinObjects) { + auto ruin = static_cast(ruinObject.get()); + if (ruin->ticksToDecay() < 100) + continue; + int amount = + ruin->store().getUsedCapacity(Screeps::RESOURCE_ENERGY).value_or(0); + if (amount > highestAmount) { + highestAmount = amount; + ruinID = ruin->id(); + } + } + if (!ruinID.empty()) { + targetId = ruinID; + return; + } + } + + // Search for existing tombstones + auto tombstoneObjects = creep.room().find(Screeps::FIND_TOMBSTONES); + if (tombstoneObjects.size() > 0) { + int highestAmount = 0; + std::string TombstoneID = std::string(); + for (auto &tombstoneObject : tombstoneObjects) { + auto tombstone = static_cast(tombstoneObject.get()); + if (tombstone->ticksToDecay() < 100) + continue; + int amount = tombstone->store() + .getUsedCapacity(Screeps::RESOURCE_ENERGY) + .value_or(0); + if (amount > highestAmount) { + highestAmount = amount; + TombstoneID = tombstone->id(); + } + } + if (!TombstoneID.empty()) { + targetId = TombstoneID; + return; + } + } + + // If still nothing found take the earlier found container. + if (!containerID.empty()) { + targetId = containerID; + } + + // If still nothing found, there is no target and search should start again. + targetId = std::string(); +} + +void DouwcoHivemind::Worker::extractEnergyFromTarget() { + auto roomObj = getRoomObjectTarget(); + if (!roomObj) { + targetId.clear(); + return; + } + + auto resource = dynamic_cast(roomObj.get()); + if (resource) + creep.pickup(*resource); + else + creep.withdraw(*roomObj.get(), Screeps::RESOURCE_ENERGY); + targetId.clear(); +} diff --git a/douwco_hivemind/src/Entity/Room.cpp b/douwco_hivemind/src/Entity/Room.cpp index f049525..2506a05 100644 --- a/douwco_hivemind/src/Entity/Room.cpp +++ b/douwco_hivemind/src/Entity/Room.cpp @@ -6,42 +6,50 @@ #include "Screeps/RoomObject.hpp" #include "Screeps/RoomPosition.hpp" #include "Screeps/RoomTerrain.hpp" +#include "Screeps/Source.hpp" #include "Screeps/Structure.hpp" #include "Screeps/StructureContainer.hpp" #include "Screeps/StructureController.hpp" #include "Constants.hpp" +#include DouwcoHivemind::Room::Room(Screeps::Room rm) : room(rm), memory(rm.memory()) { + if (memory.contains("sources")) + sources = static_cast>(memory["sources"]); if (memory.contains("sourceContainers")) sourceContainers = static_cast>(memory["sourceContainers"]); } DouwcoHivemind::Room::~Room() { + memory["sources"] = sources; memory["sourceContainers"] = sourceContainers; room.setMemory(memory); } -void DouwcoHivemind::Room::loop() { - // Check on building setup - if(Screeps::Game.time()%1000!=0) return; +void DouwcoHivemind::Room::loop() { + if (sources.size() == 0) { + auto sources_ = room.find(Screeps::FIND_SOURCES); + for (auto &source : sources_) { + sources.push_back(static_cast(source.get())->id()); + } + } placeContainers(); } void DouwcoHivemind::Room::placeContainers() { - auto sources = room.find(Screeps::FIND_SOURCES); - // No containers planned or build, planning now if (sourceContainers.size() < sources.size()) { int controller_x = room.controller().value().pos().x(); int controller_y = room.controller().value().pos().y(); - for (auto &source : sources) { - int source_x = source->pos().x(); - int source_y = source->pos().y(); + for (auto sourceId : sources) { + auto roomObj = Screeps::Game.getObjectById(sourceId); + int source_x = roomObj->pos().x(); + int source_y = roomObj->pos().y(); - int lowest_cost = 1000; + int lowest_cost = INT16_MAX; int best_x; int best_y; for (int dx = -1; dx < 2; dx++) { @@ -82,8 +90,9 @@ void DouwcoHivemind::Room::placeContainers() { return; } // Check if containers still exist - for(int i = 0; i < sourceContainers.size(); i++){ + for (int i = 0; i < sourceContainers.size(); i++) { auto roomObj = Screeps::Game.getObjectById(sourceContainers[i]); - if(!roomObj) sourceContainers.erase(sourceContainers.begin() + i); + if (!roomObj) + sourceContainers.erase(sourceContainers.begin() + i); } } diff --git a/douwco_hivemind/src/Structures/Spawn.cpp b/douwco_hivemind/src/Structures/Spawn.cpp index 672bccc..3745f6c 100644 --- a/douwco_hivemind/src/Structures/Spawn.cpp +++ b/douwco_hivemind/src/Structures/Spawn.cpp @@ -1,5 +1,6 @@ #include #include +#include #include "Creeps/CreepBase.hpp" #include "Structures/Spawn.hpp" @@ -16,13 +17,10 @@ void DouwcoHivemind::Spawn::loop() { // Calculate needed creep roles int required_upgraders = 1; int required_suppliers = 2; - int required_maintainers = - spawn.room().find(Screeps::FIND_STRUCTURES).size() <= 2 ? 0 : 1; - ; + int required_maintainers = 1; int required_builders = - spawn.room().find(Screeps::FIND_MY_CONSTRUCTION_SITES).size() == 0 ? 0 - : 1; - int required_miners = 1; // spawn.room().memory()["sourceContainers"].size(); + spawn.room().find(Screeps::FIND_MY_CONSTRUCTION_SITES).size() > 0 ? 1 : 0; + int required_miners = 1; // spawn.room().memory()["sources"].size(); // Count existing roles int existing_upgraders = 0; @@ -56,8 +54,8 @@ void DouwcoHivemind::Spawn::loop() { CreepRole role = CreepRole::UNEMPLOYED; if (required_miners > existing_miners) { role = CreepRole::MINER; - opts["memory"]["target_id"] = - spawn.room().memory()["sourceContainers"][0]; // make logic for more + opts["memory"]["sourceId"] = + spawn.room().memory()["sources"][0]; // make logic for more name = "Miner: "; } else if (required_suppliers > existing_suppliers) { role = CreepRole::SUPPLIER; @@ -78,21 +76,24 @@ void DouwcoHivemind::Spawn::loop() { // Build creep body std::vector body; + // Miner body with up to 5 work (10 en/s) bits for 3000 source mining in 300 + // tick regen. if (role == CreepRole::MINER) { body.push_back("move"); body.push_back("work"); for (int i = 0; i < (energyAvailable - 150) / 100 && i < 5; i++) { body.push_back("work"); } - } else if (role == SUPPLIER) { - body.push_back("move"); - body.push_back("work"); - body.push_back("carry"); - for (int i = 0; i < (energyAvailable - 200) / 100 && i * 50 < energyCapacityAvailable; i++) { + } + // Supplier body with only move and carry to move energy around + else if (role == SUPPLIER) { + for (int i = 0; i < energyAvailable / 100; i++) { body.push_back("move"); body.push_back("carry"); } - } else { + } + // Worker body with balanced parts. + else { for (int i = 0; i < energyAvailable / 200; i++) { body.push_back("work"); body.push_back("carry"); From a2d12f691fa03c806876e13a9116580cdc8822b4 Mon Sep 17 00:00:00 2001 From: Douwe Ravers Date: Fri, 10 Jul 2026 10:24:19 +0200 Subject: [PATCH 15/22] Changed engine vectors to mappings for later lookup functionality. --- douwco_hivemind/include/Engine.hpp | 12 +++--- douwco_hivemind/src/Creeps/Builder.cpp | 4 +- douwco_hivemind/src/Engine.cpp | 52 +++++++++++++----------- douwco_hivemind/src/Structures/Spawn.cpp | 5 +-- screepsxx | 2 +- 5 files changed, 40 insertions(+), 35 deletions(-) diff --git a/douwco_hivemind/include/Engine.hpp b/douwco_hivemind/include/Engine.hpp index 0e1620f..b0ffd67 100644 --- a/douwco_hivemind/include/Engine.hpp +++ b/douwco_hivemind/include/Engine.hpp @@ -1,6 +1,8 @@ #ifndef DOUWCO_HIVEMIND_ENGINE_HPP #define DOUWCO_HIVEMIND_ENGINE_HPP +#include +#include #include #include "Creeps/CreepBase.hpp" @@ -9,10 +11,10 @@ namespace DouwcoHivemind { class Engine { -private: - std::vector> rooms; - std::vector> creeps; - std::vector> structures; +public: + std::map> Rooms; + std::map> Creeps; + std::map> Structures; public: // Readout data from screeps API into C++ vectors @@ -30,6 +32,6 @@ private: // Clear dead screep memory void clearDeadCreepMemory(); }; -} +} // namespace DouwcoHivemind #endif // DOUWCO_HIVEMIND_ENGINE_HPP \ No newline at end of file diff --git a/douwco_hivemind/src/Creeps/Builder.cpp b/douwco_hivemind/src/Creeps/Builder.cpp index 0833a67..ad8d7b2 100644 --- a/douwco_hivemind/src/Creeps/Builder.cpp +++ b/douwco_hivemind/src/Creeps/Builder.cpp @@ -57,7 +57,7 @@ std::unique_ptr DouwcoHivemind::Builder::getConstruct void DouwcoHivemind::Builder::searchConstructionSite() { - int leastProgressLeft = INT16_MAX; + int leastProgressLeft = INT32_MAX; Screeps::ConstructionSite *selectedConstructionSite; auto constructionSites = creep.room().find(Screeps::FIND_MY_CONSTRUCTION_SITES); for (auto &constructionSiteObject : constructionSites) @@ -68,7 +68,7 @@ void DouwcoHivemind::Builder::searchConstructionSite() int progressLeft = constructionSite->progressTotal() - constructionSite->progress(); - if(constructionSite->structureType() == Screeps::STRUCTURE_ROAD) progressLeft *= 100; + if(constructionSite->structureType() == Screeps::STRUCTURE_ROAD) progressLeft *= 10; if (progressLeft < leastProgressLeft) { leastProgressLeft = progressLeft; diff --git a/douwco_hivemind/src/Engine.cpp b/douwco_hivemind/src/Engine.cpp index edf01c8..30baf9a 100644 --- a/douwco_hivemind/src/Engine.cpp +++ b/douwco_hivemind/src/Engine.cpp @@ -1,6 +1,7 @@ #include #include #include +#include #include #include "Engine.hpp" @@ -10,7 +11,6 @@ #include "Creeps/Miner.hpp" #include "Creeps/Supplier.hpp" #include "Creeps/Upgrader.hpp" -#include "Creeps/Miner.hpp" #include "Screeps/Constants.hpp" #include "Screeps/StructureSpawn.hpp" @@ -18,23 +18,26 @@ #include "Structures/Tower.hpp" DouwcoHivemind::Engine::Engine() { + JS::console.log(std::string("Reading out owned rooms")); ReadOutRooms(); + JS::console.log(std::string("Reading out creeps")); ReadOutCreeps(); + JS::console.log(std::string("Reading out structures")); ReadOutStructures(); } void DouwcoHivemind::Engine::loop() { JS::console.log(std::string("Iterating over rooms")); - for (auto &room : rooms) - room->loop(); + for (auto &room : Rooms) + room.second->loop(); JS::console.log(std::string("Iterating over creeps")); - for (auto &creep : creeps) - creep->loop(); + for (auto &creep : Creeps) + creep.second->loop(); JS::console.log(std::string("Iterating over structures")); - for (auto &structure : structures) - structure->loop(); + for (auto &structure : Structures) + structure.second->loop(); if (Screeps::Game.time() % 100 == 0) { clearDeadCreepMemory(); @@ -42,42 +45,45 @@ void DouwcoHivemind::Engine::loop() { } void DouwcoHivemind::Engine::ReadOutRooms() { - JS::console.log(std::string("Reading out owned rooms")); auto src_rooms = Screeps::Game.rooms(); for (auto &room : src_rooms) { - if(!room.second.controller().value().my()) continue; - rooms.push_back(std::make_unique(room.second)); + if (!room.second.controller().value().my()) + continue; + Rooms.emplace(room.first, std::make_unique(room.second)); } } void DouwcoHivemind::Engine::ReadOutCreeps() { - JS::console.log(std::string("Reading out creeps")); auto src_creeps = Screeps::Game.creeps(); for (auto &creep : src_creeps) { CreepRole role = creep.second.memory()["role"]; if (role == CreepRole::SUPPLIER) - creeps.push_back(std::make_unique(creep.second)); + Creeps.emplace(creep.first, std::make_unique(creep.second)); else if (role == CreepRole::UPGRADER) - creeps.push_back(std::make_unique(creep.second)); + Creeps.emplace(creep.first, std::make_unique(creep.second)); else if (role == CreepRole::BUILDER) - creeps.push_back(std::make_unique(creep.second)); + Creeps.emplace(creep.first, std::make_unique(creep.second)); else if (role == CreepRole::MAINTAINER) - creeps.push_back(std::make_unique(creep.second)); + Creeps.emplace(creep.first, std::make_unique(creep.second)); else if (role == CreepRole::MINER) - creeps.push_back(std::make_unique(creep.second)); + Creeps.emplace(creep.first, std::make_unique(creep.second)); } } void DouwcoHivemind::Engine::ReadOutStructures() { - JS::console.log(std::string("Reading out structures")); - auto structures_src =Screeps::Game.structures(); + auto structures_src = Screeps::Game.structures(); for (auto &structure : structures_src) { std::string structureType = structure.second.structureType(); - if(structureType == Screeps::STRUCTURE_TOWER){ - structures.push_back(std::make_unique(static_cast(structure.second))); - } - else if(structureType == Screeps::STRUCTURE_SPAWN){ - structures.push_back(std::make_unique(static_cast(structure.second))); + if (structureType == Screeps::STRUCTURE_TOWER) { + Structures.emplace( + structure.first, + std::make_unique( + static_cast(structure.second))); + } else if (structureType == Screeps::STRUCTURE_SPAWN) { + Structures.emplace( + structure.first, + std::make_unique( + static_cast(structure.second))); } } } diff --git a/douwco_hivemind/src/Structures/Spawn.cpp b/douwco_hivemind/src/Structures/Spawn.cpp index 3745f6c..bbc2efb 100644 --- a/douwco_hivemind/src/Structures/Spawn.cpp +++ b/douwco_hivemind/src/Structures/Spawn.cpp @@ -3,13 +3,10 @@ #include #include "Creeps/CreepBase.hpp" +#include "Engine.hpp" #include "Structures/Spawn.hpp" void DouwcoHivemind::Spawn::loop() { - // Only run every 500 ticks - if (Screeps::Game.time() % 100 != 0) - return; - // Get energy data int energyAvailable = spawn.room().energyAvailable(); int energyCapacityAvailable = spawn.room().energyCapacityAvailable(); diff --git a/screepsxx b/screepsxx index 0eca2f2..c6e4baf 160000 --- a/screepsxx +++ b/screepsxx @@ -1 +1 @@ -Subproject commit 0eca2f2867dfab810eedec5ae76efea87592abac +Subproject commit c6e4bafaa3a20199d2e79dc28ca9acde63ebf84d From 3148302aae3c8f8014d06c13f491c38b23beecab Mon Sep 17 00:00:00 2001 From: Douwe Ravers Date: Fri, 10 Jul 2026 10:43:26 +0200 Subject: [PATCH 16/22] Created a static accesser for the Engine. --- douwco_hivemind/include/Engine.hpp | 9 +++++++ douwco_hivemind/src/Engine.cpp | 1 + douwco_hivemind/src/Loop.cpp | 31 ++++++++++++------------ douwco_hivemind/src/Structures/Tower.cpp | 2 ++ 4 files changed, 28 insertions(+), 15 deletions(-) diff --git a/douwco_hivemind/include/Engine.hpp b/douwco_hivemind/include/Engine.hpp index b0ffd67..6a6bf6d 100644 --- a/douwco_hivemind/include/Engine.hpp +++ b/douwco_hivemind/include/Engine.hpp @@ -11,17 +11,26 @@ namespace DouwcoHivemind { class Engine { +private: +static Engine* instance; + public: std::map> Rooms; std::map> Creeps; std::map> Structures; public: + // Static singleton access + static Engine* getInstance(){ + return instance; + } // Readout data from screeps API into C++ vectors Engine(); // Loop over all rooms, screeps and structures void loop(); + + private: // Readout player owned rooms void ReadOutRooms(); diff --git a/douwco_hivemind/src/Engine.cpp b/douwco_hivemind/src/Engine.cpp index 30baf9a..d848635 100644 --- a/douwco_hivemind/src/Engine.cpp +++ b/douwco_hivemind/src/Engine.cpp @@ -18,6 +18,7 @@ #include "Structures/Tower.hpp" DouwcoHivemind::Engine::Engine() { + instance = this; JS::console.log(std::string("Reading out owned rooms")); ReadOutRooms(); JS::console.log(std::string("Reading out creeps")); diff --git a/douwco_hivemind/src/Loop.cpp b/douwco_hivemind/src/Loop.cpp index a6252dd..0b6a44b 100644 --- a/douwco_hivemind/src/Loop.cpp +++ b/douwco_hivemind/src/Loop.cpp @@ -10,23 +10,24 @@ #include "Structures/Spawn.hpp" EMSCRIPTEN_KEEPALIVE -extern "C" void loop() -{ - Screeps::Context::update(); +extern "C" void loop() { + Screeps::Context::update(); - JS::console.log(std::string("\n\n\n\n\n\n\n\n\n")); - JS::console.log(std::string("Processing tick:\t") + std::to_string(Screeps::Game.time())); + JS::console.log(std::string("\n\n\n\n\n\n\n\n\n")); + JS::console.log(std::string("Processing tick:\t") + + std::to_string(Screeps::Game.time())); - { - DouwcoHivemind::Engine engine; - engine.loop(); - } + { + DouwcoHivemind::Engine engine; + engine.loop(); - JS::console.log("Used CPU:\t" + std::to_string(Screeps::Game.cpuGetUsed())); - JS::console.log("Bucket:\t" + std::to_string(static_cast(Screeps::Game.cpu()["bucket"]))); + auto test = &(DouwcoHivemind::Engine::getInstance()->Structures); + JS::console.log(std::string("test: ") + std::to_string(test->size())); + } + + JS::console.log("Used CPU:\t" + std::to_string(Screeps::Game.cpuGetUsed())); + JS::console.log("Bucket:\t" + std::to_string(static_cast( + Screeps::Game.cpu()["bucket"]))); } -EMSCRIPTEN_BINDINGS(loop) -{ - emscripten::function("loop", &loop); -} +EMSCRIPTEN_BINDINGS(loop) { emscripten::function("loop", &loop); } diff --git a/douwco_hivemind/src/Structures/Tower.cpp b/douwco_hivemind/src/Structures/Tower.cpp index d9f261f..252f1c3 100644 --- a/douwco_hivemind/src/Structures/Tower.cpp +++ b/douwco_hivemind/src/Structures/Tower.cpp @@ -1,8 +1,10 @@ #include #include #include +#include #include "Creeps/CreepBase.hpp" +#include "Engine.hpp" #include "Screeps/Constants.hpp" #include "Screeps/Creep.hpp" #include "Structures/Tower.hpp" From fb07ab70fcb152b18133674b2374638535f2950c Mon Sep 17 00:00:00 2001 From: Douwe Ravers Date: Fri, 10 Jul 2026 14:17:00 +0200 Subject: [PATCH 17/22] Moved spawning to room, multiple miners working. --- douwco_hivemind/include/Entity/Room.hpp | 18 +- douwco_hivemind/include/Structures/Spawn.hpp | 8 +- douwco_hivemind/src/Creeps/Worker.cpp | 35 ++-- douwco_hivemind/src/Entity/Room.cpp | 169 ++++++++++++++++--- douwco_hivemind/src/Structures/Spawn.cpp | 102 ----------- 5 files changed, 183 insertions(+), 149 deletions(-) diff --git a/douwco_hivemind/include/Entity/Room.hpp b/douwco_hivemind/include/Entity/Room.hpp index 170082a..95fc3a9 100644 --- a/douwco_hivemind/include/Entity/Room.hpp +++ b/douwco_hivemind/include/Entity/Room.hpp @@ -1,17 +1,23 @@ #ifndef DOUWCO_HIVEMIND_ROOM_HPP #define DOUWCO_HIVEMIND_ROOM_HPP +#include "Constants.hpp" #include #include namespace DouwcoHivemind { class Room { - -protected: - Screeps::Room room; +public: + Screeps::Room roomJs; JSON memory; - std::vector sources = {}; - std::vector sourceContainers = {}; + + std::vector sourceIds = {}; + std::vector sourceContainerIds = {}; + std::vector SpawnIds = {}; + std::vector screepNames = {}; + +private: + int minerIterator; public: Room(Screeps::Room rm); @@ -20,6 +26,8 @@ public: void loop(); protected: + void manageScreeps(); + void manageStructures(); void placeContainers(); }; } // namespace DouwcoHivemind diff --git a/douwco_hivemind/include/Structures/Spawn.hpp b/douwco_hivemind/include/Structures/Spawn.hpp index 450aba8..4904fd4 100644 --- a/douwco_hivemind/include/Structures/Spawn.hpp +++ b/douwco_hivemind/include/Structures/Spawn.hpp @@ -9,15 +9,13 @@ namespace DouwcoHivemind { class Spawn : public StructureBase { - private: - Screeps::StructureSpawn spawn; + public: + Screeps::StructureSpawn spawnJs; public: - Spawn(Screeps::StructureSpawn spwn) : spawn(spwn), + Spawn(Screeps::StructureSpawn spwn) : spawnJs(spwn), StructureBase() {} ~Spawn() {} - - void loop() override; }; } diff --git a/douwco_hivemind/src/Creeps/Worker.cpp b/douwco_hivemind/src/Creeps/Worker.cpp index 886bd41..331c147 100644 --- a/douwco_hivemind/src/Creeps/Worker.cpp +++ b/douwco_hivemind/src/Creeps/Worker.cpp @@ -36,9 +36,7 @@ DouwcoHivemind::Worker::~Worker() { memory["harvesting"] = harvesting; } void DouwcoHivemind::Worker::loop() { if (harvesting) { - JS::console.log(std::string("worker: harvesting")); if (creep.store().getFreeCapacity(Screeps::RESOURCE_ENERGY) == 0) { - JS::console.log(std::string("worker: harvesting full")); harvesting = false; targetId.clear(); } else { @@ -55,20 +53,15 @@ void DouwcoHivemind::Worker::loop() { } void DouwcoHivemind::Worker::getEnergy() { - JS::console.log(std::string("worker: get energy")); if (targetId.empty()) { - JS::console.log(std::string("worker: No target search energy")); searchEnergySource(); } else { - JS::console.log(std::string("worker: has target with energy")); auto target = getRoomObjectTarget(); if (!target) return; if (isNearTo(target->pos(), 1)) { - JS::console.log(std::string("worker: collect energy")); extractEnergyFromTarget(); } else { - JS::console.log(std::string("worker: go to energy")); moveToTarget(1); } } @@ -95,6 +88,10 @@ void DouwcoHivemind::Worker::searchEnergySource() { .value_or(0); if (availableEnergy == 0) continue; + if (container->pos().inRangeTo(creep.pos(), 3)) { + targetId = container->id(); + return; + } if (fullestContents < availableEnergy) { fullestContents = availableEnergy; containerID = container->id(); @@ -103,6 +100,11 @@ void DouwcoHivemind::Worker::searchEnergySource() { } } + // If no storage go for the containers + if (!containerID.empty()) { + targetId = containerID; + } + // Search for loose resources auto resourceObjects = creep.room().find(Screeps::FIND_DROPPED_RESOURCES); if (resourceObjects.size() > 0) { @@ -113,6 +115,10 @@ void DouwcoHivemind::Worker::searchEnergySource() { if (resource->resourceType() != Screeps::RESOURCE_ENERGY) continue; int amount = resource->amount(); + if (resource->pos().inRangeTo(creep.pos(), 3)) { + targetId = resource->id(); + return; + } if (amount < 100) continue; if (amount > highestAmount) { @@ -137,6 +143,10 @@ void DouwcoHivemind::Worker::searchEnergySource() { continue; int amount = ruin->store().getUsedCapacity(Screeps::RESOURCE_ENERGY).value_or(0); + if (ruin->pos().inRangeTo(creep.pos(), 3) && amount > 0) { + targetId = ruin->id(); + return; + } if (amount > highestAmount) { highestAmount = amount; ruinID = ruin->id(); @@ -160,6 +170,10 @@ void DouwcoHivemind::Worker::searchEnergySource() { int amount = tombstone->store() .getUsedCapacity(Screeps::RESOURCE_ENERGY) .value_or(0); + if (tombstone->pos().inRangeTo(creep.pos(), 3) && amount > 0) { + targetId = tombstone->id(); + return; + } if (amount > highestAmount) { highestAmount = amount; TombstoneID = tombstone->id(); @@ -171,13 +185,8 @@ void DouwcoHivemind::Worker::searchEnergySource() { } } - // If still nothing found take the earlier found container. - if (!containerID.empty()) { - targetId = containerID; - } - // If still nothing found, there is no target and search should start again. - targetId = std::string(); + targetId.clear(); } void DouwcoHivemind::Worker::extractEnergyFromTarget() { diff --git a/douwco_hivemind/src/Entity/Room.cpp b/douwco_hivemind/src/Entity/Room.cpp index 2506a05..d0b68c0 100644 --- a/douwco_hivemind/src/Entity/Room.cpp +++ b/douwco_hivemind/src/Entity/Room.cpp @@ -1,5 +1,6 @@ #include "Entity/Room.hpp" +#include "Engine.hpp" #include "Screeps/Constants.hpp" #include "Screeps/Game.hpp" #include "Screeps/Room.hpp" @@ -12,39 +13,158 @@ #include "Screeps/StructureController.hpp" #include "Constants.hpp" +#include "Screeps/StructureSpawn.hpp" +#include "Structures/Spawn.hpp" #include -DouwcoHivemind::Room::Room(Screeps::Room rm) : room(rm), memory(rm.memory()) { +DouwcoHivemind::Room::Room(Screeps::Room rm) : roomJs(rm), memory(rm.memory()) { if (memory.contains("sources")) - sources = static_cast>(memory["sources"]); + sourceIds = static_cast>(memory["sources"]); if (memory.contains("sourceContainers")) - sourceContainers = + sourceContainerIds = static_cast>(memory["sourceContainers"]); + minerIterator = memory.contains("minerIterator") + ? static_cast(memory["minerIterator"]) + : 0; } DouwcoHivemind::Room::~Room() { - memory["sources"] = sources; - memory["sourceContainers"] = sourceContainers; - room.setMemory(memory); + memory["sources"] = sourceIds; + memory["sourceContainers"] = sourceContainerIds; + memory["minerIterator"] = minerIterator; + roomJs.setMemory(memory); } void DouwcoHivemind::Room::loop() { - if (sources.size() == 0) { - auto sources_ = room.find(Screeps::FIND_SOURCES); - for (auto &source : sources_) { - sources.push_back(static_cast(source.get())->id()); + manageStructures(); + manageScreeps(); +} + +void DouwcoHivemind::Room::manageStructures() { placeContainers(); } + +void DouwcoHivemind::Room::manageScreeps() { + // Get energy data + int energyAvailable = roomJs.energyAvailable(); + int energyCapacityAvailable = roomJs.energyCapacityAvailable(); + + // Calculate needed creep roles + int required_upgraders = 1; + int required_suppliers = 2; + int required_maintainers = 1; + int required_builders = + roomJs.find(Screeps::FIND_MY_CONSTRUCTION_SITES).size() > 0 ? 1 : 0; + int required_miners = sourceIds.size(); + + // Count existing roles + int existing_upgraders = 0; + int existing_suppliers = 0; + int existing_maintainers = 0; + int existing_builders = 0; + int existing_miners = 0; + + for (auto &creep : Engine::getInstance()->Creeps) { + CreepRole role = creep.second->role; + + if (role == CreepRole::SUPPLIER) + existing_suppliers++; + else if (role == CreepRole::UPGRADER) + existing_upgraders++; + else if (role == CreepRole::MAINTAINER) + existing_maintainers++; + else if (role == CreepRole::BUILDER) + existing_builders++; + else if (role == CreepRole::MINER) + existing_miners++; + } + + // Check if max energy used + if (energyAvailable < energyCapacityAvailable && 0 < existing_suppliers) + return; + + // Set creep properties + std::string name; + JSON opts; + CreepRole role = CreepRole::UNEMPLOYED; + if (required_miners > existing_miners) { + role = CreepRole::MINER; + opts["memory"]["sourceId"] = sourceIds[minerIterator]; + minerIterator = (minerIterator + 1) % sourceIds.size(); + name = "Miner: "; + } else if (required_suppliers > existing_suppliers) { + role = CreepRole::SUPPLIER; + name = "Supplier: "; + } else if (required_upgraders > existing_upgraders) { + role = CreepRole::UPGRADER; + name = "Upgrader: "; + } else if (required_builders > existing_builders) { + role = CreepRole::BUILDER; + name = "Builder: "; + } else if (required_maintainers > existing_maintainers) { + role = CreepRole::MAINTAINER; + name = "Maintainer: "; + } else + return; + + opts["memory"]["role"] = role; + + // Build creep body + std::vector body; + // Miner body with up to 5 work (10 en/s) bits for 3000 source mining in 300 + // tick regen. + if (role == CreepRole::MINER) { + body.push_back("move"); + body.push_back("work"); + for (int i = 0; i < (energyAvailable - 150) / 100 && i < 5; i++) { + body.push_back("work"); } } - placeContainers(); + // Supplier body with only move and carry to move energy around + else if (role == SUPPLIER) { + for (int i = 0; i < energyAvailable / 100; i++) { + body.push_back("move"); + body.push_back("carry"); + } + } + // Worker body with balanced parts. + else { + for (int i = 0; i < energyAvailable / 200; i++) { + body.push_back("work"); + body.push_back("carry"); + body.push_back("move"); + } + } + + // If no spawns stored yet + if (SpawnIds.size() == 0) { + auto spawnStructures = roomJs.find(Screeps::FIND_MY_SPAWNS); + for (auto &spawnStructure : spawnStructures) { + SpawnIds.push_back( + static_cast(spawnStructure.get())->id()); + } + } + + // Create creep + auto spawn = static_cast( + Engine::getInstance()->Structures[SpawnIds[0]].get()); + std::string unique_name = name + std::to_string(Screeps::Game.time()); + spawn->spawnJs.spawnCreep(body, unique_name, opts); + screepNames.push_back(unique_name); } void DouwcoHivemind::Room::placeContainers() { + // If no sources stored yet + if (sourceIds.size() == 0) { + auto sources_ = roomJs.find(Screeps::FIND_SOURCES); + for (auto &source : sources_) { + sourceIds.push_back(static_cast(source.get())->id()); + } + } // No containers planned or build, planning now - if (sourceContainers.size() < sources.size()) { - int controller_x = room.controller().value().pos().x(); - int controller_y = room.controller().value().pos().y(); + if (sourceContainerIds.size() < sourceIds.size()) { + int controller_x = roomJs.controller().value().pos().x(); + int controller_y = roomJs.controller().value().pos().y(); - for (auto sourceId : sources) { + for (auto sourceId : sourceIds) { auto roomObj = Screeps::Game.getObjectById(sourceId); int source_x = roomObj->pos().x(); int source_y = roomObj->pos().y(); @@ -58,7 +178,7 @@ void DouwcoHivemind::Room::placeContainers() { continue; int x = source_x + dx; int y = source_y + dy; - int terrainType = room.getTerrain().get(x, y); + int terrainType = roomJs.getTerrain().get(x, y); if (terrainType != Screeps::TERRAIN_MASK_WALL) { int cost = std::abs(x - controller_x) + std::abs(y - controller_y); if (cost < lowest_cost) { @@ -69,30 +189,31 @@ void DouwcoHivemind::Room::placeContainers() { } } } - room.createConstructionSite(best_x, best_y, Screeps::STRUCTURE_CONTAINER); - sourceContainers.push_back("under_construction"); + roomJs.createConstructionSite(best_x, best_y, + Screeps::STRUCTURE_CONTAINER); + sourceContainerIds.push_back("under_construction"); } return; } // Check if construction container is done. - for (auto entry : sourceContainers) { + for (auto entry : sourceContainerIds) { if (entry != "under_construction") continue; - auto structures = room.find(Screeps::FIND_STRUCTURES); + auto structures = roomJs.find(Screeps::FIND_STRUCTURES); int index = 0; for (auto &structure : structures) { auto str = dynamic_cast(structure.get()); if (str->structureType() == Screeps::STRUCTURE_CONTAINER) { - sourceContainers[index] = str->id(); + sourceContainerIds[index] = str->id(); index++; } } return; } // Check if containers still exist - for (int i = 0; i < sourceContainers.size(); i++) { - auto roomObj = Screeps::Game.getObjectById(sourceContainers[i]); + for (int i = 0; i < sourceContainerIds.size(); i++) { + auto roomObj = Screeps::Game.getObjectById(sourceContainerIds[i]); if (!roomObj) - sourceContainers.erase(sourceContainers.begin() + i); + sourceContainerIds.erase(sourceContainerIds.begin() + i); } } diff --git a/douwco_hivemind/src/Structures/Spawn.cpp b/douwco_hivemind/src/Structures/Spawn.cpp index bbc2efb..a9c8ac0 100644 --- a/douwco_hivemind/src/Structures/Spawn.cpp +++ b/douwco_hivemind/src/Structures/Spawn.cpp @@ -1,103 +1 @@ -#include -#include -#include - -#include "Creeps/CreepBase.hpp" -#include "Engine.hpp" #include "Structures/Spawn.hpp" - -void DouwcoHivemind::Spawn::loop() { - // Get energy data - int energyAvailable = spawn.room().energyAvailable(); - int energyCapacityAvailable = spawn.room().energyCapacityAvailable(); - - // Calculate needed creep roles - int required_upgraders = 1; - int required_suppliers = 2; - int required_maintainers = 1; - int required_builders = - spawn.room().find(Screeps::FIND_MY_CONSTRUCTION_SITES).size() > 0 ? 1 : 0; - int required_miners = 1; // spawn.room().memory()["sources"].size(); - - // Count existing roles - int existing_upgraders = 0; - int existing_suppliers = 0; - int existing_maintainers = 0; - int existing_builders = 0; - int existing_miners = 0; - - for (auto &creep : Screeps::Game.creeps()) { - CreepRole role = creep.second.memory()["role"]; - - if (role == CreepRole::SUPPLIER) - existing_suppliers++; - else if (role == CreepRole::UPGRADER) - existing_upgraders++; - else if (role == CreepRole::MAINTAINER) - existing_maintainers++; - else if (role == CreepRole::BUILDER) - existing_builders++; - else if (role == CreepRole::MINER) - existing_miners++; - } - - // Check if max energy used - if (energyAvailable < energyCapacityAvailable && 0 < existing_suppliers) - return; - - // Set creep properties - std::string name; - JSON opts; - CreepRole role = CreepRole::UNEMPLOYED; - if (required_miners > existing_miners) { - role = CreepRole::MINER; - opts["memory"]["sourceId"] = - spawn.room().memory()["sources"][0]; // make logic for more - name = "Miner: "; - } else if (required_suppliers > existing_suppliers) { - role = CreepRole::SUPPLIER; - name = "Supplier: "; - } else if (required_upgraders > existing_upgraders) { - role = CreepRole::UPGRADER; - name = "Upgrader: "; - } else if (required_builders > existing_builders) { - role = CreepRole::BUILDER; - name = "Builder: "; - } else if (required_maintainers > existing_maintainers) { - role = CreepRole::MAINTAINER; - name = "Maintainer: "; - } else - return; - - opts["memory"]["role"] = role; - - // Build creep body - std::vector body; - // Miner body with up to 5 work (10 en/s) bits for 3000 source mining in 300 - // tick regen. - if (role == CreepRole::MINER) { - body.push_back("move"); - body.push_back("work"); - for (int i = 0; i < (energyAvailable - 150) / 100 && i < 5; i++) { - body.push_back("work"); - } - } - // Supplier body with only move and carry to move energy around - else if (role == SUPPLIER) { - for (int i = 0; i < energyAvailable / 100; i++) { - body.push_back("move"); - body.push_back("carry"); - } - } - // Worker body with balanced parts. - else { - for (int i = 0; i < energyAvailable / 200; i++) { - body.push_back("work"); - body.push_back("carry"); - body.push_back("move"); - } - } - - // Create creep - spawn.spawnCreep(body, name + std::to_string(Screeps::Game.time()), opts); -} \ No newline at end of file From 88deef51093dbc7ce543d5eeb1d6b8c838c36aef Mon Sep 17 00:00:00 2001 From: Douwe Ravers Date: Fri, 10 Jul 2026 19:50:24 +0200 Subject: [PATCH 18/22] improved the code of Room --- douwco_hivemind/include/Entity/Room.hpp | 16 +- douwco_hivemind/src/Creeps/Builder.cpp | 2 +- douwco_hivemind/src/Entity/Room.cpp | 240 ++++++++++++++---------- 3 files changed, 159 insertions(+), 99 deletions(-) diff --git a/douwco_hivemind/include/Entity/Room.hpp b/douwco_hivemind/include/Entity/Room.hpp index 95fc3a9..fd800d5 100644 --- a/douwco_hivemind/include/Entity/Room.hpp +++ b/douwco_hivemind/include/Entity/Room.hpp @@ -15,7 +15,7 @@ public: std::vector sourceContainerIds = {}; std::vector SpawnIds = {}; std::vector screepNames = {}; - + private: int minerIterator; @@ -26,9 +26,19 @@ public: void loop(); protected: - void manageScreeps(); void manageStructures(); - void placeContainers(); + void manageScreeps(); + + void updateSourceIds(); + void updateSpawnIds(); + void updateContainerIds(); + + std::map calculateRequiredJobs(); + std::map countCurrentJobs(); + std::string getNewCreepName(CreepRole role); + std::vector getNewCreepBody(CreepRole role); + JSON getNewCreepOptions(CreepRole role); + }; } // namespace DouwcoHivemind diff --git a/douwco_hivemind/src/Creeps/Builder.cpp b/douwco_hivemind/src/Creeps/Builder.cpp index ad8d7b2..1d7ffe6 100644 --- a/douwco_hivemind/src/Creeps/Builder.cpp +++ b/douwco_hivemind/src/Creeps/Builder.cpp @@ -79,5 +79,5 @@ void DouwcoHivemind::Builder::searchConstructionSite() if (selectedConstructionSite) targetId = selectedConstructionSite->id(); else - targetId.clear(); + creep.suicide(); } diff --git a/douwco_hivemind/src/Entity/Room.cpp b/douwco_hivemind/src/Entity/Room.cpp index d0b68c0..223b59e 100644 --- a/douwco_hivemind/src/Entity/Room.cpp +++ b/douwco_hivemind/src/Entity/Room.cpp @@ -40,125 +40,73 @@ void DouwcoHivemind::Room::loop() { manageScreeps(); } -void DouwcoHivemind::Room::manageStructures() { placeContainers(); } +void DouwcoHivemind::Room::manageStructures() { + updateSourceIds(); + updateSpawnIds(); + updateContainerIds(); +} void DouwcoHivemind::Room::manageScreeps() { // Get energy data int energyAvailable = roomJs.energyAvailable(); int energyCapacityAvailable = roomJs.energyCapacityAvailable(); - // Calculate needed creep roles - int required_upgraders = 1; - int required_suppliers = 2; - int required_maintainers = 1; - int required_builders = - roomJs.find(Screeps::FIND_MY_CONSTRUCTION_SITES).size() > 0 ? 1 : 0; - int required_miners = sourceIds.size(); - - // Count existing roles - int existing_upgraders = 0; - int existing_suppliers = 0; - int existing_maintainers = 0; - int existing_builders = 0; - int existing_miners = 0; - - for (auto &creep : Engine::getInstance()->Creeps) { - CreepRole role = creep.second->role; - - if (role == CreepRole::SUPPLIER) - existing_suppliers++; - else if (role == CreepRole::UPGRADER) - existing_upgraders++; - else if (role == CreepRole::MAINTAINER) - existing_maintainers++; - else if (role == CreepRole::BUILDER) - existing_builders++; - else if (role == CreepRole::MINER) - existing_miners++; - } + // Get job status + auto requiredJobs = calculateRequiredJobs(); + auto currentJobs = countCurrentJobs(); // Check if max energy used - if (energyAvailable < energyCapacityAvailable && 0 < existing_suppliers) + if (energyAvailable < energyCapacityAvailable && 0 < currentJobs[SUPPLIER]) return; + // Select based on priority which role needs to be made first + const std::vector rolePriority = { + CreepRole::MINER, CreepRole::SUPPLIER, CreepRole::UPGRADER, + CreepRole::BUILDER, CreepRole::MAINTAINER}; + + CreepRole role = CreepRole::UNEMPLOYED; + for (CreepRole roleType : rolePriority) { + if (requiredJobs[roleType] > currentJobs[roleType]) { + role = roleType; + break; + } + } + // Set creep properties - std::string name; - JSON opts; - CreepRole role = CreepRole::UNEMPLOYED; - if (required_miners > existing_miners) { - role = CreepRole::MINER; - opts["memory"]["sourceId"] = sourceIds[minerIterator]; - minerIterator = (minerIterator + 1) % sourceIds.size(); - name = "Miner: "; - } else if (required_suppliers > existing_suppliers) { - role = CreepRole::SUPPLIER; - name = "Supplier: "; - } else if (required_upgraders > existing_upgraders) { - role = CreepRole::UPGRADER; - name = "Upgrader: "; - } else if (required_builders > existing_builders) { - role = CreepRole::BUILDER; - name = "Builder: "; - } else if (required_maintainers > existing_maintainers) { - role = CreepRole::MAINTAINER; - name = "Maintainer: "; - } else - return; - - opts["memory"]["role"] = role; - - // Build creep body - std::vector body; - // Miner body with up to 5 work (10 en/s) bits for 3000 source mining in 300 - // tick regen. - if (role == CreepRole::MINER) { - body.push_back("move"); - body.push_back("work"); - for (int i = 0; i < (energyAvailable - 150) / 100 && i < 5; i++) { - body.push_back("work"); - } - } - // Supplier body with only move and carry to move energy around - else if (role == SUPPLIER) { - for (int i = 0; i < energyAvailable / 100; i++) { - body.push_back("move"); - body.push_back("carry"); - } - } - // Worker body with balanced parts. - else { - for (int i = 0; i < energyAvailable / 200; i++) { - body.push_back("work"); - body.push_back("carry"); - body.push_back("move"); - } - } - - // If no spawns stored yet - if (SpawnIds.size() == 0) { - auto spawnStructures = roomJs.find(Screeps::FIND_MY_SPAWNS); - for (auto &spawnStructure : spawnStructures) { - SpawnIds.push_back( - static_cast(spawnStructure.get())->id()); - } - } + std::string name = getNewCreepName(role); + auto body = getNewCreepBody(role); + JSON opts = getNewCreepOptions(role); // Create creep auto spawn = static_cast( Engine::getInstance()->Structures[SpawnIds[0]].get()); std::string unique_name = name + std::to_string(Screeps::Game.time()); spawn->spawnJs.spawnCreep(body, unique_name, opts); + // Store creepname in managed list. screepNames.push_back(unique_name); } -void DouwcoHivemind::Room::placeContainers() { - // If no sources stored yet +void DouwcoHivemind::Room::updateSourceIds() { if (sourceIds.size() == 0) { - auto sources_ = roomJs.find(Screeps::FIND_SOURCES); - for (auto &source : sources_) { + auto sources = roomJs.find(Screeps::FIND_SOURCES); + for (auto &source : sources) { sourceIds.push_back(static_cast(source.get())->id()); } } +} + +void DouwcoHivemind::Room::updateSpawnIds() { + if (SpawnIds.size() == 0 || Screeps::Game.time() % 1000 == 0) { + SpawnIds.clear(); + auto spawnStructures = roomJs.find(Screeps::FIND_MY_SPAWNS); + for (auto &spawnStructure : spawnStructures) { + SpawnIds.push_back( + static_cast(spawnStructure.get())->id()); + } + } +} + +void DouwcoHivemind::Room::updateContainerIds() { // No containers planned or build, planning now if (sourceContainerIds.size() < sourceIds.size()) { int controller_x = roomJs.controller().value().pos().x(); @@ -217,3 +165,105 @@ void DouwcoHivemind::Room::placeContainers() { sourceContainerIds.erase(sourceContainerIds.begin() + i); } } + +std::map +DouwcoHivemind::Room::calculateRequiredJobs() { + std::map requiredJobs; + requiredJobs.emplace(UPGRADER, 1); + requiredJobs.emplace(SUPPLIER, 2); + requiredJobs.emplace(MAINTAINER, 1); + requiredJobs.emplace( + BUILDER, + roomJs.find(Screeps::FIND_MY_CONSTRUCTION_SITES).size() > 0 ? 1 : 0); + requiredJobs.emplace(MINER, sourceIds.size()); + return requiredJobs; +} + +std::map +DouwcoHivemind::Room::countCurrentJobs() { + std::map currentJobs; + currentJobs.emplace(UPGRADER, 0); + currentJobs.emplace(SUPPLIER, 0); + currentJobs.emplace(MAINTAINER, 0); + currentJobs.emplace(BUILDER, 0); + currentJobs.emplace(MINER, 0); + + for (std::string creepName : screepNames) { + if (Engine::getInstance()->Creeps.contains(creepName)) { + CreepRole role = Engine::getInstance()->Creeps[creepName]->role; + currentJobs[role] += 1; + } else { + Engine::getInstance()->Creeps.erase(creepName); + } + } + return currentJobs; +} + +std::string DouwcoHivemind::Room::getNewCreepName(CreepRole role) { + std::string name; + switch (role) { + case UPGRADER: + name = "Upgrader"; + break; + case SUPPLIER: + name = "Supplier"; + break; + case MAINTAINER: + name = "Maintainer"; + break; + case BUILDER: + name = "Builder"; + break; + case MINER: + name = "Miner"; + break; + default: + name = "creep"; + break; + } + return name + " - " + std::to_string(Screeps::Game.time()); +} + +std::vector DouwcoHivemind::Room::getNewCreepBody(CreepRole role) { + int energyAvailable = roomJs.energyAvailable(); + + std::vector body; + switch (role) { + case MINER: + body.push_back("move"); + body.push_back("work"); + for (int i = 0; i < (energyAvailable - 150) / 100 && i < 5; i++) { + body.push_back("work"); + } + break; + case SUPPLIER: + for (int i = 0; i < energyAvailable / 100; i++) { + body.push_back("move"); + body.push_back("carry"); + } + break; + default: + for (int i = 0; i < energyAvailable / 200; i++) { + body.push_back("work"); + body.push_back("carry"); + body.push_back("move"); + } + break; + } + + return body; +} + +JSON DouwcoHivemind::Room::getNewCreepOptions(CreepRole role) { + JSON opts; + opts["memory"]["role"] = role; + + switch (role) { + case MINER: + opts["memory"]["sourceId"] = sourceIds[minerIterator]; + break; + default: + break; + } + return opts; +} \ No newline at end of file From 591fd97be097bd6aacbfb2e7373efd7e45e28cfa Mon Sep 17 00:00:00 2001 From: Douwe Ravers Date: Sun, 12 Jul 2026 02:53:46 +0200 Subject: [PATCH 19/22] Changed behaviour of maintainer and fixed screep cleanup. --- douwco_hivemind/include/Entity/Room.hpp | 4 +- douwco_hivemind/src/Creeps/CreepBase.cpp | 8 +- douwco_hivemind/src/Creeps/Maintainer.cpp | 134 +++++++++++----------- douwco_hivemind/src/Engine.cpp | 50 ++++---- douwco_hivemind/src/Entity/Room.cpp | 48 +++++--- douwco_hivemind/src/Loop.cpp | 3 - 6 files changed, 127 insertions(+), 120 deletions(-) diff --git a/douwco_hivemind/include/Entity/Room.hpp b/douwco_hivemind/include/Entity/Room.hpp index fd800d5..53e07eb 100644 --- a/douwco_hivemind/include/Entity/Room.hpp +++ b/douwco_hivemind/include/Entity/Room.hpp @@ -14,7 +14,7 @@ public: std::vector sourceIds = {}; std::vector sourceContainerIds = {}; std::vector SpawnIds = {}; - std::vector screepNames = {}; + std::vector creepNames = {}; private: int minerIterator; @@ -33,6 +33,8 @@ protected: void updateSpawnIds(); void updateContainerIds(); + void cleanupManagedCreeps(); + std::map calculateRequiredJobs(); std::map countCurrentJobs(); std::string getNewCreepName(CreepRole role); diff --git a/douwco_hivemind/src/Creeps/CreepBase.cpp b/douwco_hivemind/src/Creeps/CreepBase.cpp index 9dd6f5b..e9e4ad4 100644 --- a/douwco_hivemind/src/Creeps/CreepBase.cpp +++ b/douwco_hivemind/src/Creeps/CreepBase.cpp @@ -25,6 +25,8 @@ DouwcoHivemind::CreepBase::~CreepBase() { memory["role"] = role; memory["targetId"] = targetId; creep.setMemory(memory); + if (!creep.spawning() && creep.ticksToLive() == 1) + JS::getGlobal("eval")("delete Memory.creeps['" + creep.name() + "']"); } void DouwcoHivemind::CreepBase::moveToTarget(int dist) { @@ -65,12 +67,6 @@ void DouwcoHivemind::CreepBase::moveToTarget(int dist) { memory["path"] = vectorToJson(flattenPathSteps(path)); } - // JS::console.log(std::string("creep pos: [") + - // std::to_string(creep.pos().x()) + - // std::string(",") + - // std::to_string(creep.pos().y()) + - // std::string("]")); - // Get step from memory int pathStepData[5] = {0}; if (memory["path"].size() > 5) { diff --git a/douwco_hivemind/src/Creeps/Maintainer.cpp b/douwco_hivemind/src/Creeps/Maintainer.cpp index a9919da..b070a85 100644 --- a/douwco_hivemind/src/Creeps/Maintainer.cpp +++ b/douwco_hivemind/src/Creeps/Maintainer.cpp @@ -1,91 +1,85 @@ -#include -#include #include +#include +#include -#include #include -#include +#include #include -#include #include +#include +#include +#include #include #include -#include #include +#include #include -#include -#include "Creeps/Maintainer.hpp" #include "Creeps/CreepBase.hpp" +#include "Creeps/Maintainer.hpp" #include "Screeps/Constants.hpp" -void DouwcoHivemind::Maintainer::depositEnergy() -{ - auto structure = getDamagedStructureTarget(); - if (!structure) return; - if (isNearTo(structure->pos(), 1)) - { - int resp = creep.repair(*structure); - } - else - { - moveToTarget(); - } +void DouwcoHivemind::Maintainer::depositEnergy() { + auto structure = getDamagedStructureTarget(); + if (!structure) + return; + if (isNearTo(structure->pos(), 1)) { + int resp = creep.repair(*structure); + } else { + moveToTarget(); + } } -std::unique_ptr DouwcoHivemind::Maintainer::getDamagedStructureTarget() -{ - auto roomObj = getRoomObjectTarget(); - if (!roomObj) - { - searchDamagedStructure(); - return nullptr; - } +std::unique_ptr +DouwcoHivemind::Maintainer::getDamagedStructureTarget() { + auto roomObj = getRoomObjectTarget(); + if (!roomObj) { + searchDamagedStructure(); + return nullptr; + } - auto structure = std::unique_ptr(dynamic_cast(roomObj.release())); + auto structure = std::unique_ptr( + dynamic_cast(roomObj.release())); + if (!structure) { + searchDamagedStructure(); + return nullptr; + } + + // Check if the structure is still broken + int damage = structure->hitsMax() - structure->hits(); + if (damage == 0) { + searchDamagedStructure(); + return nullptr; + } + + return std::move(structure); +} + +void DouwcoHivemind::Maintainer::searchDamagedStructure() { + int highestDamage = 0; + Screeps::Structure *selectedStructure; + auto structures = creep.room().find(Screeps::FIND_STRUCTURES); + for (auto &structureObject : structures) { + auto structure = + dynamic_cast(structureObject.release()); if (!structure) - { - searchDamagedStructure(); - return nullptr; - } + continue; - // Check if the structure is still broken - int damage = structure->hitsMax() - structure->hits(); - if (damage == 0) - { - searchDamagedStructure(); - return nullptr; + auto structureType = structure->structureType(); + if (structureType == Screeps::STRUCTURE_CONTROLLER) + continue; + int damage = + 100 * (structure->hitsMax() - structure->hits()) / structure->hitsMax(); + if (structureType == Screeps::STRUCTURE_WALL) continue; + if (highestDamage < damage) { + highestDamage = damage; + selectedStructure = structure; } + } - return std::move(structure); -} - -void DouwcoHivemind::Maintainer::searchDamagedStructure() -{ - int highestDamage = 0; - Screeps::Structure *selectedStructure; - auto structures = creep.room().find(Screeps::FIND_STRUCTURES); - for (auto &structureObject : structures) - { - auto structure = dynamic_cast(structureObject.release()); - if (!structure) - continue; - - int damage = structure->hitsMax() - structure->hits(); - auto structureType = structure->structureType(); - if (structureType == Screeps::STRUCTURE_CONTROLLER) - continue; - if(structureType == Screeps::STRUCTURE_WALL || structureType == Screeps::STRUCTURE_RAMPART) - continue; // todo cover this situation as well. - if (highestDamage < damage) - { - highestDamage = damage; - selectedStructure = structure; - } - } - - if (selectedStructure && selectedStructure->hits() != selectedStructure->hitsMax()) - targetId = selectedStructure->id(); - else - targetId.clear(); + if (selectedStructure && + selectedStructure->hits() != selectedStructure->hitsMax()) + targetId = selectedStructure->id(); + else + targetId.clear(); } diff --git a/douwco_hivemind/src/Engine.cpp b/douwco_hivemind/src/Engine.cpp index d848635..219ec32 100644 --- a/douwco_hivemind/src/Engine.cpp +++ b/douwco_hivemind/src/Engine.cpp @@ -3,6 +3,7 @@ #include #include #include +#include #include "Engine.hpp" @@ -13,36 +14,43 @@ #include "Creeps/Upgrader.hpp" #include "Screeps/Constants.hpp" +#include "Screeps/JS.hpp" #include "Screeps/StructureSpawn.hpp" #include "Structures/Spawn.hpp" #include "Structures/Tower.hpp" DouwcoHivemind::Engine::Engine() { instance = this; - JS::console.log(std::string("Reading out owned rooms")); + // JS::console.log(std::string("Reading out owned rooms")); ReadOutRooms(); - JS::console.log(std::string("Reading out creeps")); + // JS::console.log(std::string("Reading out creeps")); ReadOutCreeps(); - JS::console.log(std::string("Reading out structures")); + // JS::console.log(std::string("Reading out structures")); ReadOutStructures(); } void DouwcoHivemind::Engine::loop() { - JS::console.log(std::string("Iterating over rooms")); + int totalCost = Screeps::Game.cpuGetUsed(); for (auto &room : Rooms) room.second->loop(); + JS::console.log("Used CPU by rooms:\t" + + std::to_string(Screeps::Game.cpuGetUsed() - totalCost)); + totalCost = Screeps::Game.cpuGetUsed(); - JS::console.log(std::string("Iterating over creeps")); for (auto &creep : Creeps) creep.second->loop(); + JS::console.log("Used CPU by creeps:\t" + + std::to_string(Screeps::Game.cpuGetUsed() - totalCost)); + totalCost = Screeps::Game.cpuGetUsed(); - JS::console.log(std::string("Iterating over structures")); for (auto &structure : Structures) structure.second->loop(); + JS::console.log("Used CPU by structures:\t" + + std::to_string(Screeps::Game.cpuGetUsed() - totalCost)); + totalCost = Screeps::Game.cpuGetUsed(); - if (Screeps::Game.time() % 100 == 0) { + if (Screeps::Game.time() % 1000 == 0) clearDeadCreepMemory(); - } } void DouwcoHivemind::Engine::ReadOutRooms() { @@ -90,24 +98,16 @@ void DouwcoHivemind::Engine::ReadOutStructures() { } void DouwcoHivemind::Engine::clearDeadCreepMemory() { - auto creepMemory = Screeps::Memory["creeps"]; - auto creepsMap = Screeps::Game.creeps(); - int iterator = 0; - for (auto [name, creep] : creepMemory.items()) { - // avoid cpu overload - iterator++; - if (iterator == 100) - break; - bool containsname = false; - for (auto creepObject : creepsMap) { - if (creepObject.first == name) { - containsname = true; - break; - } + auto creepMemory = JS::getGlobal("Memory")["creeps"]; + auto creepNames = JS::gObject.call("keys", creepMemory); + int size = creepNames["length"].as(); + + for (int i = 0; i < size; i++) { + auto name = creepNames[i].as(); + if (Engine::getInstance()->Creeps.find(name) == + Engine::getInstance()->Creeps.end()) { + JS::getGlobal("eval")("delete Memory.creeps['" + name + "']"); } - if (!containsname) - creepMemory.erase(name); } - Screeps::Memory.set("creeps", creepMemory); } diff --git a/douwco_hivemind/src/Entity/Room.cpp b/douwco_hivemind/src/Entity/Room.cpp index 223b59e..7f75b53 100644 --- a/douwco_hivemind/src/Entity/Room.cpp +++ b/douwco_hivemind/src/Entity/Room.cpp @@ -16,21 +16,29 @@ #include "Screeps/StructureSpawn.hpp" #include "Structures/Spawn.hpp" #include +#include +#include DouwcoHivemind::Room::Room(Screeps::Room rm) : roomJs(rm), memory(rm.memory()) { - if (memory.contains("sources")) - sourceIds = static_cast>(memory["sources"]); - if (memory.contains("sourceContainers")) + if (memory.contains("sourceIds")) + sourceIds = static_cast>(memory["sourceIds"]); + if (memory.contains("sourceContainerIds")) sourceContainerIds = - static_cast>(memory["sourceContainers"]); + static_cast>(memory["sourceContainerIds"]); + if (memory.contains("SpawnIds")) + SpawnIds = static_cast>(memory["SpawnIds"]); + if (memory.contains("creepNames")) + creepNames = static_cast>(memory["creepNames"]); minerIterator = memory.contains("minerIterator") ? static_cast(memory["minerIterator"]) : 0; } DouwcoHivemind::Room::~Room() { - memory["sources"] = sourceIds; - memory["sourceContainers"] = sourceContainerIds; + memory["sourceIds"] = sourceIds; + memory["sourceContainerIds"] = sourceContainerIds; + memory["SpawnIds"] = SpawnIds; + memory["creepNames"] = creepNames; memory["minerIterator"] = minerIterator; roomJs.setMemory(memory); } @@ -47,15 +55,16 @@ void DouwcoHivemind::Room::manageStructures() { } void DouwcoHivemind::Room::manageScreeps() { - // Get energy data - int energyAvailable = roomJs.energyAvailable(); - int energyCapacityAvailable = roomJs.energyCapacityAvailable(); + // Clean dead creeps from managed creepNames list. + cleanupManagedCreeps(); // Get job status auto requiredJobs = calculateRequiredJobs(); auto currentJobs = countCurrentJobs(); // Check if max energy used + int energyAvailable = roomJs.energyAvailable(); + int energyCapacityAvailable = roomJs.energyCapacityAvailable(); if (energyAvailable < energyCapacityAvailable && 0 < currentJobs[SUPPLIER]) return; @@ -71,6 +80,8 @@ void DouwcoHivemind::Room::manageScreeps() { break; } } + if (role == UNEMPLOYED) + return; // Set creep properties std::string name = getNewCreepName(role); @@ -80,10 +91,18 @@ void DouwcoHivemind::Room::manageScreeps() { // Create creep auto spawn = static_cast( Engine::getInstance()->Structures[SpawnIds[0]].get()); - std::string unique_name = name + std::to_string(Screeps::Game.time()); - spawn->spawnJs.spawnCreep(body, unique_name, opts); + spawn->spawnJs.spawnCreep(body, name, opts); // Store creepname in managed list. - screepNames.push_back(unique_name); + creepNames.push_back(name); +} + +void DouwcoHivemind::Room::cleanupManagedCreeps() { + std::vector cleanedCreepNames; + for (std::string creepName : creepNames) { + if (Engine::getInstance()->Creeps.contains(creepName)) + cleanedCreepNames.push_back(creepName); + } + creepNames = cleanedCreepNames; } void DouwcoHivemind::Room::updateSourceIds() { @@ -188,12 +207,10 @@ DouwcoHivemind::Room::countCurrentJobs() { currentJobs.emplace(BUILDER, 0); currentJobs.emplace(MINER, 0); - for (std::string creepName : screepNames) { + for (std::string creepName : creepNames) { if (Engine::getInstance()->Creeps.contains(creepName)) { CreepRole role = Engine::getInstance()->Creeps[creepName]->role; currentJobs[role] += 1; - } else { - Engine::getInstance()->Creeps.erase(creepName); } } return currentJobs; @@ -261,6 +278,7 @@ JSON DouwcoHivemind::Room::getNewCreepOptions(CreepRole role) { switch (role) { case MINER: opts["memory"]["sourceId"] = sourceIds[minerIterator]; + minerIterator = (minerIterator + 1) % sourceIds.size(); break; default: break; diff --git a/douwco_hivemind/src/Loop.cpp b/douwco_hivemind/src/Loop.cpp index 0b6a44b..8344cfb 100644 --- a/douwco_hivemind/src/Loop.cpp +++ b/douwco_hivemind/src/Loop.cpp @@ -20,9 +20,6 @@ extern "C" void loop() { { DouwcoHivemind::Engine engine; engine.loop(); - - auto test = &(DouwcoHivemind::Engine::getInstance()->Structures); - JS::console.log(std::string("test: ") + std::to_string(test->size())); } JS::console.log("Used CPU:\t" + std::to_string(Screeps::Game.cpuGetUsed())); From 8ef6169f610767d3fa016cb5e9f06fad5b1f2030 Mon Sep 17 00:00:00 2001 From: douwe Date: Sun, 12 Jul 2026 23:06:41 +0200 Subject: [PATCH 20/22] fixed supplier bug with skipping containers --- .../index/Builder.cpp.B5CCBE10376BB391.idx | Bin 0 -> 1246 bytes .../index/Builder.hpp.985BEF508D2F19DC.idx | Bin 0 -> 666 bytes .../index/Constants.hpp.73C88F7BC08E8883.idx | Bin 0 -> 32768 bytes .../index/Constants.hpp.757BD26CBF07E480.idx | Bin 0 -> 680 bytes .../ConstructionSite.cpp.2F1702F3CE90AC74.idx | Bin 0 -> 1602 bytes .../ConstructionSite.hpp.AC4AF59DFE379D60.idx | Bin 0 -> 1130 bytes .../index/Context.hpp.45AE0BD0E5763FA8.idx | Bin 0 -> 820 bytes .../clangd/index/Creep.cpp.D9D8E0EFFE8A1C77.idx | Bin 0 -> 8906 bytes .../clangd/index/Creep.hpp.DFCCE6FB989E2C87.idx | Bin 0 -> 4994 bytes .../index/CreepBase.cpp.58E0E4D279FDDABA.idx | Bin 0 -> 1814 bytes .../index/CreepBase.hpp.7E8B850E5248473D.idx | Bin 0 -> 1182 bytes .../index/Deposit.cpp.FB5FB5745D0FB700.idx | Bin 0 -> 1304 bytes .../index/Deposit.hpp.06E258CEC5CD1C13.idx | Bin 0 -> 1050 bytes .../index/Effect.hpp.6E97B57E81A1833E.idx | Bin 0 -> 636 bytes .../index/Engine.cpp.E0EDBA5C39F74A71.idx | Bin 0 -> 2044 bytes .../index/Engine.hpp.7BCD69373EE97AC1.idx | Bin 0 -> 1088 bytes .../clangd/index/Flag.cpp.1A218F3467AD96F2.idx | Bin 0 -> 1870 bytes .../clangd/index/Flag.hpp.F8A246B19154E01E.idx | Bin 0 -> 1524 bytes .../clangd/index/Game.cpp.EAFC89EB266153E2.idx | Bin 0 -> 3076 bytes .../clangd/index/Game.hpp.A18C93DE125B3555.idx | Bin 0 -> 3378 bytes .cache/clangd/index/JS.cpp.9CE77F58AC81AB54.idx | Bin 0 -> 1632 bytes .cache/clangd/index/JS.hpp.0CEE092BFADF37BC.idx | Bin 0 -> 2090 bytes .../clangd/index/JSON.hpp.C66D7A1922C1D024.idx | Bin 0 -> 210 bytes .../index/JsonTool.hpp.B6F2E41B8374E784.idx | Bin 0 -> 442 bytes .../clangd/index/Loop.cpp.C17AD05676EB59E6.idx | Bin 0 -> 632 bytes .../index/Maintainer.cpp.06B26E41E119D52F.idx | Bin 0 -> 1226 bytes .../index/Maintainer.hpp.99D47B227C1B98F2.idx | Bin 0 -> 662 bytes .../index/MeasureTool.hpp.B7540F2C43EEB974.idx | Bin 0 -> 504 bytes .../index/Memory.cpp.A1F941785C071B86.idx | Bin 0 -> 1020 bytes .../index/Memory.hpp.BED4B2D1E1F9B0C2.idx | Bin 0 -> 804 bytes .../clangd/index/Miner.cpp.C9EC5776C7043A9B.idx | Bin 0 -> 1190 bytes .../clangd/index/Miner.hpp.EB1FA30764CFD36C.idx | Bin 0 -> 754 bytes .../index/Mineral.cpp.666B4AEACBC2DB86.idx | Bin 0 -> 1256 bytes .../index/Mineral.hpp.78DF4C4C25B7897A.idx | Bin 0 -> 894 bytes .../clangd/index/Nuke.cpp.261B72C64A097650.idx | Bin 0 -> 1004 bytes .../clangd/index/Nuke.hpp.1C196CCEC502BF2A.idx | Bin 0 -> 750 bytes .../index/Object.cpp.8A22B5045D08A8FB.idx | Bin 0 -> 1170 bytes .../index/Object.hpp.3C3F71944F69B881.idx | Bin 0 -> 1050 bytes .../OwnedStructure.cpp.9DD418ED233CE05B.idx | Bin 0 -> 992 bytes .../OwnedStructure.hpp.4E0C1F5E28C9CE2B.idx | Bin 0 -> 768 bytes .../index/PathFinder.cpp.3929BF8940A12F82.idx | Bin 0 -> 796 bytes .../index/PathFinder.hpp.8E03A78ACB16AE6E.idx | Bin 0 -> 662 bytes .../index/PathTool.hpp.C0AEF63BE240B251.idx | Bin 0 -> 610 bytes .../index/PowerCreep.cpp.15A24FEC7A2B7620.idx | Bin 0 -> 5836 bytes .../index/PowerCreep.hpp.A46F4EA09DE53DE4.idx | Bin 0 -> 4176 bytes .../index/RawMemory.cpp.D9E66C57B409D317.idx | Bin 0 -> 796 bytes .../index/RawMemory.hpp.C2923D447079B382.idx | Bin 0 -> 692 bytes .../index/Resource.cpp.77BEFDE5CB413577.idx | Bin 0 -> 1130 bytes .../index/Resource.hpp.A16E184D077ACC65.idx | Bin 0 -> 1054 bytes .../clangd/index/Room.cpp.736DA4C4A006C5EE.idx | Bin 0 -> 3106 bytes .../clangd/index/Room.cpp.DF8CE7C3D2ABAC14.idx | Bin 0 -> 5714 bytes .../clangd/index/Room.hpp.405174A701B0B111.idx | Bin 0 -> 1802 bytes .../clangd/index/Room.hpp.4BAA62BD50A988E8.idx | Bin 0 -> 4360 bytes .../index/RoomObject.cpp.A235D185ADDB9999.idx | Bin 0 -> 5698 bytes .../index/RoomObject.hpp.E10E746801F6C9C2.idx | Bin 0 -> 1642 bytes .../index/RoomPosition.cpp.C5D0318086F76F0E.idx | Bin 0 -> 4926 bytes .../index/RoomPosition.hpp.8A25E301D3F7A985.idx | Bin 0 -> 3084 bytes .../index/RoomTerrain.cpp.FC862167BBE84DF2.idx | Bin 0 -> 932 bytes .../index/RoomTerrain.hpp.B2602A94D80A21E2.idx | Bin 0 -> 710 bytes .../index/RoomVisual.cpp.DB732FBFE851D039.idx | Bin 0 -> 2090 bytes .../index/RoomVisual.hpp.631D2365C93944A5.idx | Bin 0 -> 1482 bytes .../clangd/index/Ruin.cpp.3F898A0C7420C2C6.idx | Bin 0 -> 1058 bytes .../clangd/index/Ruin.hpp.AF95ACC3B6E2A8C6.idx | Bin 0 -> 764 bytes .../index/Source.cpp.53BAEC045C149EFB.idx | Bin 0 -> 1258 bytes .../index/Source.hpp.189DAD857FA1250E.idx | Bin 0 -> 1104 bytes .../clangd/index/Spawn.cpp.987D053F0FF54F71.idx | Bin 0 -> 488 bytes .../clangd/index/Spawn.hpp.B950DF79854F8A20.idx | Bin 0 -> 602 bytes .../clangd/index/Store.cpp.79C0D5DCE981602D.idx | Bin 0 -> 1690 bytes .../clangd/index/Store.hpp.37A1F4EA7E15AE22.idx | Bin 0 -> 1180 bytes .../index/Structure.cpp.8289CAA9F5C9B4DC.idx | Bin 0 -> 1976 bytes .../index/Structure.hpp.0DFB6F33446C278F.idx | Bin 0 -> 1390 bytes .../StructureBase.hpp.3EE166F5643E6FAA.idx | Bin 0 -> 366 bytes .../StructureContainer.cpp.1AFE7EB2BD0F8897.idx | Bin 0 -> 1042 bytes .../StructureContainer.hpp.D962A83289A02BAF.idx | Bin 0 -> 704 bytes ...StructureController.cpp.BA464B31AB9656C8.idx | Bin 0 -> 3018 bytes ...StructureController.hpp.480AE308E99B5EE4.idx | Bin 0 -> 2200 bytes .../StructureExtension.cpp.58CCAE4B4A87AF30.idx | Bin 0 -> 918 bytes .../StructureExtension.hpp.E4DE93C77FF2DE45.idx | Bin 0 -> 658 bytes .../StructureExtractor.cpp.CF7007138905569D.idx | Bin 0 -> 876 bytes .../StructureExtractor.hpp.BBD5F4FC5AB54312.idx | Bin 0 -> 610 bytes .../StructureFactory.cpp.DAC57F7AE1B23668.idx | Bin 0 -> 1396 bytes .../StructureFactory.hpp.EF8881D34782398D.idx | Bin 0 -> 1188 bytes ...tructureInvaderCore.cpp.C2E8618DAABE8B02.idx | Bin 0 -> 1190 bytes ...tructureInvaderCore.hpp.0B5BF7BC0A807DB6.idx | Bin 0 -> 876 bytes ...StructureKeeperLair.cpp.D1329C2B9B35125F.idx | Bin 0 -> 886 bytes ...StructureKeeperLair.hpp.E785BC97C2AF30F6.idx | Bin 0 -> 648 bytes .../StructureLink.cpp.D3885023DE0CFABD.idx | Bin 0 -> 1278 bytes .../StructureLink.hpp.0D91ED9EAB478F1E.idx | Bin 0 -> 1058 bytes .../StructureNuker.cpp.5927449CCE01C9BA.idx | Bin 0 -> 1258 bytes .../StructureNuker.hpp.0A5A743BF6A1CAD2.idx | Bin 0 -> 1072 bytes .../StructureObserver.cpp.B8A400A04BFE25E7.idx | Bin 0 -> 966 bytes .../StructureObserver.hpp.BB084722192368B6.idx | Bin 0 -> 674 bytes .../StructurePortal.cpp.FE6B1E0D5403E41B.idx | Bin 0 -> 1088 bytes .../StructurePortal.hpp.2935942F31CF531A.idx | Bin 0 -> 906 bytes .../StructurePowerBank.cpp.1EF7102806D7C2AA.idx | Bin 0 -> 982 bytes .../StructurePowerBank.hpp.F7DF3B94B54C4572.idx | Bin 0 -> 800 bytes ...StructurePowerSpawn.cpp.4C9F50339D5A0BE0.idx | Bin 0 -> 1430 bytes ...StructurePowerSpawn.hpp.11EF6AE0009C6852.idx | Bin 0 -> 1188 bytes .../StructureRampart.cpp.2A09FBAD12E93AD9.idx | Bin 0 -> 1144 bytes .../StructureRampart.hpp.F0DB1B3DF22E1056.idx | Bin 0 -> 922 bytes .../StructureRoad.cpp.098CCF07120857AC.idx | Bin 0 -> 874 bytes .../StructureRoad.hpp.223CD6C4B27807B4.idx | Bin 0 -> 596 bytes .../StructureSpawn.cpp.2F1A39F78F4EECE4.idx | Bin 0 -> 3416 bytes .../StructureSpawn.hpp.F0E5A55A7239BBFF.idx | Bin 0 -> 2154 bytes ...uctureSpawnSpawning.cpp.38E67182E8F775FF.idx | Bin 0 -> 1546 bytes ...uctureSpawnSpawning.hpp.E6E83D2B23730E54.idx | Bin 0 -> 1236 bytes .../StructureStorage.cpp.01D44A517E7D6DFB.idx | Bin 0 -> 912 bytes .../StructureStorage.hpp.11441440C71A4145.idx | Bin 0 -> 654 bytes .../StructureTerminal.cpp.B0975CF0B9C9E88B.idx | Bin 0 -> 1316 bytes .../StructureTerminal.hpp.40F4BE087623B8B3.idx | Bin 0 -> 912 bytes .../StructureTower.cpp.9172FAF4873D8232.idx | Bin 0 -> 1468 bytes .../StructureTower.hpp.AF0F1ECA53692BE0.idx | Bin 0 -> 980 bytes .../StructureWall.cpp.39C691C0B3347D59.idx | Bin 0 -> 714 bytes .../StructureWall.hpp.EB8FB3D2347C00B5.idx | Bin 0 -> 536 bytes .../index/Supplier.cpp.89F355B947FA65C4.idx | Bin 0 -> 1496 bytes .../index/Supplier.hpp.4A810B586D9B166E.idx | Bin 0 -> 664 bytes .../index/Tombstone.cpp.9AC75818EFB61A71.idx | Bin 0 -> 1530 bytes .../index/Tombstone.hpp.ADF8B0D03C5B5930.idx | Bin 0 -> 1236 bytes .../clangd/index/Tower.cpp.980EAFE65EA5F582.idx | Bin 0 -> 808 bytes .../clangd/index/Tower.hpp.7ADC83CB38B9C94B.idx | Bin 0 -> 670 bytes .../index/Upgrader.cpp.9FC1FAC0A0714416.idx | Bin 0 -> 934 bytes .../index/Upgrader.hpp.7A61F00761597E45.idx | Bin 0 -> 530 bytes .../index/Worker.cpp.930A180C370EA958.idx | Bin 0 -> 1816 bytes .../index/Worker.hpp.1B4F55BA941C3024.idx | Bin 0 -> 1022 bytes .../adl_serializer.hpp.FD9ABE37E12DC7D4.idx | Bin 0 -> 772 bytes .../binary_reader.hpp.85C8DB32F3DA24EE.idx | Bin 0 -> 23414 bytes .../binary_writer.hpp.F4F05EE094B86E77.idx | Bin 0 -> 22656 bytes ...tainer_with_subtype.hpp.5D8ADC4B6F0EC19F.idx | Bin 0 -> 2136 bytes .../index/cpp_future.hpp.00F7EE03E6361CB6.idx | Bin 0 -> 1896 bytes .../index/detected.hpp.FE1CC41402731872.idx | Bin 0 -> 1910 bytes .../index/exceptions.hpp.4E4867805F2A0B34.idx | Bin 0 -> 8336 bytes .../index/from_json.hpp.00480E8AD10B3227.idx | Bin 0 -> 8328 bytes .../clangd/index/hash.hpp.D43924E75250C03C.idx | Bin 0 -> 1196 bytes .../index/hedley.hpp.909236672F1EC8E1.idx | Bin 0 -> 6832 bytes .../index/hedley_undef.hpp.032DA9B15E6116A9.idx | Bin 0 -> 174 bytes .../input_adapters.hpp.5B6B7EF565F97194.idx | Bin 0 -> 11484 bytes .../internal_iterator.hpp.1A3EB4118A8C6D1B.idx | Bin 0 -> 632 bytes .../index/is_sax.hpp.92C5DFF09E6057A8.idx | Bin 0 -> 3638 bytes .../index/iter_impl.hpp.8664277A5602E1AF.idx | Bin 0 -> 9156 bytes .../iteration_proxy.hpp.62E7DC0335CC98A4.idx | Bin 0 -> 4400 bytes .../iterator_traits.hpp.56B1B6A38EF4B589.idx | Bin 0 -> 1612 bytes .../clangd/index/json.hpp.3F6A318D7843253C.idx | Bin 0 -> 80280 bytes .../index/json_fwd.hpp.E578A339E2FA19E6.idx | Bin 0 -> 422 bytes .../index/json_pointer.hpp.9B708EAD4A613065.idx | Bin 0 -> 9642 bytes .../index/json_ref.hpp.09F79A303FDED284.idx | Bin 0 -> 2160 bytes ...on_reverse_iterator.hpp.47A8D3707286B249.idx | Bin 0 -> 2252 bytes .../index/json_sax.hpp.438E587A86429469.idx | Bin 0 -> 12052 bytes .../clangd/index/lexer.hpp.9F3DB76FC7820C63.idx | Bin 0 -> 14486 bytes .../index/macro_scope.hpp.771D39546C225B59.idx | Bin 0 -> 2326 bytes .../macro_unscope.hpp.042263DAF5D3B742.idx | Bin 0 -> 204 bytes .../index/ordered_map.hpp.2C355B95688DDCBD.idx | Bin 0 -> 2566 bytes .../output_adapters.hpp.CA852FDE70A1413E.idx | Bin 0 -> 3184 bytes .../index/parser.hpp.97F042A750EC2463.idx | Bin 0 -> 7448 bytes .../index/position_t.hpp.506F5939B170C75A.idx | Bin 0 -> 724 bytes .../primitive_iterator.hpp.1170A96EE003D502.idx | Bin 0 -> 2322 bytes .../index/serializer.hpp.EE8E2D8BCD463B77.idx | Bin 0 -> 11606 bytes .../index/to_chars.hpp.A642693BE92CA48B.idx | Bin 0 -> 7690 bytes .../index/to_json.hpp.E160BFB79EA81F8D.idx | Bin 0 -> 10414 bytes .../index/type_traits.hpp.ABCB4E4E7E610FDF.idx | Bin 0 -> 10468 bytes .../index/value_t.hpp.EBE0F29787A62C58.idx | Bin 0 -> 1932 bytes .../index/void_t.hpp.7BA1398875725DE2.idx | Bin 0 -> 418 bytes compile_commands.json | 2 +- douwco_hivemind/src/Creeps/Worker.cpp | 1 + 163 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 .cache/clangd/index/Builder.cpp.B5CCBE10376BB391.idx create mode 100644 .cache/clangd/index/Builder.hpp.985BEF508D2F19DC.idx create mode 100644 .cache/clangd/index/Constants.hpp.73C88F7BC08E8883.idx create mode 100644 .cache/clangd/index/Constants.hpp.757BD26CBF07E480.idx create mode 100644 .cache/clangd/index/ConstructionSite.cpp.2F1702F3CE90AC74.idx create mode 100644 .cache/clangd/index/ConstructionSite.hpp.AC4AF59DFE379D60.idx create mode 100644 .cache/clangd/index/Context.hpp.45AE0BD0E5763FA8.idx create mode 100644 .cache/clangd/index/Creep.cpp.D9D8E0EFFE8A1C77.idx create mode 100644 .cache/clangd/index/Creep.hpp.DFCCE6FB989E2C87.idx create mode 100644 .cache/clangd/index/CreepBase.cpp.58E0E4D279FDDABA.idx create mode 100644 .cache/clangd/index/CreepBase.hpp.7E8B850E5248473D.idx create mode 100644 .cache/clangd/index/Deposit.cpp.FB5FB5745D0FB700.idx create mode 100644 .cache/clangd/index/Deposit.hpp.06E258CEC5CD1C13.idx create mode 100644 .cache/clangd/index/Effect.hpp.6E97B57E81A1833E.idx create mode 100644 .cache/clangd/index/Engine.cpp.E0EDBA5C39F74A71.idx create mode 100644 .cache/clangd/index/Engine.hpp.7BCD69373EE97AC1.idx create mode 100644 .cache/clangd/index/Flag.cpp.1A218F3467AD96F2.idx create mode 100644 .cache/clangd/index/Flag.hpp.F8A246B19154E01E.idx create mode 100644 .cache/clangd/index/Game.cpp.EAFC89EB266153E2.idx create mode 100644 .cache/clangd/index/Game.hpp.A18C93DE125B3555.idx create mode 100644 .cache/clangd/index/JS.cpp.9CE77F58AC81AB54.idx create mode 100644 .cache/clangd/index/JS.hpp.0CEE092BFADF37BC.idx create mode 100644 .cache/clangd/index/JSON.hpp.C66D7A1922C1D024.idx create mode 100644 .cache/clangd/index/JsonTool.hpp.B6F2E41B8374E784.idx create mode 100644 .cache/clangd/index/Loop.cpp.C17AD05676EB59E6.idx create mode 100644 .cache/clangd/index/Maintainer.cpp.06B26E41E119D52F.idx create mode 100644 .cache/clangd/index/Maintainer.hpp.99D47B227C1B98F2.idx create mode 100644 .cache/clangd/index/MeasureTool.hpp.B7540F2C43EEB974.idx create mode 100644 .cache/clangd/index/Memory.cpp.A1F941785C071B86.idx create mode 100644 .cache/clangd/index/Memory.hpp.BED4B2D1E1F9B0C2.idx create mode 100644 .cache/clangd/index/Miner.cpp.C9EC5776C7043A9B.idx create mode 100644 .cache/clangd/index/Miner.hpp.EB1FA30764CFD36C.idx create mode 100644 .cache/clangd/index/Mineral.cpp.666B4AEACBC2DB86.idx create mode 100644 .cache/clangd/index/Mineral.hpp.78DF4C4C25B7897A.idx create mode 100644 .cache/clangd/index/Nuke.cpp.261B72C64A097650.idx create mode 100644 .cache/clangd/index/Nuke.hpp.1C196CCEC502BF2A.idx create mode 100644 .cache/clangd/index/Object.cpp.8A22B5045D08A8FB.idx create mode 100644 .cache/clangd/index/Object.hpp.3C3F71944F69B881.idx create mode 100644 .cache/clangd/index/OwnedStructure.cpp.9DD418ED233CE05B.idx create mode 100644 .cache/clangd/index/OwnedStructure.hpp.4E0C1F5E28C9CE2B.idx create mode 100644 .cache/clangd/index/PathFinder.cpp.3929BF8940A12F82.idx create mode 100644 .cache/clangd/index/PathFinder.hpp.8E03A78ACB16AE6E.idx create mode 100644 .cache/clangd/index/PathTool.hpp.C0AEF63BE240B251.idx create mode 100644 .cache/clangd/index/PowerCreep.cpp.15A24FEC7A2B7620.idx create mode 100644 .cache/clangd/index/PowerCreep.hpp.A46F4EA09DE53DE4.idx create mode 100644 .cache/clangd/index/RawMemory.cpp.D9E66C57B409D317.idx create mode 100644 .cache/clangd/index/RawMemory.hpp.C2923D447079B382.idx create mode 100644 .cache/clangd/index/Resource.cpp.77BEFDE5CB413577.idx create mode 100644 .cache/clangd/index/Resource.hpp.A16E184D077ACC65.idx create mode 100644 .cache/clangd/index/Room.cpp.736DA4C4A006C5EE.idx create mode 100644 .cache/clangd/index/Room.cpp.DF8CE7C3D2ABAC14.idx create mode 100644 .cache/clangd/index/Room.hpp.405174A701B0B111.idx create mode 100644 .cache/clangd/index/Room.hpp.4BAA62BD50A988E8.idx create mode 100644 .cache/clangd/index/RoomObject.cpp.A235D185ADDB9999.idx create mode 100644 .cache/clangd/index/RoomObject.hpp.E10E746801F6C9C2.idx create mode 100644 .cache/clangd/index/RoomPosition.cpp.C5D0318086F76F0E.idx create mode 100644 .cache/clangd/index/RoomPosition.hpp.8A25E301D3F7A985.idx create mode 100644 .cache/clangd/index/RoomTerrain.cpp.FC862167BBE84DF2.idx create mode 100644 .cache/clangd/index/RoomTerrain.hpp.B2602A94D80A21E2.idx create mode 100644 .cache/clangd/index/RoomVisual.cpp.DB732FBFE851D039.idx create mode 100644 .cache/clangd/index/RoomVisual.hpp.631D2365C93944A5.idx create mode 100644 .cache/clangd/index/Ruin.cpp.3F898A0C7420C2C6.idx create mode 100644 .cache/clangd/index/Ruin.hpp.AF95ACC3B6E2A8C6.idx create mode 100644 .cache/clangd/index/Source.cpp.53BAEC045C149EFB.idx create mode 100644 .cache/clangd/index/Source.hpp.189DAD857FA1250E.idx create mode 100644 .cache/clangd/index/Spawn.cpp.987D053F0FF54F71.idx create mode 100644 .cache/clangd/index/Spawn.hpp.B950DF79854F8A20.idx create mode 100644 .cache/clangd/index/Store.cpp.79C0D5DCE981602D.idx create mode 100644 .cache/clangd/index/Store.hpp.37A1F4EA7E15AE22.idx create mode 100644 .cache/clangd/index/Structure.cpp.8289CAA9F5C9B4DC.idx create mode 100644 .cache/clangd/index/Structure.hpp.0DFB6F33446C278F.idx create mode 100644 .cache/clangd/index/StructureBase.hpp.3EE166F5643E6FAA.idx create mode 100644 .cache/clangd/index/StructureContainer.cpp.1AFE7EB2BD0F8897.idx create mode 100644 .cache/clangd/index/StructureContainer.hpp.D962A83289A02BAF.idx create mode 100644 .cache/clangd/index/StructureController.cpp.BA464B31AB9656C8.idx create mode 100644 .cache/clangd/index/StructureController.hpp.480AE308E99B5EE4.idx create mode 100644 .cache/clangd/index/StructureExtension.cpp.58CCAE4B4A87AF30.idx create mode 100644 .cache/clangd/index/StructureExtension.hpp.E4DE93C77FF2DE45.idx create mode 100644 .cache/clangd/index/StructureExtractor.cpp.CF7007138905569D.idx create mode 100644 .cache/clangd/index/StructureExtractor.hpp.BBD5F4FC5AB54312.idx create mode 100644 .cache/clangd/index/StructureFactory.cpp.DAC57F7AE1B23668.idx create mode 100644 .cache/clangd/index/StructureFactory.hpp.EF8881D34782398D.idx create mode 100644 .cache/clangd/index/StructureInvaderCore.cpp.C2E8618DAABE8B02.idx create mode 100644 .cache/clangd/index/StructureInvaderCore.hpp.0B5BF7BC0A807DB6.idx create mode 100644 .cache/clangd/index/StructureKeeperLair.cpp.D1329C2B9B35125F.idx create mode 100644 .cache/clangd/index/StructureKeeperLair.hpp.E785BC97C2AF30F6.idx create mode 100644 .cache/clangd/index/StructureLink.cpp.D3885023DE0CFABD.idx create mode 100644 .cache/clangd/index/StructureLink.hpp.0D91ED9EAB478F1E.idx create mode 100644 .cache/clangd/index/StructureNuker.cpp.5927449CCE01C9BA.idx create mode 100644 .cache/clangd/index/StructureNuker.hpp.0A5A743BF6A1CAD2.idx create mode 100644 .cache/clangd/index/StructureObserver.cpp.B8A400A04BFE25E7.idx create mode 100644 .cache/clangd/index/StructureObserver.hpp.BB084722192368B6.idx create mode 100644 .cache/clangd/index/StructurePortal.cpp.FE6B1E0D5403E41B.idx create mode 100644 .cache/clangd/index/StructurePortal.hpp.2935942F31CF531A.idx create mode 100644 .cache/clangd/index/StructurePowerBank.cpp.1EF7102806D7C2AA.idx create mode 100644 .cache/clangd/index/StructurePowerBank.hpp.F7DF3B94B54C4572.idx create mode 100644 .cache/clangd/index/StructurePowerSpawn.cpp.4C9F50339D5A0BE0.idx create mode 100644 .cache/clangd/index/StructurePowerSpawn.hpp.11EF6AE0009C6852.idx create mode 100644 .cache/clangd/index/StructureRampart.cpp.2A09FBAD12E93AD9.idx create mode 100644 .cache/clangd/index/StructureRampart.hpp.F0DB1B3DF22E1056.idx create mode 100644 .cache/clangd/index/StructureRoad.cpp.098CCF07120857AC.idx create mode 100644 .cache/clangd/index/StructureRoad.hpp.223CD6C4B27807B4.idx create mode 100644 .cache/clangd/index/StructureSpawn.cpp.2F1A39F78F4EECE4.idx create mode 100644 .cache/clangd/index/StructureSpawn.hpp.F0E5A55A7239BBFF.idx create mode 100644 .cache/clangd/index/StructureSpawnSpawning.cpp.38E67182E8F775FF.idx create mode 100644 .cache/clangd/index/StructureSpawnSpawning.hpp.E6E83D2B23730E54.idx create mode 100644 .cache/clangd/index/StructureStorage.cpp.01D44A517E7D6DFB.idx create mode 100644 .cache/clangd/index/StructureStorage.hpp.11441440C71A4145.idx create mode 100644 .cache/clangd/index/StructureTerminal.cpp.B0975CF0B9C9E88B.idx create mode 100644 .cache/clangd/index/StructureTerminal.hpp.40F4BE087623B8B3.idx create mode 100644 .cache/clangd/index/StructureTower.cpp.9172FAF4873D8232.idx create mode 100644 .cache/clangd/index/StructureTower.hpp.AF0F1ECA53692BE0.idx create mode 100644 .cache/clangd/index/StructureWall.cpp.39C691C0B3347D59.idx create mode 100644 .cache/clangd/index/StructureWall.hpp.EB8FB3D2347C00B5.idx create mode 100644 .cache/clangd/index/Supplier.cpp.89F355B947FA65C4.idx create mode 100644 .cache/clangd/index/Supplier.hpp.4A810B586D9B166E.idx create mode 100644 .cache/clangd/index/Tombstone.cpp.9AC75818EFB61A71.idx create mode 100644 .cache/clangd/index/Tombstone.hpp.ADF8B0D03C5B5930.idx create mode 100644 .cache/clangd/index/Tower.cpp.980EAFE65EA5F582.idx create mode 100644 .cache/clangd/index/Tower.hpp.7ADC83CB38B9C94B.idx create mode 100644 .cache/clangd/index/Upgrader.cpp.9FC1FAC0A0714416.idx create mode 100644 .cache/clangd/index/Upgrader.hpp.7A61F00761597E45.idx create mode 100644 .cache/clangd/index/Worker.cpp.930A180C370EA958.idx create mode 100644 .cache/clangd/index/Worker.hpp.1B4F55BA941C3024.idx create mode 100644 .cache/clangd/index/adl_serializer.hpp.FD9ABE37E12DC7D4.idx create mode 100644 .cache/clangd/index/binary_reader.hpp.85C8DB32F3DA24EE.idx create mode 100644 .cache/clangd/index/binary_writer.hpp.F4F05EE094B86E77.idx create mode 100644 .cache/clangd/index/byte_container_with_subtype.hpp.5D8ADC4B6F0EC19F.idx create mode 100644 .cache/clangd/index/cpp_future.hpp.00F7EE03E6361CB6.idx create mode 100644 .cache/clangd/index/detected.hpp.FE1CC41402731872.idx create mode 100644 .cache/clangd/index/exceptions.hpp.4E4867805F2A0B34.idx create mode 100644 .cache/clangd/index/from_json.hpp.00480E8AD10B3227.idx create mode 100644 .cache/clangd/index/hash.hpp.D43924E75250C03C.idx create mode 100644 .cache/clangd/index/hedley.hpp.909236672F1EC8E1.idx create mode 100644 .cache/clangd/index/hedley_undef.hpp.032DA9B15E6116A9.idx create mode 100644 .cache/clangd/index/input_adapters.hpp.5B6B7EF565F97194.idx create mode 100644 .cache/clangd/index/internal_iterator.hpp.1A3EB4118A8C6D1B.idx create mode 100644 .cache/clangd/index/is_sax.hpp.92C5DFF09E6057A8.idx create mode 100644 .cache/clangd/index/iter_impl.hpp.8664277A5602E1AF.idx create mode 100644 .cache/clangd/index/iteration_proxy.hpp.62E7DC0335CC98A4.idx create mode 100644 .cache/clangd/index/iterator_traits.hpp.56B1B6A38EF4B589.idx create mode 100644 .cache/clangd/index/json.hpp.3F6A318D7843253C.idx create mode 100644 .cache/clangd/index/json_fwd.hpp.E578A339E2FA19E6.idx create mode 100644 .cache/clangd/index/json_pointer.hpp.9B708EAD4A613065.idx create mode 100644 .cache/clangd/index/json_ref.hpp.09F79A303FDED284.idx create mode 100644 .cache/clangd/index/json_reverse_iterator.hpp.47A8D3707286B249.idx create mode 100644 .cache/clangd/index/json_sax.hpp.438E587A86429469.idx create mode 100644 .cache/clangd/index/lexer.hpp.9F3DB76FC7820C63.idx create mode 100644 .cache/clangd/index/macro_scope.hpp.771D39546C225B59.idx create mode 100644 .cache/clangd/index/macro_unscope.hpp.042263DAF5D3B742.idx create mode 100644 .cache/clangd/index/ordered_map.hpp.2C355B95688DDCBD.idx create mode 100644 .cache/clangd/index/output_adapters.hpp.CA852FDE70A1413E.idx create mode 100644 .cache/clangd/index/parser.hpp.97F042A750EC2463.idx create mode 100644 .cache/clangd/index/position_t.hpp.506F5939B170C75A.idx create mode 100644 .cache/clangd/index/primitive_iterator.hpp.1170A96EE003D502.idx create mode 100644 .cache/clangd/index/serializer.hpp.EE8E2D8BCD463B77.idx create mode 100644 .cache/clangd/index/to_chars.hpp.A642693BE92CA48B.idx create mode 100644 .cache/clangd/index/to_json.hpp.E160BFB79EA81F8D.idx create mode 100644 .cache/clangd/index/type_traits.hpp.ABCB4E4E7E610FDF.idx create mode 100644 .cache/clangd/index/value_t.hpp.EBE0F29787A62C58.idx create mode 100644 .cache/clangd/index/void_t.hpp.7BA1398875725DE2.idx diff --git a/.cache/clangd/index/Builder.cpp.B5CCBE10376BB391.idx b/.cache/clangd/index/Builder.cpp.B5CCBE10376BB391.idx new file mode 100644 index 0000000000000000000000000000000000000000..e95c131593b87eea9cf6c31a6ebc05172d6be68a GIT binary patch literal 1246 zcmWIYbaT7L!oc91;#rZKT9OE4GKc_iaY<38G!p~EQ%(kkiaA@S9?W}WAkg;L$X4-q z!xe6!cGZ+UZA2FaFU2UMR4f1}gXPburX7G`ti9$ss}F!gSZ9h=zF+sB^+PbMuc>r`$O@X^BSfelMK-c+HyX zy@~U;T*`>l*1f%R-id4$?($W>Qd~0}LPD*@M8fuM+O_E%gZ`|Q2CF^={aE;ZWpU^) zo0x)$%%7JUb-W8Wy#8~U>wCT@+U|$g|8dz*Z4-`Vy6>-B$~VDhd*Ao!{TDO#TS*CW zibg$MB;@nWE$+{9x1QSc)3WLlemj+S+})>k=g{_p^G%+ro|vrsAmFaRY~M($>cUy+ zGnR>+o6oqhXu9?X`I67CCX^rV*1H_7ASU~G-ZbBk;}_RgxpVYv!6SLI9jOtfdry3| z+&}d^3-8GTvhxi%&F^{X6exds?D~oQ8OIt~hT_WHq*!2DDc_`hfn~*F69Fb&aRzBi zIZG2sL0&;+1`ePc5G20MSsZcEAx(fu2Pm!Pq82MDU@YJRllGiFt0T1ebB6$v1W;OB zPF!1(mzP%xCe2WknpP~w$iSeTK7Gy8kFz8hd8BQ4ZDe7V!f0k0X>AT|IhbWK(ncIc zaGn&{RoAulzuXjh=Os)HqZHURFya4CVufn%*jE58u$Hk_g*cvp0p>oSYLMe#st>vR z+i895=|n~uX&DX~0hlVkl`_G-^@j6-!b%)UA~0d61G|)pB-^(Eh0O%aL|`tE4Bl?} zafaU+G+~$>%skTKqT(_zLwKastks-gdU>QRMJ;7u-Y-hcNd&pLxG1^!F^C}vA|OB= z#$aGjMlj_OOgRKo4Z)O!Gnu6)pQxYd5>T5Yq^%_{r>vl)sH&!+t|_A;D=Ebw1y{$Q zg=A%S}T7OSn<$9HeOKlf(1ob45vC3PNte~ulwXuaL&+2LswDko$5 z1g&b$HoIG7=T6|fwq5ic57jnqR!mc4f^L z882ST1tmho7rk0l<90l_m0j%Xwq9h~!k>&nF5NW@#g(~9bAhfa-=uwkWyN9>0VYmn z26jt1OA}T>UO{CB4xk(mB)-jA9C6VhO@N65D6QtA7RxGNEZ_r^)|n@gaHIZAnivx! zGXpCZ2Nyq>fJuAKp4AcB{JBGbi3O-zTuxk@m6w-S3MPGBYyZnlp?6-gGchtTu(ETp z3xWv-PO#OCtgH-0scFTpfjr@<)~cU6l{pxBSh*y*3WNLr6Nc$xlmfdQCJb{sP<SFyYlfyM>&DL{~HMu(C_DE5d|< z?m}_^*JE9mxT^Rqj9jdY9E{3f?*IvyVkR!IKW(3KM9etT!~xU`3^eeeCf8Y1)1tS{+0O35?(EtDd literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Constants.hpp.73C88F7BC08E8883.idx b/.cache/clangd/index/Constants.hpp.73C88F7BC08E8883.idx new file mode 100644 index 0000000000000000000000000000000000000000..5e8a2f35f5fe1cafec8d5e4f17a78f98fc106611 GIT binary patch literal 32768 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/ConstructionSite.cpp.2F1702F3CE90AC74.idx b/.cache/clangd/index/ConstructionSite.cpp.2F1702F3CE90AC74.idx new file mode 100644 index 0000000000000000000000000000000000000000..648d4f7daefffedc62b3cb91fee6918c465f8f3d GIT binary patch literal 1602 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Creep.cpp.D9D8E0EFFE8A1C77.idx b/.cache/clangd/index/Creep.cpp.D9D8E0EFFE8A1C77.idx new file mode 100644 index 0000000000000000000000000000000000000000..cd7ee1cca97c567b431b645e49353d3f09580db8 GIT binary patch literal 8906 zcmZ8_2{@Ep*#A7w%%jH4Fev-JN0yW|Np?vzgvp*I+4n?IDSNiczLlicl9Z){ER~Wq z^djv=dCL-&CHkM?JD>0Rch%K%?%!|j=bZc8%kO$<#s&s$qBxwct8ti*Td*?$hr?|F z|AK-8j|;KkaFeDuTv*0gvk%tk7M?SWyI38@n3v{|2FjBKG70+ulst|-AJlp z&z3?Gr^H#OvEI)Dy>9GxHP0&0)AhQ{K4_Y>nY-rWLtAc`wEj5|cUk{J=ZM^VCr=6w z>*}-9Y!e4oXfp?d&+_MtYuax1rrwr#$novd!a|l@hOuyB+?SQqA4!IF0yIaVpRor% z>2vNReu|}MxX!3koA6I;axX@@#&#I)QQ3CNQM$yDrQ_qskcS4}=?3295$9zBubqUt zt%UxKQpehesGW;EIe&O^$R5tL9anxV+dN6ssC_^5W&GPmZ_T_U-zU-U3E?Y`shk0{ z?HQqNhwJCc3zxViO79+zI;E1Q6Z=pnc5Wd#R>_}}E;RASQ)S9ApK^8a?bSugIY~2i zl?k35ro>jslU55YTsx$n&4(MDKZ@!!5hMlvB%i#}IG49vC`A4C53bo?V#~A2rG<+} z_XP?mD6#OSKR0sy7W#OVaI~xBFTHw;16h7)BJ-OH(Te;iyPk#nsWiuaSF3#Qha8i& z|8N}maOw>=pFZM}SoGMn=agUv@gKXi7r`ih%)qsGzxf4?nmil?D$5M2>Lw@g;a?8m zPv9wY2A601k0|dEVl@l!;D2@VY@xWwek;F-S?R46IX!Pu4n{Rkr37$Fz3uPJNk3fD zxg?T#sN|Mhu~;&b-%D$^!va{=Y}jmSS6R#h{UYr^R#pdI1FZxqPA{)LvCF+uOm@r6W^*g1kJuRx{W_cb86O8c z{)o}b_eE*0p6m|R?0;Qhim&-)*#Ld4X4%T7zcRKrUWB(}Z3H7J&* z8y0+_(EP`aRim1%1BK@E&4Pc;gE{j#mrq|Fi+|hxaJ0EaA#FK-f}X}&oGbgNZMvv6 zF5~Q!XTg>L^NB~aGy0b#C96lBtu{~fOd5B$zD94l4^&XS1p4>J-rkXVcyMcRjymgB zMMU6fljXI!K0;rktYLKh#rR7#(X^TK0bIeam3fZ_rABN|(ERv*{9R!b({3k+Yv0Po z57rQp&i@^74fu0F&TVou%{}aP|0&H+F_8zExj8sX5*F>2*!LD(cqVtCRgdkP&e&O| ztMdKnM+3|fM~9l=E;Tk;~&tRzZBC=!%1-+vfZc+OV`(fOXq%y zj7AM*_15j>vs2^T@}RNU?HvotrO9_llo0(LSU} zk~uL-ma=8a(xf^S?8h3P>Aqh&oKLBCq!w23ONC4Ked4)y`cX~ByMo9Qe>Qn_*BGkd z;y-+7X%UluSywmUUz#hN|E9?#S$8K}$zs{p0NWl#@3hUAWoPuq|3;eo_=P3JIF0 zq(d*^~&fBUrH;AIsPeZbi<~t5N$35!?A8#hNahpgBGrQL`S3M2Z zCJj-|M#h}{bGlR|a?adjQxtAd%KTo}8+^s{&BOx!zyV|O1zdEc?&JEH?G$PTR-E2A-8v`oBPF%*yxOCQlj&(0=@zzU_B>~+l4}kAW8!LD ze(jV~FELfS^g7Sw4!$!n)d6;T_1b7wr25kFo84;5V#__^^*M=tofSKleMs1{bg}4Y z38ikt*JrrZhFnoc@~sr1X+@Vhm`O>TNYcJ7I2QXfG}(=Bq{&9CI^Qol?w+{!g$_fH za-BHU<253kPg{*=unMl>a`PU{Ch=aomYjZt{r(tstW{|D5%i6TH>Yk1*U~AHt4Moo z@~iPmZEHljlRH)PkDb7kO{GgD(NLQ#QC+Xfi=OARouax8ro6_y^5UoG`&M(~Rx|&T zTYXS>n@G{H&vgo1HhaH&cgAS#{N5%(r>ltBeTAUmjw#z2<$XWhWW^F}R?ods$7vM_ zb=7$#_@0g&wKV1q)(blQP=i&4#pc<8LbqyN|0kNLEf>GKw5ef*gjj#`zb&^yYTQ^? zn2UAB(noubD1KR@e_ZZMt=Y_5x9g~1_Ml^VfxB;YO8csQqG^9rZSa>GQ?~AFlcay} zNuF}&b*{SUstBnQ3}ou}MQar*hwtiTPx|xIB~hP!bS71){;aTv&UFgW?YOzBiA#Qw zNHMD#Ie*kxPeAvCAloXxd3#Ag3aQGox-ar--`z{^Y=>jYT-+D;--};J&dyO9aOn{% zKyQw94bPY)duRpRby+T|isvLGC>-oGTBx0ys-64pIhiazQ^O}mDG1xEd@q;V*zt&Q zq34I67bU3M&E`1hIHo7e#Amqubdn&x$1xa#~b}C7Z7I%7YSuI9=_071Y zWw|_jc{U~M;t65vE%Dkq=4`ik-F)MIkM-8PP8Th0bov^$tN!6Hdi{fz=SQrF91mIM ziQ1c1l-`@mNa*WqWqo#Kh;n#)7}G&XxwhMyOMMMC>8{21^p=O7OIqb5-(thr_dc08 zCRB<`o!>icIPmpLpjCv-TL<#q7L%2zZwU{{w&f>1Z+ZAXXW_fl;%DgR5~Nu%6Dq4Z z7-`#c&F%wUzTcqrZ)@_2@5M1JmzOuUf89nHU6@`TQtr)^qeTnsx8}l~8&Q7Ha6@}& z{DGt7nK#~{`BTZf3VBNBT~6M;UcSRt;9x+8yC^j%K1}9<+Y5fbzL=o! zmtQ#!3=&fdbDgd*a)2w!)J)}EnFxysMqI^BMbikfB7T-gcB3Oh0PHgTJ+dvyGt zTKheEs(Mz;lc{L?)en9xmu4HugYAzdLbkrX(SNV!UyJb_+T&iuhnobMNu?JjFFKZ~ zDu>*E(m8Z3W2Hp9H0^KG%j0 z8d6tsq$RXc=lOk}b97!yn~)29vG2+Be<&fH?^~}S+YM7~mQ(ps&RJu-H%;;uk34#d zy6|ZesGRSwnp`06_!t|5-OWNcw^?jE6(Zxv>A1&(O)wfO-RkDKUpLV_KEj6lNG48a zj!E6~lGJa_V&1EPr+24H99e#QE@O`%T|@rX4Mi7?C+!!#-<@7bwTZIIZH~%6S~kj4 zsqP=iheljrFRSveuoa9@tvO%D5<1iqCvB=!V6085e@EI|-aWMQ6D>HKI&|$zMe?(+ z!(tYed0jEZF%fQp>LRa*V}r({$;O!jj}v8tl{dMhG+qlh&a!Q+ppPbrbgsNEw|}U3 zMZixlx6m$YF2PNuS2~yeAfvk0!(EiCT3)mENB_^wzZO^@mQyI^KSnAEZ_Y%Q&KX(o zYyWI7x@~a3a?**!G82ESlZm~i%D2Z>1eOB2;#|8$^HFl{-?oPQK#Q* z^Ag$8^Dr)??Xvuhk?=o(Z7G&-y~;Z3pLs?P#lKIxsOaC zMwccd`x3MTi5*;FW#?j(M1qcQGwJ&0x~Agci=X#o(ey;ei`tO_)gv!}9vJ7lYnQ7d zUm>=&=t=N(`-z5a;r?c_muhqF3xqwgI@mJ3zxB6FVD+Bg+l~di@--$7yVuG(%Dwy= zoMU`$)5~T~{o&BElPu$34&8N`JNGp4)0tfB`bf9t=|lT1Z~pZO(Tm7GcK`7G&z1Rx zvG-Htov(?@&oCMV=qmf4_#UeK{`2v`hRA2Ur<_5G=t`(0n@Vd-v7$)fZxoM@ZP?oF?bck`(?9XTwd@%0%q&)y!Q zJ*Tt$z@&_9o0peu+1Sl%KNL<2yPRnp4c_a);Xk~~(ACf9vSEYrs}n-?R(1A4UVm8p z#ojkMKCXWM!KdixRPd_7snE)^Hee`mXYa%aw|E_4zX=^;V&I<)v4l zLq5yfw|T88Bi>=^JW0J(rS0V-Kj%M&4e!nGa_?4{`Ox^_fM`D@{ewer)m?(JeSdLb zSB9dt_{XC1dCA2eC8QqV?da^Mxn37a;+MpvU-L=anL5X> znZf$w!k3u$_Jhq9K4YvtaqjvR(rOJB^D*OW!8`O>Y%7*u8&6yh8XNLEHoon0{SxKW zuTf7WfkM_BZ-v@>H5Ve;xZXxa{IK>@Xr|GsKJ;DE2-%eR=k5aT!Hf4Hn`{PtiY+MO ze}!aJnLLOV9ZhVGvz)nad)>(%OPT5Kb!FB$Q&_Z|Vrg(?(SG!mz+TfP`-Fv=VJ)kP z(0%PV|M8L>t^9(QLz!X(=7~Mh@w^-w@rDog=sx(jxWl1$;5fc2+j@>_8zvrV=6I@v z^p69cCCu&3h;HLlwwSaZ3&&*0gWjE@ug7cO^{_u$)VUtNQ^9b0uT*h4m$<6Rjc*dh z8k?Rg7=`|LF?T(DimRkP#i-TV?S5f9o$NP#+mP9Chk*y<~oKND7#+I&7F*Ju{CnxgA{ z%zoGV)n`Zf@4e>JPT{zqlRignm~gn1ES3nZFku`O4Kl>h=MmC8!b5ApuojF1$Bn~@ zgHI|)6j=_wAIL$es0*N!AfysxE3F%kb>mqX6d^#ti^qCsUfzdMQ8Pe^B1N&%22pGf zB{B#sfRM-ez@w7=8X))s!ZbpfMp$U&7*>vLW>6@AB1&865&4WKQc*8J=|@QY2p6rL zfVC6Y7!<|_o|oO?r`;4vsZ`V*P;@zTxoCL^B@bC6Z~%f~hwbivS&O)-s68NLAfyb0 zm6nIc^6+ar;RBS3g5fLu;mLedG!#%45z->UPV2(3E{x204L_jBCe(=(`F;_gqDKHF z79qtVe6(>C8%MV?CRv?p;#Nr!XS_VVP4EEIJ;_Enu;C(1b>o0CoKcTGEgdmuo)1vei+(Hnm>`J zqJDrdiI64{ep(KO14<@J%0xM6#Y|W+6NT}jZGiGg zhZ6}2J*7cKO#vl@6v9iZM6pVA3xhxcgcDOow3{`J_EJ%EKoBMgv(xM_yS0ddk8!x~ z^WHXRs;UgBs4IZ)Af!788*K)U&EQFEXJx#CFQPKfunACn0OcJ*dIy3&O~9rJYeB~V zWwmuOqpZTwXx&R0LMj7ZCh*wAh8GFFM+R3!`)#P`3E;(!WXDPCM6ga|Evj3Ak2`Zu zy(ok{dn)Px2ofX-R+<~;wiXLk0DsWY>5SS*bfBU~0bGQTia@xk@mTeG0to<$zNPHV zxfUr;Dta7HIuKF^*hMY@%O#K)(GUidRPB#fgPt+@QBgZUNkd3!AjjhISUi3$B0PYS z62BtvrD7IDMV$d<7kL*uEgE5pM#wN8qh(WPSf~DkQqeF#SVc&y2nX#WhJD1=Zbb_C z$ocl1wM)SK1QoRflq7_dgb2`PQEV3FV(bL`#Z@Pk?J}p_Jj00^019Ojg-kPMHfDt{ z$&y@9qpa%0P*D#68*vzM(~1#FF~ZLHG2?S;(}DOO+%)ye>$`|UNpT=IrZH@KeHW5| zQaIr@a$PGZXZ=5iM0;I1>m5= ziFx;RYycbrU~7ssJFOMj)C%GWPQnQYvRYh^K3q3xprQeQV9H_2L%W4gZXs)JjtU4Y zA$cYzF!UJ}bp!+%k_4}Az*I^Yq8`76gH;Q zePcms%TzQNP-tY@7FsRBREw@iuwY=XN2?_TzNExMPqCG0H5V? zfo|?W5#W7rz978+Gh8^X?3VZuFSZ#@6#%S{6bQgs0szJ!fo3>CfO&mR>ymZZ;JhN!jmSo9u-M3SQ?e-=%ttbvhS8W|$jNkT zCTkK*W-{H5U`K>KjZAkYI1^z8km>FOcOtATGTn>dMTAp{O!p`F6XAp*(?bX$MA*W~ z^l(Br5soJ^J&F)Tgdrz`VMmBXh;RUsK~o_lAw<|{$e@=I(h%?wXuZFY!H6YfAVfHJ z8EeiAgl}V=ix6@VB1~*DJs083Mff(>MF^n?A;PXp2B|~UyCQ@7A-qC}u%;Mm{#S^|#`+yXc!v<-Y$JnOA$&%N zuztv3tP>^?A{_N(klKW4ga~t;3~Gijj}T!Ik%3+zEFwgxVaQ-E5LOW)oE3~U?dgmjb$bpshpdqO5kgbDzj6V%wc{(|KL6Bz&u)dkJ)o`HE?Ye7Kv zSZ2lN*&H4O-q@-#Yp}l;QUHLV@Sqt60GQWx9Ry&X1;DzRg8&?A0QkRC z4NeqbW@tCap5yY%iA?@@5d@+G;qE|$VE`q5u!UXyzg%h}1?ipGJ765#j&a+>GXt zgBw}>7ZLi4NWkcj>G7ygJSqXBOr~d{LRqK;Ob=)WhhNvF@c3{V0AO8>LI74D02mq+ zn&CAA^SbhcfKE$;Xdq8)9l}qiC{lL8OMqbme1;5#Y}n0!nIS)+x#Je`)!#JM`yj_C z!W0?k1PpU-XVHye-hgm7Afj;VjK<8HiHgIs!uSK<4CM-aLzM!|4801?P?7*ML#IMB zk43%uY}Uc9|L-_Z6ah9vv_dwVp}@Q@Rv`d~HvrZpDg@wR0KgEY&7BSE3LA8r0hvNKsr+pi7V! z_#aPS9MB%|HFD;W6jYo@(N2`rT+Qy^J#^a%lM;9Mg sZ-x%uBdjf}ptxO0bN9|&s=M~?QrV@YuCJ`7tEQ)>BQLi@LuTLq15xPtvF>9^8{{JI5(BFT{ zIGJqD`oP4<@XcY2OeRy2zpo72|!<3s+@3u5Z10wF$fShkRtPb8izh zzbG;;=UV2Tvc?0?az3Zql`;7z#~=IFy1KD<=ud;M7cWx$Zg=`(|MGo~Sw9MSLBWYt z|Mj1^$g-@jw>3|(ZTE+N%w3t>^lp_~Saj6o>ch32{yyK-9_TCf{-JZRk)3j2Lj6SJ zqmB;t3&T8%x_wjZ?&PXMOTu<7dluR5KXsq!j1S(iZQ9qM*b>USbYy*%UAk}QU+LMU z+(<{-)EgE%mZt2M)jtX-@5*oAcBndO!|eJC+4mMij5=LHW!5<;f7tgNhh9eQ!itzZjmP^he_L64>whc850tN67qqedh3~nC_P^w29M9Si$lMnWURkbwm{GO7 z=<&%A+e6`Pp$&^^#Xmi7sAgs4x*pz~Ik?Eaev@{dw z`dYCwwB3E#k@~NnPA{6;5RQ70smgMg6=xQ+}#7Idt~FYm73C zY8sy;qIYLJR!*2x`02>)%#wsdg&n){R&^+&N*32#`0|nMc|W)I^3Ai@ml>U(p300( zx^?Twxz_dbRymz7eX`oH>s3+WnrVN$dRZ6U=)G0#(Kv+m?|8Aj>C&SYaRb|yR!%mt^5pBer6?xmqo{p6&ZLr%hb@pj3MUp(%J z*UN3);_CA7$jmFMd+*MTNqJ*~%hZvIBhMau_g1V|78S5};7t%khW@LL0(uNDhRJpFR4yqPo z0il3W7Esa_5w<6$9|$>TYA93a$pjxOAG@&^%%9&F>fK>fXvQOrG@r%=v~+@jqj&eW zY{|CZ(OW>cf$?)FW8{h&xDGL-!_9shA_Vz;c}z`Lc*i>eZPA1*zfv^&p#tFA~BeAPh2ikdeatvhHEtsj@WzudOgZ;{n|Yj-fY-JKBC( zz#~ssp_s+RtP-}EF!!?me!G?s9=QYII)$%OJP`gfa_vJUQ?QCh=0FI?;Zlh1`}tkp z;VxgzBWr-GXk4YMrH71%U5nNI^{foBGQnHln;Uz<^7EECogAs1_%9w!fcb|Re3+49 zFtpw_er?YAC?0tLVG!d%EPcV}zCA^;-?N)|WCnzE8mH4zm~+x!xPCZoNi2`7fRIYD zsgy*h$~@%}q&%5yf@mNF8Uz}_5f3^%^HRR_+r=Y$fQu<*F(m-O$>IC_Yr6(Ac%%eE z9>RG@is6Xqru=f zKa}{y5`t7J&uRQzm*~;_*lN3VaH#KV-LnXx;P$L znRMJuc<0n>jjM^lO}fU_7ZDoX+hKa1N0zWff-*r0Q|$80f*QXN0#5lf~(9tEW{XDV-!d{BqOG$O`pzY(gy)qp~c;pC#E(Uio(l;2h+i!Qq=8p1c zG7!#E>{&``o6ftdCVh9hsNh5IDcGwlE!{g4y1 zcLP99D4_WQS`CuI2{kldL#rVaoKVT|m5dr%El0%AtbwrtmE?pj#-xj}fbZgj9<1uY z8mLy_QJTM16gCDGC4i`&0DyWDKvYctKs5;L?bj3urCbM$}koo4+-d z0HU@602>fM)KmaKQwbnyDFC3Q1Q0b80MJkZh}sDNXeR+g%>)1vNdQqR0eIh_yfE0g zY$}N&r_Y&+ZB8Zw2_?f?{e<8a|9NmXYAWj}HQ|G|-CTjk@)@Esh8&!^$?!R_4mrK3)Np!GY655#8iqlk z$*`!*0Dv+RKvZM^K#>U`Dlq_{!~_r(7ywXU0*J~BfMu??S+G^~D$EH!dOk)_rW`5w z$!*9BZU86rVND;lg)74e!&oznZ9zCW;RLHW!P>$BK+ws4S|NwsK*-6kDBu7<%18#a z>J7tH@}{i1rQQ*wyiHkCPM5)SdR#iK0aXTlC(DYu4)a;BLz$Z*2P3gu(6AaK-TZo_ zu1D5TvYgPwm^CrBpiZ2SipgUEZHyBJv1$-o!PmmSWIxd+zG}9K%v@Li9PAJ8yQfv;!NPDsUYH@(>V)tTAFSgOe zeh6!Zu#GPEC9I}|wSm~fIwWMGv4W66G6^6WDgdAb5kNFj0Kk?65DgRnP@)77jS~P6 zL;`3H6AXg_kYUj%0RTZDfM}2aXsnR`^eWe=hT()M>M1rb%n98Tc`U(RXbY7*mhf#P zS*)sn*( I#r8M$eDwQ40C~8c5Smhy0T}M;OSmFN8@;Kb(MNY*>P_{azmRXHh0u}kRGE>1O# z4iCl&KfGp}dVACSNYh3iIp>V;^rpIKW^P>J@vNc0E50fd-#N}-W<6K7jiOW?9Y>NM zE`Dv5|FhPEyD~2X*6a=4bp4|Ct@X7(rUc21=ii=dkxLAH_9tIA7|O3VpEwP)J8X z$brL@?8=~MbFd`f{A8U0ln>wjtfV>?~Ir4+p7D;tPVfv z`Hdi^{N2PJjrK^`DC=$=J{X;R>~dG0c4mKLMtFbJNI_%MPmO}Ua{ErLce~H9*c3fh z+wjVh*B^;mD;M@KS~+!j{>v}aFFSuIdet23l%l)7{0Da#A3y0b7E6@*#g}dcWOe#I zdz^Ep01&e6wu~Ip+E3v9AFV&sBr^6U2^gNP7?mf>3m}v}%J~=@a`5?f(b%aF+n`mz z@Pc$HP?iE;f@G0=Bv|@6xuX32z`X*7Hxww8is^)cr4S)H^}feb#qE)LDZ>ZSQkj$_ z2q%Jz=rxOeD6dPXxhi2uAjaIZC#}yoz{D_7b%@uWr5^MGY4nlRK8*D4y{SCb- z$^ob5ap&Pkk5d}4Mna<)Rt%d)Mt|dUgpd(%dvQA}{^+W5bt>=N^wF%tq5}?D&^MSH zJjqurR!{OZund!Zg+>wb)t-CUb~U9Xmw{73{Gf@SaZ1nC^O5LiWV33CTxf=46$4%| z5Tb6-UcjtWjw&9~yZyf+sLPl^W|;oB2RmU}X23QBK01#Mz^TS}2I(twwMUxMwVy$K z94k(MROp6)@Wl!t^}@5KRp~^@moIe}yB2`NX&xPLFEm_@GqS;{SXL~DM#j0uV1$Sj zEt*HWmtK0w>&8Ieh8BtS@_0_-APVVWPA>Y1>qi~2;C>2t1lmuC;7TJBr=$WYfo6e- zlzP#eLadO}=6QlV0%e86P{pM{jxtB?FuTe25tTh=%Dd_s%&ri)6#_XrKhRKS^UF2& zz%| rx^$yU1zmd3Wuj?a%6J+a?&UVlD{LVSQ@8{;{WM-b8 zK~Wjoa(r&rZYTLmX~@^R+f#an{GO*N%6H*UW`>u2jbv^Ep z^xt|Mur)okR7>ar?a&cRXHryAUv6RP=VPVuH%=Ai_FulUb~5kD0qaKNFE;3S{%~{1 zJ5qkmzc;tUvj1N2MA`B5qrt2XjdN1$vy(Q+=ePDbGrX2idbWRAw(s!N2%V}t0hyjnJ^D*Yyhlw>x~^1K*8c6{j#>E)F#8AKxrb5c$z21+JggT_&t?awPO zJ8S!Nh=%rhq@Qk|S77fMufY)xMU(bgMjI^#Xm74>U6&#m_|73Iku@rfP7EM_8eUZq ze7kajK{KNM`X-agxPQ|dM8&A0;V>YijUqaz26Uu}fDF>#X?=VB zLTdvVNn<+x&($ajNRn!SAXEcET7?C2kcRz969F5fyIW+DsVe1NT86O{^M{TuK5<5} zYZzpSTm-mu5U)S`EP#nagcgV_HYf}lcmm(ZI{y~|QZiTI3Dw{^Nedhy{k5^g$81vl zKr+lonHX4y#U`^U5$plZWM_dd6nR`bovFl}X>%7fcAOj-N(f9l5_u6Ec{F;l7^YF- n{QEJ>W3*w)>nZle3C1$uF7@}d5uOp&-443f)U}6@jG=x5eC=Pn literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Deposit.cpp.FB5FB5745D0FB700.idx b/.cache/clangd/index/Deposit.cpp.FB5FB5745D0FB700.idx new file mode 100644 index 0000000000000000000000000000000000000000..aaee1bee22d82909af52fef84e461fdb88385171 GIT binary patch literal 1304 zcmWIYbaNA6Wngel@vO*AElFfyU|JL4%jpA>zwa57KaP|_MLdHMq<N^YP!}4kCdF$3II=LFRX1}Tbe0lHd&*Gb#uPn%NDe#kj zTEN^lJ?x;0e6Pg(*fY=GuRotLaoOk3Prqap&OD=k>GYGwSO472nYparUt@znt8Qc0 zHG78`tKYmSAKr%D+OmL2RZ6wWa{KlsHs9-9d~98*;+Y&?!c{d3uQ0pM-?;k4^5A3p z7u-yd5?!Bi@JIMc$0#|I%>tMeAPJGe_RcS$eo@mV@`Kzqaictu?oq7l&?q?)LHJ zE2GJ*9J375b8qmydRTLJ%Rg%+Da&su`f@h~qOZM=IBzfaz47CWyZilf3KTb)ZoD-2 zYkB#>FlWcL7Cj#eodY*MtUlJ(&+(g6V&YQ;hT_WHq+P(YXs_&Z*W<2lf*6yMGJ`q` zCyRiZ9G9FR12AcV!1o=eGt*amS}4Gz3Y6v*M z25-0gIK%G@njtXn0#$>;9HtuP8=x>KtYN~yaL!2t1~)@-QF5_3kY-lT)%qp)u>7$X zqZ)%6NCpCub5nAZfJ{jR8Fp?S4n7HSegR5jieSUNJUV08e@M AH2?qr literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Deposit.hpp.06E258CEC5CD1C13.idx b/.cache/clangd/index/Deposit.hpp.06E258CEC5CD1C13.idx new file mode 100644 index 0000000000000000000000000000000000000000..eeb3a7f43ae64f481839f8362019e28d2cc9a82c GIT binary patch literal 1050 zcmWIYbaNA8VPJ4h@vO*AElC728AO1%xTGla5+egcHY)=|#hkTM4)$F!;AyK~>YvzI zT|8g7W1_&L4H=T1%3i|Lt1=%?SYmv8`|-C+F0U&~kbH2(?BoC6#Yx*W9{S31NLTc8 z26ZR230zP$I5YR@Wahk-xk?dVWHdt;am;9Y@Ic`qW3_MJo$a9$PSo@VN4T_@smhmo zMVf8wQd9U9A^C3Vw>ygcQe0zJdr^#2?YpyTut+QMI+I_3Txj;kKohNR8 zN^fp{v3{An%wGwC6JGv-&O4vQ-;eG4zu~{O)F#P8Cu&_!oEBfP{nEOL?FnYB+oNWA zTdye0cq(klO?-D-`z+$lT_yE#$Ypl$u8AJvsOtuR`**?5!kZ%PPwv2 zLc+VF*KVd)E|hy1BQ-~3>xZZB{wZI{asOboWM#Wv$XYw47o|EjY)Ra^JedL?n@sRO z_4BjynT_9_D#Ps;Ol(!k7oC58*4@0?)6tu@Y!I0}PebZefYGXH)l>Ey=DfQ6z~tOH z_Pq7EFFR~4R~ub?ym(UMTefbk^uW`9x83`%ethemdV}7BF&BDvOwir-zca~t&Qbr9 z(_b+cSLP<&2F9?xvd>+QyS@oxOzfNtd@P(S0z7hDa)JyTKsg{d@PIp>7nma0nb-Qa}Gt*amS}4H84b;yo%B#Sm!>c2~Ai=-@N<=dCviome zf3{hGi61B}Bq}7%W6W#J50VBZDTYgrE%Suh1WyVu2>_+VdBr7ptXQoCLDEb>>DZzs znez=N&j>Ja0i`*3IYfC>Syg#K(!fN?uu$}rGjp)xH323;ptKCHj3kdEt0P!9GfK6%UHu zU{2S)xv2tuOgua~Y&tx!P~hP)W;5o2c^W1Pv=~otcr(-KQQtA<1v;hS&O+`RqmSKwtedRx^Fjaq`hPE~ZggH#)!5@B%(nGM0H^wm z+<-7S7pTAGbPUneD>a8jC*OIm6kzt7c*K z+M2rNm_rBN8?T+A(f`iseM!+2=NPw=@HN?267`<4#Vom(^6=lsn`dloEcKpO*St|$ zCtNmfZ=Fu}k9lmmha zyC=8)-42?@#=ykPz$VHr$_pkKBpDchfy>CoYW=z5(*tXjIeZKpK>ZRT5|Us7rhkR? z>uqJRZ9n)JSb@^wtm52Y0w!IQnpWHev}WSA*U{ELTm=}p*w{GOB*0b!37F%6!XTHy z93wN)S|UicAeNDbO@d8=59S1zG*C6jp>@sX9n+Z$Ucsb+!XW3tRKZ*Z6b3m9CR~)7 glL)fDxG1?;9K>J;5n#Z?wqW1>_}4sZTNv3H099(^LjV8( literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Engine.cpp.E0EDBA5C39F74A71.idx b/.cache/clangd/index/Engine.cpp.E0EDBA5C39F74A71.idx new file mode 100644 index 0000000000000000000000000000000000000000..60f41b558cdfee4b93e1ee578c8eac7e18e95d68 GIT binary patch literal 2044 zcmYk52~ZPP9L6^Z5FkrPAe)3_V}eN_*#(ji6lk#m9>XCbAW&LCkwYQ@R3evXRUE68 z0$#LL6t8M)17lIErKGjs0al{GaEe+`YN_?&5(TsyJDbhUWas<#_s@Ipd;j;MLl-X| zqXNK!)X;*gG+nY4001oPm#f>LIYRqFG72qFf%upZB5!d|H3VMj0>UwntjBnN`OHZuqsqYv*dVIgnq3*Cf9np@D#;fRA z$Ms7JVvk&RjbJ!ls0|+5_szy;!`VPGH`vqg*tp(rO~V0}$B6OTk^Jh%nYXgbZQ%vO zU(ai<4*P?W==9ym{ILi)>|*LHT8mZoO%`8MwetAyHiZW3i6V!y-3wZQnY`LYdba1z zFB*?k*gd$!BB^P*w(fwgWnCHeW0y8A@!b>IrgJE?uluT{w(R3`%`Xi3={Jg0F3D*p zn>1%iIL8i-PK||~hqTu{Ygh#_+itQ+w-dJZB*5X{Pj89wt3_VV?Rh>o@7&mQv4>S` zz{?^kUGytE7r4?IdgIHASF4tmx4+XYy%1HFR9i0H9NpNNu{ZBlVC>{)q|x|_^o_Ba z&X1la#ujv)Zn(Rri+%5H*&Y4r@G0o3`jR$iYkcCgcsVs^s8(<~d#0$D`%#18VO9LC z;{NJ~y5H*9Er%xBW)B$Cmw5*_wO6luV>Qv#r!RT%?P$)u@X5AO;ep}CLMVJR=|o{~ zNO@{d=I3SQJ`Lf23pFjqXFzUY*6Moflv*bs#-|<6KsMQh3!o4enkD0t`L+NT0A^u0 zzUx~5KB`v2AkV?DP#|=b38(^^3G*;4T>Rs>ri|3aAj25;75K_!Vyf8Lghd!;uIW8} z=1w(+1sIMJM0v^FsqS187Gn6rEn8@Y{#D%!G9SZ%fQ?26&+k-Sq?n;y?F z$g?q=B1lom@MSxU^L4<%NZXG z4}?{l(%{v4UTgW`b-NG}h_cCSd-JZyom`^b{QW5~DyEB>_@7}^PM2Fa1zllw=>gtO zluviBAj4=TBa@HM3!_?w*6d>J78$bA7-iUWYu(m*;6>}|2jbFJFcqvaGkoFLzH`Z3I-Z#K{#4?L@dQ{AOop9_BGcK# zix!plZ5Oyzbkaan#1{$ig@LF9k$4eK%8^>^9fBYh4CSB}Oo=Ehn2MvaU}{ITGcl$g z>?gv5fM}2)$d%|ov}?2!UqAj8%fTb_9ElvJON8g>xOy38-sC>O4zGkG5#h7ID8fN3 zoRXt7JG_h7xIR`s<^#xkfBW!pv74tX`yCEgF+a%Pc*Z+?PE&vKDKT}#VCuEw; z^i(Ll)jl$@MC#`5;iZxzfVa5}@Fb*+kV-=O5K=-&IU&6Wi4amsNEIR72eExUNZlp^t#WEV&?Z4_xlUQstUHMGWNq6i8mT?kal zOi^c08btfBFT*bOp?i33rDlk9zZi)a_9d2`_mxNMz@GQn|99T)Jin8bk(QPuLMWvq zqo&eaRZLr?p&xsdt=vPOHjGeBw=;7{_8>+vJXUimbHQVBUS%`q*!1+NL{Euf{pCM{ zE~hi=kzrG7=krlZTyfs%?40)22FaTt-Q`y~nuAR}qkT`T<4k+#*rC~_Uyi=i;~TZ5 z_pGx;hjYCtiU`}KraO}jsr&kix91o|NF3F)Wv0cNShfFMg+W|!q23|AlH0aBkuyMjyvs}37HSD=L7ZV%Yel5A| z`#|8ckNURMfI3{8^!~TKw$fP5ASBL-9{urho&;i%4;_>)qQ`m(lB|3=Hu-qwB3luz zz#70IY=|82E!{{b*yY7oufn|WB*eE?&nYuJ>#v=DCe9LS(CBVj^UZWkeVi_r<{VK=C!yLs;rgK`@4z9ELE zNG2%W^+}T5G2AF2gkw2BI5Z(zsn#FLCX8H0G5<49aQD ztA-fa%oWA_xOSV#euQrnd|6o>Gzj^xwaV2NlipJ6L}$R6pT7PIrQDB0eya@0*V?}{ CGAPIZ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Flag.cpp.1A218F3467AD96F2.idx b/.cache/clangd/index/Flag.cpp.1A218F3467AD96F2.idx new file mode 100644 index 0000000000000000000000000000000000000000..98f24bca5a0f040facfb3c444adfcaa0c4c642ce GIT binary patch literal 1870 zcmZ8g2~ZPP7+yl|tgsw`5JON*Az`_NAPrQ7ni`OzL9rGEHH5HIH*3W(oL@WX;H|{d{b?-oPW2z_SJB0t>CM%{?z?B&S(0bp1-$qQ`yer zqNdiC=(~|~kAE|Arad94@P}?cZ&mZthfR9-n-%=+g*oQryXe{O(n;w5W zC5?G*DeA833Di`aTGcWYcFw^d%3Xa^D~~sfT@t$@D5ONRx<*+V(%tf5Uj5>oftz}H z>U`(^QT2{Ia$Rw#?#+8%ieMn@W>=Im_uYjmRnDaB8L)>hJ*f zD`j6Wv%)!xWG60(&)-OvIlOjFIbpe`vvVclH~Da(e;Zq>+8lQOnZ!6LC-H9lF>1=K zr6U2)*WOz?XK9?OoteHX!M|^DW~t&tLf)(l} zJ~rYtcJsAGxmRBC`r+iF+j{n1QK?;V&pO*Zw(v#Tw6F_ak*^Lm7LH`NSIT~D>OEb( z*qyP~>mapjbaZao7v3iaG&^+t-j9pQvg9vR?OnI`Z*iJ1T#)5i(*F7NR_B7{nd>JS z|9-VGb=83@jkMlYs}lRTQoXXG!tzTEHu?L0(_P2$}wx72DFGNG8W1y@>zs81<R6gMR7KT z&43D^I2Yw&P%ad=B3sd+wkR&32pF(WC@vz4=ujFIcOkpbVT(~*Ocv8&%TQcGme8R} z&<31?m;qQKFH^#iTgI)^193$n7Z?|21J=YyKx-Hpz{Ds(7*+~kVgw)@#8^@nqr?t^ z*jx&i1y2W8U`eeT9>TB>0RC?ypy&W5It{IT8fvUH z7O7YCcsR|G<_ewvEMq*;Wg1qKKsWg`A%uaRJc$iVY!OuHIePT#=KuMQ6hv;Ng&IwO zGmCj*ArwrbRBr$?iNtFZ@lM3Xj`)0hL~w&3!cSX$e8H%0#Q5?CroK>QhbUsg)z*OI l&9Pz{7_y9JbB#^RO!y{j6HAW3)ZE&9p84EaC}zQ!^Dm&^&F%mI literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Flag.hpp.F8A246B19154E01E.idx b/.cache/clangd/index/Flag.hpp.F8A246B19154E01E.idx new file mode 100644 index 0000000000000000000000000000000000000000..a58ebff5e842c0ff4b621484d6f8e8136d52785e GIT binary patch literal 1524 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 CSz3Vr literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Game.hpp.A18C93DE125B3555.idx b/.cache/clangd/index/Game.hpp.A18C93DE125B3555.idx new file mode 100644 index 0000000000000000000000000000000000000000..f4cceb48a80f36c9989856183931bb06605c174e GIT binary patch literal 3378 zcmYk73s{ZW8pqdK)wl1vZ}0A3mnkVqwwxT@(71$hPf3GgsE~@3Lea{r&&%f30t=cl`_Z`IN2XbYCmL=@FDt%lemki3qHnC|3srKkIQ*^_M@dJy$SdZ)s=DEP+i(#x zCN}ufuK2R4&+@$#T_uw57cSa4+;OR@<-a8nOzN$iY@3KA9~ZyeQOyUwYaZ`CEoRT| zmaWgdof?`0Yi~ZuI$RnzZ&hkHd#lUd(am6a;E}gKr5c~zHT|ORpk*e`&Tbcmmu>cK zXxlS6iy~*7d!4srS@gX(VcQQJ4KzKuRV&=NGm2U8IJSe7 z8|19?oA>|xS+btZqH&wsO@J~+P3zU+$; zmTH^$=ZT$#PbDu4=FaTSjyjQhVCK~>i^W$s6UL+oKNwYg1-xikBwe+w|RaDei zVScP}&4~HMY16J;J{Qsv|AX3#aUW8;8ODgY`)z2AKlg=DnySTgj)QWQo#&~+z^|R&v344<+`qWnZr?;SW z&dcvT$9#JDN~L4e#>4h&t0!K2G~(5m%x^cjg}cl=F{Cy}*fuuftJ0v?M^VE6VwZN( z#{DdH@2uflejqGymC_cbKU_VwsmD%8$bWs`)N$YYw67scEWmJy7+oUfV2Jzb#OvQ; zPm5V%0)_{~=m9YULw>=n^{0l!*s;VM3>v~{hztzL7VjLLf`f+&h)9AscgCI756B83 zdYdq3^!~YWdL>#nk|l%s6R=2wrI4_!U2Ruv^K6uW7)bbKbEb@`7>V>>XoA4gqNnLj z-dL8XAR(0uN+oWPV1K3Iq2}F$Kmid#f;nT(4kScodko9?kUvX~hRP5(o*8eVAE4f( z_vFpE?vFt%v4jck5TiRp4hFl3^W{jC^;D|J;cdP%Hnth2SW{^-sghfON2@aY)BYPclslg5mdDtj# zV3Serm+vSjIme_(J2ixWhEOPM+qr8pfH>(+BNRQb^ z=p)e&u!0GJ3T5`b)@$ZO1oeyYVhPBZg^@jtl}E3$#0uneY?qD)gJFM!#n;oaPTye3 zCt&CxwjIP34F202Q*E7h)X5M7o0M*#OgAvs-6kwz>0Q|WSqj5e!vWT7~=fv8nW6-sME?Q#l$!?}8uWC)W>9zt8QB`SE;Js~ow| zRtXb?iS+}>9p5Tc!pe>|mM9^99kZ^#QKs+AkG6m5(k@31G<+;GR-zxEdhA{G#9xNh zw+o0EUeJQE_{T*J$ZI&xWpGyM+@5F!K8 zO1V%$s0_F%xMfIv9f=I86OK zf58v@r2@}g5P-W>;CTx|b&06yW47@bx@}gBRsRtKhUv-c@C%zPrG17qSO|>=Fs89Q zgdr9nOa&gkAiz#gfrl;#09`8Zumu6yiC!2TY2mSy3y=k{zyT?p2IpZzm=_RC)Bbs{ z0KN1vk6cKD1ET_uS`hsIMlIbR9^R#1TlDhL2ndYC$z!g~Qo>0=#5 z;fw*GG)4zb2mx?Xw~m?+0>Grp)PWKf3EM-jl#Y=QBBi~J3$Y{f0e1%<)c^nh literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/JS.cpp.9CE77F58AC81AB54.idx b/.cache/clangd/index/JS.cpp.9CE77F58AC81AB54.idx new file mode 100644 index 0000000000000000000000000000000000000000..b2870a8e542c274cbda8c899dbaa02d02c4d0c88 GIT binary patch literal 1632 zcmYk54K!3~7{}i`V=iN6m?>loGrlVsq3Ies45cteAsD)d0o^#*(-v9f5-sgFK@3~t9zP^z# z06qzVOo=FUrw#zX2z^pgrMs>0089}9$gF4&mjsPEQ|E`@tojVqxcGOeL|f_uMD_8_ z8}j`h&o@iWm%G^R6Y&T~KD^@bre}MVIRZ%(^*kC9OfSWgCGO(%Qzvm-;dQCv<19`mlE2<^mrp(E^6O3UjJtK6c6qUNjprs4qO zF9{P>2E*@h4qh#{CBeLk#Kl3Ev4b92P}EQ7pTYro);+rUvy!sUZB=i$4!fSq91$^Ur3i?WlO?H`p&%H+`Aj>Rh>Z zJSWb3OL@u?xvKD#(2m{R#&dPwWaaIYcU;`St)5=Uw$?8#p&e|uAv&BO+#`i9$U@qB z&$E9#To`mx9crXt(X!T*TEAL0S8TnG=`;36qlp8)hSfIVuCi4b4POZ>$Sw}9eE<1? zGSzX3%0?;oKka_~QFL)$^`YWC`-+6e9_kk(@rvZ4aYn2ddi!Q-WOp=^w(nb~{(FM{ zfgX2#cH3)Zv@!GS(%3bSr+- z9=o70>y>t#S-)=^JYJR{ocH=`e9(T27S6|Ca&gziGj@q|LR;{0!WB89RhjC8{aEyC> zV$-(Km$LNS&=sO%k=fn68H3!tiWqQZ9^ABQq=k^n+lX1CGc8#%=j&=5qi76VyIU72 ze^Sdn8d|Tst>UC7y9IPi4+UK+X)3jeT<}+}d-{4`K|yM8H`MVGr%na`^nrJKlrhZ<~QTO;j+{*T(xS?@2Jmpf;WfhW2R!>}R3hS`RIPS%CB@icwX zg*s&NI2m}OhV_K?B%}l)lt3gvHzew4EfJG=&#<}KQVLj$T7-H+L!=clY=uk!9RMe` zD_Uk6XM5Mg^!;iw_y)C@!DdUf6IKN+`dOgzmSoTb$94u>KcXKMsezyxNDr6-fJ0sT zFJF%5z%viYzzdBxCK%HYAA%3srhz`>!a);wwf5x8CoT?s?Sll93=s~@LHnSRzV;y% zC8osxk11rP1v<&9<&PsTIx&u@tbvHh7(G@%V z3%W0aWgeXyHPRl5Wx!aXu^NzAELIjOYw%$*b_Slz^#gvoSO)Y9y(Mgu%oPHmE|vgD zMSFH?t~Ny)pJJm~Ae!mxaKjb=&rM6pGwL}MRf9v^K)fVjk2ShyYq@-h$+D$%8*4KL alVQ)WVAxqYnzI~Ot5_?IjZCd*EB*!90DH^; literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/JS.hpp.0CEE092BFADF37BC.idx b/.cache/clangd/index/JS.hpp.0CEE092BFADF37BC.idx new file mode 100644 index 0000000000000000000000000000000000000000..a57e771573db7905787dbe74c8d66d11e7322ddc GIT binary patch literal 2090 zcmZ9M3p`YL6vzK}hVioRG zXN8zNE2>X5(Zi!CtCnqhNYs9kwDn>4&W!)IpS_>Yod2D3e&@_N=YH=5`TO}QEA}SmpdxUweUsT(S{i z)7HFbUHd7DjXZlng*sRv`x5@t$kwValAM$Ay3pJ5k-+9wA)EXmp{py&FWJ5}IOlY=k(=b1 zxPiKSlrb17?bysw7e+l#yL#Dpr{cKZ zdW0W(eh^8HSh`tc)s>$0yF4X(=2FAni`!k+;`lTVukU$Y^@O^n?_E5vJ9BgL!E^RF zYwEawl;O5*n?qWCra=MHa*X#2k6%)mAxyblA^l#ne@_2cVR6!%(zucLA%~53jxTi) zHzwVEbM3*oVaIxlQ1a;cm)cRWe9&UIDc4#SDU+tR$QyWNw(-DBnFy#~$9hH;aO^i2t$b_}o?jR~^PFD6D8 zZ4thTsytYKHZ82>t3^ZA>fQ!0V6>h2BBj5a*-!f-bQ{?GN@t{)zK-#H+^uqEfJ5VS zHk!STS|dEMR!s(`L&u17!h4L_3_+n60uq2Dw#ZaqGgX~7aKXSEKt&{kxn zHXE&KPUY?BrMm}=SK2hpZ0v2oQ+}kLUq#voDXs& z=`&|KeDUKL&GMpjy6{RDpQly5$!a=lQqA-F%UYoGN%!XA&ldS!i}USH4p`?H&X{!H zFf$Ev7Omy@e+|zNYPGaEb&asS?YBi&uq95OLrcGY4w+FcOUzQI%k=EFhIxh8-dQ3W zT@}(EuxkdH)+m>X(uM2SlK{B%;0f*WH7Y=XyCuK_sez^n12AJlRjv(!s~WQPupk>A zPnR^G1@J0_QiW*D9)Nf!m+^ zl7Yei%*2SS5VV#piT%{!{38lnVFgEuBNbq}S{e$0>-MD+_i@QK9nu0~l3GNq7SWkK z;3PCnt*TP@m-|q_hcyZi)dEBdVEWo>iYlvLk{1fb-b%EA9h68BsuVE<7y#x>Yhq>G zfywwhSyQz(a3NZ?(YG;H7`ecdE#K)&vl7oC_gAeXl7(^|0B2}2P@tjwwts`ID!)Fn zO&d59`7C{wvBJpn%@p|udxI|+Om*Bt0gn)5Bb01JfA#qR zW|v-!AjOC}9CmA6T{M?6`UnMXa1tL?A7bTtI*64m(WaO5dQQjh7yACQQ7(l`Y?Mw_ zZZx;ON+8}nHmF8o5`COPD5ntZ*+bqe@wZG=NsiqhG9rB=4KY>_26q7YBHT*2U{OdF z5s)JV^^he5n`HekqB9 zwfwH^eiuKs;S7S}DOxEs*gC|FXiCl)R6}|Qw;UblhRhHHD}jLl$O$omk`Fi=DiPlA}d@`Hj8YC@vE2zk;H7 YA%I__V(;L{0S+(#0O#AS~;#rZKT9U{DWQzcCaY<2T5|Ca1#1(Uvo;k?dpdi2+sQu}_?!o3+ z0S$&5*f`z@2`sG<);ak2%tPMg+$M}0ggD(^Ip5e+aVh-e%GB-emc6*K;Dyf=uk3;~ z&ZaD1WzS^Ay3M}yq5rXhncSHVt~;vrC-z$JEUwH2S;SD3npP|hq`h0$NIjae;~66t pBNqpk1V{=Dic)hDL5$*}WUx9W#>W+FU2UtMZ(?L(V1lRtkpNFsMfv~$ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/JsonTool.hpp.B6F2E41B8374E784.idx b/.cache/clangd/index/JsonTool.hpp.B6F2E41B8374E784.idx new file mode 100644 index 0000000000000000000000000000000000000000..ef484ed4b41da18dea0ac99c4805a88bcd8350ac GIT binary patch literal 442 zcmWIYbaUIp$iU#7;#rZKT9U}Zz`!5^#Kk2=ndgA?M4(*7oT>eW+=mPVT0aL{t$6Wh z;RB%~jxtwHF5Kbe=|Ahzy{T$fy*}=ry=Bpg4i3qp^83|$)SvB5Q+m79p{t1J(Cefd z*~@|qC8aYq9aJ#&xjym7$+-cMdbU58h#fXx{QkP1osjmrb6wYewd`CL;kEFIn@nk& z5QES;!6bKuH(q{ok8D}|$hj!I=FF^+u%jG`#c2tzoqpW6(Cpfu)2k)O9ekbN`IN;; zWu*^C9a_OnUpI>Bo1yM-N!_SJg1f6W!E9xXbv{PD>(JJzUe-ke!zqP6 zx_XH<%zEq8Y<1tD4cayy{1;lEe$u_L>qk@e)T*P?UT>bCxQ?yI`&elOkD$)u6Fb@) zPI^D^`u*_s_7tJJYx9oy&Rl%yWY=qkI1{$#TQ!w`?P5$kbLf-ngGnM!HuOAbaueU= zTCvU}cz4>@>jK%yM;<6xpZJv&yEe{f@$=VQxyEv*ZkEhB-&V`DSjtTAYgMz|ZO_G( zm)zc#m3YVLAGJ)HesbOIUdEh&?@FbLRV&_VO^qv8VQ9VLXw4@?&d3mR zxp|fU-Tfo)rCyo4L_6;;RC5>4JW}^}OTI+-X}OWWg_P69co}3F7$jvyWF^1^PzC~uQqzjXflQb>MlN*uoJ5ey;-chYcMwAYL_mNH zjKRPlg`28fLSuX)b9aGnOtd+9*43s_dOuku6<1Bu*{4jS*$r( zAM`oW%@-X|`ON%e)r9m-S}p5TOiH&OVwh64*RJdg_x8`Hm)QI`7Ja+FW?oebm($eR z&3r{p69bsVw3QpYQrV6dbFzr(Yo*pd5?H#b=v&Ug4Iz)4Uf)>wP}5-Tbj#Q%tr`~1 zHL@aMiHXfi?`E_-bB$Vm)oPvT>(b`Dg5%q6rKo3ay^&R8zR+ym`C|`j3ZBpQL8MoAA&qOL!gE^LT?sjniosC)U=ahGx!XoOgYZ!KyD8KlsLn z%~yT3Y4-yq=4YEz1@7AQ#y`*fd{6F#dVh=XKd${#+cxiD*|%g?yOo2{ts8c4e189J zcHHl;G9_bb_ns;HCW_l9%-{I_&ED^sId;x@iYICgMYG7SeZTw3Y1S&K8i~XM6d-!E68SJ=OE#=Px?FLo(@}(YwsR>a9F;uZ6z%zbdxz<8=l`y6vf(+}dtHe8PRE-qlm9R~dG~u4SLPUW++NcD;8x$*up3UwjxPznRkF$+W|Iq^-HFMPQ~K za{0H@`q&hez5{)KVVi9LeDAmLF&Mok6nzCe0!vt-_)L z*DE8f&7zIOGh#7<^Q6E*1akr~baE0wfm~daTznnGPy-PVpaf$uFvua8vIwRsf+>Yy zN+Ot=2&OWEsfb{zBbZtUrV5z?497G{E)TC#HT3W`d~DynMg8j?~n3>t7{ u4Dtx30)i=nU?%6LHFlWxcdf;tprTl!4!lJ0vrG*BCtNtp~#yD7} z=xuyg^)0`&TiHaA)lcEN=z_%`WVcPzkJ{H3`SWn$rsU!UYZ-Q4_>?SM^l$mkL!V}> zl`AzkS+OH{YFf7NoZc^Cq7oYuZCCNT@#Jq~D6Y&+nhSK<)40IBPa`Xx1ejQW?gs%@ zUS3`)1`Y_PA?d;*#R!v5F(zgv239T(E+H@hlUD9{aeoh|#(n`Nc9?Df9RXLEbdumQ z?*Oy51ME!9j0~*oT=bkMm2~} z5ME`J1bY$YIG8R*DX`aI!mERJ3pojiu4dw4WtU@Dfe8a0fMgTQ|3D)_{)Q=n(M()m z|Jpv~h?sGvi36w?7=SQInBReVL4Jk_1O1$ns04KL=8BIJ3(OX&F~Xt<<{}1|(&D1z aVsVh~*kE2{U}F6yqVT=SXIC~O8v_73q{LPL literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/MeasureTool.hpp.B7540F2C43EEB974.idx b/.cache/clangd/index/MeasureTool.hpp.B7540F2C43EEB974.idx new file mode 100644 index 0000000000000000000000000000000000000000..a828e6cfea5f62d06aa073c3e6c3aa3b2cfe366c GIT binary patch literal 504 zcmWIYbaVT_$iU#7;#rZKT9U}Zz`!5^#Kk2=nY)2>8&Ixd&eZdc+)WMwtPlQbR!<0+ zFzwB@=X|kTn(q@|w+QdrY?00Su>SlRr56ga@_W7?6izIN&v2f$_s(p#0~@bdFS1f~ z>rZ)lMo@oO1l#wNP1AYyE_HjI+W2O-N6X|g9rc?L`;L07S+Q3t>M?89mey;JJVH1Z z_djY8%~%@ZX}V(3`bIBltLBe3F3#;mbN;4mS(e2e5ZS-+mczMR=JN*nbANk3yWV^I zZF1l7E8o{Qy54iTm!cwK;fz{9}7%)rJjz%BtM7&w_2 z8CX~u*;pBhQqzhL0ac!gZMm^=;TKUR88$vaK1rBHAWwx)2gX~oD^0pWI&~2v7aJo7 zqXtkL7^v{cG+rq1z6{jMCB`KVQw`)Paw)-hFq%;c>;&7V91%0lG;w@bm|npiC-{?z zhmBo>-2|oz$n$0ohwL4*T2Gl zB<4E?U7qf!@Id$EE}l=#7O~vP67IWhM5&(kD4O=~``#PNd{3X+wT9Vt&byNPviEDP zio}jeFHex}&3W0p+O=a-2HUY+yN^Co?>KPoo@+~x&83yH7Flar67Rhhw3^qiK7XCw zMUTrTbtKm=JN-3fp5FENu*v<8Rea~WUod>yYI1vb~qCcjjPnEv#@ z)_an>K8GmW7x~8MwZ6bD=ee~1<@O_CwI{Yb6R*9N{(R5ZWp{m7`@TMCu+T1Y{j$Yh zKggU_Xs?X?UiFv%N$8%utfl=oY&ARk({Ae4gh}=7Nb}$oXJgj9biC_-_gOyWDp5NL z{rt+NzE$hGj(HCGjAE4U*9-7B-eFETs?x(yT$!6x z2TTbotNmV2`q0TFz@(wXpvEuEFQ%%`rq9X10h9xRHy7q5C2>g!3oxkzrMZN;q*c|~ z)cIi2Zp+_1f3=G{T8v2nD9ypgA*CwMD9_6v!N34aT@3U5kLgsEEIY)@Ag{=v#>UGg ztZFP`EX5$nz#ylf%&5v*l$uuj6{ryA3Pvfg6IiEh(cjZyX$iBPQ3z}`Oc+k{sIf7y z@xW~1QR86X;DI>_$OAeDrj$pGiJfX_(%{*LV4=&Ffgo1hhbt%LK^+C4OC)BAAJcTwn|8n$0_=GZ(yKC`!#q z1O;+&QF5^|h@k=^z<^mT>%+V36B%hAm{e65RAIsl49U4EIZ8mTsDcDDI|mDwh%h$~ aKaV&MACH)zEU$pHfQ*0?8!M*}lOzCn9)(u` literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Memory.hpp.BED4B2D1E1F9B0C2.idx b/.cache/clangd/index/Memory.hpp.BED4B2D1E1F9B0C2.idx new file mode 100644 index 0000000000000000000000000000000000000000..8a54af1aed052c0fdd32ccef30354e42863e4427 GIT binary patch literal 804 zcmWIYbaRtoW?*nm@vO*AElFfyU|4?=_@-j@%}w(*{aM*p`119qJymPOwnT-he=2|N5wyyzL?yDFSF>_H z=cB)&?WNi7uhy7n%}m-IdM(>rBB*=iEZy#H@Bg1H@GDQUDEPDNW%ui7%U7@53cIeE zzrJ`$jr$Y#0-N`*qmND5q+cZdG^V&RH)%dFd>xGL3YW#d(Gy_eVFPl3fJ2{6pOb+D z!eO1ZMSo9+r6oHP3o8SMB%7oVm|&1(U;su6BL}P7@;A?4?c$CWV`72nmuHmch3T)0 zzpyW;)GStji5n)Z&Zf=>lb+{)OsA@3*&$vAW>$!W9L6HXQXu1*SlEHaGZdw!74HQ~ z{kDk=ztmgK%E-mR#=#~9QH*dtqa@hbFz3Q(W-hRE>zd6wrZX43;^6?f4JOIMVa#qU z40A$*^xsY5UoN{c@^DDXNGib;!Tblb09h~0UyOnrApgKr!wh5O1p5PKFVGh`iGn~k o!z^KdX<#TWN-kCg`GynbB?bmAIFpGZ#4+Gzqw!oc91;#rZKT9OE4GKc_iaY<3;Ek*_gNp=Q?iaBei+|R#dAaMNe`8S-F zY)kekd^BLntz6*T^3Ig&o9V}_-%9@z-lW$5_Bj+`e#>;tM5UYM`+ncpx&C}hkkiTy zMf}sUL=1GfmH5*S|I$N|i_RjOyZ||mk%$)c1=Y8#q8&gEH5||E~ zCuDcWH&$PtA@f-)Z^2SQ@ogqCtc~8?md-h!>}0v{ zQf;}M$wH46tnCMj7C7B{`FXR7%-O{{H>c~kDmJI_^XX`dzT=u&xy6;!XXV~y)$WyR z6k40vAFD`Be-r!o;VOftALHlhPf2vdw-?=m!sYlydM@lJfF3!BFFLZ-K*_?*gso* zIk8*!%hyAD`fe+{npc=za_RW@weC6B_Ux@?+RJ-~{kOWYMRng3`D2@ZY`o|$HamLO zB#k4p{$$*KtNvx{9IoQZ+@x4wOdk#im$<_FzDa;dMVvueLPkPCN|0Ajkbwgz2L!iG z*SveJ^{`8vNfjt9EG{e|CBPxT36m~4_GIJBnuSlrm?VJG+~V9aQv4kJyfA5oqSUnF z4q!SGo@%Z7sZ*JQkw=u~6Zz=ZQZiuD@JOx?}IBQ4J+&kGagk=EkS;)n5q-(Q>{!PR>K6jsLEHZT{)yPWM^ znmFqU&`4xq*Zx~gvT75qf&ztKS{P;sOcyXvkUdtEnv)2M*5ab%;${#-0YpH66pX>Z zpa^F&OXr4{#)__MxXvXdDI+TD#7j-o4g( z*d@-y4U`rZ7nWcX;1J-1Nk=|1m*@Rw-_6d%%*epT!NtK3CKx!uW;3#}=6@9HHJX{a zn~#YFXgd!tj|iB6=`T6-;u1al0`ON^3WufT+1USSjjdjTd4qnWwDPPcu^5i#RT69>>H zphIAiJZu7-0(>xDFsJL@+*E-+pmVr+xrJfQfcX{Z9FRxhs^4FnAi>pp0jQcol0yk5 z9GbebLRWRd1E6X~4n{?AfB^}Z-++!sc0f^TPNFeTI@$AhV)QKSiHtB$7Q9maD*x#F taz>cyi zX{eiL#cEu|)!4?gV$ED;;T0OWz4c{o-l+#TeUHXy=q{5|VzK1dYHZ?oB-x*RX@J|z znujkLGX$NUR?kTf`*p&bJ>aLutx4TpAGfD_M_f7NFSW1Pe2R_G^u~``cXX3loqmQM z&~?;azw?6Wh4R?4KNIh*2)K}J#Tw$uJyra{;osL!W@kp9DJYTapB(>^U2E+}#~BY+ z8kKCg<>DIp_Kc!N<_EItQ_sFO%8U@QzNv6S z_v^Z*-hFv1qh99isVVsV&Dyc1dv?#G?$sv~zT|{T9*%!@MMg$Dm+kMK%ZfP_b~3d) zt&Y0R>O1%7U`ox*o^zK^Ke?S!V$^fFE(hybNK^=(m0DBw1UYvKOm+$ALS=+4FF7xJ=6MptM#Yj%& zuX9Y>n)$PLU4B`oq`&I*mawYDyQ&+1Jn)G*9KJMh@ioC|ZKs9!gLL9U{=~n_xVT9C zqw~wn*>T|&7agW_uPs@1NbP}8`v0kiU(9{7I$L9PmyLOszx#A2u>*z2=4?&0UGe*~ z?((nq1s|T6s9wD>wC%*CGWV!|aqCULR4u9ff0C#3L+}VJ2&mk2Ov0Hwuw#T8WSSna^l%s}aP zn>GFv&-a)s#-s?8X5nNJP*LDg5M-o0}@o$H=29 z#45xM(+qPWP&LSXFx5^6b}1D}wr^vUQDreW;RR#c;&HLN{ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Mineral.hpp.78DF4C4C25B7897A.idx b/.cache/clangd/index/Mineral.hpp.78DF4C4C25B7897A.idx new file mode 100644 index 0000000000000000000000000000000000000000..7186fb0fc6abc22b7cfdc9c594b28d5c948f299a GIT binary patch literal 894 zcmWIYbaN|XW?*nm@vO*AElFfyU|95&mIw(`_y}?TQr-&PT=`x^|I8LOGEs*6&PnP|LT~ zi_(~8cPu*4eV(swz4`VF1=fy7ri3cREG}gaYv)=l*BmwH8`H+uC!R&>GVu-`9WhZEwY==PXa1nlWwdl}+mFb@|yAo8Rx7J~!Q5tLE;X&?cd-rJ;A;mxrxR z-U0*}+E(``Pm(y!tasxdcr5 z(y`gkvti;650Sg?EciBM%1ONbr=sPX| literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Nuke.cpp.261B72C64A097650.idx b/.cache/clangd/index/Nuke.cpp.261B72C64A097650.idx new file mode 100644 index 0000000000000000000000000000000000000000..02b097bab10439a6705a7c49123e12380e8c3d6d GIT binary patch literal 1004 zcmWIYbaQ*c%)sEB;#rZKT9U}Zz`!5^#Kk2=nVL)t432CJ3>9;>hTP5*HWc`({kLms zMbDnRUri#KL5iHJLcD=ytoOpCt2bpoI(=$-z`uDnyJwjMTx6T@EzxFP@v|2dWhY#V z_7)0lJIULk5;9?ilXKGc+&62kN{A>1x|-}^YE*wIEL=W8>5^l|IhEJK5#e_h&DP?d z5Tbac?#PS{cb3nyZn(AlPFC2JNqgf=YGkuo7qAw^?(sUIf2-+;+C`R?d{!G~3;ql7 zy&_$(R_MM1x5UQS=tFPd~7X#;+Jpk-Yw1ZsithU zZ`kLjRohNXf6c%8=IzXB&zGCen6dd()`4>$tv4*)e7}MHzTD2U+BplB3a+_cQh$EQ zLoF@~=@XmuE(>G`SJkK3j?}hc`qkco!pgkZ~l}!C6as8uB5-dTC+(mK1t%p4wFIy ziG7OaKa~nEwJQ3qBQX1pn01A|s7&SDMW#L3drn;3x8>LVJDHzd&Oc&*d$jN9Eq3weMo*`JnM*6cFXFAz4AF^DmEnCNx>`D?eY_XQvBnW!%R z=tlFENop##pEIt^aZ}#pD)VmX{@+)3>xo*`%H3UjylT(vlZm>M<|i+AC}$|H%uR{~ zrkvEx?Y}Bobb|$$loc41ID|M96xDgvr5Pj`7#M-lT3@y$b!fK7iZRIprCHcmxD*w* z6!;i8fO0^P7U0}ozcBu+0Fw$(nwN`LL{X1bj~}EPm>L-vic-^x9|38YEsRoND>nU1 zIWM5HG81MxP#9!1Oc+M9@F=k`u&}^X0eMJ@c$7GJI0Rq@^CCW%`B literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Nuke.hpp.1C196CCEC502BF2A.idx b/.cache/clangd/index/Nuke.hpp.1C196CCEC502BF2A.idx new file mode 100644 index 0000000000000000000000000000000000000000..aa9d18e55abc7ce7785366f63d2431cc3779abef GIT binary patch literal 750 zcmWIYbaQ*g#K7R3;#rZKT9U}Zz`!5^#Kk2=nVyUc4DLX=iaBd1`uZO>;AyLVw|+y* zj)iUtg*P(`+?Y4soj7}!cZ5**&l|_~AJ1IwduO7S>9#+1b-CucYqlPqk`TW>S)C%`KduBBAj#qGX$UlkmeMin><4jwRuu zJriwnp5GE$$&_^c(76lzPdeO-42oDpg!e7yuyNYRz^c^KeUWDA zti6X$uG)RNE$iX(75CEPxP8x>-(Fg^b=TgkxJQB4)O}KKOrCJM^NRbEo2O;6{uw>G zcH3Zu_xaC}Hy6Z8dcKGRmoHJx7uFOrU1BPts=JsC|ExN%1OdO!V1_D-fUUg{(4hTo<%eJHr z&GuL^CMKA)0+#|GOnTGLl=A{AD>K=dn3x$@CD|mozyyON0|PL&7+G1<0-W3H7sj6z zVB&=7*JIV=hv_d$O)Fjxv!ZQ{}cIl0)-_-B;{a6DgRVG>i#u#CnFat8wZ;N#PbXc zFy{ju0CF}=HA7KqPNE=C5zI6OxJ+?Ta*Fo$`VSYK>#NzO1vp8YE?xWN@R^EdXJ4G%?Ag6< zW+iX2Rl`mXwV;XY5!PUNV>4~M+ zOP6>j3Mm{~a;5Q6=jE&Y7ivg|_7!@%1+(x(Pr zh~9F$g?AnM;qr3%3mRPyL+|aE?NvYgI?3i|g>{YfiS9>V*qD{$c5&?}%4Ds1b9dUI z4aG~fy>bFFS657sTfq0)^m^E=B@f;>%`=~<>yY|*-@cGn?8odLhx_L1asFPTJ86yR z>Qv7g;!BR|aZGNJ-So|E@`A%^E-N^STPiv9Dmi^J?_1Bacb<}W&W&$#NE z%ZFJTCiv&M|Mh&&baq7*_v~A5&t-p7ic9yLtz33q>(O8BLjLz#8Cd@B^Yisubs85R z*;D*+!R5~%r8fSvRtS-)EEDyQJRy@Qv&sE^ne_hKs>N&G75yvs|Fp-CgGXSO-C=3cUm@v#GKw)I3z#PFS1P&#bYM332T;PC#2?IkW zClM4%#YM@*;vj}1hyVj-r5_osE^Oz6r2xgn!8ZT^ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Object.hpp.3C3F71944F69B881.idx b/.cache/clangd/index/Object.hpp.3C3F71944F69B881.idx new file mode 100644 index 0000000000000000000000000000000000000000..92c33561f9357d7682d3a455576570b25f3221be GIT binary patch literal 1050 zcmWIYbaNA8VPJ4h@vO*AElC728AO1%xTGkvl#zkq8509T#hkT)yYmhk@O*i*{=p5U z#;xgIQ6jFJOftIGHR@d4$Q5a%a>{dBU3Kco%90n?jvB0d{PA7Hlno-Ys`>N3igR_P zz7;Y1aKzTBE^`g@I@32T&TnjGD%ul-?}V#P`Ec=(iJh+ozeu&Ofl(4~A@A4T{wTkC zp=k?zy8Q%A&XtL-;q2>k7ii~|uaF6}J$Rt>K#NCro!~-CjphTrIt$Co0)#ft(Qxea z@P8qtXYgByX>a&5gGUP=yM1*mmXh{Ni!zznvu@qDCij^ueM*Yje$5H9IiKd4*Uxt% zjiG;|jObS71$(^q8gIU}PCMeL&AZ};_UD2Y?d93KE#I7Abv*b`W`fJth^8Jz-s?Pi zwh4qgQ)6aw_FkpbvodjyXPw^KE&hCsc2T6yBeCw=@pYYZ-7;egjz!&8oNOjD zF?X(SRIuioeZ5UqsVbipf0t=nRh|03Sk7A|k$1oLqwUXM zj5|YFB^in2p}+mqn+;2jaxjZAF|z_A1qj%K7=zduI3OJ7kKB!?Y&HsUGcmC; zuxqhv@qh`K^dV(uspWnbg!!1bfYKS<8G>K}Cfy+Yca!*+%dYH9%q$G-@@(=vV1hxC zfdObWBRlJJDaN!Jhbs#Nm^fj!8}Jwi!t|@T{;uTLJXnGxZ6;(U4wGJSrsMAl<3kgX z+#bOdApnyOp6j<-#bC!)aVBn<;qi>|Ofcy=>pOX8702%pVB&yD+pyX2!K4|AQqzhB zkV1%25*#uxKfywVkqaCmFkx7T0EI!p0TYJNEL`9asB1Rwn9f}AiU-9=9(IuPVM=+} z|#a$ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/OwnedStructure.cpp.9DD418ED233CE05B.idx b/.cache/clangd/index/OwnedStructure.cpp.9DD418ED233CE05B.idx new file mode 100644 index 0000000000000000000000000000000000000000..5ee11036fa534ccc10c8941f83a0565647c87705 GIT binary patch literal 992 zcmWIYbaT7G%)sEB;#rZKT9U}Zz`!5^#Kk2=nQ}}F3><6>3>9;>hWPehHW2tKTGyH{ z)Ajgm+ytdirdyl7Y}g%onKdsk$zLe=cwf$P`Tz4gqrA$uih47iZ2x#>_IEeqoDDT!%}2n@Xtpy~hdP0s5TcO_mmXS-&|x^R>=Ok22f>ny!k?pU@ahf6irm+o2W zy395}TB|_%so_geRrjgV92yK;zCQ2?Q(pJty?d|uzU9U0QFbRR+!~BjW0kh`E5B2B zUw=SC?&TFJnbm7s0xcy3%y!Q9vA4UkVB)gNw^R1aI6M9F?vj0f_ROf8p_2K_q^VDG zeGYHTtup4CcW=rC4t@_$yv)U#m8$an5Ti-m?x&|X?t1O8n5bUu?;bF_;KceRe~uP9 z*r-?4``!poy*4v!lIbF)H?uFy)Z`Rykqu-|<`1ZQ&U~dM@{ml0%w`6)snT<=$#Z6N zg?`dMdBf}KwLgrz&wA&6_EA5$YYoe~ue;K+&$E1+ebB7o<0&cmwYBeGzMc@Viht&{ zKUEUEi?#QCU)DZ5?B~7a#6vZkV$K{peNl9lW1rV$KDNWRUIfKe?Lw8 z#}bn{U#t#YD+o+hIQq@?>i?&Gy9D=k$Y<$?@5%j;>JU~Q{xGE3*+IDcKmYWL)(7A3 zE}tV4zdJ+f)9zlI_?8nctTN$eBc=O(S6SY#%lt1Zm?vjxJ?Z&w!N^ZHJo&N;|J;y2 zzQp0$jL-Xj3(dP0@X$q1+0OW0mHV&zQ~ogQ`eW!^T$!5`3rsD^r)T&v_fIMkW0F^3 zP+}2akyBLVQk7uf0LlTuS}AUUPw`n(1ejES(!4Ufii(E3hC&Py3=F^|#xUu(tb2;e z%M}7l%0OujQ4VoMZ8mKVkTfGmdr@jy@gpG3W-+rnKlgnuBaae`5sNjLvJqk*bH4uPqLxdA8)asW)&>A)_fBFXk`j510r zjx4S)t0aTBTYjA3cLq%uri%sWKn4~*m}(#o7$Pu99wiP|4q=#mK*#a$O2Hgel$w(W z@^Nuda!*(wC$%!HUhEp^ z68|}(+UMck>lzRHSX-?t^`YjrkcZ9Lb_|5YA@I^-9 zMUz>VYF{vW$lHDEW{akq*)6RvR!v{d^~hFix}V%Fv?0I2am9q}m6d#-Jrsf!PNRJhJOzjw*%$t(D7)g8KJ>Adnvn9s6;D}fhf@*Woc z{I;R`?+ww}U%%CDj@9Sl(vCK}zQKEU?`r*7&qFsx?$h}v5+&~bsAP4+jrVWZ=FM>Q zs=k;q%h@a@I;@~Sg4OHy^$kj?OY|lRIZZM4Xj$Fwac}Q$CpqWePxF?4Vf39fzooCp zN-(!Fl3OKRPckWe)vAA-HYu~zviqn1WjG(eG>xISGB>FX7|zM3XZSJqPbv~)Vgdy{ z5U{FpsY)<#KsalqxCK7NXH5}c;($pT@)`=kq$mBBbx%=wxk7-69VV^Krp*D9&dr(K zx2y91Wp*YeW(HO{HaQV6!63=N0E}8jR@S1_wBq$Zn<95Se}DF3t`H*^D;EcsGQ@5M z1~!YC-TAria~XM9<>chlVaCDS%qR(VD@-_;({*odsz4u5wIQ1!56tN>8mJoNbeL+G z(}BVuC&PqcG!qxtsddff9n+Z$Uh$yV#88x)lc)rACCq^gFl{iJ!R*N_y{;E=JBy2w ai^W0yVS{;!fr+)-JpAgavfbQ_YzzRjrXYj> literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/PathFinder.cpp.3929BF8940A12F82.idx b/.cache/clangd/index/PathFinder.cpp.3929BF8940A12F82.idx new file mode 100644 index 0000000000000000000000000000000000000000..62789e692af5ec88e6f00308ba14e5af740595ba GIT binary patch literal 796 zcmWIYbaNA7W?*nm@vO*AElFfyU|0d7S zGHw;qy*wNO2Ubrmvozs-RC4?52GwKNw4&Qos&C%!FYGzy5xwQK*#Y*hC2}v1t551y zIJ2fHS77F;%G(_BOAcy%J=(iU<;L$f>>TIy>{wcY{wxXAjfj%syj)|VRI+W(+4b^y z7dms_x=rhfl~PaPN2_k?`;*L5L(RaWp?m9?&pFUl8Q)>01< z_%-FKbUVw_I!k`lg>3=c=S;#Frk?U^|7)DMYVE0?*DZ{KOjYX(5-QjEPJ4AjdiJve zTl2hcS!qqk=d$LX8f>9{ZP&TWUllioJ`Y~|^XiP=o2vE|lm9IVE&Gr#BS1X=T6c!= zUYE2&T%hIsfl2lKdCjSZv4th4tVcHm^MX-wef-xk(Pdn4hbc7UFBXZ5}U!ydr}t ziy(`%ilT&~5`!cIgPejgqYCS9n+Z$Ue&lTELAutvz?hom4$&t0A?GHDjNfv0L*A04`?h*DNK|} z1Z)yaixi3?puIVXKx-L_i;|1QK@1fT0S3&fEJf*kf(=gF8C4jPb5nAZfWo2*63pxz gELlmGw# literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/PathFinder.hpp.8E03A78ACB16AE6E.idx b/.cache/clangd/index/PathFinder.hpp.8E03A78ACB16AE6E.idx new file mode 100644 index 0000000000000000000000000000000000000000..1855ae9fc5d3cf3ce6e601b03276bcca6d2fd1f9 GIT binary patch literal 662 zcmWIYbaU%tVqkDi@vO*AElFfyU|28Ycq~EU2(z&}Cyk9sqtv1@t5_QU5iQllJYKxFewH!x4znAZ3 z<6y68d-qLVV|Z_>RYOYmtIfd)=Eu)nHgjUBJr|gj9OJN(ML2K@*WrUVPCTpB-Ew2S zw&p$kt9erTx{=>&{2G!(yMHegyX_qkyMB3fe^$hP6Zx}`GPa#%UUvDL)!vtf8@C*; zP+2@bbJ~+X9f{XJyRh#~o>sPea$^7C7bkQQHveI(?fK6V^ZXBUh|s;J0LS~2o0z?e zD|3?)fgw3pFD=B^c-uT)1{O93ZWcinX)Z+xMI{DF1_owU4n{848W)D83I}Djvoo=> zF>r~qiHm^=kOE-f0~P#Q)~sS;-SkI{iIts!n@xyKiA$DIR**pgC=0ZJp(r)2xF1M2 zNdMg={^hbOBM+Cjg18#YT$lqGIl&g!HJf)#XD)a(qq`(q;?3rjj9gr79BlF+gFpbL ziHCOHT8U+Xl57n#Pyl2 z)RcbF-_LTMg}%DDtMB(!<2Lr6U2j+JC#3S29c>8Mj8T>y4Gpz zsh--Tx9a_jE4MlpP2)&kbjVRit@LJ8h$ft!tyopr-zpA^4OB^^8rTtEdJG8{T!f`OBT38J7VHLdtB&?FPvBV0EsqeK{a z*d=)-g<%FCulW~pBP7=oC@d=|D+CjU(Tq}H`)r?bM9etT#F5=$utIndOBqnLjGzo$ zwa3AC`>*6|uL257i%LtvG{f8mGz8=@m?3>Zb5?CF@>mR1tstl%1yik@nkANb^U^j( zE_Ox^MpdAb!5|`ukuh0I`4mvKyr4YX-8UZJ&D<_F@f^rXX=!DcA&=K|9n-98x&;)L u6O@CiW++O{Ndy^JT$Eg_3}SGC2ryt`SFDSOd;3OwI};}d0|!i)fdK&i3EN%( literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/PowerCreep.cpp.15A24FEC7A2B7620.idx b/.cache/clangd/index/PowerCreep.cpp.15A24FEC7A2B7620.idx new file mode 100644 index 0000000000000000000000000000000000000000..f4009dc0c5330f182b3894e3012a073462c3c21e GIT binary patch literal 5836 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/PowerCreep.hpp.A46F4EA09DE53DE4.idx b/.cache/clangd/index/PowerCreep.hpp.A46F4EA09DE53DE4.idx new file mode 100644 index 0000000000000000000000000000000000000000..58b2a786e5cc747605e26adf89d1c4e9ca7f41bc GIT binary patch literal 4176 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/RawMemory.hpp.C2923D447079B382.idx b/.cache/clangd/index/RawMemory.hpp.C2923D447079B382.idx new file mode 100644 index 0000000000000000000000000000000000000000..036c782a37afd39e2c7013184d3e5f5370531c29 GIT binary patch literal 692 zcmWIYbaPw7#K7R3;#rZKT9U}Zz`!5^#Kk2=nc<8K44;8=6?4{3+MRdUfX8+3wRpz` ztX5ZV8B4whD0#trmR)4aks~@^3|ut(>uOW47dEYVtM)2RHty28tc=|!wlp4ppn7zT zutLp)f2}bc$G5-hF3EZ&y`n2HT4bk~_t`^>p-s8BQY`Kj=O%NJw-f(v+m~{9Ua@%7cK5HB`jH3SOxqev1 zp#Pd}-sQaxVz*MF539K(%-68<=)c&&cP{mO)hDJZ=8UozrZaBZT{WmUqk)PN;34#gw>WlnP{>tXF=4KS6RQW{@Q*v ztJE$wvTI3r`P*!3>071Myf-&2ofQ4`V4&yx?@LZymrSyzp%D2@s=^6e%FlB|l#jb)nhKZ{Ly%>rsbCVK*;k;u0Lj{xF{QSHOENl$i zECMW&T#Dj~3Jj7A49u(?j9jb<{`#tuy2SL@nONBvxWw7SMZp9}0WfNS3MNg-i~oCm zmV+1*D?0->n;@G4mn@^K0D}Zj7H9!OQEFOoKax$1oM0R3n$0_=GZ(yqna|7xHWwz$ z12zOE$-||{t|$g`E6helNfbp5(tkIJf4S_+$ipQrFRlvH8&$33=9i=JpOK4;je|`N tA_2X0^)>(i literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Resource.cpp.77BEFDE5CB413577.idx b/.cache/clangd/index/Resource.cpp.77BEFDE5CB413577.idx new file mode 100644 index 0000000000000000000000000000000000000000..2fc161dda2d2c4ce11897a67dab2b192c224f9a8 GIT binary patch literal 1130 zcmWIYbaP8$VPJ4h@vO*AElC728AO1%xTGjEjER9^5gP+T#hk4nzWKKec&?WI6}8Jd zow9W=kAXl!_M=qGCAx1?Hj*PIsE#$8})88$S-mKG*M~3=eefx zV(mo1o&)UrS`@;UU9>akKG0;``&7VV@5U>engssp{y3K9QfuHEVV=eJZF+;7_xnSe z#ThFd-iMo()LOTk>((f`=M|gN@x5fWMBbLqmd|Q969xBiPO{iLQ?=Qmd;Q~-FI$<< zEIV0YR@r*y#9IcwY1ga8zGoCheE-gNU)!O2=Y+SbYqn2WEGIL4kE#Se|4H|qO&VGU z?w{Gu_&t2}#)#+3MC=ov3h9KpIqZM&l|wd;|MBXZ9Q=`D{+Aq$_RT$Z{pQ;*$wK?( zmqnK4I3}F&THL^S`42-`_F1d$+c7&&dig9^B6g;bJ7D+kYBkgKQjF^Co3^-KWAXZ( zTcdfTG5Ph!h)c7*o$S5$p3&CKIP2}S|AW?b)`fE}?7jZ&f|bYiA~}(TZ5Qq;teCLv z{#yGZC-qVe+AU>PPFZ~8Ok=8R>a)tJRmq>3B0_aVW35hYyf5<3HbXs-|KX+F3BIyS z-ma}7qPzES=pQP+w&>=!u#=VD3uXpPUv!1-@;^(ty)VRfz5J?oZ&Lc#(t9UXUA{ZH z=|;k&`v=*tq%6O#xUH?QwT$5*u>)Oqo_k0gao6_cEKlTRsKhJ*p>wQN+@spE@GT#+VQp#0t^8{{j zUevMW^<13^T1ju-n;lRr>}0m+{d7=fslx90HC@&7|FD=l$4xG-%uT8Rrn0Jy&s6{I zpKT$=q@c*4!otNOq^!lICB(o1lmmj(whID&IyPGiFsT8hg~WuElpS~-BpD`hlsKPs{uDinh_{HE%CzVr9~6}3NWbxrFq48C6q0AE%-sw z%s}a))U;wzpgNcv7^T1t_$;13tFG^HFU)SBFvwz^*S)!^0)0$CMXbEsNQzj6xM7N% z4(w7Yl5F3`D5Jt+#$pAt^Y}W>+y5u>?_>m8uEt^j6P66#ZuxPB-x)O3Fr$I~0fi9E zsld?5NdyKGLvc}Zu{emK3?jgQSw(2c>yK=gnP)R9GbHDxhB89 zyunvk@$*jbo%Tl_-{;SICc0vePRfi^@m@PWJ_!57xnU0PS@AW8bgUP|zpYpPet*_d zi?7dAi}^kY?-Dm=Ox$Xyv2OPyzGscbtiR0;%-39K7CYaQf1!|bsLFlD;Iq|1?1>`D z*Bbe%Z6j{&=(ufaydf%_^Q_X{o#I+s+8MXzH$=NUK4yE>F|m}D=_Kb}g@rE`KYJn& zG)+x>Wv{FYhsmu{ai>S=^1QD#+BdU(;l5fKnRw}@bknrTTN6(wJt^HGd}O8UTC=vy*^^UqV{_deZc$6E ze0ZQUW=mL`)`^p+bhMWUE#BSme_zdvw`o6LeJr%QJ$HSP>~^t<6M|kp-_~b#<)`w? zFz37Huf94y;r_Dni3LB!%l&u{PwmYY?O%W8h`?Oi&TEPPbfov4%NOB(=EnL~#ryJ? z71}*5V-x9ocRWY_$d_kEvOwHGbdOSpG0Xk|qtw~zmWFK2xFj{VV3vHxW6F!yP* znV*E_qR(mOU+xS4Wj*J3WI=IdZqi&}imKZ9O!eRX*%o3L_s87@X%r?E=n#I2g)#U2HlF7 Rrm1iHfRT%V3uFTX003Fyr)mHI literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Room.cpp.736DA4C4A006C5EE.idx b/.cache/clangd/index/Room.cpp.736DA4C4A006C5EE.idx new file mode 100644 index 0000000000000000000000000000000000000000..394dc9b233b28e43bb0cf5d608d1b96c468dba50 GIT binary patch literal 3106 zcmYjS2~-qE8ty7!nqeBIf$1LRZeX|>5JW_c62)W2F)FA8Z{+eo76NQMH$2ol zG|P#w^jZAqC0Bnk7#9t+JX-8JF<_pwfLIVvkVyx79@*0=LT#hsr=xwJp( zD^60aOAGTa+>`g08gKq^zFdA`TV>aOYpY9Vow*tD{LF#*WwR$9&0l!`h*2S}zB3{P z%?)jdpJ4U7cI(qkFD@mOhL%2VEY5tlk^A|>X%}Uw3v#E|yfwGMEop6M>VZjjOLk?y zHmP9F^)-Jzn0>jXtSK}9+}o`ib5~Z|*ZmrMBw}GiW5>xN&$1=YW!_`UpSp}WKK1zF zFJFuN{gc|{DqGk0xi|3_GbYa~r=2U`UlTs}%ECLDIc~>4P1$;S=ce_$D$0IzQD&#w zf_6NRJJ%UDEnaez@Qf`nUM_$n+&$&z}6Rmg$XH z^@n`)!W;8Vo3Av77&ffASY@r+cRV)nRMvuOY2VS_tMxnGdb<8djhEf3`03E*cLw@4 zpW2$&RXOgx__zD_Zi_p%x9h~a|4giy(Y4@upk8STsh`zW*YU)uv?YCm+VJ3u@yA!) z9$VoVmK2+?tf*|-qifg9M>7rt(n*canycsBuq|F%7yB}1^MlCn{)T~qbvbFZh@xD# zO&Kt_7Sk+NDJh{A@wF&SAD{^sLAjEiBwyUe9eLJj9~FzE2*HLmHf+*|&><=ySUcVR z{blcZUlxxb1UvGxqbPllN01H(Na)k=SkA<OHV>hs%F1Fjfzvc;k$QjHUjy*C^BF(5R3t58aU_AeQDiropbypr zhXP^Ytor86jE@$xcoZQNX^KpGU)p!b` z)mwu_Gf5svKA>F@R{hK@{>+=?FCihp3d>F+!W3V{RdXb?qn|6DDHkW zZ?GHI2`v&w%3-wBgHs2jhP;_R&-PV~cVdJToFaie4Dp1rVP|lZ5lS#F!4lBH7%9JF zNWmJ+CpmH~9y`>0>cLS3l5fYN>!(sD&yXmDRwQjjZV-<`XhYJr;rcx!y*FIHkEHj9 z>kpCi;c)#4l0Fgj7rP@8*M8_W*LEF zIR#XKXygU}kP(cmQ2`eS(UeAwh?zK(3R1=h(Ok3&rkN4qxHy&QS{j$8f-EvZHkYk} zTZ0h_xk43O5{yv96{+ApW5^J)wMZfMV-sSVkV5Q7JJQ;b0GVdU-iRxP$8lmLo>kj(oNwU&qto_*}D0RL!qT zSCE2O0xXeY)b&VNk9JNRz4JV%v?>zq7&&lQ6K>3b5GA+ zU;XuZaxiD)f}v7D&yS_-pG0kOERW+R!txyHly7q~+1;e|lj&r4(HlE*u_GB6WrP+) zw;*@W*R?%9Y5j!S>j=WrGIVb+!g(Y)kKDx|t|0yj(uqN|Bf1@VfSJ6Sw&cvz+qzl}0gWPG=NL!5rs1QSPGolm4fLZW^?0@w% zfnn$`Qqqxlq^DR?#{&f$I^1_4($YVvO5At zc)=v72VXJRP332wNwEjRAo{!6BjAFhjU0g3=A~s8CV#6Gf9K8bmQb6vIR@LKK5V(I|=`qBt}U6qTNn fv06nCR_TQ$w3Afs!SHS}g^ZJVyEwbLBTwr8P%RZm literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Room.cpp.DF8CE7C3D2ABAC14.idx b/.cache/clangd/index/Room.cpp.DF8CE7C3D2ABAC14.idx new file mode 100644 index 0000000000000000000000000000000000000000..a13d2ed7be7824d2e639cb3bf20a0c3314d709c5 GIT binary patch literal 5714 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 A(f|Me literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Room.hpp.405174A701B0B111.idx b/.cache/clangd/index/Room.hpp.405174A701B0B111.idx new file mode 100644 index 0000000000000000000000000000000000000000..31d8c24c6e47c272c23918f10b77fb506179c469 GIT binary patch literal 1802 zcmYk63s6*L6vyxVR`xF6E|;sz?gE$h!aj$1%;w+&Dg=ZOREUBxEqNrt((tN5hun0_ z#taDT0l~zGfmqn!Krp&EB4S2a#A`~TB4?o15LBil9i{JHJxq6I&))n0pL4$Np6|Dt zmXwfy7>e4In^aMhSH61{MNuB)Q&wL3au7{Xrx8U}G@VLI*(wR-W`-+1$iJ3Xvopo2 z{M`9~vWNFr`lrLo9U7Zs?iGjg@=$&(T8P-YI9*jSI8{*Dv*G62`p?#UG>AtuXMc-R zX7IB**Hca3r$%&4n|GkD{+faH+X63ZRO8-TQmE7K)k}VCkfEB4==0C`)h%_iCgY4W zIx*ebUa6frIBR*bYN63yYqr{7yZS~)MDVi*#%}1ovTd)#)-y-%A6f2bNNjdGU%1}- zd++G}C(aZm%uen~wWyqp_p-8X&p$Q)&SQ0%lCWdGkqyV3sU^*qjQgvs-=4s4d%opA zu+b77)Yh>sJ?RJg=Ie2{uw_rc#GRJxqT0BDE#6PZbQ~%y`}A&lb=$kcS7#C**My8+ zdEH&RBnjU|tuNbKl-)z7Bs&~`*I#yk;gAcWUUINM>3gnuw6}RPi!`K~<=Id%fSvr} zVK$(yGnqqDQk~6bhhZ(F<-u+rzqnlNsLo)Jgr=}eD#K!+T*blB*k!{&?x;&k+VdP@ zN&O-nwn)cd18*=vhaFq{NAhw%-pL^^l3?R)p*WBUT$!EzpOcx5vDBL^@*vxjGjcaE zK=pEQ!JKW<)Tlu|q&ip~tic+jk$~Ow{=(6mlAJL$k`P;^R(WGJQcJ;}a(r>JRef%n zLkzKpX!Q`S!#ZAPhJ>ExZA|CH$R8Z?CJBXnp$Ypl{%WvQ?u9UxkN1Cw@o)z3B?_$f)9V321vZ!s7C00IHhLSi zz%O7!b8D!v?WDER)4BwK6+(ysHGV8A#lqp0^z*Jz3 zM8m)n43BgYI0hLwCbGaU$cY!`&yQPs_mMZma_kP{Aq#M755N=No9tO29BR{Dw05-`MfCd?WCfNebAXBAz*4@Hx%Sv;~!i1ZLe;&deX@SI5;YKM|4C+4zsxBx1 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Room.hpp.4BAA62BD50A988E8.idx b/.cache/clangd/index/Room.hpp.4BAA62BD50A988E8.idx new file mode 100644 index 0000000000000000000000000000000000000000..9e25ad7655e24547c343d79b991b068cba0b4bbd GIT binary patch literal 4360 zcmY*d30PCd7QQnVLIT%t6PAmBxF9M^RGtee3Mda`(Wqg^xF9OvQ$#EB zwTRX=fQm)^#3kZx)N0?{Tn|a}!Gt^iKWFBibLKziBPu*J zl#)?Y@WSxr$#EI678FIvKD`=w#jP%aLD= z$j#W1;=MD*Us@2-_ITm>ZTD9_y;=An^{VFfe(t+Ux83IkMkI-9k9IUSR``w^?eBd! zXQHdmm}_^CRit;H5e8}O^smn}j{hxdUEbjcpZKA9UVHPhOEc4#o;;R&BLdy(_g5h8 zTG=%y_S(yL`NJ;9K9F&7Id>i$Bo?G^!b$P$&9xwqxGwrr*J3jf}@|2(_9({+X6G|C|u_J98>oCN~bm{q~yZG>fH22Ne@&X3Z%LXtNx{U6uBbk(Y188X4=W@X8|!w z-r%~v^Y%{Ow9I06y{5n9qUF1>X>WBdSr;l}W4g|ij>(>Qx=*|R<%GE7<%#nHMpq2m?fBwI zKt%nBq~jHv2XB2><*k@?P!v+zKcCuJUwQV=35Os3p?p-NoS3OxgZeECw58HlBrBI$Qj}$^`w4ZuO%E13TanZz zAFh!WH_~!SEIhWz=ImH`Yo#NL2LeHZBpTFBc)M_q6RVlx%;Et+XhLig>ID{7N3?$m zez$-S`U9Z^NlK6{5c-u&Y8sdj>cZkdK*;K!2rWcEQ z06~w%dffezzpnZ`LpLKiTuS+fDQ+Ayu7`1e^-Y^^#qP3uFo(sSuwLb%QUIJ#9TgX1 zb1v4*ya9_1Ci4~pf4{!O>41{O{a}4HR#fAWVBzB4=DqPVcBxqG1q8L5x<9~|Gs}xx z-Zv1qJBsIN@p)4eJ#wbLkv_Vd$YNVqe*-z+K%QVBa%9@tF~064BR(-sZEo4-h^g#YZ#@2n#kj_xOJ9yd93120}!S2pPcaiETNa%6X+$SOPw95IH!S ze4ukE&6zRh{T>#(!uobv(N2efg)LEK)ko99Dx?%kUNM*nb}$YAPr9I&_YRlrV=)8k zby%#!Za}y+V)$9d{Yz_D>;i-adAVPZ zQgU*F@yvLsae(!@d$$v69gCVp6t<$cQ8uIOj03=$gm2kE8Kq;f4eTF1FuFU$`EMGi zQBR(?u-FaY4%DXubtn409}9l*T$$S{rDSCHKqgRX9Kd`{Ku)D$>YF=e@868Y&8GKH zks9Q~kDa=2b`LaIp)uWqm~ZFLjJAmFWU&-ZaEDghp#xwGd~of1!ZheAnHKaE0MJt`G3w~*Jiq)Mbn0V<>p~V?$QJG)s47`6 zs41)mH6?(cq5xEUC@EfA*y%?M+l%abnhZzFqdg$^f(;Mf1>Vq(#SB+Wk1wXfL3tPw z1-~jf5CXK;<#HG%;Rf3ec7{zrs*$x(q9Nl!qRF9nX$H1yk-t+^uhjXr3>Phl zmcbzyP9;&vU=72mC2ARHFvDd@vSi>?hU-9*4kUxS!Ei-5xd<jVI}mfaEbwE znm_MF27Ca)415!B2$cx@0hNdVLInZ<-ktz_<$-CaJY-s^H~>J!A%IY60DwwEl7O!; zrX*0wRqo(%h&fp;R2f*kAV1&7F-Mtd&HH&XD#F{4xu>g$rw{(k)7i~<9Wr-yKGNYr zWbW)KdOXYIN^?G2pod91Bk5-Tfcp-qLRO@-tV-Ol$WHR7dhc zLREwpf~rW;l`n~qt^m_Q6*PH?FIWIF#OFQF)4d=Fa5Kp!LS+OZR7L^_6%l~xl8{r$ zaqJcu!)cL3i)=yK7$Po`CS(h0!;mPBxPkm3tPH2Y6Ervs6q_OGGNBrWLH_V*A6kni znJ4|IW*lIOL^EF8j8ja{IvlLS;ikCgaJmk!Fg@$>7(EU$kJA!8US|HRB~d!~wHqI5K~;W>sUQ>1OG$hYtHf!tiO_(||o7&(q?PV#z-(C@7B72#^T&}Nj33P1m#iILT&Aj^ok*wKom~{=02GS)KQ<-DhyVZp literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/RoomObject.cpp.A235D185ADDB9999.idx b/.cache/clangd/index/RoomObject.cpp.A235D185ADDB9999.idx new file mode 100644 index 0000000000000000000000000000000000000000..89e243a8fa34f12e2ce08d0fa6c4384fd6a560b3 GIT binary patch literal 5698 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 RbLMjlIQmM8DqP0A{{zmLNL>H` literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/RoomPosition.hpp.8A25E301D3F7A985.idx b/.cache/clangd/index/RoomPosition.hpp.8A25E301D3F7A985.idx new file mode 100644 index 0000000000000000000000000000000000000000..70ca7298093b519b7921f4ab52e4dc49a6d8d312 GIT binary patch literal 3084 zcmY+G3sh5A7KZORmn7bBAs3KGAfP-94;7_MRZ3lU6-Yr8K`K-jv}git7dRoI4$@Hv zLzShD4~C_!)Cy@)AWlIOw3LTcsrAtofeH*FDpn)4Ww7I8v=Vr$5d+dFo&NrQG70jVqbz>~O21Q`BXs3#-vL z2GsBS$qTc_#<2)D|9g zulQWeMsA(c7-MOCa;zN^dEou9R0O#JHU7Fo<5rDjVN zUP6uB3Yq3~bM$IaM7vL{rtU;?Y)9*jt=_8js;_#hm;Ub4<{fvwA@-EPVdU1U;~O*= zx(+Y+NPqm;J2`tRdq&cZw&#~iH!QgIxTxiC!@UECe00(u5F+AIjj51_5{hm8{Om6mz+@D+g&i6x~>1Tx2i>A%nUzpt#V0t+Wa5JC+>NA z-VW%QkyIWOT6-p_=2ySJ*VOb^{3o@mbIZxv;V9*3hi*a8K&`HFP4}2`b?@#SDJgw( z9R6JVz!9&%suQ)me`0A`!_d&bgXO1|g&jTbcj%Jwl^Yj+Yi{*5&6v3^JZW&~z}-K7 z{H0>|m+i8GX0~gn^z!J<&a{198C90N(u1Dg5ASH)?l`{9WtS=X(c`g)F^Z0qXQG35 zt_4&24f$)nqbcgAO+Tl~9eW)(%-I@@yqH1cHi&$wDg5$-IjW54_r8{JSPl+x;y4$O z?=8ztnLZ?9IqU;+mN-ia^2Myu{$te-+&Sz8@*<~2?jSpKc-2~^A$}Zo1-Sx?DzFS3 ziqH0pB%@pvhrPieMVvCZz2r{~vf~YR-sZ3~$OeQA$PJ#CB|Dv86_c6GVNY;)ioKrV zY2ZL_YL9SRdrr$?CveC^d9EP$nZ6kD8J6fcECbnukO{HikXjJFIr=+Y5r@U#V5XhS zv?n;U?RD``tax6`VHa>1N1|~d#j{6#sSR|~mDtr_Cl>7#YS0(`q{J;EeG7-(VTW!k z?#9j#;+4>~{g+oh-ewo#5fVKTLey-zQ(u$Qe#EX!!gHV(~>G z#LlvL_qEXy6Njfl4y{<+DkRx|$)rp^x!LT2F*wYX&h>y4FO5bnouS-j=CB9I*Rj`i ztN@3b3WfR2C9chO0W4T-5d!=rvTV)8zR@!rc7q-2u((ce$jXv+e>0xgX_rA1igJPg zLC%Vj%i6>q4*SCM>7sNo$R)Yzq2(+8Fl2YpEeN#;7u`Em`#9oZ;0+Fo;CUl0GSWV< z!`-IuuYXl`rkGH1sOyVg zl$@dvc{8Fbz%ph! z&`i&S$!8f0?Qfw&g>@6{-z2QzxMY8xO%MUtL;@a{x+%D2JQSzv1Fx)J&NW6%J&SaT5-?%{NYL=97 z=2IL2b+uhwu#uiERL@AK8|f@zZKlO$nuT-PE;hnU&xbYiA*miuOUO-58r8cJ&4M-1 zlN^GlCI~=HBJi{X0cc4C8zsRElq6=Jjv##d1#@*`udEp{jJw#K+hmwuwx8Di4A3P0 zJS@Q2pC!>eXAr{t9Qt~_xMGydrMBrfv z0t_V)cnE?3pN#Yc{NSkU{}qZfgrq;#6RY!`w#01Gv#=yhxLZ`c4R1qxD> j9;>hTPA;Wgzga_&=9- zb>>kS@i;X_#oWbfl7p;WUToWb;)eU9t9`n+7k;?^U13GES27MU=r`tbF53V zCq6LTe)st{|02d9;a9b*ZfAO&f4S29#k{@CYpbf%dmK-*S}j=q(J!KY+v+}sEnX*& zD?UGUa)zrUL(Q2bn`0`@-ak8cbGMj;1`dvDut2%twqC;$9*SqA8 z-OAaqZfT~7OzerzW}BEdlv-U0_p(ir@w2)9<#)q|`Mct{7mI%0r1WOG$s#?@$t|{X ztR&tt%5FDoR6Qdorm#!RBf+aZu)OZc?zoqe{+~GR_wv}M*&L12kLk9aoXow5CGX6w zO{FP9KhrjN2Do4GJ9Dj2{^t3G1y^PiT(7xs{?|>*{KZEP8du$PGw_W#BmVhig`t(Z z@yftR^SyEZnJY!tpLUzgx7%Ix)^w7=$A`S4QGB8Oj_Uj0u>-z~bAOFk!L z`<{=6tO8}vPc5+3WAwf9FTTr=?d0zIX_ zB3oG~e?DNM<)zLE&hsB`5SHOP$#w9OhI{C6I56dlPv|9l;s(e*ag`|6g4?CxfvuF7#M-lFK53wH|f=j{bEdV zKxtN9RtZG~UIhsT4xk(m6s4vWF9Xtoh5c*ix#-F<^C+=0uyVt60eL_jFi9RIb{2Mi zn1wK!Q3`A;Oi_dM-%a9QF1s=U_3E%1!Ax>GuuG{(vV9w)j1sE_s|`#TMgt8&wn;L0 zyXD6jerM2B7p3MTf?Qo(lw7O~Vkm$JFkn`?Zti~V_6du%Oo|E&icnD?m7JTBqXeWy l6(pG1Ias(vgt>Y6dBl16c*F!{c?F~eWCWzxSUH85Bmu`we2D-6 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/RoomTerrain.hpp.B2602A94D80A21E2.idx b/.cache/clangd/index/RoomTerrain.hpp.B2602A94D80A21E2.idx new file mode 100644 index 0000000000000000000000000000000000000000..12f23957dfbc1b7e0b2c851f8f38d2f2e2088451 GIT binary patch literal 710 zcmWIYbaUIs#K7R3;#rZKT9U}Zz`!5^#Kk2=nYoM%49kIX6?4`G`uZ~&3f%qtugkNC zQ!PbXCC*}_6u(;llS|){lJuLi@}jL{?f&iE>`?MC=aTdDuY1k&mw9p}r>Y2^nY((r zMAMaN8+|WC9Mah_S8sxYR_mEgzNA)x^ClW8QyzFt5QvzwH1j&k62m)vaHm?!>%b^K^f{UEopgjWzSmf1bYmt4aKxb>Tl#F70m_s z|DL;tgqL?*ayzB+q~uP|C1YpKb_jT@WbKI?T6j%l0GPCu>D(-(rx&YEwS>| zTZZDw+@yG5=nEG1ubt_XG1*dpi31d4 zK)|NSp~=m_0pYxy{pQ@HS1e~#V853118)c{dbf2m&>kZoGbE^!4grV2x720Vgx);0+wi?a>)Q9P^DH8K}9*V z3bu?DFFdNl2w0Q~w#wK+M8Fmh98ZoyMA51sVqe;M>`Zqi$$rP%{r~s9KOu_)17*el z1Z-HGo}f*QG6Vpap-)O`^2SA60RG?ukp6wuittTs?q+XaXYF#do8CAWS>Uo#lgiuE zo)BBx5dN&|bY98KLfygqb$4$o<9J7D?ZS+gKX3CLZ9W{Ztp93I%cYZ_8OWAL!JdH* zh*m`zbz71}=o0 zeVU!}T-$UUg3V1QYSite*E=m@Ds|7Zt3^?8UEtyT#ih>=o%z;Hx-wGvdrsK?E%Y%J zZ)M9oqrN!*LT{f%M)0_mf8&nT54qJn zTaB`8$Gr-i(@won?y?Benc4gHPn5+mLFJG77nHp#qv~rt+gC5qdF1Rn?N;aQFtj&q zp3RS%s`JJlT=J6~qlzvyo`2lJ^uH&?VK;oDIL9~bFg%rd#P02Z;^gp%kq29Q4<))@ z&m+?}jt3s`8I>$~bZf}L>ZZJxCw0#g(JZ{w-^Bb%D z>ysu%mm8TantgWO!*&lIS*_5vD1@8?XFgsxTMvuuCyF-*O`N#ZXI-#hRef;um4Mdr zRRQ`ToV2D%Vm*Q(@Cx~k`=VVUY`(jK%D0ePCf^-)C5I51&Tk~SE=Xo*##XK+wdQ~Z zzyQ_$*f)P}$V7fS$#p_9K@&D|chcQVFYBkO_KEV^!0_$|B-a7Sv2?7hyof^pO3*Q|t#)%`hK5p#BwINy`Gp2FEh}Or8=}EQ+S0B`k^su>w4Kkcow{6pP}icnL-e>T6}mmbM(>QcQ>xUiFxOPPAhaA&5PDJZR z8`H_!_$c(>0aB9Jr_9vfOw)h;cRAu4V89&mD~?;St^U4&e3~PWPYPgt!iIPmf))}h h9wFdE%6y7&s?btM3Td&u$kf)<&eX=($i$3m{SQ8T_GAD6 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/RoomVisual.hpp.631D2365C93944A5.idx b/.cache/clangd/index/RoomVisual.hpp.631D2365C93944A5.idx new file mode 100644 index 0000000000000000000000000000000000000000..a71a431ef40696c6e004acbac3766db1abc05c6d GIT binary patch literal 1482 zcmY*Y4Nw$i82+e^@%kx&+6gW4Z~uyTH7Q;ef*- z>F^4{0_+5oKh0qjVKU6gG>S=Z=q9j%@(&OlEgF?n>_?|8uXefKW7?VB`}TRBci->% zp7%0!Jl`LL&|0&u)MhElr4d45!tE$3%rBr2GD{FDZ9ST~+P)x;Or~__EgCEy;Rgpg z%&U%lmoTXAA6Xtv)#O>X-nd`!Nw|0Hj47#NoxxyeKXY&R62)&)(5&e!8vX$N{-?!^;^%Z|=9gU*DQKFgC4@ zS0(IxX#TKnDSzO%2D+~NOsif0iW#xPP(62j$gHC6pn4S%`L*Y=PZbSUfEL; zuf$l4M7WswA@d_pu>WOY=Js}3`S_Cr6QErbaZ%wQI60R6!HqkMG6)U>0Z;fapqs2^ z_g*x8QA#iew4K-kpYOY=_$;TY&rNVR&_-emRMTUxxKA{1+Cy+C&`#nE^zIrz@%lvE z-A`p0OAw=ys>sX(MIt0PqnM!VQ|U`r`BjPeKqF^4goruBnP_p z{E+tLt?8YY36=uwp@?VJJ3U=lt{FB>5F7*oEzv5$drVZ*=p*^BR|uX9bTvh)XX~}~ zDXEk8{vQdR2Le6O2l}Hzi`DT2p3R7goXG}kLpB2J&jbjU>e2Ct-_NB{ETf82#R3db z33@RifGe_Wj^T%YZ=vLjG*}wr&mAF1PEd=9ff^DMU@<9xvzWAAn}yU0Ese3p1W-YM zf?5m?)bJZ3p9!qoy`pNbq+p8upFNgIrjt3yh-I|2mV*;#8J^}jFvK!?TF=303Ok^U z9PEH)EVPA#L0}m>ZRfxm%Q$H#2YY0NQ>0xK2gk}X)f8P#aS$WRcqrOKaWEF}O~IQu zRNx6VEWqM00Sr|F>>nZ^z>+|S!vipM6=46+00A}yLL3%=3oTo7Lxt=hdjte>6u#z2 o7gPQ3FD))*;=_Njus}#LyOal(n9<*E=(@PhzB@=3ELX7TU-_l!{r~^~ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Ruin.cpp.3F898A0C7420C2C6.idx b/.cache/clangd/index/Ruin.cpp.3F898A0C7420C2C6.idx new file mode 100644 index 0000000000000000000000000000000000000000..e81fbc8225ab836c04b654bc344528b25b69e4a7 GIT binary patch literal 1058 zcmWIYbaRtpVPJ4h@vO*AElC728AO1%xTGkPm5G62DJug*#hk4nzWKt20$->8|lJp z?V-MS=O-Ik~H9bv6L>}lEM8>amO)j4w<)) zpD-LaE%Dl5Vvx1yqy;t(vO-U_W?t8bUl*Mc{__!Qy3>V=a{LcmpPKk|U+n1o`L^cc zw|BF8bfWL%q`iKs6?-Rb^_Ra@AJg`o+%!L5W5blCs~ft^;vLuR$*$&`yE-N;sF7>! zG-vDMi(OXxEPnXLW#>y}UB}eN6XLV}HYYp$S@oh_Tg`5v?Gv`GD?(2mNlz_`Hdr{L z!hzR~|3HDfQizX*+CF}Vj4zij|MN`Web}k)&Y3yKmQ5;W+@sTT``NO&X>koE&jLD~ z1-ib774#%9TS-rHexVdAKP!sY(A+JqcXDBo=I;!%3byUFE$e1-%r4nGXX#~cqs8;Y zwn_FLTYqD7$z8Jyzbm%dp6BvD+3s;>R*zCw=?xK$O;L#t`WOFhiR{JAKNfOT>Cd)u z;jg^9>r}F@v%=)E|NPSpD^z!jFMT!ZZyx`Ay|qQ5O-oompF7&FYde2^{MCAQm*2hVg3S4%0Ove9$rBOb#`?g1__`}pl-XX`*Pi@*IyN5 zk^@S!u(5C{$Z^T>!E_g;rWMNp)xq4rCxZZeWzp&Fe)%4 s=ceQ+0fj{sB$(MbShz%lxq0|`#CiC5!~|t|1*8RJ1f literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Ruin.hpp.AF95ACC3B6E2A8C6.idx b/.cache/clangd/index/Ruin.hpp.AF95ACC3B6E2A8C6.idx new file mode 100644 index 0000000000000000000000000000000000000000..47f7cd775ea5b920f4971fb054a71882106cc979 GIT binary patch literal 764 zcmWIYbaVT{#K7R3;#rZKT9U}Zz`!5^#Kk2=nVgIa42D3tiaBd19?WYt;Ayk`EHbT3 zz1(l^mfy>^eb-V+t57!V@(sUN$GKo5`wQLue}Dg;yJXeFCvMtI&u1oy#VWmdC>k{F zg`>$?zvnFrnnOJ#bX*y4YpZ?Ov9&Wf_`0^@_Avc_kvs3#?D=!tlleO1^gBgmjQi4O z1vzZEcwM0AWZ@MXevxXwgVT66$e!PI$nv7PtF_#LO$R&$5(DNgF+H|j(2{mhe}>}TB{8ELOBsgZus z*SN^M`q|?|ja`M`GRkII3e8TOHIMbIw4Gpi;JNX-%ljZ_LX4^Jv59Oavm<5=)K!F7WY?`c^f(#rG4&#dQOOJldRuEv~fJrOxD)7Uk z&mEOHpOPHrFTlhJlU8R}=YdJfD>Q{3HRPMg&cwvbz$VTn&IKkIBpDchk-^BuYIk*C zu6y<^8lu3azys3^lV*arxvtr~V>)xeD;_qG17VUC z3U?#LBKGZIHve)WU}oJ_3j46JZ*1^@>U_PYQ8 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Source.cpp.53BAEC045C149EFB.idx b/.cache/clangd/index/Source.cpp.53BAEC045C149EFB.idx new file mode 100644 index 0000000000000000000000000000000000000000..8cb7cb490ab7787de08e7bc07049d74ef7b4cbdb GIT binary patch literal 1258 zcmWIYbaQ*e!oc91;#rZKT9OE4GKc_iaY<3;0wxBAa&`uWiaA?Dqw_Bth)g)`^A@*WQT`IurBe~c>d|{zWv2>CQN>E z_lWikHF1H-5e`aT?++epkq&=!+E;kPgU_Lh-rSOpdC9tD#&gAK_ZHczDVJ0j#6+fk z_I2uQm?$C5AXPm5{LX;Fub-}->~8tvvfs7S>x@$qhu3?7WQRD$j~ojfV~p>JCkXH3 z3{uqG5%18U5U!DV#3qxITHk!lR#A3fe(lA1B7?9teJ{Qt~OR`@+4@_4Re- zjolx2)LXu}$Cu~!clF1!FCORqug$lRdtZIQAfeUxz!L5K%)39XOX7UJw%{=nXV0cd ztPdHVCGJc)#TDyiVKtFA+nY5ZC+8El=5`6+Bf(3qr?=eG-u)oT(@LCmVSLLoGxZRG zUjkQkUNMM`=aqUZcV&)M;OB zbz!#y>nqZ)VuqC_uMeuDlxkm z3h8U+JT7I-TebE>R-f+y)pP&k`I0|0@xFeo@vQjMZciH@y&W124?8NKKRP@|u0Ndr z^?v3;&3|xN6VvYknFn#kQ&nEu zA3srhDB=_IftM@46j$aZ%?75|^ZKUigke2z}(0v1$N*@&eJ^y1Fh3xG#if^3j+%qOcjs^^aV_kM~#DpgA3*j z9yMMTUM`rkc+`Y=goI#z;87E25$A%r38n*RC&7^)xw44Bp4p3F*W|584WQI#P%Hzh|2 oC@i5M&Bn#e&MPj)$1lV$#V^P&DWV`CEGH~4EX&EkBg!fR0N}jydjJ3c literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Source.hpp.189DAD857FA1250E.idx b/.cache/clangd/index/Source.hpp.189DAD857FA1250E.idx new file mode 100644 index 0000000000000000000000000000000000000000..61660e0ddacbdc343e24b336ff3be172cf5fc058 GIT binary patch literal 1104 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Structure.cpp.8289CAA9F5C9B4DC.idx b/.cache/clangd/index/Structure.cpp.8289CAA9F5C9B4DC.idx new file mode 100644 index 0000000000000000000000000000000000000000..21c2b1007f78f70fb7ea9555347d16805a180c25 GIT binary patch literal 1976 zcmZ9M4OA0X7RQGnkx7_*NFbOPi9jGEV}WF)1)&N=C{Uz)>{<~NFo1#tOh7?UDpVBY z8_OPOYy8?MJM>S5_js)aBrlQAeDu&aA)M z>?YV|NHU#-Qf%W%y<623k*w`S4|c9+iDE zy#M+m?fG48*Y?ElS48>w>5qv9)O#9-G?%p_MK>Y~n;TT03wOkvtXjrT`WwFYnCU#E zkc#F`H13bxwPpKLhLA0~(ErVwf#C^v_P=`M_zC+x_H_l@C)ue>A4dcz64W>+^X(-%4?NlS&TJV4l1uUhwX~ z(YPy3H#7;;^16MRrKcuZ&tvv0lgq+qbrtHnj@br18I^yt^3cuz9mEkn)SYj!LdZ>T z3dlJVI>Y61=16I)w>uD4ZOr>r%_dSjcQqo_dD&$yIrZ^Y?Ze(Ix4<$Zqlhbbj^f^F zs6AD+Ywu<^UaMDV(65DsIpd-K0H+$t^5ms}f2{J3-RX(&1`fG+>I6sK71wDroZ@y- zdHujP?s~3zZ>+;1Ty4lUid7Dr)AZuvqSH?I$y~`haYLE!?BIRreJHqeutHxxqw+0h zrip{eIf1W*Uw7Exwr74qnY=qFNM7)foOKQQ;ni0@+bjE@z6`$8aQSL^$yhXA;XTt7 zX`mhKW01S94;(!zldU-~n=Ad0Z`(TGS=ZI34Vz6<;+}+b7pNTwc2Y}^#lF6u`wB$a z=@8q8YgQ6_rc}QH4vK#Qe|btYwEDUAr4|=PW5=ed;eo}Hmr>~>DSCux##DNG#g&Bq z!><-rPuc%6kgHCa&7LSSk#%%U9a0RY`tELImY9b+d#{CU^!h#c3{#q6p2F@4Na1$b zX}*&RLvb&lj+e_11XWyVN>S0>v}`Z8+F!>h;elZXKkb}NI(W3BWWi)>uYtj`>HFjU z4-=0|4lJR!#?71tMfJQCpn~=s0I{Xmn)6ffsiwdN06^~;;F3T;+(Py#L@hzMTgg+IK7)?F;Z+6PX#|fF^xi_^WE|8 zuny~Pt(lFzV~-+=&rv}EirJ=Y4nL3-$kbsxil|FxvzxA&hWv91^A( zMtFE08LJ+AA`_`h#(EzP{%Uiuc@=c401ujSU08!=yuQA$Ke-s%~@L zk5ci@6BYY#K-THKP7iBb=mR%_AL|^q`zg+4cC`GU>h!NZ=H4o=PkWpUe#(p7YrIq- zBDRs!@Xqptjn7g_=2fSfY>#ay*l_Gh_KkgK-!6C(o}yXP`2Li0@)R|vb*fkXtb4Vs zt;kH@Y+96JbF@ylfoe2`nY(*5C8(d5S}(VdTso|WHz(RD%O+bWF zP2H<>yzRb8^IX?O#TUF~WcthdZ%y37vn^Gg$w#k_Nx zvZZ{y&TjjXCHwVOGyfH-Aubwe+qvg}4w&^^p&)xWA-pca$$9$gK6Gc`zO-qf;%sR6qGk?b4ZEExUYPdc} zUCNq}XH;za^zS_0?g_k}o915J5>~?YdQ+xdXYsqg!k+4kY<{}OFHJ63d$M3t=cJPr zqMc?XYwvn@R=u_r7oT!+cel?!#{Y6#?HP(IbCawX85jF6^0|$h&*pN9vsmPl{fQbtxZN+NE36nP3dSRRMS!F)~CLWly7q1sTOj`WsqLe75 zuvk$hPMCBvqfj%W983Y5#mw&f-1oWcOe{I=dk7Q!K69P z?s0DHx4kRI!~&Bx;xZD3NegV-ess~b^nU_OtT5?#)_AzxMX71UNk}2cC9yDr-vEq$jfykk0Z!7CmPkk4R}uuug$0u-7sVOVGag+ZYR6AtEd z-J6>#(8t8X;l<{~1M>k7M-W>O4@}STb)2{VPvqYT^nkXcwlYjFECzr^fu8uMacKrv|b!F*7o-uye7Cg9!#spd14OBMWP{K)&%d;cLqU znAn&YShz&FB*6p&2Ur0^QEFPTE075@hmi}c-}Wg-#Edgd95CICQea&$RWjYGr*8GO zt^%rNpKJ#r%e literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureContainer.cpp.1AFE7EB2BD0F8897.idx b/.cache/clangd/index/StructureContainer.cpp.1AFE7EB2BD0F8897.idx new file mode 100644 index 0000000000000000000000000000000000000000..3823bf7cef7eb9e6a7853c9a058a87be3dd1b341 GIT binary patch literal 1042 zcmWIYbaUfkVPJ4h@vO*AElC728AO1%xTGl4g^7VdhMj?-V$RmkgL$_Nc&?WIHvFZRZWfB{M51| z_UD=#S?!xoBy-9v=0EVa$&791C%tFK96dNB6wD5Olw5epH0vLC$R2jd@DB_xW-nma zS?F(|z@VSJW~2VnZ(PD5j0=vr{PcRZbz=Ty2`SgqgdY>GYg$zuzB%t&#ud{~$6S-k zy9#-=_8*nKx^CsOl56|!gr%`ReJ^GgaNxehg?^hK{}OJ-cFvUF`etpF;){z1brd^J zWlMn4`Qb6V+y)-r(q7u zeLlwBYd=MLvT8lvawj8Z?UKS%W>S29Q(jtK5(?4F`{cb=-qNgNc~_lv>ZA6;(|4qF zvqFtN2H(6R>Z7417cl#%RKf=_F2d2&e4&aI!ms91XTJ++#ZTXyZtbwR5% zrpq_K)L2N%TsC^;_;6O-`zOrRf$`6KH%8yJ)$rug|CIeBNhjy4)xv8Yp%)$9-g=+< ze|qi~}S51FU)}AlEs3^2aWjE{l z$Ia>d&!eTkf9*I?`{w3GoBI=wZ1(M}tCzp{e)C_2=m6GT_y4`^nsB#YQ8QCx{n72; z>)I#(Kjw7Tzb*Iv%{P1}_skS5uFOq}1*WNpgx$vGFM|RFm{jB$l)0q1A>y<^%1DMlV;E(R`En58h9Q3`BxZ#d(o-QJ4fFq(x& znT>%>2<8SL4`@G35@-?|mjuiN9%X(OeleJH*eqst=jXo91zN{u#pVn%07e6?LpBMf z3n&co0n7rY1G|)pB-^(!$|$pWviZU^O9pSZ{5Zq!44QCJYEB}^$Hhg-#mXRtB8UJ3 zX647}($9qA&T}&VuZL5jOSW5VmohJu_;CzIu8Q}gwq?& zxM{byVmLb!3ljsIB%7oJm|&1(U;qX$BOB|B1#GdtqU%?SF|ok(D{v{u!1Vv@a<568 zc6F-&69-IMk5x|)CS8=8R=gKzlb7ys?;X=FNHKA;@v!l5*EO4WOlK~5#lxn~sLlp+ zB8+B~1UnJtG#Jgq1$G)jFUTD*$zU;AzlC;{xr|(FY#eOr5YGYqYB94rKlgnuBM+OT zlB70FHOx~$n~)8Gc?Kv9@&rsZLs4o@q97>bpr$dvWr~ZEi^V~fvBGR*U}7`yq>WYVMB! literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureController.cpp.BA464B31AB9656C8.idx b/.cache/clangd/index/StructureController.cpp.BA464B31AB9656C8.idx new file mode 100644 index 0000000000000000000000000000000000000000..9a548fdd39abec27495ece0583f0f4a4f5a8ad96 GIT binary patch literal 3018 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureExtractor.cpp.CF7007138905569D.idx b/.cache/clangd/index/StructureExtractor.cpp.CF7007138905569D.idx new file mode 100644 index 0000000000000000000000000000000000000000..006c10715c9c1970a3a084cca703ed633777f36d GIT binary patch literal 876 zcmWIYbaP8#W?*nm@vO*AElFfyU|9;>hWO@7847&e`cqW< zYsVhGogq$6S=_g$I0qe>WVU_k#`ak8`ZYQF3;*w9-mR$7Xts3imiCVo&(2<+y)iyS{nA~gb?JV%~{+=Mb{m33J&YVThm8|9`^|#-sn0;pB!RCjjw4&{{ zx~PUFMvE~_(mH0vBQe>p#e{=DpgqLmaK+jiw{3p8DTt+1|8SqtZO*w+#Qx<~DH~J2 zLmS?F<&eGKx4FOkx`c>p+2sDT$uDho>n{6ze)F5d7W!S!&1cNma7xla>@4$!mF4#x zk8H5!3JR?$1#@^`TD>u{mJ?dpc4BK<_}?w_<2IQ^m#D85%Vk^7 z$@{a$O!92|bO|?0o!rZ>zuuo1{&H8w6uW@$Yt+nkJ=FfO#6%`z?jjQ(i9H$t`?mbr zf8%AD>-t0N!cV$POFQIt+>~n#H`QZw{_;ujuiP&>gEjAE@8> zd%miOL2PklZjv1^RhYI{tX7}UHB*d9UXDSDMTA97QI1PahJgbp2LzG|p9Ai@_3jm5 zQUFSGNN^}9sfel1GVyg+mNxk<)=)N=1_G+Zbh(So~OmU|L|(Knp;Qfa#SC-fsDEhTj=9)wwyd z`*v0Szsv}<$%@4TW=K(LP9n%t#YM@*;y{{NNwI$;_f&(*Tt-C(MUV^xBG literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureExtractor.hpp.BBD5F4FC5AB54312.idx b/.cache/clangd/index/StructureExtractor.hpp.BBD5F4FC5AB54312.idx new file mode 100644 index 0000000000000000000000000000000000000000..9389555cbd37d8e4e3829c1128c01a7ded14f416 GIT binary patch literal 610 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureInvaderCore.cpp.C2E8618DAABE8B02.idx b/.cache/clangd/index/StructureInvaderCore.cpp.C2E8618DAABE8B02.idx new file mode 100644 index 0000000000000000000000000000000000000000..50da7b895bccfb3ade238c348b40fa4cbeebd304 GIT binary patch literal 1190 zcmWIYbaR`>!oc91;#rZKT9OE4GKc_iaY<2T8WRJ5O}inCl`~g zl*r>4E(wDR*UEzBKRGFi6emoX{HHd2(p#&}&nxCKSxq>7^X9_>*GbC1 zD&L9fywG%!@?Ib{ZNbXu2QI9u-WW}Pu(Ci-=txz^*6k&22i`8#Tg}MA5Opk~mGSwd z&Iv3J8COlgLa#J_2Ke>B_ zRLHuQ%ffDLSdy(}{-0MVXzPMS-{f+xe4lN_o|ELeu~!&@KSt!)zy59Z9j~bhwRkdBsIJ#l&L5=8^Eb)UR7{}-(h*xeO3N8sCLOYXHQt6e;A=r1ge7Et53y&$ZaZ^5D3 zjs%Y4mP(Fw-tqjncG_LJ?(&P8IEL$0nKz6K8taUA zbSE%>%k`MHuy>1Jj(!pS(4}Qrq_UU69h_(M!pQ5BeAXZi(e0^N-D(pW3d6cE}Z7 z_Gt|lm1E-D`2GJz$!77I=kwK8b?vz}{k*r}PL0Oo!3_U&WOYwP(d3${+S z-zxb~t++BbsRoql>i?`&U&84vz@(K+?=W>HW)M8IIa4m@L4g3Y6xQ;*?j?WYy#XNizba|0mqz`F^(l zmKc*FP?}YYRZB^UOG%D_11JXsMX71Ura*O%?Vs%3ksD^k$fF|6C#(W<5{zb)0=tW2 z=M;?xJCDW6Oth8=k}Ze@sb&@Cg{gu`v+}60GO&uktOoLc*1{xtR5)2UC19@RQQ>3Z zlYn^9UTH6qJ+ziJ zrD0rS6z&8jog7khr!wEE)unECp@gLbapJG)daWSu&jl;LzAYZ3XzeSxlaGNQG7 zY2Awpqptk=z1P6+=90iGYL7PMm{^`s7`E>(6=LvF-R1`LtAQd&ca? z>ZTW0@an%5-Me(rhuSb?Dn0_=Qjd@>B2U^XK= zYjORbwdzYay#<)KfKdYi?B?p``V1Tp4#&gN&e+$*$PEJc8c8>ZiY)j$ZQfB&*rhNCtMCJQie!lX4>HMwBY{}b-d))GOo z1+k1k)okW`FjX*VCN8jt5JrORhe^Ub2Q(7oDVQ+KQ$S&mXJEp)IkWqARsO#Wv`Jb; z+6X2L^CM6-ve|Zmuft9G@*XpCv9ocoX+eS;NEW5$Bnkp)m}v|!a~O(?l8co=>exU8 Y1VEz+$YElC*!01BI*Z3PCN>TR0Do91w*UYD literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureKeeperLair.cpp.D1329C2B9B35125F.idx b/.cache/clangd/index/StructureKeeperLair.cpp.D1329C2B9B35125F.idx new file mode 100644 index 0000000000000000000000000000000000000000..6e1a8c1b88b9c8531851c4a9e96c4b2c5e8f94a8 GIT binary patch literal 886 zcmWIYbaTsNW?*nm@vO*AElFfyU|<{1y#M!2ezVFYG|G!1lmGMAdp&9QX3e>{ z{q%xFSAE5cAy&e2FR|6izLZ+f=+Jwi@tE74oih|Q9I~1hvns`8Pmg#I-oIf+ zW9};hYY&zMrCz==h3oe8L{4GcnXI<=>7t8&O6NIgPZYO%TU~c-+Rb^JKm6=_`bJc> z=i&0EdkzWLv?aou851wRe);C_TUDu4%iX8cyMOu`?$*oi>hHd}J2P%tzp=!O&$prv z1m3cKV1DpF!^}tbrtVv_vGJRrS6Td%i3G;z{~_Eq;@aFzU#6plD#lgPLzznNuOiG=*Q{@dl+u^-p} zJfeL!s!m$*!>J!j4Jto5h8*a<8L_R?=g~gNdm=Gc_!#OkN ze%6cnHt*tTy{61VNpU*QCMVVOr3F1cwYB-+2j0qyanskDvER1kJfa?+#4Eq0u{kz< zhm@YKnpaGG*#G!sifvJK?GxI32Ft7;2gn>Mu^)N{uMGh7YahUy*!P_lA&hR^f zW>Rj>?7m%<|1UEF_1ds_!Ayeb0y+oeWSEgfsX2)tPZbv>7mEXFW<|@?&Ilo32czj#`{<8kgRf(BVXL+;o0OIa>}o%K?#_W*4>?PERtQh9Kh9&@xm#3hs$QGk<^ycq z0o#pqCof?wPoBQ;&m_Tvoi1@2sm%}DmQS8}K~vWA?%DfS57d5t9K z7qhswV8|v6Jt$6pJ5}M)20}|HZgk^Yvkd;>z5lcwqR+pPlE+ z=R3VtjERLA$OQs61ug|y1`Y^^UDJEs@f*K)urskRF|bLpNdgg&V31^B00ufE8*2>H zZ5h^?OI`^ualrJev#JZi^fMHtrWH2=%?eF_|D5>Nx-a literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureLink.cpp.D3885023DE0CFABD.idx b/.cache/clangd/index/StructureLink.cpp.D3885023DE0CFABD.idx new file mode 100644 index 0000000000000000000000000000000000000000..fff4d12c2176ab1fbabfebdf200450de7c42950e GIT binary patch literal 1278 zcmWIYbaVU0!oc91;#rZKT9OE4GKc_iaY<3;2_^;xI}QehiaA?Dqy29ih7G-ydbchN(bn|}zA;bfx~1`s(A(n&+QCiqDp@ zh)<6?aOY)nX$}{k{#Le3*>xdetF2$Iu>93pXrw4Ew=8?Z(rJDjJEe-$mP|OQcAIOT zLFg>Tf}m{f%gao{?o_m8Hyo;nc{)Y3scv3GY|)XX#MVC@1s_f-p7)SkZStq{@1tn2BjDW##wkDi&Yy|%P{)dnZeX|mRaXCh}tZeBDg)je96>p%j_bD`#9 zi+^=*emDyB9!oUYC;RhY+ROf9m;b5$`|0>U{jFS2-nsVXIFWhmwf1Xj#V97wzPZ`{zrCg3P2^|zXxyfmqQa ztw&h~tFFl0iFk3&tbWd(Io&Pye0FJxrTQ&rGx0StO^*D^yOAYhnr?A<<{d9Ry*tqp z*i_T@ERC!Tvq@T#rE{uh-rTC?_c+(?4cvU{$eM2nGj^m2u{G!2uynk9Y_7|+wbx#X ze_FQloY%x$-}3cJxArD+?+}p8IeY8y#ejLq3Wq*czWjgm+bZQMVY?@4aThijgfX99 zt$KaY0cQu{t^fTDrOv*bT)j=>#C?{ZR_y00xJ0Hdo4P4`=ez#!>~D`70xF(d6|O9l zn5V>BwR^8{&i0e%X4&iuNa?##vH0)py$<32)22TvtP#2Q?cBHHwUI`v#V5RpyYR&P zt;|>R;>z5l8eqC!m=d|?iswQBF(yR?230nGHW?KKE(LK0U@`}RcUSKUzbTIM5nxgR zN^=QwNvo){s`D~PFfcFzr8y*CwXFB+t`%TX2TF?wizup?vziNoq?v)zn(oGr%VNzY z2r#JurTInqrBw9T^>{$iz^uejl$uto12hKa21Y5c10E?d+ePRpXnN@$_uet>f)pc< zDnA21E6gyMG#ig98v`3JOf!%NbUaLwN0p0(OAzLIpaE?B!Y~7PR7F@s1Yu4G@-#$D zVLX@)pi@Aeg&8L^(OM!%wjdVh6cI0xAed?x4O9*CJ4`jqBA_tH&oE)91G|)pB-^(! z%BZrruzA27E*ZSt^5YD@GibuOIkWqARsO#Ww35w$%?_rzC^aV$7<3H9Majj=AO@HK zF&G$BAQX^fR=wk}WO`}f{=-Zv$_&Z5DLG0&QE>$+R!%N99x+i~K0!W7J^?-nVR?Qb PSs^(g84h-C5f*6xhidcI literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureLink.hpp.0D91ED9EAB478F1E.idx b/.cache/clangd/index/StructureLink.hpp.0D91ED9EAB478F1E.idx new file mode 100644 index 0000000000000000000000000000000000000000..5833e1a2ac55572aa6f8895b6cb91705500f5aaf GIT binary patch literal 1058 zcmWIYbaRtpVPJ4h@vO*AElC728AO1%xTGkPlZk=BhLwS#V$RxN@BG;g0?(rAj(Y4> z2}*fqcQtE;^i?C#vZ$viYo{N)mv+(-Tfdv`-Cin|Zk7o0na1gP@Yk-u0RD zR9dH+D8CfQp5+;>x+v`A@!s;@6x|rsr`=9}7#FP$c(V3zz3R=9hQIn#6nA~B)iZg) zmmZLIswR8KwfadpuUi%h-936RTHshwnE8w=hdR0T6tJ&TYI!sLq1}VOQ;(bwnwsl# z{MGcBKN+S0`8jW=nmXNgY+RbLWw}|`we9PzrYL{p{l3&;$H{$n9cMk?UApaVs{Qp$ zyS&S#-*)^tHQyxOuJkznYx(Z0hyUj7J~92}HtXM?c0`q~J|DSlSNcTFX$xoH{=VgB zP}nW8Ti>Iz99e`PeBk1q*Yj_Vd_+O#p_s3w{r_4rZteS=aZEskqvh~KU*)~Cx6ae{ zF?^*dUuA7)bW~xJ z+t%(o!F7ZCkigHiYu`xTJegn^b3`E5>ROH6I<-9oAFJeJ>rSr-k-BMZd5g=^vG~xF z-J2iQFD}!5`));D@=~9PUv9?538gN{n$0_=GZ(z#;nHK&V}qFu zQ_Rc-b~-{4$e%Dt9xih!b9I<&VV(k72l5O|k<3JEi6Gg6SVo{~8*>+!>iCWh9kIrw z0+4W|c>+urMgt82c^PI1%vnHTkXK>CxjD1@c2)kr3^YViR#F=#Jd2fA`k7|zKSnMt xHV!r=P?&%~QEE=2AdrUXg2xj>aZz%yI7kU6hyVj7uE>cK!qh|p_A_!a008j|fl2@X literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureNuker.cpp.5927449CCE01C9BA.idx b/.cache/clangd/index/StructureNuker.cpp.5927449CCE01C9BA.idx new file mode 100644 index 0000000000000000000000000000000000000000..a837ca0844da85615bd2e7c0a2bda9d3910fd6d4 GIT binary patch literal 1258 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructurePortal.cpp.FE6B1E0D5403E41B.idx b/.cache/clangd/index/StructurePortal.cpp.FE6B1E0D5403E41B.idx new file mode 100644 index 0000000000000000000000000000000000000000..a6fce2607579ad673a0976e51df3ccf3cf021488 GIT binary patch literal 1088 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructurePowerSpawn.cpp.4C9F50339D5A0BE0.idx b/.cache/clangd/index/StructurePowerSpawn.cpp.4C9F50339D5A0BE0.idx new file mode 100644 index 0000000000000000000000000000000000000000..fc69078e573040d329f336864864ad54156ecd13 GIT binary patch literal 1430 zcmWIYbaU%tWngel@vO*AElFfyU|_;T;@CD)xFxwbOAo!O+ffT7TfR1s|&XkWlv4ovY_Yo?^Q3k->}3M1$Hf;+OBmyzi`{8oEvW(i#C67V4S}+ zW6h-xTxo%m&Hpl=sq*pk-uc8RmiOixqZ4&UvZJJ1+@p5tr9E|9eQnQuA>M;iDqZy% z-(UXlTwI^yaD{=)@x!+r1?=*g4;B;^O13+i%xU?nkmYwy{rdI!{1i_hM;R#MURL3eub ztj{dsI?g}LPp|Y5OygL;>6Yu{184VcR1gT`u$SOckNJM>r}fvTJ`)WsAEB_&t@+CSwR~=lprp^-2#M5&r zo11>|2r%g=GiWMHDywSvvib@#NH8$40i`FFIDLJ!=bf?ulQvLVQc_Y)!=BY%2qX>4 z33XBHJ(gCza1&tC0!oWWipXhLuv&0|q=9*ZL3x@I2VeY&DFRHYKxr;XE_n?tRxNIj zG$T;@-&$>z{F&Kn1ekPz(sI&r3L0+gZag4qV2)#O4UuU&&=CGwfJqG~%`eHXu3^Y( zC=8Nj21;`tk$h^O82VL=Nd+j)Cd#Ivq0FT$%fJDY1A(H{wBjy*1kESGxq&Un8K!>r(Nx~e)qp8fIEDrMw z%ru~TK*0*L3Z@t+3<^$|u+xEEN=1_G+Zbgu*#g)?V9t~b-fsDEhTj=9;oO|reY-0E zUj~K@n+=;6Of}5OK(j${0W%vW4HQQ9bWv(fA}AJ$i;|0#K@4>e0S3&P`l<%XJrgdc zFlneWXuyOS7?N{Sa+H8vDFs;$9$rpc1#^ z@`ghlHxl$KUx{t%TYKbS-i_pdr`~H5z1{3*J=s4$XQk(zU9X>s{7Lxv?)O#q<<^r~ z^zyeJ;Eh?x8m&~Y+|-L(Bk=xPN00xZ5*b&-OlP#^K0T6c6180QP6gxYsh@vl39IJb zP;ko3OiaFgcak z_xPdJe8+7On&+gBwcg!6d!Ix2=D90k|3*~iJx#lqKEdchPs1DT^EwaW1$#rK{x|CI zS8m@wG5Ud5l-iOB5RcfY{XyEV^qc+xh&$~-Xzt+w@`?+N5*=LmPy%PLiO|2r6ev0}y2`}X(L5?SXe zdxIjYq$R&yC)h`?o10Z!nVa+rm^vh$o=e%>^ovJ;NraO@Kv_~*mEV`uSCB!1fq@Mu zJ+Z{;>#IHQlm(cCfzpzal4|_+toA}6X;AvAi(2oowCaVM0Fw|mps1~ zs}?s%KO<28zqQ&b`7^WE2r!8PrRAjM6!_iP-FQIKtUzhk5SgX}4dJf^n0SEF{F40Y z{D!QC!XRm8pfu+Z$*1;-p-i?ASg;rE0zS>0t*2~NwCjh zZuZhW?!9B$1t}&@ettH7?z(34j_J$=uXy;~7~R-l4ub^`P%kK0V0v#C{LsC!BE*o9 zi=T~yO%q}tBD8?2L7@aw4WpU3z@dY%3FKOsBrK$WdO;xs6NWhiC=3c2m~d{+?7m%< z|1UH0@XIL67{Y{M0R~hJ3MiN`ETDkG$W{VFC?`=6=y;fE@c3jXE=n%e2YHJZ<~If= a{?_SSjXz{%Co}W$3NrA)B^W?PKmh=Ub*8fb literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureRampart.cpp.2A09FBAD12E93AD9.idx b/.cache/clangd/index/StructureRampart.cpp.2A09FBAD12E93AD9.idx new file mode 100644 index 0000000000000000000000000000000000000000..62bd418fa7e4537c618da41a349508cc48289421 GIT binary patch literal 1144 zcmWIYbaN|UVPJ4h@vO*AElC728AO1%xTGkvi;01uk)45|V$Rmk!2DYV0^eT$($;yK zDqMQ!TdI)IC94G4TU;6o-`-P7mOpa1Q~CD7xBK6>26(-^VYSWEX3qKN@9pZpKb)Za ztMHY{nGAF0oeQemoR`^_D(Sa!iyYoGOG;N+r$j(2{K5mR72LCXldXi0F>h65E?;eX zWvX05n&OmwXLoM8N?f`V4!t%Szc(B!cNh1N4{lsq_YUCRLpj){T|QJE;;e? zacMIqHt*t%4YH!BCgckSNwKcVE0Ve0#jmO2+rn#j_ja%}*cv@axa* z1=Hsp7eD!%dHpLz8{Q_vKblXN`kvm{X`H{6<27&fU;l7%i6xo;jb0vW{r^y*DJlyTH+rr@_&slYRwlUs6EU2_ax@OLl&1mQH!;s?1; zRScHKrq8y26?f*#oOt!v)g@CuYxDP=@14svndS8nnH`3w=jht5RzLed&*9-#-I^_5 zR-fr=cUon~k^JLkW{K3?4{Ed5g}eFB=E)O&HrdnWg`btW1l!e_;-RZce>Lv$x}Lf8 z?6h6%vXAb1Z~2m*o8bMLW9h?9->SMkx!(MLwC|PRUM~5f^Ij0QfvKG#v47GFk?go#0!*qvX(2Hoc_kB8 z6R>V(pmb4cTJZ-U4RZsd6xac2$3BL59w`cj(X2emEDS6HFjYVv(3LPr9%T+z4pEph zd6aosctv2Y;!zf25fXtpg3V%PcYf~sTt=V)W-RtF<6v5WmV>+pGZ$tCP#EMbn6T4< zT}nlg?b{e-lv!L^JYj~w>;S3;`4XmDGI+b?#~FTS&{P+t<|G2W%}`vFTr3V^D1itt zU{+puFL+1erg^^^l^Bw9Q*uC3;tEo%oLp=?Vxqi!f_##E0(=s}^87-wLUKYf9PHd8 GEYbi{>B^P> literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureRampart.hpp.F0DB1B3DF22E1056.idx b/.cache/clangd/index/StructureRampart.hpp.F0DB1B3DF22E1056.idx new file mode 100644 index 0000000000000000000000000000000000000000..bcecba508e4a6bf0c68c3ea0c3a8a17d7354c5f9 GIT binary patch literal 922 zcmWIYbaR`;%)sEB;#rZKT9U}Zz`!5^#Kk2=nU5G57!CskD(0*WKA3mgfah!JKQ5-- zISz^Ui=#G(xn5M#oReV9*5z|PO6R1&%O!t*2bR6D)ZE~_p<6My9|%Gw9ok-N5OMIk z)K^9y))?ug1v#sknq_Y1-ItilX`oPkkg=UlxnReRW-rs02Rn}y7_|s`b_5u2-*V#f zrR-B4>_?^`mu3X6k*Ny5g$! z*(15EZ>@G8XV|yv#OsCTU9T&*{j&>-;keUrAh>tq_j(C+!PLYz1qKsrBT5fwi!aYG za6f91y~g2{6x&}(8NEJ7?woN`=pQVbkG zIUql3+)}91EkFxWJCB zYc}tg&Rp<{2SpK^#mw&f-1oVRJe=YR;+il$F#iCJ1o;Cd4D$z2803DKFwFfxVUW9F r!a#TDBnko@2(ttpjts>`$;ILzw?hLM$YSCY-`3_Iyua~1BL@QjDbQf3 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureRoad.cpp.098CCF07120857AC.idx b/.cache/clangd/index/StructureRoad.cpp.098CCF07120857AC.idx new file mode 100644 index 0000000000000000000000000000000000000000..b92f61ca917bb0a20f89faf63887d93be0a272a3 GIT binary patch literal 874 zcmWIYbaP8$W?*nm@vO*AElFfyU|9;>hWO@7847&e`cqW< zYe!CdjFzI}Qr1~T9$hzlXWu?`<`(C)M9)4AXRR@yyhIn`n2x=iVOEohR0b zJ03RL-8f~b)TSj*wbIsl-&(LfS!_?hOeRe^<-@NSR`Tj;Z@99xj8XCP>BY-pUv4vE zN-6d7l_^-ar$^@$!vz<$y-yci{8Ky6Nn4QbnMLzk2QK@2-{SY2=2-e;<$~)1E535I zg|2sh@gvXXXGwjtTcls!=ZiH~+G^!b*ZeS=UnBE8^`}j9qvra(tTBuJa@L6b;h&)S zF6QNFDfWoBBJZ!=&e>6RX$#l6yeB{HHnDEdEB(7QXusjEu3+c=ae}{McW*U_y6AST z#m+-H#&w0tmzArGzp+}`9b=gm;Gfa(;w1O!N2M3DiVwVt^sOn;4*L)(ZSi21qG?Q&&lC^&)&KR) zZqIw+`y*j-)W>a|nhhJG!`bdW5WL{>_WweO zz5ZEIefFQVf{0w@M3G+%`G#?BsGEi{0i&RpvORoPeV-vmLSoWOu>R+4M->d&* zwXs!PQCyjuWCu(WRbuvxL5qu%#F*se7!+CfS!5Jsxn#u|IDm3Mz|I)4X2Fa*I|P`N zfYKbo9P$b(tSW*G5)2HCKJsX2)tPZbv>7mEXFX2p*@jDNiErq5thU{C-GKtXbDN{$kcEvg{F j%+A5WB_hnt!_Onm!^a~gD9bA#Eg&Nx#m34h#3Ts-C|Oka literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureRoad.hpp.223CD6C4B27807B4.idx b/.cache/clangd/index/StructureRoad.hpp.223CD6C4B27807B4.idx new file mode 100644 index 0000000000000000000000000000000000000000..b57d03adc008be7c3a7f6d820c46b03876e114a4 GIT binary patch literal 596 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 M94|VJ#d8+_4K+bVYXATM literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureSpawnSpawning.hpp.E6E83D2B23730E54.idx b/.cache/clangd/index/StructureSpawnSpawning.hpp.E6E83D2B23730E54.idx new file mode 100644 index 0000000000000000000000000000000000000000..94764fa29b4cd3a8678a9ad995b5b57d758c636f GIT binary patch literal 1236 zcmWIYbaOky!oc91;#rZKT9OE4GKc_iaY<3;2Sx@48#V@piaBei_;%km5NIo1Ti?1s zBuYa}_sgWNpNr#l4yV(8fVaaN>BYwQD=7$xM+^-aV zELb$T&v??ZCG{67W*G#{j(#oma;qul^wzh3R_v00w?xiHaeY*}Xn^vU=s$-)r>u8d zr)d7V+S4NX=$@lVRkO0+iO2(bVJ(VGR+2*`A`I@YueTd8Po95KvlFMpT8@oYkBcq?;9} z+hF76T1|~TE5(>Nfzs>}?0URPTuKTs-RAY?JG|!PZxCP-1WF622x#yc@EQn$bTa{U zze`a)X|gh9uK*JlP+CPsMTysk)rT7-4Gb3shN9H8Vt1qvVw41j3@k)oG!qv%MCzK& zJEk)iyy5{n0VW9x9iU!NsKA6_p#l^Jg$7KxLHh3|@h_KM8F_f6)ueS`!n+P|m%1*# znaIS+%g@Fyg0RVz(Ul)&R4}LO-rQ7yKA>I$HUl1*-(dj^v_zK*EG!h5>~^0SFU@1t3ru6mT%%)gm>$aW|6BFmmy-aj@xtf)WghQgadofh?FW q;c1JZxG1?;AEbr{tPo5Hz?n?EXYzcO8YjLsV&>r&VBm*KFaQ8tB)xn9 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureStorage.cpp.01D44A517E7D6DFB.idx b/.cache/clangd/index/StructureStorage.cpp.01D44A517E7D6DFB.idx new file mode 100644 index 0000000000000000000000000000000000000000..f2045b3c2e8f1f8ecba6610a6b1d87d52af4d368 GIT binary patch literal 912 zcmWIYbaU%qW?*nm@vO*AElFfyU|0POe)iuYFtk(EjvIyQgTVE^1MFn>g=&&;FURMULyQ zJ05Pk=dfrclhkB>hrev1ve9cb8j~X$uCTa=OH3{`e7#;lcy7lc+gdMnUEQSg zrrV@dn{#rDt=m^8@db~+&p06TjPti8|FRMZ`EUJmcK7NXU7qu3YTlY1{Q@qTe|8zz z{ya2eZR+h4Dxc0KOh4fIHulNw8&S9HM7Bu-+Wx+TRfPhZ0ZzM^29@a{Xc!P`~5E> ze5~^{wT9J$bZc z`OH5I^D;fJ6<6ja*#T33X)oR5-aDpUkYeOf;$q-ph3ncqxluDI zW+pR_5*q`X0L(5R4``17R1&C#jY|xs1*V2k3Pll28Ym2M1Wd2ffn7>PlI`0VWt7;w z*!*CcC4;wHew^WV22D6OXLjGN%Kw*vu4FS~bAhP_`XVP0Fyezp zXvJg?W}Buu&jdzZ8^6*crLzP2SS*TW`ZTf&1nE8U+`X-pmnD#K`{MdZei{?I?=d_$ zsqi4lcH$Y`mI|J$6E3>XKKOY?;0pHS1a1{=_I%}4rLU$J%r5>i;}VbSYUZtLU$Q74 zd-+OA%S`uym9xOJ!kq`>Iu&N5-nG2G`MTd;fz-EI`wq+8J*`(R>LbCKG2r9Xc6O72$G@qTnko>R5Gbazb5oEk0Low}#~ z=3H)_^PjWke!1&<`&%^({gHQ+7>X-%lj4D)C9r#Pqh?afOm-#~CI&W1Hc2rs!63=N z01QJ$HrDGrnIiHJcdQg+VqpfV2Ld()E(IwD4hUy!Am^%Shc9gqU}A?!tFx=~z@!<9 zQqzi;0hM~`9{1ic?Sd2&CmRnN4|iR&dB=3-f>%6j>Wu1aFhepwC}huaejmxm#m2_L zrV6nE;YKDdu-g!NK@Nd=0On3cNwE81!Z4$O!XS6SgmZId_wB0uf0>boO;SNp4<=lc pnv*C9v=$}}4<3f%qU2(6pbQfm^N+p%-69MRF|snS!d%F}0027=>L36B literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureTerminal.cpp.B0975CF0B9C9E88B.idx b/.cache/clangd/index/StructureTerminal.cpp.B0975CF0B9C9E88B.idx new file mode 100644 index 0000000000000000000000000000000000000000..8d3c3b687d92c250d1e80de1ef5d3dac43df69a1 GIT binary patch literal 1316 zcmWIYbaRtoWngel@vO*AElFfyU|9;>hQ{XKG7$Ot`j@uS z+f-riJKs`;gf3ZmL~ofE;+gSXO!B$Y9<{O*>n(r3@BX>qfJXLlGtSP}zYE`;+^f!K zS+wuWmWG|hjMp|wTI{(bwWM@MP~|GQC5xZE5I?qY0k>l0yTnem=**W#W~^VB;Ka2v zB0S>Yd*8Wf40F!hy7WcUSJZsoL#YKOa^bA0OBcLXUaj31A+Y{JxQ6?CnN7~;B9=Zh zbqkzr@|$r_9Z#lpom9^%6ZXd(JGl!uuD6{NyU3BU>*5KmcF)!`U&Gc<$_%qve$-#p z@;5)oYB?d#e^1eGP29rQkMyr5ao*CM z@H^q+Yr%38$)EAd#WPeo>t%TlfAoFhKWX+4qc7*(0w?{Eay&jGZ54w`fGxw`i>t0J z%PI2?7SlH?R z-hU%*?;`Vu&WV?*qoy9qN^q^sxmPeDW6`(&0X=TTzYgWbO?zS*`0n{Z$@2}1ZhdIl zbbgYp%=)Wu_cJ?voVYjornP|o#C6X5_fNj?ezL55WUcT?ncolYek=cegnNxq%;m%z zzpux|uUYcbY0~^hGg!kIiYs%IYJh2c4gXzZp=(nY3NR@tFsN{dbI2=euxju!NH8!k z0;S){oSD6bmt(IOlOj->MVLiJS&>UongN(2KwycAX2Ro###aTHRDse$;zH8OR;*T> zAl=MB>7a}swkF3EUkfm)0i}5*dF7P#+4Xrq(!gxRP?VZh90;_HCP!c=d<#turRO)!dwXC0bK`^Z;Shy+ z4rneLuQ<$H9u*-LAyJrd!JMvpb5jNSn1RCTLb@k4x0t#iAl`t;>g+ZYU69$HCP9i9Nii?tq#ep=l3P%a^rcjQXYK+PZ${-mCNX|{k pQ35i>6{J`>x!8EbM0xoH`6T%S_#}ko`GsVK9!CpCzvM{O|R9X8Xl#WPf;5@ZJ2l+#Sc$-S@gl z?KZ1hlk}_bD8E{V*iDAw%G{*6z;N|8D{8PZRL*B-Vqs$7kYbY(2NMjE3=F`~X5?U9 z!++OU=-SkU0!*yHXaNBZ4OR_a1`Y`4oy?ipYj`>KiZQXkq!qaorD4)bR5TMFKQz87 zz{CZUwqmv7gh>Zw{IE4SrubTbi5n)Z&#un{lV&JNO)FLhy2DHNxc81}7o-?@IP@9y z*6M`Wnq@V{KUis_Dfx}dB=3-f>%5oAeX@;<2yQZ#2S+dKzi+M z-C%mxOoUVIwQw92%c{r>@t)yY9c{prDZIF1j%C?#? zIat6kN`eCnW-lzjfWpYm$<3MFx2y91WuSAU6s7cGs$qr!RfEC}CJYMzpfD)BV8X!g x%1IOix*28~JbD?5i;|1=LB8RHd5M969l>OSGnqJaWV5b{o}K%GnT?&30RXpeE)4(x literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureTower.cpp.9172FAF4873D8232.idx b/.cache/clangd/index/StructureTower.cpp.9172FAF4873D8232.idx new file mode 100644 index 0000000000000000000000000000000000000000..2065f34b915b90105d8e43ba9dd6ec6da5581ff0 GIT binary patch literal 1468 zcmWIYbaUIn%D~{9;#rZKT9U}Zz`!5^#Kk2=nfsX-7~XL)FjUOB8y1^?%RuDo>tEVR zZ&QVf?|e%Y61pUj(y)z9n(r3@Ah0UWmSf5w!9T5=kGe1`PH>& zT4gNb#i9;fdKrEC=+wiqr%Rcx2}&&}xfok?_H(bP&%&=3VU~M5S0@Dlf9Sa!-F z^yq_{8Fl}kR5%L!ylgNl?pNG~n{J!yEb`2S|1bKVY}9k8&fwFb+&@S9oA%j%it@JL z-1G3-%b%A&UzFItC*jNMFe7GR(J}9n_s*|f$5PZ15Zhc9 z{mlKn%%<&in@?73VK2Y;e;vQ_nhR#4T5J4t3zd1pBHQz|*HjziD~s)Sys}kn+G!`T z&cz2;cySx_>Byzn&rUd;)P7&0;+xLYWivjAyhxaXt1`jr-mh z^yf&_I)}?LmER}%wO?3h|7G92{sKYQdpBzYe9{&^ci&tfQ}OqqO_yBN1%t$urx?$# zU)Okc%PQ8KS!)9VyV##>>bN=U=2_m!ttVDV@cE^Dz81v%q&4>W^1?kwBiwDuUVNEy z!8>wIg<5h{*OUwMl^(k~tx)))m$f&8dC5*wu_7nYg|n}FB(JRg{xkV>_fnr5M{5=& zMLvCVry4=<8?mCnH5Jou13sDee>mrZDD_8 zcJH;_K6+8yyEsih8_eK2bk9&P_l|ehs>_x?edb-c?y9=E`mU`;C-1o*qBWBx@4VjH zy*5$F-M!^)@#X7B%U)|&3E4eS+m{sD=`UFkm)|-~HI7Ly@b`I<#TT1wD`FPuoV+ix zbAHPMCDyi}%U(CF_saEM@A~$%A)qql{ZyNKyx|i~Yqsxx{kH7ny2dS=C+i5x)SvnH zc6uZ4EX!$+YWMKO8PARv$v4i9V=T6P&&PIe@tdlKNo92tp4GGbWDZlf+|N*4nVYl= zn4YEd?!?6Xov$Xqq@%>3$s@)it)a=T$-^MQz`zWY-p~5qQO&H}Q-DbYC@m-=D5YV@ zYRC(~m#n3RFKIRrT5G?ciM zBp5h=azGGvPE=>nG2xj4OjdI7+;@!h8**8KuBpKUS^Uw&|DC8<-hDVUU+$!Z6eL!K5|6#&T2X-kHNw#lel+omHFvmg<$>wdYVN+2xc=dj&c$~FWZ1cRIQS&Q`2~apqy>Zoq(l`3MdU>k MMC79c;c7^T@<7Sc7yRot%~sUk-tlht zZa8|V!ujv4m2ENer`@aJEaSNN^6H(x>zudz zeG#xet15fNSIxh|AFq|D&in7F8^0*)$SYyxeGlgpSLP<&28NoH-kq4Zzw^}un7Dvp z3Ign!?3z3b91zZa*8h%bX62p&Osp_zLsmm>m~_eJVxf=?f8vm&Emq#Bzmh=`?8YEww&9bLS1_&l{dSTvmVIGsn@v(ZQ?yd*!oNa~3Bu@Hkl9oXDKZ z>ig2uey!=R>l$?@aTpa`0BZQ0#u?*ITir54E_gDh0duZDPKl#`C*Zz+d9hVojq}dVUGp*BaI2GBulYQg zYp3$GLRns~nia6p&-r~H36X}Ns*RioaLMa=6qyYLpxl}cTt zpZ!n2Y}@1)u|JmVtvGPw*Mk+8c2BXssU{dSW6ys_&zmFMO?eWU02tmFST**z8u zJhSGsRma@iZ=Lttp|~u*&mto)$0aAuzyXv4fuhv3 z;zl6NW-+rnKlgnuBaZ@$0gEL}o6~_^N=1_G+ZbgOSnOGxVZtz)Q3`D251#g@TR%>m zmki!+`EiEd88p=}X(piA3@p4b%|IT|IWS3}OL7uHE-EfcE*1yU%nHYM?c)0N<3uT= zJOjupP>`IPlA{D@k{edva)apGD-jd9GNDP literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/StructureWall.hpp.EB8FB3D2347C00B5.idx b/.cache/clangd/index/StructureWall.hpp.EB8FB3D2347C00B5.idx new file mode 100644 index 0000000000000000000000000000000000000000..1bcef7c17132c8c26550bcf4583e2cca0b2452f9 GIT binary patch literal 536 zcmWIYbaNA6VqkDi@vO*AElFfyU|w$H!EBjw!TI_W_2)AM^bS50=={;2nT8t;__R>G?5G|&66 zEcSThrzvc@eUEn{`LLqdy=mmcv+-ga@YTBcaV7h-^>ktU9+VYFMnjYeo0*M zAD!!;uD$wUIPLx?Gl{Lscg9WSy>+(jO5P&Avt>Rn_nT&)^Zm|!{KoDR48@hXNe;j; z;WN(U-@W|u2{9%XW*`>`*yOn6#2GjsoF6>xQMZ1aIM2=m3^X=zHgRDv!63=N01QY* zHrArlwBjs~E{mDn`MK|N8F|>mWyRHC`kpLaz5V6!*RvS8*w{GOlpuy8Y-N-L+Xhn& zqnWtCw$wG7cT8t4c*TRFs3V#0M=O*?2N1otS~zn F7yu!1$bA3+ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Supplier.cpp.89F355B947FA65C4.idx b/.cache/clangd/index/Supplier.cpp.89F355B947FA65C4.idx new file mode 100644 index 0000000000000000000000000000000000000000..24f0a1fa60df6318439c97f0037209a8f0b46415 GIT binary patch literal 1496 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 Z5WvKmZ{L1xoA{#hOl&L+Y%pO41_12W(5e6c literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Upgrader.cpp.9FC1FAC0A0714416.idx b/.cache/clangd/index/Upgrader.cpp.9FC1FAC0A0714416.idx new file mode 100644 index 0000000000000000000000000000000000000000..226a3109cffa0765e00c21b89a54792ef3557bcf GIT binary patch literal 934 zcmWIYbaR`>%)sEB;#rZKT9U}Zz`!5^#Kk2=nSU4=7+5(O7%Jv$of@Bi%Ru13-_&m{ zGR&9als;}~Tk~|GuF{6EZVS&YbVF) z3nA~PzRWE@c$6(-#Z=cX%a!Wpm9MC(Ul3q5>CPwjA1h7fJXPi5y=r<9sUVB*8F~YGwR1Lqcay?-&=HT zzQifMFJFF&mvUBweSGVB!28ZVFZZ`^PR7(o$G5ik?lWFi%P-~h^jKv8O1aSV`#sbiD^E7}=e zc=E2?*?bty$Ri~pDk2M0b;#x4PU~Y&Co;-NNpMIAz=Zu)$^`e;8_ov`%W=qwz=VrZ za}q&z6&EEJp9V2hK?DRS!Waw;vIwROf~f*$GD{uMJmhJ(+@xJVQ$topQBFZ#Sw&4% zU0O+!K?AOeK?%WBKrq!1Oict+62VkPFx3%EIRq0FnouAOV=yoz=ceRDPwSY5$+ZU764Ql{w8k z%AKLOGB+t6XggEtN$!dHS#knQEI@aH04pyquM`6ZgtIfe@Z?>&v-#{y%!~}I>|E?Z zV1j`YEX~Nunq#tWwxH?0mtsuJObo1C99#lm0;Zp#C^fBkFHo`YRBP2woyr`HJgi(& zT=Fn&KUBnoI~T9vW|U#&(&W;I3Bz2)C<%5A%oQ-2i3{us+ov26GtM+|0F4CN3zK~7 z{lW3XN8Tz%E>=bkMm>l>7#LOu?G|zp5?#&2!^$qht^`vJ)Qe;<%zj2G6eEGY$VpTJ wnzXs%qr?KUMQV&N2f|EcfSFfZlw2$hRLR7;QTB-96;2*EMm7dEm?Ib%0PNAF6aWAK literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Worker.cpp.930A180C370EA958.idx b/.cache/clangd/index/Worker.cpp.930A180C370EA958.idx new file mode 100644 index 0000000000000000000000000000000000000000..179458541bed328411c0fecb4ed5b046bcef8bc9 GIT binary patch literal 1816 zcmYk52~ZPP7{_-PNXP+M0|_}c963lr1QNxRa*0SliWlOj6k0^V3nDhb76mUnkRyoN zN=rpiqLyOSK`mfFs8Xz0Ma7DORFp$;DlKtf%1p&Bw9m)RWb*re|M%X0-}k;<5)~1F zQxRlta#W^1B_qieK@ey1XUs6H*I@{yI$Zeo%b9fb~`Ia$A*kUcdjx{e7U$Zz7C6?HK6v|8XR_m z)q8WKUC&E?+!vDfqCGBP%P(sNyR)q+N0T2PSItqU$TqC}@L}r8nFUYhWY(0?e{H?6 z>xk#dS=s|OVRk3(H~6zk7fT=HT<@fp z*IlaUc*>^vwNwJn@zkSow~-3f!;da@&%dct(QfUzA}w3gn~}lU7vjb_Jv2gD-e=}{Z>Y4kFJ)az zwJYfQZrfaotuXKV00+Cy{^(`P@5J|9`G&5l!t>P3$X6>4jc@d+RqWb3KQ6p+(X+97 z?ThYRVbAAfx0P&?aEN9Z{l?%Wb>zI3_y$W^=cY$Kj=5%0@uuqOF56c%aeY7FZf@11 z$AWUpatpWhVb#2E+t=3@v=&I^m@f*m68x5l=B|BdX7$%ar+HhNWuKfmJs8_n=xa~h}V@&0( zyYj}5-^qHSe(oqiYj$W#LeJC=`Q2B(+WThR@7vQ}|M6*Twjd!lcVza=!Jn)>U7Fyt zrG}>8G!1_-+!uT{Kb4a}&)RqO$>{o%xa#@N_?RCLjcz^cW;r+Rq#O+2ix{`)SJjhK z^|zGklvi<$$931l_ZK+7=A!Jk83}8Pg3SUv;7)RQ(NLwe; z`3m_|J|Ea;YDG0srli+6#wYDYRMd$22?bPvD_CGiS!3K!ei2Sz15_^sGbfDw&-pw{lLPn9{ zU^SDFQ{+>W55?!b0!_gP!i(a?0$T)={Q>8KD4E(2#82`0M(7QJyv zFWp|$Ya;7yK@}~i8gwd_rfblr;6?UKB9a>E01hLSN2DC8bXq!ViV~+Qpvp&S`REik zA9c+~rO-E{H1ky7j7rR?68P7`$Lj)H`VW%54Ym))LHY|TiCEJP&2cguN(p6yFsO%2 zm%s@wxGz$XV+c$pA;!gAa66>pi`}3nvsqAx^Oi0%+o5NALXLR3IptxrzllM;7fV-%_l WjpfMX(izSS4#UaL*4_b~hWrbTp-Hm< literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/Worker.hpp.1B4F55BA941C3024.idx b/.cache/clangd/index/Worker.hpp.1B4F55BA941C3024.idx new file mode 100644 index 0000000000000000000000000000000000000000..f91915974a4074514d5c28e9ed509fec676c4242 GIT binary patch literal 1022 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 M_pcfJ;pg{%0I`@<1poj5 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/binary_writer.hpp.F4F05EE094B86E77.idx b/.cache/clangd/index/binary_writer.hpp.F4F05EE094B86E77.idx new file mode 100644 index 0000000000000000000000000000000000000000..2fcc96a3529894a823f80e2fb90ca81efa099bba GIT binary patch literal 22656 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/exceptions.hpp.4E4867805F2A0B34.idx b/.cache/clangd/index/exceptions.hpp.4E4867805F2A0B34.idx new file mode 100644 index 0000000000000000000000000000000000000000..a88ccedddb1d271bbe59bf3ed5781bb6a1fdfd92 GIT binary patch literal 8336 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/from_json.hpp.00480E8AD10B3227.idx b/.cache/clangd/index/from_json.hpp.00480E8AD10B3227.idx new file mode 100644 index 0000000000000000000000000000000000000000..0e273e71a19d08734d9a8cfe0b126da41f33bb5a GIT binary patch literal 8328 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 RrlYv&aBk|&O^0#Q{{x;czc&B? literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/hash.hpp.D43924E75250C03C.idx b/.cache/clangd/index/hash.hpp.D43924E75250C03C.idx new file mode 100644 index 0000000000000000000000000000000000000000..cd909c63c5e3d0ca1622c8085554c494fff87762 GIT binary patch literal 1196 zcmWIYbaPw6!oc91;#rZKT9OE4GKc_iaY<2T10w^&8YTvYiaD)8zTGm40$<;(UvXG1 zWufF|?wu7<-vmy`O>!`Me(;*m+Z(qctbQN;_dUaW^BKLyhW1ZaKkp6Kdi>k4ddmY5 z%YcI4uaB2otO}U;*}7diC;Q6LC9tui19QD{)^iDRdMOE;p;RC*X*J7kh zmiI7k>6(6=RqHnK5TrcwKlkSX|zSDi^08H%WhA&nqupe5d3Uoo56wS z+v@liEMi>EWU8%Gb^PZ(9j(=pc_Njy-kSGHzi)icC;asRch>r*`k-2aefM8nuH0nG zY`O1zL{?uq=PwE2-z6VwR7<-;?%k}J6Q{TRU6t*V`5yur1kRpj5I=uCKjHe$|6!TE z-ASXQ4rHf2SQf5C-JxmuTHPtD6#t>xEf70^4Y;j`+yM%^=$g?d}^O06vFkKA-u z_DDa{Dks;{Zxzz4)b=Dzbg@Ci6#hlG-`v@>=Tz9K^(lWJ{#vG6_|^5rv`Y*A%D?@x zJ|rP_=G-?+?)+JjlKyzpeuoWj42mmrlbnF@admt1o`*TUEj$c7ybPSOJhB2{fEBdK~ZX2aVs!3Z9Y%Ab1RyUfsuzZ zR3p?JW-xo7gvP9UE?z+4M2$o}m@tfHmIB+C@lf{2%c!O-8BP;b6HS<;45yu{9h~QS zUhf9SBehN@9!_rsZxxs#9?len6gUs&TmgtP5$0+MYe~Vh$Z+aQ=*uH`#^T0u2%d?! z2@=m*!Wv1Xowyy6oSU#4l9@ijK1jSE;UFYlgm45BFHSfPiI*&qjATQqa4M2qns6Et zFH<}dZoAu_)^|B?(&n@BaB}l-3&H#i z%N8eX-M|ctJ^4^Im@p4#w0txYFHt@b&Qmk}YrJl@)?r}G=JVu>0}~S%#CNd7d*4&I z1{BWJ%7jPw^ux|`OY00@0fnPAqD^2H*i5fpd7|X%7oazcRE#uW!aSU=3a;=-<>3re z2t?wAD}*EQVijWHJcgpwoJ5c_ii?tqm4P%9XI<%owGNY+Co*wyGjM}l2qw4?OaK_U B>B|5B literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/hedley.hpp.909236672F1EC8E1.idx b/.cache/clangd/index/hedley.hpp.909236672F1EC8E1.idx new file mode 100644 index 0000000000000000000000000000000000000000..5ac1ca75b72851e3c17fa53fb1e9419db107c0e9 GIT binary patch literal 6832 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 B^-TZ( literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/internal_iterator.hpp.1A3EB4118A8C6D1B.idx b/.cache/clangd/index/internal_iterator.hpp.1A3EB4118A8C6D1B.idx new file mode 100644 index 0000000000000000000000000000000000000000..3d1df828a428aa71c69fc7c692b8d28dfeddf8fd GIT binary patch literal 632 zcmWIYbaN|UVqkDi@vO*AElFfyU|hA^O9#hk7E_SwvaJV$NsFTZfX z@W|NA+Eg}4_3xK^o3p0LTHk5te89Cy z^T-C{eMy&flto*vJ}`Q6=<2jn9Me|4XY?)m$06I)C?$K8vt;Xm)3<*M-#FE?@x(6m zGYU!xdzRN0Ga0k+$QHHj)own~`sAa6={(zx&n!ktJWH3{$@;4p@pc*0s~4FZYHoYa zij=Op_xk4F!y#wi+ok7Ps`aQT*m#-!);Z#(7SC(=Am+vK_nH&~?-dZ+%>^~J5gT4t8t_ct>XSLPhro^@MG}1WbD4bJwgDTm7%`F>wQ>MI}YG!30dYC^fCP7-$O26^vY9 z+cO@@9(ftnlm)XJC=9X~rfO35;yZfFr*38BVHIT&m4Mj+a|%#3$Q>}%FlnGL$bOhG kLs4o@BFG2DMajkDK$?j)=i}FREzQg3FtRbQfn*>60FATl0{{R3 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/is_sax.hpp.92C5DFF09E6057A8.idx b/.cache/clangd/index/is_sax.hpp.92C5DFF09E6057A8.idx new file mode 100644 index 0000000000000000000000000000000000000000..060995a8322d075ce65dcb702618be294a1d129c GIT binary patch literal 3638 zcmYk83se(V8pme_h?8VM9eLb@1SG{QAc?%9u>=i7QR~uG@PS8cwN<-?cH8RS8PCU^oWsZbzWd#K zzq$ARzdO$Cj0|G{McJOqZmD%QRrpdA6^Q>Dn;NR$q$%p8A4Rpie#o`laVu`dImcc4 zMOOKFxvs-^NOw|ReSByn_DbJjpY!HNJ;Q}vPX>RiTC!x;Uqd48hey{YPFTFXU-ur_ zl0V_M{T~$%zn-}8)9}r)`;UB%CH740NHN&Qe$lIBvEH#P{k=QQi(d&=q&mJET6<^f zrRxRX?&G)5|L)}U$OG%+=KVa{@zLgb+xD$d_C4Q@4Od=0J-B)}5DsWC4@imtWgYhUtjaWiIJOg$Flk=Ln+0`{lJ~g@jmJ2>l$r)5@u}3 zxqUl-|7S1#{rr*ihuR-^n08-##XV4NwZ}zS%({kg=KkH=zgc+c%yf52LS$cW{WYrb zFHz&U6WOjC6+^KZpVyq?Qq8UFPtH1$zNgxizH6Ix`M!C7a%{>!JAU>0>#q&W9&i5M zpnv${mUHcB=HX@2PTMBERmn?te&Q?hkN6>V=+T#{+kP5c?@j)wwR2|L&Z1ko$S2hN z0aY&5*jiiZ@u8?o4==YIx>)X`WaiGMP?9W3BN|FRgT=c^Bfr6{gJGkG-VRnWb0R2| zrN}~}p@e4q%elCFH~P;Jy^;ymQK&{y6C@gF{@_%_ihut632qL=!<%JhwP?uj2Nv}G zQa3Ro^vA>774{&}K>x{+Gx9%<_s1%kU*X~13b$G`(7bWeJARL@-oedA++3xo;za|^ zj|a}aH$3!J0`83m&roEjMFY*>{CTp2`805$l8M5}sbs3zqM_u|r{Ool@BZPFvRkE9 z!B!;`jspxbL!f9Vd4TL`fa6uy?E~{)_;|pu zLCNTGK#(jbTr`y2AInd8gUxaKGdCW5tyjrJ;|x|QR)vZNGI*o@L0^t0w_nDD;r=V8 ztulFPA#h5j#V|J``|*nz((nIIexFN+Tq4awl$U9t-g>U@qV83PW8kVS-uhAh## zD`Wdl?KKR_7%dL4PP6)phD^ave$_OeZ##=q#G90<$P5(?r0CvceCg1V&v3I5H)kud zdC@@gfe&08wlcrFpk!k4@X@kpt!PMsS=_HzA71A7uOMa~?w_O12^S6YFMnf${aD$u zYf5G&?mtI1Cqy)qT){kDfm@G{AHUZ>@2--G!2!v#WQ}Mjxe}{KSfcc_ZSUTE`RF4h z6Nv+~GOboLl$;Z4A`UQ*#|O!DTYkW&0B5jNv6L4LWYFMV)!2j81WKe8q5`XKXiwiQ z_0)j=7=@@iSWXVP7P*$e%Yh1UkRUF`+zHUNIqOfwPp5 ztHf1KDBqSpwJjVfuoXzCaB*Q8i7c`fr4uSnDPBUTWKoHYP^qOfl~9?zY-$-fR2f%k zBClGTTAM+rF0C$`P<>jxgqlN}r&f+bt(w*d64_>GOCZ#4Yo9u#!eZJy z=)+T?9CEM@6*&~SY_5dz*gOe2S*L_ttV=@qY`%mF*a8U^vV{^VVv8hH%oax&&3eiBa6#fjB;1a$Z5(o@I-RgRa82T(D%_DI z$d%(Ngdh&(oAa%NicCc*Kyd8vX%KEvI1SK@-NM}olc4P7?P7f%Nk_yw**Qk#u85`#Xn`L4f4f%A$+L77C|s} z3!f+8hE>6C;iClH@HK)@lkh158;b7{bHUWnXmGEtz#lJEW5deEO#Gig>s6oLTF_gR c;-}VxhN!4eq4nuc1rHRZA&(*CQB5BI57}hOZU6uP literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/iter_impl.hpp.8664277A5602E1AF.idx b/.cache/clangd/index/iter_impl.hpp.8664277A5602E1AF.idx new file mode 100644 index 0000000000000000000000000000000000000000..1f4004d6f4222b44e57292cbe7deff6a69066d75 GIT binary patch literal 9156 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/json_ref.hpp.09F79A303FDED284.idx b/.cache/clangd/index/json_ref.hpp.09F79A303FDED284.idx new file mode 100644 index 0000000000000000000000000000000000000000..baf98515616285d0f1d3ba3a43bf8d45f7b4e265 GIT binary patch literal 2160 zcmaJ?eN0nV6n}la1$K(V3XXh8-sGsDD)3q=h$bdw5$4B`ha zZfdqn!vHstgu&cE#Y}V?3z|$JfFGdDm>CzHs4#We{9rR~WcR)1>^1wtCj8oSe(&CU z&bhze*NPmafgO-MDT`DWWJ!PyPa1sw%=16qQ9&RPAR+KE70>j8_jXe6Dv- z>=|D6<}dF}xc@=}ig?$BA|>XoJ&fzPB;2^L$zS;-A^!IT^*B2$e(TBprCo=)nQpe8 zzSteze@oZ@^m%bpU`IJ!f5M+}zxcs;<5z7T(s{mrG?Ot`6qUobFYo*9?QPq}hbuYj zoh$kN69ey9JH8NF%$<$?u~Ba7c)|3c6}uJ9o~$ zZrXWwZ}t9P@3rRq-FvvJWO7e?Sj~{bE|mm8w_n?O&|+?W zH`tn!bsCWfK>G{MZ-4!`xjuL{k9dqk0J=g|d#88E-4LWTNQ03GKtEg3#4lYozB5QC zp(Kn%06MU5iKpU?FPqggOG?W!W?3Wvy0Chrv+mgLw%}?LGGQbF(Dx3qKLo~Vy43Vs zvN|;?)gl4V4vdvWEn+$%@xKb;M#$cx#bIw4AxVd72&PWbqNU;KZf{@0 zs}}7Jnn&6gZ5%wsqjYmR5B)+RWNoPQU;rd7njN+T7m>8+Z%D&tifGB#kan#aZEMY5 z+$}c8CC-PVa?X60P{r*!`NF!m6{i;d(Nc8&g%82SkaEPg2Auoz#Iv%|sf*XixxAK7 zfT_WI1T)h61D+;cjntT6I>f6wQ!Mm}kvYyhUyc%APE3O~FiJ(KEVPbM7Rq8_Y#6zD zw@r>b$iqUhL{l+2Npj@HUL%+aBOmgyAn%XR@=c@9 c^KKZwUlc1S!@^aRO5}o{aQHz{Ve-#^0VYw3?EnA( literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/json_reverse_iterator.hpp.47A8D3707286B249.idx b/.cache/clangd/index/json_reverse_iterator.hpp.47A8D3707286B249.idx new file mode 100644 index 0000000000000000000000000000000000000000..c8437c3fb61d5d1b1aff6960c46b7476b50f97f7 GIT binary patch literal 2252 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 OUvxTO`l}E9_5T4lLW(v3 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/macro_scope.hpp.771D39546C225B59.idx b/.cache/clangd/index/macro_scope.hpp.771D39546C225B59.idx new file mode 100644 index 0000000000000000000000000000000000000000..ffd9d2300893b585d45659e02f783c832f7c1924 GIT binary patch literal 2326 zcmYM$3sg;67y#h&@0#&X?v!Xr86wrXDSGK4#UL$VCKWScSW78FGF?q!8cBL$^qOVL z^iV67Av3dLZbL%DP)Z)XALOD^D!o%_{$u90_geSfbN=t&```QQeb+kfF3!&Cp9sS8 zZ7w1HKKr(+3WA_TAKAV@zvJ|)34#!E`r`4WYRfDnPGdgxx?1(}Ue(5D9*O@TSdM9-1PrNly!J0Q3CB+h)5Xv|@q| z2q*l!ss-78e=nMp5a{D8(?&tKwReSjfnLBQP=hFjQEY~YVp}?(k%=V_8tcYSX4G6NCB%A4sLqSrj&6*2F1SNna zd{!a(8BgD}$>$Pu0(SBmUkN#GZQ9Ky1mO(B`K&@_-gw==Dt;cpE5KL0M|R&}=DS#l z8Nm?X5QmtCYjIc4^@{Ke@EM0m_B;HNZH=r5Y5;3E$PE`ozQ3byL$DDy8Yov0GBYPW zyx7y8!tVgz@%$~h+UbUC+eI*!n2X2jLkm7{rSMX)#T32|c%QF&%}~6C$*W2cQW>VQ zxyl}AepJX;L`s(vgfR@`t4@>bSm~K^*GUAxF#gB~@(yJ8Zpd&Zh+`PXbd^IjpPU{V z9D7cL9>5+xSp)AR`J68rRuMb~e9U2iw#Gfb#yhSAF9Bb2P$@qp&AayNT7nk977pKd zt6x8Ry~CYgnq=B^W$A+#)z{gXFZ7^rFJLdvKQKFfY|oqTwh#nku!%B1>t@i(4BsMe z3R_An$4`^q0!^zHn`6EdegpW14-@HJ_n`mlo&bUoz!45sOD{WAwb#lBssO7vtWRij zQFo6EBIpL}=Fqat$ZhY{v-=6E0joLOynj2t+iq4UK^DCD8r+C?=sc&dN%3Yj3O8W9OOOLdM!~L49|}y=m6~CV9yp8I%ZXh&b|95NvBtl>J;BPvK_3W}g2xC)Q!JuQZ9E9d6UgOI^lZVwKnpX(g z0oys)9=c}xdRP9R1UeF(@zP#8>jKYv-VnnBfCD^#vRl;Ntil{Q!C{7ndFh}j=}f(K zeLlfkz_+|dT~e#1LGgq_f?~j8z6zt*&Q;MvlSOC+Y~?)`Sxu5992pX!4X}-ak@cum zZtC130(XhKwsJ2SEo&!GT1KDhkd^)vgQ#(NuU=s&#)rxxea9J0Dg~Vd~?~oa3 zdfCi#Yd3}a0sDEred_!THOUu5cnJ8AuX-rac>a#0<9!6BfTbMPtDZi&v9er*_ki#D zQ1wO8m(pCe4G}Z~Hgd?l-Td3wx}QX70Bqp!QJmh4B`r@xs06I!;1;y{dt?3W!vrq? zUvQ9@7NqU8Q-~1DFqTbIZY#YX?A|Kg$O64(X5xj4`1PSNa7_3;uS7*FT}73t2;%$B K|BWdx1mRz8<|Wer literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/macro_unscope.hpp.042263DAF5D3B742.idx b/.cache/clangd/index/macro_unscope.hpp.042263DAF5D3B742.idx new file mode 100644 index 0000000000000000000000000000000000000000..527d7e2b51e25f54c7e4d31c77dbaa860c0d9564 GIT binary patch literal 204 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 B)Gh!3 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/parser.hpp.97F042A750EC2463.idx b/.cache/clangd/index/parser.hpp.97F042A750EC2463.idx new file mode 100644 index 0000000000000000000000000000000000000000..657b603de21843e5e11e7107230ee4c9ffcc6058 GIT binary patch literal 7448 zcmdT}iCi$t(HS_+0*FUU#zx$m!b!s`M zPL+R%o;uZXq)Zm|e)Ohw%QxsuWHOnO{7c%fe)U2ulPQMFWSb73i<>pu!Pjyixax;t zDN!fGA1_azll5a%aN~>z3*uJX|Kfe~#hV{I-#yvt?e}N@>0#;AVU}6^WK(Eo(2cV< z68*jyvNI`qjjhhTW=BF^QC;_`32x_xxU4>OD{<%8Pfb*FKHgC;E>ACQ8@*`wu6r|; z?Kj*uyDgenctP8C__L2Xigylu5U{T)u)AaA<|DHo)ct(l{ne#&3BNChaPTdC)w1nG z@NXY=&v)FVjZbn9U$eGEw&qRV4{=qR&fM*mOUoMLc22R1R9@5;bjE%$kPHpw@90dH z9ldij(YuM9)+t*mYl?sEu(qj6+ZH}@w9mPP0sS3z z3rCbfV$6v+-Qn{I>6gzZ=Q`Mqn;3ec{hxU?vt}>*SKPif?c°^E+oguDyc-bdP( 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 PGMP2|YQbJ@+3WuTCF=wY literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/position_t.hpp.506F5939B170C75A.idx b/.cache/clangd/index/position_t.hpp.506F5939B170C75A.idx new file mode 100644 index 0000000000000000000000000000000000000000..d3eba78e5f114ad675724896bc8c288c3d2a22e6 GIT binary patch literal 724 zcmWIYbaOky#K7R3;#rZKT9U}Zz`!5^#Kk2=nU{fd1|tJQ#hly#$Gjs39AAQKUT$46 zwd&+X{TKX7+>^IPv+EqVU0ZkA*L-)omrR00nj4FbXKt8R<*|icZ;Ds@JY+2Yc*RN0 ze{1VfvsnxaPIyg7tr4zSQ6sb~)_uy(E5>W58cS#eZa>Ycl`K88VfGYL!^7*gJ*>4T z+4w57;@k5}zY`68`kia4YVUK!-D5agyiE1au{*+Tv)^3wx$L~V`Y-q0x!bpvTzayo zaKlyM;6C3UBJbuTtYfy_<>GUwkvaqr({^GasQjIhp6B|&!fPjD$n1JcOS-V?#d4`Fs1QRz|g!;3-q!V`2j8<`Ljg0246X84qQTyo_qfVq#*3 zI+ulwi%kHgo1rK*t@t$1B$yu=xxjvd`3Xh?g+U&JnPy^pgzH9Sln5gai?Fz`EX)Tm zj{;SLd_=za^9rPXXaty;pE|m>EU7F xfKz}UW;@VNIfhKf97(bg1BXDzCko<0H@;4z2^6NlYY79|L!^eIp6>Nr*>;% zA`($l!V+s)L3Zh40Yy=A@^hD#hyq zm`98cqRzE8>GuQ=#o1F5L`sj?~y|9`d?rgl;?WlXuFmKnA51&1IcD`Y|Gx_(Q ziXHlz+vq^YhCtf)b?mMEPviS0$m=$(T)t{Y{Mldnx9+$1j8!=k3o`vT>!YH(=Z^Ru zTvjuuc2H7#WcdD(2ko7wE_`gcJ5qf##JKh-HU)Hw;x3!A>ldDIr*F1@xoX(AvcJN! z^<`>~ySyN?l%^;&KjM#RX>)}V+DA&E7+H)T2b7Rhmpm7?O)gK^S?(vH0|*@=3XyUE zbne*CiK^Bht%Q~nI+;nHDsaC6Gx?G58;fAWEJoRr~!@}nryFywG$K}}mOpKflH z&>E5;Tof+h020ig&wjd5Qh6FvN;2Q3vqf>hB@m7y^Uo~u&hDGk(k`YYWIiKj)EvP4 z+emMlocsMH2`wYE#m^GV0nm@_Z6B;YwxaV*X|e*d!Vn8Ui)L2Dif@fveN))fz|=6r z0?=jtr*?D=-+U^e)nxG^rbx>H&|4O5HxzG398=H&LMwI3sT=@ZlI?VFBv%M{&x7GS z2a18`NSHMogu!bbQqE%#29J?2YcL3dw@8>ZR!+a>{QZUNT;M2Lj%NAH@&%EkoUdRm z_=;?RH5G)xPbAEm3BuqbPsI5L!Wc#PM5v+27{#h$gW$m7V_&p1=-P5TFk*rkJya4b zCqkUn_?46jWhiKhkxHQog`{Kw0V9J2Fw%%M8rUaBmJrJ{I3h+ig)Q{0tB_0QiUu_> zD$*52zb)$OuqWq2x{7Ix6v2wguq%=(hKYw%;D4eoYktu8+kcxQ{pz|7cmyEE%vj)S zIEol?O#okGWYigFz*1ynGS1~krcl#+P)3YQ@g_SzvIs2dcTT3aCGaP+S#1t}lq^VA zgLN=U6{M=c+ZZ_n4mJ1(qbxy|8rlLQm%ycdM;}3v8uWph5+AT#3ul9rL=m=I;fx@G z6mjhdUt<*L6DZ?Lr4#Bf7@t^27=a-TMg|{)3_MAUuW9i;*yU<3Jc1Lx8wT2EwFI45~Q3Pjo&yh8NhN qGH5|ksw6vqG5crdF3EC-urJ;$ym>IZP&5j?kw?8Mf3=kM#?=2;i1#@F literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/serializer.hpp.EE8E2D8BCD463B77.idx b/.cache/clangd/index/serializer.hpp.EE8E2D8BCD463B77.idx new file mode 100644 index 0000000000000000000000000000000000000000..cc7860b52d40901dd65714ca2939f16054f5d12a GIT binary patch literal 11606 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 literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/value_t.hpp.EBE0F29787A62C58.idx b/.cache/clangd/index/value_t.hpp.EBE0F29787A62C58.idx new file mode 100644 index 0000000000000000000000000000000000000000..a72632f5e23ddf832dd3696ae2f3b209b8e56c1f GIT binary patch literal 1932 zcmYk7dpJ~i7{`Azj@uZ`xaHndL+)nCr6Nx|%v8p>t)}FX+awySAq|P#Dq$s+E;d^> ztxBn8cw9oH+cuO@Lq)P`B}^Ba654Z4d$v8#bH3-i-}8Ci^Pczn$MIj!V&y6W;2yPJ z7{^NvhX4TD@R^h>h><7&a9tGuVR;cZB;l!(_M>YVoy-!P{m>>(R?D_jy3%;~uF(TE zawXFcCg0S5arFw;m9H)C{sMkytg=Z7W3W4^dv(g8NjA0NwC8jVy(gBL7Dg?1>K&Ty z&YYj|m~^P+NL%}hSb>_gc8-SCr|yW`OGHsTnoIbdn3;4z4VRflsUi4B${tdWY~D$H zzSd~U)UbK zN{Tzr6|8IFmGne?wGz+V>E_q<79_asIi}UQD1o`cQ`R1TPuLr|ks5Y4YVGnc^Lfz- z*Ol!BDdw*@%1UWwOIJ@?EgKPO^4!J;<%4D)g0lwR5c9K|DYoN1Q|yArG;d#x+Kc7t z-eSIiQ`<;3-erbL48mJf?wQSJsogL4#x=MfuN1}oRKNIv{@1v+E{b#I`E*AQf-5D$t;HiLS|T8^h(C`jlF>c1PcE zoO8j&eQO@I`N*9q(txwqv&ME%3IKch>A}#H1{HGGgTc99HKO97rLU*g5_2BXuIjd> zd;f5o%aF$!i!PLO$un-M<>WX5|wa+lus>?wU=Rj;bEtu!)tTm*$F#GcD9AoZ8Y3*;N>;FcqJe_~n*b*@Pxq_}B{9=p9;b{3@DQ7SK5`FAd$% zIFaWstm#+npU8af^YX?SuP(!xnZ12Drg>}UZLXra4fF4biv{_zsioZ?xYOmbG*`iV z|2Eogr`e#_?rNf4)nm^hd|ms>%8U-~jFfy1_FMGk?zz~M33@rT_;LBfg)MHgdn;yN zL@qi#oA1X9QOD0xmLL2Sz16R*v|;qj{tddFMV0!pM~3pe;^Mc_CwitFsrHUdp{9EK~qVsc{j7H~?Hf9DepBXaOJriY_42Aet5`Kpz03g+v@#v9ANTrlh;7lYk-& zSV2~*s33q63P{GccT^^wwIG2-FklPWYNCPwhA5!?v!3~hK@U$7P=*0J$c}&t0;r%s zn1VxJh*=|>1PCx-1KFsdf&gkL(5%Hjpi=jeLjqJ7u!gJ&s33sJw;3j0R;NqS_YlES z9YAIf8QQ1-eMkYPst$iem;9JdY`pk92`q*?SVEQrRFDo!&<=H>mQ|Gz;#x&u3U@G5 zGt)!`0q_989m+b~f7y{?H%0=+a0fa>C!>M@255)ut8*Eow8P^humA?^A$xUH5P*aN zwR)u*W0!j7Nk9(e!LNxW5}Uk6kIuSR$>*aId76bzO@2RB(p8qbj&7_y)3={tFZ9k z;gIC8;jpU$0gVcKFOkeJVo<+#V$c{)SS9RuF_H#7l;DVD4+D??X2P@c7~I?-C>lB9mN@8%;#M9ms$5+kq#$x!S*f8@z%5X=rL`0}bo} J09xN~{{bn!^;-Y{ literal 0 HcmV?d00001 diff --git a/.cache/clangd/index/void_t.hpp.7BA1398875725DE2.idx b/.cache/clangd/index/void_t.hpp.7BA1398875725DE2.idx new file mode 100644 index 0000000000000000000000000000000000000000..94cccd60245e46d7644d8fb01b9edd9e9649ceab GIT binary patch literal 418 zcmWIYbaR`<$iU#7;#rZKT9U}Zz`!5^#Kk2=nG=EZaUiakliRnO?~nnH>t9WtGZAY7 zujVHttY36Qqwz-HtS^lM|NXpKlM*(a+v^_QmiFIbR@HfxX_@7E=f!5p=R6b=mUQ7c z)e_g<`QggzsWH0wCAV5Fgxo(y#Q0A+ZIdiAoy}jvlQ~-OOGvKIiPHxI7r%d{_=G1X z|H@h(`O7nWO`rLHxjMb Date: Sun, 12 Jul 2026 23:08:08 +0200 Subject: [PATCH 21/22] added extra ignores --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index a139ae2..aa204d3 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,7 @@ # Build files build/* dist/* + +# project +.cache +.clangd From b26100a4ad870441a4f971e74ea09e1a8ab266ff Mon Sep 17 00:00:00 2001 From: douwe Date: Sun, 12 Jul 2026 23:09:37 +0200 Subject: [PATCH 22/22] removed clangd from ingore --- .gitignore | 1 - 1 file changed, 1 deletion(-) diff --git a/.gitignore b/.gitignore index aa204d3..c8c52e0 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,3 @@ dist/* # project .cache -.clangd