From 64848bbd4cbf7ef7f8b0a95336e9cbcc308ce3aa Mon Sep 17 00:00:00 2001 From: Vadim Gunko Date: Wed, 11 Feb 2026 23:12:15 +0500 Subject: [PATCH 01/42] Update BINDINGS.md (#5546) added support for Delphi --- BINDINGS.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/BINDINGS.md b/BINDINGS.md index 5ef67c98f..6c405ab66 100644 --- a/BINDINGS.md +++ b/BINDINGS.md @@ -63,7 +63,7 @@ Some people ported raylib to other languages in the form of bindings or wrappers | [raylib_odin_bindings](https://github.com/Deathbat2190/raylib_odin_bindings) | 4.0-dev | [Odin](https://odin-lang.org) | MIT | | [raylib-ocaml](https://github.com/tjammer/raylib-ocaml) | **5.0** | [OCaml](https://ocaml.org) | MIT | | [TurboRaylib](https://github.com/turborium/TurboRaylib) | 4.5 | [Object Pascal](https://en.wikipedia.org/wiki/Object_Pascal) | MIT | -| [Ray4Laz](https://github.com/GuvaCode/Ray4Laz) | **5.5** | [Free Pascal](https://en.wikipedia.org/wiki/Free_Pascal) | Zlib | +| [Ray4Laz](https://github.com/GuvaCode/Ray4Laz) | **5.5** | [Free Pascal](https://en.wikipedia.org/wiki/Free_Pascal)/[Delphi](https://en.wikipedia.org/wiki/Delphi_(software)) | Zlib | | [Raylib.4.0.Pascal](https://github.com/sysrpl/Raylib.4.0.Pascal) | 4.0 | [Free Pascal](https://en.wikipedia.org/wiki/Free_Pascal) | Zlib | | [pyraylib](https://github.com/Ho011/pyraylib) | 3.7 | [Python](https://www.python.org) | Zlib | | [raylib-python-cffi](https://github.com/electronstudio/raylib-python-cffi) | **5.5** | [Python](https://www.python.org) | EPL-2.0 | @@ -185,4 +185,4 @@ Missing some language or wrapper? Feel free to create a new one! :) Usually, raylib bindings follow the convention: `raylib-{language}` -Let me know if you're writing a new binding for raylib, I will list it here! \ No newline at end of file +Let me know if you're writing a new binding for raylib, I will list it here! From 85de580527e96f327d474cd865afba5b68ed4f72 Mon Sep 17 00:00:00 2001 From: Max Coplan Date: Thu, 12 Feb 2026 07:15:47 -0800 Subject: [PATCH 02/42] fix(examples): don't bleed fog when on edge (#5547) Steps to reproduce: 1. play textures_fog_of_war example 2. Move player to edge of screen 3. Note the light bleeds to the other side of the screen --- examples/textures/textures_fog_of_war.c | 1 + 1 file changed, 1 insertion(+) diff --git a/examples/textures/textures_fog_of_war.c b/examples/textures/textures_fog_of_war.c index ea98b03ce..1354d7124 100644 --- a/examples/textures/textures_fog_of_war.c +++ b/examples/textures/textures_fog_of_war.c @@ -68,6 +68,7 @@ int main(void) // at a smaller size (one pixel per tile) and scale it on drawing with bilinear filtering RenderTexture2D fogOfWar = LoadRenderTexture(map.tilesX, map.tilesY); SetTextureFilter(fogOfWar.texture, TEXTURE_FILTER_BILINEAR); + SetTextureWrap(fogOfWar.texture, TEXTURE_WRAP_CLAMP); SetTargetFPS(60); // Set our game to run at 60 frames-per-second //-------------------------------------------------------------------------------------- From 4e7c38ac43a23a96aec7f96ed4fef2b0cf12e981 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yui=20Kinomoto=20/=20=E3=81=8D=E3=81=AE=E3=82=82=E3=81=A8?= =?UTF-8?q?=20=E7=B5=90=E8=A1=A3?= Date: Fri, 13 Feb 2026 01:04:22 +0900 Subject: [PATCH 03/42] fix SDL SetGamepadMappings (#5548) --- src/platforms/rcore_desktop_sdl.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/platforms/rcore_desktop_sdl.c b/src/platforms/rcore_desktop_sdl.c index 66a917da2..ae44728c4 100644 --- a/src/platforms/rcore_desktop_sdl.c +++ b/src/platforms/rcore_desktop_sdl.c @@ -1287,7 +1287,25 @@ void OpenURL(const char *url) // Set internal gamepad mappings int SetGamepadMappings(const char *mappings) { - return SDL_GameControllerAddMapping(mappings); + const int mappingsLength = strlen(mappings); + char *buffer = (char *)RL_CALLOC(mappingsLength + 1, sizeof(char)); + memcpy(buffer, mappings, mappingsLength); + char *p = strtok(buffer, "\n"); + bool succeed = true; + + while (p != NULL) + { + if (SDL_GameControllerAddMapping(p) == -1) + { + succeed = false; + } + p = strtok(NULL, "\n"); + } + + RL_FREE(buffer); + + // To make return value is consistent with the GLFW version. + return (succeed)? 1 : 0; } // Set gamepad vibration From 070082f8c950ef83708253a64d5a5e89fdbed705 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 12 Feb 2026 18:55:40 +0100 Subject: [PATCH 04/42] REVIEWED: Comments to impersonal format --- src/platforms/rcore_android.c | 32 ++++++++++++++-------------- src/platforms/rcore_desktop_sdl.c | 18 ++++++++-------- src/platforms/rcore_desktop_win32.c | 18 ++++++++-------- src/platforms/rcore_drm.c | 14 +++++------- src/platforms/rcore_web.c | 24 ++++++++++----------- src/platforms/rcore_web_emscripten.c | 4 ++-- src/raudio.c | 4 ++-- src/rtext.c | 2 +- src/rtextures.c | 31 ++++++++++++--------------- 9 files changed, 70 insertions(+), 77 deletions(-) diff --git a/src/platforms/rcore_android.c b/src/platforms/rcore_android.c index 65236be0f..74c7b3792 100644 --- a/src/platforms/rcore_android.c +++ b/src/platforms/rcore_android.c @@ -290,8 +290,8 @@ FILE *funopen(const void *cookie, int (*readfn)(void *, char *, int), int (*writ // Module Functions Definition: Application //---------------------------------------------------------------------------------- -// To allow easier porting to android, we allow the user to define a -// main function which we call from android_main, defined by ourselves +// To allow easier porting to android, allow the user to define a +// custom main function which is called from android_main extern int main(int argc, char *argv[]); // Android main function @@ -313,7 +313,7 @@ void android_main(struct android_app *app) // Waiting for application events before complete finishing while (!app->destroyRequested) { - // Poll all events until we reach return value TIMEOUT, meaning no events left to process + // Poll all events until return value TIMEOUT is reached, meaning no events left to process while ((pollResult = ALooper_pollOnce(0, NULL, &pollEvents, (void **)&platform.source)) > ALOOPER_POLL_TIMEOUT) { if (platform.source != NULL) platform.source->process(app, platform.source); @@ -640,9 +640,9 @@ double GetTime(void) } // Open URL with default system browser (if available) -// NOTE: This function is only safe to use if you control the URL given +// NOTE: This function is only safe to use if the provided URL is safe // A user could craft a malicious string performing another action -// Only call this function yourself not with user input or make sure to check the string yourself +// Avoid calling this function with user input non-validated strings void OpenURL(const char *url) { // Security check to (partially) avoid malicious code @@ -757,7 +757,7 @@ void PollInputEvents(void) int pollResult = 0; int pollEvents = 0; - // Poll Events (registered events) until we reach TIMEOUT which indicates there are no events left to poll + // Poll Events (registered events) until TIMEOUT is reached which indicates there are no events left to poll // NOTE: Activity is paused if not enabled (platform.appEnabled) and always run flag is not set (FLAG_WINDOW_ALWAYS_RUN) while ((pollResult = ALooper_pollOnce((platform.appEnabled || FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_ALWAYS_RUN))? 0 : -1, NULL, &pollEvents, ((void **)&platform.source)) > ALOOPER_POLL_TIMEOUT)) { @@ -843,7 +843,7 @@ int InitPlatform(void) // Wait for window to be initialized (display and context) while (!CORE.Window.ready) { - // Process events until we reach TIMEOUT, which indicates no more events queued + // Process events until TIMEOUT is reached, which indicates no more events queued while ((pollResult = ALooper_pollOnce(0, NULL, &pollEvents, ((void **)&platform.source)) > ALOOPER_POLL_TIMEOUT)) { // Process this event @@ -964,10 +964,10 @@ static int InitGraphicsDevice(void) EGLint displayFormat = 0; // EGL_NATIVE_VISUAL_ID is an attribute of the EGLConfig that is guaranteed to be accepted by ANativeWindow_setBuffersGeometry() - // As soon as we picked a EGLConfig, we can safely reconfigure the ANativeWindow buffers to match, using EGL_NATIVE_VISUAL_ID + // As soon as an EGLConfig is picked, it's safe to reconfigure the ANativeWindow buffers to match, using EGL_NATIVE_VISUAL_ID eglGetConfigAttrib(platform.device, platform.config, EGL_NATIVE_VISUAL_ID, &displayFormat); - // At this point we need to manage render size vs screen size + // At this point render size vs screen size needs to be managed // NOTE: This function use and modify global module variables: // -> CORE.Window.screen.width/CORE.Window.screen.height // -> CORE.Window.render.width/CORE.Window.render.height @@ -1075,12 +1075,12 @@ static void AndroidCommandCallback(struct android_app *app, int32_t cmd) Rectangle rec = GetFontDefault().recs[95]; if (FLAG_IS_SET(CORE.Window.flags, FLAG_MSAA_4X_HINT)) { - // NOTE: We try to maxime rec padding to avoid pixel bleeding on MSAA filtering + // NOTE: Trying to maxime rec padding to avoid pixel bleeding on MSAA filtering SetShapesTexture(GetFontDefault().texture, (Rectangle){ rec.x + 2, rec.y + 2, 1, 1 }); } else { - // NOTE: We set up a 1px padding on char rectangle to avoid pixel bleeding + // NOTE: Setting up a 1px padding on char rectangle to avoid pixel bleeding SetShapesTexture(GetFontDefault().texture, (Rectangle){ rec.x + 1, rec.y + 1, rec.width - 2, rec.height - 2 }); } #endif @@ -1450,7 +1450,7 @@ static int32_t AndroidInputCallback(struct android_app *app, AInputEvent *event) // NOTE: Global variables CORE.Window.render.width/CORE.Window.render.height and CORE.Window.renderOffset.x/CORE.Window.renderOffset.y can be modified static void SetupFramebuffer(int width, int height) { - // Calculate CORE.Window.render.width and CORE.Window.render.height, we have the display size (input params) and the desired screen size (global var) + // Calculate CORE.Window.render.width and CORE.Window.render.height, having the display size (input params) and the desired screen size (global var) if ((CORE.Window.screen.width > CORE.Window.display.width) || (CORE.Window.screen.height > CORE.Window.display.height)) { TRACELOG(LOG_WARNING, "DISPLAY: Downscaling required: Screen size (%ix%i) is bigger than display size (%ix%i)", CORE.Window.screen.width, CORE.Window.screen.height, CORE.Window.display.width, CORE.Window.display.height); @@ -1478,8 +1478,8 @@ static void SetupFramebuffer(int width, int height) float scaleRatio = (float)CORE.Window.render.width/(float)CORE.Window.screen.width; CORE.Window.screenScale = MatrixScale(scaleRatio, scaleRatio, 1.0f); - // NOTE: We render to full display resolution! - // We just need to calculate above parameters for downscale matrix and offsets + // NOTE: Rendering to full display resolution + // Above parameters need to be calculate for downscale matrix and offsets CORE.Window.render.width = CORE.Window.display.width; CORE.Window.render.height = CORE.Window.display.height; @@ -1533,8 +1533,8 @@ FILE *android_fopen(const char *fileName, const char *mode) if (mode[0] == 'w') { // NOTE: fopen() is mapped to android_fopen() that only grants read access to - // assets directory through AAssetManager but we want to also be able to - // write data when required using the standard stdio FILE access functions + // assets directory through AAssetManager but it could be required to write data + // using the standard stdio FILE access functions // REF: https://stackoverflow.com/questions/11294487/android-writing-saving-files-from-native-code-only #undef fopen file = fopen(TextFormat("%s/%s", platform.app->activity->internalDataPath, fileName), mode); diff --git a/src/platforms/rcore_desktop_sdl.c b/src/platforms/rcore_desktop_sdl.c index ae44728c4..ca49e6a8e 100644 --- a/src/platforms/rcore_desktop_sdl.c +++ b/src/platforms/rcore_desktop_sdl.c @@ -255,9 +255,9 @@ static const int CursorsLUT[] = { // SDL3 Migration: // SDL_WINDOW_FULLSCREEN_DESKTOP has been removed, -// and you can call SDL_GetWindowFullscreenMode() +// SDL_GetWindowFullscreenMode() can be called // to see whether an exclusive fullscreen mode will be used -// or the borderless fullscreen desktop mode will be used +// or the borderless fullscreen desktop mode #define SDL_WINDOW_FULLSCREEN_DESKTOP SDL_WINDOW_FULLSCREEN #define SDL_IGNORE false @@ -1269,9 +1269,9 @@ double GetTime(void) } // Open URL with default system browser (if available) -// NOTE: This function is only safe to use if you control the URL given +// NOTE: This function is only safe to use if the provided URL is safe // A user could craft a malicious string performing another action -// Only call this function yourself not with user input or make sure to check the string yourself +// Avoid calling this function with user input non-validated strings // REF: https://github.com/raysan5/raylib/issues/686 void OpenURL(const char *url) { @@ -1437,9 +1437,9 @@ void PollInputEvents(void) #if defined(USING_VERSION_SDL3) // const char *data; // The text for SDL_EVENT_DROP_TEXT and the file name for SDL_EVENT_DROP_FILE, NULL for other events - // Event memory is now managed by SDL, so you should not free the data in SDL_EVENT_DROP_FILE, - // and if you want to hold onto the text in SDL_EVENT_TEXT_EDITING and SDL_EVENT_TEXT_INPUT events, - // you should make a copy of it. SDL_TEXTINPUTEVENT_TEXT_SIZE is no longer necessary and has been removed + // Event memory is now managed by SDL, so it should not be freed in SDL_EVENT_DROP_FILE, + // in case data needs to be hold onto the text in SDL_EVENT_TEXT_EDITING and SDL_EVENT_TEXT_INPUT events, + // a copy is required, SDL_TEXTINPUTEVENT_TEXT_SIZE is no longer necessary and has been removed strncpy(CORE.Window.dropFilepaths[CORE.Window.dropFileCount], event.drop.data, MAX_FILEPATH_LENGTH - 1); #else strncpy(CORE.Window.dropFilepaths[CORE.Window.dropFileCount], event.drop.file, MAX_FILEPATH_LENGTH - 1); @@ -1468,10 +1468,10 @@ void PollInputEvents(void) // Window events are also polled (minimized, maximized, close...) #ifndef USING_VERSION_SDL3 - // SDL3 states: // The SDL_WINDOWEVENT_* events have been moved to top level events, and SDL_WINDOWEVENT has been removed // In general, handling this change just means checking for the individual events instead of first checking for SDL_WINDOWEVENT - // and then checking for window events. You can compare the event >= SDL_EVENT_WINDOW_FIRST and <= SDL_EVENT_WINDOW_LAST if you need to see whether it's a window event + // and then checking for window events; Events >= SDL_EVENT_WINDOW_FIRST and <= SDL_EVENT_WINDOW_LAST can be compared + // to see whether it's a window event case SDL_WINDOWEVENT: { switch (event.window.event) diff --git a/src/platforms/rcore_desktop_win32.c b/src/platforms/rcore_desktop_win32.c index 17d4fc530..8cb9645d2 100644 --- a/src/platforms/rcore_desktop_win32.c +++ b/src/platforms/rcore_desktop_win32.c @@ -1244,9 +1244,9 @@ double GetTime(void) } // Open URL with default system browser (if available) -// NOTE: This function is only safe to use if you control the URL given +// NOTE: This function is only safe to use if the provided URL is safe // A user could craft a malicious string performing another action -// Only call this function yourself not with user input or make sure to check the string yourself +// Avoid calling this function with user input non-validated strings // REF: https://github.com/raysan5/raylib/issues/686 void OpenURL(const char *url) { @@ -1864,9 +1864,9 @@ static LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lpara } break; case WM_SIZE: { - // WARNING: Don't trust the docs, they say you won't get this message if you don't call DefWindowProc - // in response to WM_WINDOWPOSCHANGED but looks like when a window is created you'll get this - // message without getting WM_WINDOWPOSCHANGED + // WARNING: Don't trust the docs, they say this message can not be obtained if not calling DefWindowProc() + // in response to WM_WINDOWPOSCHANGED but looks like when a window is created, + // this message can be obtained without getting WM_WINDOWPOSCHANGED HandleWindowResize(hwnd, &platform.appScreenWidth, &platform.appScreenHeight); } break; //case WM_MOVE @@ -2187,10 +2187,10 @@ static unsigned SanitizeFlags(int mode, unsigned flags) // window. This function will continue to perform these update operations so long as // the state continues to change // -// This design takes care of many odd corner cases. For example, if you want to restore -// a window that was previously maximized AND minimized and you want to remove both these -// flags, you actually need to call ShowWindow with SW_RESTORE twice. Another example is -// if you have a maximized window, if the undecorated flag is modified then the window style +// This design takes care of many odd corner cases. For example, in case of restoring +// a window that was previously maximized AND minimized and those two flags need to be removed, +// ShowWindow with SW_RESTORE twice need to bee actually calleed. Another example is +// wheen having a maximized window, if the undecorated flag is modified then the window style // needs to be updated, but updating the style would mean the window size would change // causing the window to lose its Maximized state which would mean the window size // needs to be updated, followed by the update of window style, a second time, to restore that maximized diff --git a/src/platforms/rcore_drm.c b/src/platforms/rcore_drm.c index 6d3394f69..85db9b4e1 100644 --- a/src/platforms/rcore_drm.c +++ b/src/platforms/rcore_drm.c @@ -1017,10 +1017,9 @@ double GetTime(void) } // Open URL with default system browser (if available) -// NOTE: This function is only safe to use if you control the URL given +// NOTE: This function is only safe to use if the provided URL is safe // A user could craft a malicious string performing another action -// Only call this function yourself not with user input or make sure to check the string yourself -// REF: https://github.com/raysan5/raylib/issues/686 +// Avoid calling this function with user input non-validated strings void OpenURL(const char *url) { TRACELOG(LOG_WARNING, "OpenURL() not implemented on target platform"); @@ -2149,14 +2148,11 @@ static void ConfigureEvdevDevice(char *device) if (absAxisCount > 0) { - // TODO / NOTE + // TODO: Review GamepadAxis enum matching // So gamepad axes (as in the actual linux joydev.c) are just simply enumerated // and (at least for some input drivers like xpat) it's convention to use - // ABS_X, ABX_Y for one joystick ABS_RX, ABS_RY for the other and the Z axes for the - // shoulder buttons - // If these are now enumerated you get LJOY_X, LJOY_Y, LEFT_SHOULDERB, RJOY_X, ... - // That means they don't match the GamepadAxis enum - // This could be fixed + // ABS_X, ABX_Y for one joystick ABS_RX, ABS_RY for the other and the Z axes for the shoulder buttons + // If these are now enumerated, it results to LJOY_X, LJOY_Y, LEFT_SHOULDERB, RJOY_X, ... int axisIndex = 0; for (int axis = ABS_X; axis < ABS_PRESSURE; axis++) { diff --git a/src/platforms/rcore_web.c b/src/platforms/rcore_web.c index 3dd3eb9df..5430cf5a9 100644 --- a/src/platforms/rcore_web.c +++ b/src/platforms/rcore_web.c @@ -173,7 +173,7 @@ bool WindowShouldClose(void) // and encapsulating one frame execution on a UpdateDrawFrame() function, // allowing the browser to manage execution asynchronously - // Optionally we can manage the time we give-control-back-to-browser if required, + // Optionally, time to give-control-back-to-browser can be managed here, // but it seems below line could generate stuttering on some browsers emscripten_sleep(12); @@ -921,9 +921,9 @@ double GetTime(void) } // Open URL with default system browser (if available) -// NOTE: This function is only safe to use if you control the URL given +// NOTE: This function is only safe to use if the provided URL is safe // A user could craft a malicious string performing another action -// Only call this function yourself not with user input or make sure to check the string yourself +// Avoid calling this function with user input non-validated strings void OpenURL(const char *url) { // Security check to (partially) avoid malicious code on target platform @@ -1252,11 +1252,11 @@ int InitPlatform(void) #else if (FLAG_IS_SET(CORE.Window.flags, FLAG_FULLSCREEN_MODE)) { - // remember center for switchinging from fullscreen to window + // Remember center for switchinging from fullscreen to window if ((CORE.Window.screen.height == CORE.Window.display.height) && (CORE.Window.screen.width == CORE.Window.display.width)) { - // If screen width/height equal to the display, we can't calculate the window pos for toggling full-screened/windowed - // Toggling full-screened/windowed with pos(0, 0) can cause problems in some platforms, such as X11 + // If screen width/height equal to the display, it's not possible to + // calculate the window position for toggling full-screened/windowed CORE.Window.position.x = CORE.Window.display.width/4; CORE.Window.position.y = CORE.Window.display.height/4; } @@ -1367,7 +1367,7 @@ int InitPlatform(void) if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_MINIMIZED)) MinimizeWindow(); - // If graphic device is no properly initialized, we end program + // If graphic device is no properly initialized, end program if (!CORE.Window.ready) { TRACELOG(LOG_FATAL, "PLATFORM: Failed to initialize graphic device"); return -1; } // Load OpenGL extensions @@ -1491,7 +1491,7 @@ static void WindowDropCallback(GLFWwindow *window, int count, const char **paths { if (count > 0) { - // In case previous dropped filepaths have not been freed, we free them + // In case previous dropped filepaths have not been freed, free them if (CORE.Window.dropFileCount > 0) { for (unsigned int i = 0; i < CORE.Window.dropFileCount; i++) RL_FREE(CORE.Window.dropFilepaths[i]); @@ -1502,7 +1502,7 @@ static void WindowDropCallback(GLFWwindow *window, int count, const char **paths CORE.Window.dropFilepaths = NULL; } - // WARNING: Paths are freed by GLFW when the callback returns, we must keep an internal copy + // WARNING: Paths are freed by GLFW when the callback returns, an internal copy must freed CORE.Window.dropFileCount = count; CORE.Window.dropFilepaths = (char **)RL_CALLOC(CORE.Window.dropFileCount, sizeof(char *)); @@ -1519,7 +1519,7 @@ static void KeyCallback(GLFWwindow *window, int key, int scancode, int action, i { if (key < 0) return; // Security check, macOS fn key generates -1 - // WARNING: GLFW could return GLFW_REPEAT, we need to consider it as 1 + // WARNING: GLFW could return GLFW_REPEAT, it needs to be considered as 1 // to work properly with our implementation (IsKeyDown/IsKeyUp checks) if (action == GLFW_RELEASE) CORE.Input.Keyboard.currentKeyState[key] = 0; else if (action == GLFW_PRESS) CORE.Input.Keyboard.currentKeyState[key] = 1; @@ -1721,7 +1721,7 @@ static EM_BOOL EmscriptenTouchCallback(int eventType, const EmscriptenTouchEvent double canvasWidth = 0.0; double canvasHeight = 0.0; // NOTE: emscripten_get_canvas_element_size() returns canvas.width and canvas.height but - // we are looking for actual CSS size: canvas.style.width and canvas.style.height + // actual CSS size needs to be considered: canvas.style.width and canvas.style.height // EMSCRIPTEN_RESULT res = emscripten_get_canvas_element_size("#canvas", &canvasWidth, &canvasHeight); emscripten_get_element_css_size(platform.canvasId, &canvasWidth, &canvasHeight); @@ -1741,7 +1741,7 @@ static EM_BOOL EmscriptenTouchCallback(int eventType, const EmscriptenTouchEvent else if (eventType == EMSCRIPTEN_EVENT_TOUCHEND) CORE.Input.Touch.currentTouchState[i] = 0; } - // Update mouse position if we detect a single touch + // Update mouse position when single touch detected if (CORE.Input.Touch.pointCount == 1) { CORE.Input.Mouse.currentPosition.x = CORE.Input.Touch.position[0].x; diff --git a/src/platforms/rcore_web_emscripten.c b/src/platforms/rcore_web_emscripten.c index 92caae99f..13e685939 100644 --- a/src/platforms/rcore_web_emscripten.c +++ b/src/platforms/rcore_web_emscripten.c @@ -908,9 +908,9 @@ double GetTime(void) } // Open URL with default system browser (if available) -// NOTE: This function is only safe to use if you control the URL given +// NOTE: This function is only safe to use if the provided URL is safe // A user could craft a malicious string performing another action -// Only call this function yourself not with user input or make sure to check the string yourself +// Avoid calling this function with user input non-validated strings void OpenURL(const char *url) { // Security check to (partially) avoid malicious code on target platform diff --git a/src/raudio.c b/src/raudio.c index 2e087205e..75547d285 100644 --- a/src/raudio.c +++ b/src/raudio.c @@ -2015,7 +2015,7 @@ void UpdateMusicStream(Music music) #if defined(SUPPORT_FILEFORMAT_MOD) case MUSIC_MODULE_MOD: { - // NOTE: 3rd parameter (nbsample) specify the number of stereo 16bits samples you want, so sampleCount/2 + // NOTE: 3rd parameter (nbsample) specify the number of stereo 16bits samples desired, so sampleCount/2 jar_mod_fillbuffer((jar_mod_context_t *)music.ctxData, (short *)AUDIO.System.pcmBuffer, framesToStream, 0); //jar_mod_seek_start((jar_mod_context_t *)music.ctxData); @@ -2504,7 +2504,7 @@ static void OnSendAudioDataToDevice(ma_device *pDevice, void *pFramesOut, const memset(pFramesOut, 0, frameCount*pDevice->playback.channels*ma_get_bytes_per_sample(pDevice->playback.format)); // Using a mutex here for thread-safety which makes things not real-time - // This is unlikely to be necessary for this project, but may want to consider how you might want to avoid this + // This is unlikely to be necessary for this project, but it can be reconsidered ma_mutex_lock(&AUDIO.System.lock); { for (AudioBuffer *audioBuffer = AUDIO.Buffer.first; audioBuffer != NULL; audioBuffer = audioBuffer->next) diff --git a/src/rtext.c b/src/rtext.c index 2c871cc49..8e7fafec2 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -682,7 +682,7 @@ GlyphInfo *LoadFontData(const unsigned char *fileData, int dataSize, int fontSiz // Render a unicode codepoint to a bitmap // stbtt_GetCodepointBitmap() -- allocates and returns a bitmap // stbtt_GetCodepointBitmapBox() -- how big the bitmap must be - // stbtt_MakeCodepointBitmap() -- renders into bitmap you provide + // stbtt_MakeCodepointBitmap() -- renders into a provided bitmap // Check if a glyph is available in the font // WARNING: if (index == 0), glyph not found, it could fallback to default .notdef glyph (if defined in font) diff --git a/src/rtextures.c b/src/rtextures.c index 1aced0533..c49ca1359 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -883,7 +883,7 @@ Image GenImageGradientRadial(int width, int height, float density, Color inner, float factor = (dist - radius*density)/(radius*(1.0f - density)); factor = (float)fmax(factor, 0.0f); - factor = (float)fmin(factor, 1.f); // dist can be bigger than radius, so we have to check + factor = (float)fmin(factor, 1.f); // Distance can be bigger than radius, so it needs to be checked pixels[y*width + x].r = (int)((float)outer.r*factor + (float)inner.r*(1.0f - factor)); pixels[y*width + x].g = (int)((float)outer.g*factor + (float)inner.g*(1.0f - factor)); @@ -1032,7 +1032,7 @@ Image GenImagePerlinNoise(int width, int height, int offsetX, int offsetY, float if (p < -1.0f) p = -1.0f; if (p > 1.0f) p = 1.0f; - // We need to normalize the data from [-1..1] to [0..1] + // Data needs to be normalized from [-1..1] to [0..1] float np = (p + 1.0f)/2.0f; unsigned char intensity = (unsigned char)(np*255.0f); @@ -1264,7 +1264,7 @@ void ImageFormat(Image *image, int newFormat) { Vector4 *pixels = LoadImageDataNormalized(*image); // Supports 8 to 32 bit per channel - RL_FREE(image->data); // WARNING! We loose mipmaps data --> Regenerated at the end... + RL_FREE(image->data); // WARNING! Loosing mipmaps data --> Regenerated at the end image->data = NULL; image->format = newFormat; @@ -1759,7 +1759,7 @@ void ImageResize(Image *image, int newWidth, int newHeight) // Security check to avoid program crash if ((image->data == NULL) || (image->width == 0) || (image->height == 0)) return; - // Check if we can use a fast path on image scaling + // Check if a fast path can be used on image scaling // It can be for 8 bit per channel images with 1 to 4 channels per pixel if ((image->format == PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) || (image->format == PIXELFORMAT_UNCOMPRESSED_GRAY_ALPHA) || @@ -2026,7 +2026,7 @@ void ImageAlphaMask(Image *image, Image alphaMask) Image mask = ImageCopy(alphaMask); if (mask.format != PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) ImageFormat(&mask, PIXELFORMAT_UNCOMPRESSED_GRAYSCALE); - // In case image is only grayscale, we just add alpha channel + // In case image is only grayscale, just add alpha channel if (image->format == PIXELFORMAT_UNCOMPRESSED_GRAYSCALE) { unsigned char *data = (unsigned char *)RL_MALLOC(image->width*image->height*2); @@ -2479,7 +2479,7 @@ void ImageDither(Image *image, int rBpp, int gBpp, int bBpp, int aBpp) TRACELOG(LOG_WARNING, "IMAGE: Unsupported dithered OpenGL internal format: %ibpp (R%iG%iB%iA%i)", (rBpp+gBpp+bBpp+aBpp), rBpp, gBpp, bBpp, aBpp); } - // NOTE: We will store the dithered data as unsigned short (16bpp) + // NOTE: Storing the dithered data as unsigned short (16bpp) image->data = (unsigned short *)RL_MALLOC(image->width*image->height*sizeof(unsigned short)); Color oldPixel = WHITE; @@ -2507,8 +2507,8 @@ void ImageDither(Image *image, int rBpp, int gBpp, int bBpp, int aBpp) newPixel.b = oldPixel.b >> (8 - bBpp); // B bits newPixel.a = oldPixel.a >> (8 - aBpp); // A bits (not used on dithering) - // NOTE: Error must be computed between new and old pixel but using same number of bits! - // We want to know how much color precision we have lost... + // NOTE: Error must be computed between new and old pixel but using same number of bits, + // to know how much color precision has been lost rError = (int)oldPixel.r - (int)(newPixel.r << (8 - rBpp)); gError = (int)oldPixel.g - (int)(newPixel.g << (8 - gBpp)); bError = (int)oldPixel.b - (int)(newPixel.b << (8 - bBpp)); @@ -3134,7 +3134,7 @@ Color *LoadImagePalette(Image image, int maxPaletteSize, int *colorCount) palette[palCount] = pixels[i]; // Add pixels[i] to palette palCount++; - // We reached the limit of colors supported by palette + // Reached the limit of colors supported by palette if (palCount >= maxPaletteSize) { i = image.width*image.height; // Finish palette get @@ -3806,7 +3806,7 @@ void ImageDrawTriangle(Image *dst, Vector2 v1, Vector2 v2, Vector2 v3, Color col for (int x = xMin; x <= xMax; x++) { // Check if the pixel is inside the triangle using barycentric coordinates - // If it is then we can draw the pixel with the given color + // If it is, the pixel can be drawn with the given color if ((w1 | w2 | w3) >= 0) ImageDrawPixel(dst, x, y, color); // Increment the barycentric coordinates for the next pixel @@ -3863,9 +3863,6 @@ void ImageDrawTriangleEx(Image *dst, Vector2 v1, Vector2 v2, Vector2 v3, Color c int w3Row = (int)((xMin - v1.x)*w3XStep + w3YStep*(yMin - v1.y)); // Calculate the inverse of the sum of the barycentric coordinates for normalization - // NOTE 1: Here, we act as if we multiply by 255 the reciprocal, which avoids additional - // calculations in the loop. This is acceptable because we are only interpolating colors - // NOTE 2: This sum remains constant throughout the triangle float wInvSum = 255.0f/(w1Row + w2Row + w3Row); // Rasterization loop @@ -3965,11 +3962,11 @@ void ImageDraw(Image *dst, Image src, Rectangle srcRec, Rectangle dstRec, Color if ((srcRec.y + srcRec.height) > src.height) srcRec.height = src.height - srcRec.y; // Check if source rectangle needs to be resized to destination rectangle - // In that case, we make a copy of source, and we apply all required transform + // In that case, make a copy of source, and apply all required transform if (((int)srcRec.width != (int)dstRec.width) || ((int)srcRec.height != (int)dstRec.height)) { - srcMod = ImageFromImage(src, srcRec); // Create image from another image - ImageResize(&srcMod, (int)dstRec.width, (int)dstRec.height); // Resize to destination rectangle + srcMod = ImageFromImage(src, srcRec); // Create image from another image + ImageResize(&srcMod, (int)dstRec.width, (int)dstRec.height); // Resize to destination rectangle srcRec = (Rectangle){ 0, 0, (float)srcMod.width, (float)srcMod.height }; srcPtr = &srcMod; @@ -5126,7 +5123,7 @@ Color ColorAlphaBlend(Color dst, Color src, Color tint) else if (src.a == 255) out = src; else { - unsigned int alpha = (unsigned int)src.a + 1; // We are shifting by 8 (dividing by 256), so we need to take that excess into account + unsigned int alpha = (unsigned int)src.a + 1; // Shifting by 8 (dividing by 256), so need to take that excess into account out.a = (unsigned char)(((unsigned int)alpha*256 + (unsigned int)dst.a*(256 - alpha)) >> 8); if (out.a > 0) From dcd813068b832ae7536eea523fec9c980440098f Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 12 Feb 2026 18:55:42 +0100 Subject: [PATCH 05/42] Update raylib.h --- src/raylib.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/raylib.h b/src/raylib.h index b4b175919..f9c504680 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -350,8 +350,8 @@ typedef struct Mesh { float *texcoords2; // Vertex texture second coordinates (UV - 2 components per vertex) (shader-location = 5) float *normals; // Vertex normals (XYZ - 3 components per vertex) (shader-location = 2) float *tangents; // Vertex tangents (XYZW - 4 components per vertex) (shader-location = 4) - unsigned char *colors; // Vertex colors (RGBA - 4 components per vertex) (shader-location = 3) - unsigned short *indices; // Vertex indices (in case vertex data comes indexed) + unsigned char *colors; // Vertex colors (RGBA - 4 components per vertex) (shader-location = 3) + unsigned short *indices; // Vertex indices (in case vertex data comes indexed) // Animation vertex data float *animVertices; // Animated vertex positions (after bones transformations) From 8e81ca0e60e2ce5f76b8fc3ddee4b4212f032ec2 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 12 Feb 2026 19:08:48 +0100 Subject: [PATCH 06/42] Update win32_clipboard.h --- src/external/win32_clipboard.h | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/external/win32_clipboard.h b/src/external/win32_clipboard.h index 6845b0c2e..1cb05457d 100644 --- a/src/external/win32_clipboard.h +++ b/src/external/win32_clipboard.h @@ -13,7 +13,7 @@ unsigned char *Win32GetClipboardImageData(int *width, int *height, unsigned long #include #include -// NOTE: These search for architecture is taken from "Windows.h", and it's necessary if we really don't wanna import windows.h +// NOTE: These search for architecture is taken from "windows.h", and it's necessary to avoid including windows.h // and still make it compile on msvc, because import indirectly importing "winnt.h" (e.g. ) can cause problems is these are not defined. #if !defined(_X86_) && !defined(_68K_) && !defined(_MPPC_) && !defined(_IA64_) && !defined(_AMD64_) && !defined(_ARM_) && !defined(_ARM64_) && !defined(_ARM64EC_) && defined(_M_IX86) #define _X86_ @@ -306,16 +306,15 @@ static int GetPixelDataOffset(BITMAPINFOHEADER bih) const unsigned int rgbaSize = sizeof(RGBQUAD); // NOTE: biSize specifies the number of bytes required by the structure - // We expect to always be 40 because it should be packed + // It's expected to be always 40 because it should be packed if ((bih.biSize == 40) && (sizeof(BITMAPINFOHEADER) == 40)) { // NOTE: biBitCount specifies the number of bits per pixel // Might exist some bit masks *after* the header and *before* the pixel offset - // we're looking, but only if we have more than - // 8 bits per pixel, so we need to ajust for that + // we're looking, but only if more than 8 bits per pixel, so it needs to be ajusted for that if (bih.biBitCount > 8) { - // If (bih.biCompression == BI_RGB) we should NOT offset more + // If (bih.biCompression == BI_RGB) no need to be offset more if (bih.biCompression == BI_BITFIELDS) offset += 3*rgbaSize; else if (bih.biCompression == BI_ALPHABITFIELDS) offset += 4*rgbaSize; // Not widely supported, but valid From debbb90479d70335c2999df82c8fbd61fcf33e0c Mon Sep 17 00:00:00 2001 From: Thomas Anderson <5776225+CrackedPixel@users.noreply.github.com> Date: Sat, 14 Feb 2026 15:09:52 -0600 Subject: [PATCH 07/42] fix extra drawtext() (#5551) --- examples/core/core_random_sequence.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/examples/core/core_random_sequence.c b/examples/core/core_random_sequence.c index 580c2bb26..19d44461e 100644 --- a/examples/core/core_random_sequence.c +++ b/examples/core/core_random_sequence.c @@ -96,8 +96,6 @@ int main(void) { DrawRectangleRec(rectangles[i].rect, rectangles[i].color); - DrawText("Press SPACE to shuffle the sequence", 10, screenHeight - 96, 20, BLACK); - DrawText("Press SPACE to shuffle the current sequence", 10, screenHeight - 96, 20, BLACK); DrawText("Press UP to add a rectangle and generate a new sequence", 10, screenHeight - 64, 20, BLACK); DrawText("Press DOWN to remove a rectangle and generate a new sequence", 10, screenHeight - 32, 20, BLACK); From 8f1421ee5dec1b9e7ad7ea081ac3ed6b36102510 Mon Sep 17 00:00:00 2001 From: Thomas Anderson <5776225+CrackedPixel@users.noreply.github.com> Date: Sat, 14 Feb 2026 15:10:31 -0600 Subject: [PATCH 08/42] fix wrong name (#5552) --- examples/core/core_input_actions.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/core/core_input_actions.c b/examples/core/core_input_actions.c index f4b1156d8..d5fd74e84 100644 --- a/examples/core/core_input_actions.c +++ b/examples/core/core_input_actions.c @@ -117,7 +117,7 @@ int main(void) DrawRectangleV(position, size, releaseAction? BLUE : RED); - DrawText((actionSet == 0)? "Current input set: WASD (default)" : "Current input set: Cursor", 10, 10, 20, WHITE); + DrawText((actionSet == 0)? "Current input set: WASD (default)" : "Current input set: Arrow keys", 10, 10, 20, WHITE); DrawText("Use TAB key to toggles Actions keyset", 10, 50, 20, GREEN); EndDrawing(); From a78d575f752bc26338fce9fffc243e5983da8a8c Mon Sep 17 00:00:00 2001 From: Thomas Anderson <5776225+CrackedPixel@users.noreply.github.com> Date: Sat, 14 Feb 2026 15:11:18 -0600 Subject: [PATCH 09/42] change attenuation distance (#5555) --- examples/audio/audio_sound_positioning.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/audio/audio_sound_positioning.c b/examples/audio/audio_sound_positioning.c index 34b15c07b..41ea4cb74 100644 --- a/examples/audio/audio_sound_positioning.c +++ b/examples/audio/audio_sound_positioning.c @@ -68,7 +68,7 @@ int main(void) .z = 5.0f*sinf(th) }; - SetSoundPosition(camera, sound, spherePos, 20.0f); + SetSoundPosition(camera, sound, spherePos, 1.0f); if (!IsSoundPlaying(sound)) PlaySound(sound); //---------------------------------------------------------------------------------- From fd40d2b374c29feaa1aca956d68460fd28ef7cb9 Mon Sep 17 00:00:00 2001 From: Thomas Anderson <5776225+CrackedPixel@users.noreply.github.com> Date: Sat, 14 Feb 2026 15:11:47 -0600 Subject: [PATCH 10/42] fix missing alias for PS (#5559) --- examples/core/core_input_gamepad.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/examples/core/core_input_gamepad.c b/examples/core/core_input_gamepad.c index a9e0660e0..7291c6d78 100644 --- a/examples/core/core_input_gamepad.c +++ b/examples/core/core_input_gamepad.c @@ -24,7 +24,8 @@ // NOTE: Gamepad name ID depends on drivers and OS #define XBOX_ALIAS_1 "xbox" #define XBOX_ALIAS_2 "x-box" -#define PS_ALIAS "playstation" +#define PS_ALIAS_1 "playstation" +#define PS_ALIAS_2 "sony" //------------------------------------------------------------------------------------ // Program main entry point @@ -148,7 +149,8 @@ int main(void) //DrawText(TextFormat("Xbox axis LT: %02.02f", GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_LEFT_TRIGGER)), 10, 40, 10, BLACK); //DrawText(TextFormat("Xbox axis RT: %02.02f", GetGamepadAxisMovement(gamepad, GAMEPAD_AXIS_RIGHT_TRIGGER)), 10, 60, 10, BLACK); } - else if (TextFindIndex(TextToLower(GetGamepadName(gamepad)), PS_ALIAS) > -1) + else if ((TextFindIndex(TextToLower(GetGamepadName(gamepad)), PS_ALIAS_1) > -1) || + (TextFindIndex(TextToLower(GetGamepadName(gamepad)), PS_ALIAS_2) > -1)) { DrawTexture(texPs3Pad, 0, 0, DARKGRAY); From 4d6ef19fcc53cd2459ce53cdcf791454c7c201d1 Mon Sep 17 00:00:00 2001 From: Thomas Anderson <5776225+CrackedPixel@users.noreply.github.com> Date: Sat, 14 Feb 2026 15:12:11 -0600 Subject: [PATCH 11/42] change on-screen text (#5553) --- examples/core/core_2d_camera_platformer.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/examples/core/core_2d_camera_platformer.c b/examples/core/core_2d_camera_platformer.c index 49d0a940c..8f443acba 100644 --- a/examples/core/core_2d_camera_platformer.c +++ b/examples/core/core_2d_camera_platformer.c @@ -148,10 +148,11 @@ int main(void) DrawText("Controls:", 20, 20, 10, BLACK); DrawText("- Right/Left to move", 40, 40, 10, DARKGRAY); DrawText("- Space to jump", 40, 60, 10, DARKGRAY); - DrawText("- Mouse Wheel to Zoom in-out, R to reset zoom", 40, 80, 10, DARKGRAY); - DrawText("- C to change camera mode", 40, 100, 10, DARKGRAY); - DrawText("Current camera mode:", 20, 120, 10, BLACK); - DrawText(cameraDescriptions[cameraOption], 40, 140, 10, DARKGRAY); + DrawText("- Mouse Wheel to Zoom in-out", 40, 80, 10, DARKGRAY); + DrawText("- R to reset position + zoom", 40, 100, 10, DARKGRAY); + DrawText("- C to change camera mode", 40, 120, 10, DARKGRAY); + DrawText("Current camera mode:", 20, 140, 10, BLACK); + DrawText(cameraDescriptions[cameraOption], 40, 160, 10, DARKGRAY); EndDrawing(); //---------------------------------------------------------------------------------- From b210d165978b9b29651f99aa2770c323d21cfe44 Mon Sep 17 00:00:00 2001 From: Thomas Anderson <5776225+CrackedPixel@users.noreply.github.com> Date: Sat, 14 Feb 2026 15:12:44 -0600 Subject: [PATCH 12/42] fix y-offset casting (#5556) --- examples/shapes/shapes_colors_palette.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/shapes/shapes_colors_palette.c b/examples/shapes/shapes_colors_palette.c index 44da323eb..aa287df53 100644 --- a/examples/shapes/shapes_colors_palette.c +++ b/examples/shapes/shapes_colors_palette.c @@ -45,7 +45,7 @@ int main(void) for (int i = 0; i < MAX_COLORS_COUNT; i++) { colorsRecs[i].x = 20.0f + 100.0f *(i%7) + 10.0f *(i%7); - colorsRecs[i].y = 80.0f + 100.0f *((float)i/7) + 10.0f *((float)i/7); + colorsRecs[i].y = 80.0f + 100.0f *((int)i/7) + 10.0f *((float)i/7); colorsRecs[i].width = 100.0f; colorsRecs[i].height = 100.0f; } From b04d2a22689cbd53baabac7919462b46104b3791 Mon Sep 17 00:00:00 2001 From: Thomas Anderson <5776225+CrackedPixel@users.noreply.github.com> Date: Sat, 14 Feb 2026 15:13:22 -0600 Subject: [PATCH 13/42] change d-pad text to shapes (#5557) --- examples/core/core_input_virtual_controls.c | 39 ++++++++++++++++----- 1 file changed, 31 insertions(+), 8 deletions(-) diff --git a/examples/core/core_input_virtual_controls.c b/examples/core/core_input_virtual_controls.c index db293b993..de4ac7ead 100644 --- a/examples/core/core_input_virtual_controls.c +++ b/examples/core/core_input_virtual_controls.c @@ -51,11 +51,31 @@ int main(void) { padPosition.x, padPosition.y + buttonRadius*1.5f } // Down }; - const char *buttonLabels[BUTTON_MAX] = { - "Y", // Up - "X", // Left - "B", // Right - "A" // Down + Vector2 arrowTris[4][3] = { + // Up + { + { buttonPositions[0].x, buttonPositions[0].y - 12 }, + { buttonPositions[0].x - 9, buttonPositions[0].y + 9 }, + { buttonPositions[0].x + 9, buttonPositions[0].y + 9 } + }, + // Left + { + { buttonPositions[1].x + 9, buttonPositions[1].y - 9 }, + { buttonPositions[1].x - 12, buttonPositions[1].y }, + { buttonPositions[1].x + 9, buttonPositions[1].y + 9 } + }, + // Right + { + { buttonPositions[2].x + 12, buttonPositions[2].y }, + { buttonPositions[2].x - 9, buttonPositions[2].y - 9 }, + { buttonPositions[2].x - 9, buttonPositions[2].y + 9 } + }, + // Down + { + { buttonPositions[3].x - 9, buttonPositions[3].y - 9 }, + { buttonPositions[3].x, buttonPositions[3].y + 12 }, + { buttonPositions[3].x + 9, buttonPositions[3].y - 9 } + } }; Color buttonLabelColors[BUTTON_MAX] = { @@ -128,9 +148,12 @@ int main(void) { DrawCircleV(buttonPositions[i], buttonRadius, (i == pressedButton)? DARKGRAY : BLACK); - DrawText(buttonLabels[i], - (int)buttonPositions[i].x - 7, (int)buttonPositions[i].y - 8, - 20, buttonLabelColors[i]); + DrawTriangle( + arrowTris[i][0], + arrowTris[i][1], + arrowTris[i][2], + buttonLabelColors[i] + ); } DrawText("move the player with D-Pad buttons", 10, 10, 20, DARKGRAY); From fb5bc42190cceb38e51066a399f10fc5217d4773 Mon Sep 17 00:00:00 2001 From: Thomas Anderson <5776225+CrackedPixel@users.noreply.github.com> Date: Sat, 14 Feb 2026 15:16:09 -0600 Subject: [PATCH 14/42] update camera pan speed (#5554) --- src/rcamera.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/rcamera.h b/src/rcamera.h index 82f14fecd..3c880bab7 100644 --- a/src/rcamera.h +++ b/src/rcamera.h @@ -199,7 +199,7 @@ RLAPI Matrix GetCameraProjectionMatrix(Camera *camera, float aspect); //---------------------------------------------------------------------------------- #define CAMERA_MOVE_SPEED 5.4f // Units per second #define CAMERA_ROTATION_SPEED 0.03f -#define CAMERA_PAN_SPEED 0.2f +#define CAMERA_PAN_SPEED 2.0f // Camera mouse movement sensitivity #define CAMERA_MOUSE_MOVE_SENSITIVITY 0.003f From 1061daf197d1984c913af22ba57c419d5e604d49 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 14 Feb 2026 22:17:49 +0100 Subject: [PATCH 15/42] REVIEWED: Installed libraries #5550 --- src/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Makefile b/src/Makefile index 459b79f83..b4ea8f0a9 100644 --- a/src/Makefile +++ b/src/Makefile @@ -841,6 +841,7 @@ ifeq ($(ROOT),root) # Copying raylib development files to $(RAYLIB_H_INSTALL_PATH). cp --update raylib.h $(RAYLIB_H_INSTALL_PATH)/raylib.h cp --update raymath.h $(RAYLIB_H_INSTALL_PATH)/raymath.h + cp --update rcamera.h $(RAYLIB_H_INSTALL_PATH)/rcamera.h cp --update rlgl.h $(RAYLIB_H_INSTALL_PATH)/rlgl.h @echo "raylib development files installed/updated!" else From 180c3c13ba3ab6ca10b43ced8464aed0db7df566 Mon Sep 17 00:00:00 2001 From: Ray Date: Sat, 14 Feb 2026 22:22:31 +0100 Subject: [PATCH 16/42] REVIEWED: `GetImageColor()` #5560 --- src/rtextures.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/rtextures.c b/src/rtextures.c index c49ca1359..1b147796e 100644 --- a/src/rtextures.c +++ b/src/rtextures.c @@ -3295,9 +3295,9 @@ Color GetImageColor(Image image, int x, int y) case PIXELFORMAT_UNCOMPRESSED_R32G32B32A32: { color.r = (unsigned char)(((float *)image.data)[(y*image.width + x)*4]*255.0f); - color.g = (unsigned char)(((float *)image.data)[(y*image.width + x)*4]*255.0f); - color.b = (unsigned char)(((float *)image.data)[(y*image.width + x)*4]*255.0f); - color.a = (unsigned char)(((float *)image.data)[(y*image.width + x)*4]*255.0f); + color.g = (unsigned char)(((float *)image.data)[(y*image.width + x)*4 + 1]*255.0f); + color.b = (unsigned char)(((float *)image.data)[(y*image.width + x)*4 + 2]*255.0f); + color.a = (unsigned char)(((float *)image.data)[(y*image.width + x)*4 + 3]*255.0f); } break; case PIXELFORMAT_UNCOMPRESSED_R16: @@ -3319,9 +3319,9 @@ Color GetImageColor(Image image, int x, int y) case PIXELFORMAT_UNCOMPRESSED_R16G16B16A16: { color.r = (unsigned char)(HalfToFloat(((unsigned short *)image.data)[(y*image.width + x)*4])*255.0f); - color.g = (unsigned char)(HalfToFloat(((unsigned short *)image.data)[(y*image.width + x)*4])*255.0f); - color.b = (unsigned char)(HalfToFloat(((unsigned short *)image.data)[(y*image.width + x)*4])*255.0f); - color.a = (unsigned char)(HalfToFloat(((unsigned short *)image.data)[(y*image.width + x)*4])*255.0f); + color.g = (unsigned char)(HalfToFloat(((unsigned short *)image.data)[(y*image.width + x)*4 + 1])*255.0f); + color.b = (unsigned char)(HalfToFloat(((unsigned short *)image.data)[(y*image.width + x)*4 + 2])*255.0f); + color.a = (unsigned char)(HalfToFloat(((unsigned short *)image.data)[(y*image.width + x)*4 + 3])*255.0f); } break; default: TRACELOG(LOG_WARNING, "Compressed image format does not support color reading"); break; From d01f158bd54d70458ee6e40e78154f04d6d45502 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 15 Feb 2026 13:21:08 +0100 Subject: [PATCH 17/42] REVIEWED: Window initialization on HighDPI monitor (Windows) #5549 --- examples/core/core_highdpi_testbed.c | 2 +- src/platforms/rcore_desktop_glfw.c | 29 +++++++++++++++------------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/examples/core/core_highdpi_testbed.c b/examples/core/core_highdpi_testbed.c index a925527db..1c39a9d2c 100644 --- a/examples/core/core_highdpi_testbed.c +++ b/examples/core/core_highdpi_testbed.c @@ -78,7 +78,7 @@ int main(void) DrawText(TextFormat("WINDOW POSITION: %ix%i", (int)windowPos.x, (int)windowPos.y), 50, 90, 20, DARKGRAY); DrawText(TextFormat("SCREEN SIZE: %ix%i", GetScreenWidth(), GetScreenHeight()), 50, 130, 20, DARKGRAY); DrawText(TextFormat("RENDER SIZE: %ix%i", GetRenderWidth(), GetRenderHeight()), 50, 170, 20, DARKGRAY); - DrawText(TextFormat("SCALE FACTOR: %.1fx%.1f", scaleDpi.x, scaleDpi.y), 50, 210, 20, GRAY); + DrawText(TextFormat("SCALE FACTOR: %.2fx%.2f", scaleDpi.x, scaleDpi.y), 50, 210, 20, GRAY); // Draw reference rectangles, top-left and bottom-right corners DrawRectangle(0, 0, 30, 60, RED); diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index b13018576..42b5a002f 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -1649,31 +1649,34 @@ int InitPlatform(void) TRACELOG(LOG_INFO, "DISPLAY: Trying to enable VSYNC"); } - int fbWidth = CORE.Window.screen.width; - int fbHeight = CORE.Window.screen.height; - if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)) { + // Set screen size to logical pixel size, considering content scaling + Vector2 scaleDpi = GetWindowScaleDPI(); + CORE.Window.render.width = (int)(CORE.Window.screen.width*scaleDpi.x); + CORE.Window.render.height = (int)(CORE.Window.screen.height*scaleDpi.y); + // NOTE: On APPLE platforms system should manage window/input scaling and also framebuffer scaling // Framebuffer scaling is activated with: glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_TRUE); - // Get current framebuffer size, on high-dpi it could be bigger than screen size - glfwGetFramebufferSize(platform.handle, &fbWidth, &fbHeight); + //glfwGetFramebufferSize(platform.handle, &fbWidth, &fbHeight); // Screen scaling matrix is required in case desired screen area is different from display area - CORE.Window.screenScale = MatrixScale((float)fbWidth/CORE.Window.screen.width, (float)fbHeight/CORE.Window.screen.height, 1.0f); + CORE.Window.screenScale = MatrixScale(scaleDpi.x, scaleDpi.y, 1.0f); #if !defined(__APPLE__) // Mouse input scaling for the new screen size - SetMouseScale((float)CORE.Window.screen.width/fbWidth, (float)CORE.Window.screen.height/fbHeight); + SetMouseScale(1.0f/scaleDpi.x, 1.0f/scaleDpi.y); #endif + glfwSetWindowSize(platform.handle, CORE.Window.render.width, CORE.Window.render.height); + } + else + { + CORE.Window.render = CORE.Window.screen; + CORE.Window.currentFbo = CORE.Window.render; } - CORE.Window.render.width = fbWidth; - CORE.Window.render.height = fbHeight; - CORE.Window.currentFbo.width = fbWidth; - CORE.Window.currentFbo.height = fbHeight; - - TRACELOG(LOG_INFO, "DISPLAY: Device initialized successfully"); + TRACELOG(LOG_INFO, "DISPLAY: Device initialized successfully %s", + FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)? "(HighDPI)" : ""); TRACELOG(LOG_INFO, " > Display size: %i x %i", CORE.Window.display.width, CORE.Window.display.height); TRACELOG(LOG_INFO, " > Screen size: %i x %i", CORE.Window.screen.width, CORE.Window.screen.height); TRACELOG(LOG_INFO, " > Render size: %i x %i", CORE.Window.render.width, CORE.Window.render.height); From 059ebaa6ada3228e2334c68b9b7adee3aa8f4a10 Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 15 Feb 2026 15:02:04 +0100 Subject: [PATCH 18/42] REVIEWED: HIghDPI content scaling on macOS --- src/platforms/rcore_desktop_glfw.c | 57 +++++++++++++++++------------- 1 file changed, 32 insertions(+), 25 deletions(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index 42b5a002f..68a321ffd 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -1655,25 +1655,29 @@ int InitPlatform(void) Vector2 scaleDpi = GetWindowScaleDPI(); CORE.Window.render.width = (int)(CORE.Window.screen.width*scaleDpi.x); CORE.Window.render.height = (int)(CORE.Window.screen.height*scaleDpi.y); - - // NOTE: On APPLE platforms system should manage window/input scaling and also framebuffer scaling - // Framebuffer scaling is activated with: glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_TRUE); - // Get current framebuffer size, on high-dpi it could be bigger than screen size - //glfwGetFramebufferSize(platform.handle, &fbWidth, &fbHeight); + //TRACELOG(LOG_INFO, "DPI SCALING: %.2f, %.2f", scaleDpi.x, scaleDpi.y); // Screen scaling matrix is required in case desired screen area is different from display area CORE.Window.screenScale = MatrixScale(scaleDpi.x, scaleDpi.y, 1.0f); + + // NOTE: On APPLE platforms system manage window and input scaling + // Framebuffer scaling is activated with: glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_TRUE); + + // Screen scaling matrix is required in case desired screen area is different from display area + CORE.Window.screenScale = MatrixScale(scaleDpi.x, scaleDpi.y, 1.0f); + #if !defined(__APPLE__) // Mouse input scaling for the new screen size SetMouseScale(1.0f/scaleDpi.x, 1.0f/scaleDpi.y); -#endif + + // Force window size (and framebuffer) refresh glfwSetWindowSize(platform.handle, CORE.Window.render.width, CORE.Window.render.height); +#endif } - else - { - CORE.Window.render = CORE.Window.screen; - CORE.Window.currentFbo = CORE.Window.render; - } + else CORE.Window.render = CORE.Window.screen; + + // Current active framebuffer size is main framebuffer size + CORE.Window.currentFbo = CORE.Window.render; TRACELOG(LOG_INFO, "DISPLAY: Device initialized successfully %s", FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)? "(HighDPI)" : ""); @@ -1681,6 +1685,7 @@ int InitPlatform(void) TRACELOG(LOG_INFO, " > Screen size: %i x %i", CORE.Window.screen.width, CORE.Window.screen.height); TRACELOG(LOG_INFO, " > Render size: %i x %i", CORE.Window.render.width, CORE.Window.render.height); TRACELOG(LOG_INFO, " > Viewport offsets: %i, %i", CORE.Window.renderOffset.x, CORE.Window.renderOffset.y); + //TRACELOG(LOG_INFO, " > Content Scaling: %.2f, %.2f", scaleDpi.x, scaleDpi.y); // Try to center window on screen but avoiding window-bar outside of screen int monitorCount = 0; @@ -1694,13 +1699,17 @@ int InitPlatform(void) int monitorHeight = 0; glfwGetMonitorWorkarea(monitor, &monitorX, &monitorY, &monitorWidth, &monitorHeight); - // TODO: Here CORE.Window.render.width/height should be used instead of - // CORE.Window.screen.width/height to center the window correctly when the high dpi flag is enabled - CORE.Window.position.x = monitorX + (monitorWidth - (int)CORE.Window.screen.width)/2; - CORE.Window.position.y = monitorY + (monitorHeight - (int)CORE.Window.screen.height)/2; - //if (CORE.Window.position.x < monitorX) CORE.Window.position.x = monitorX; - //if (CORE.Window.position.y < monitorY) CORE.Window.position.y = monitorY; + // NOTE: It seems on macOS monitor size is not correct + //TRACELOG(LOG_WARNING, "Monitor info: [%i, %i, %i, %i]", monitorX, monitorY, monitorWidth, monitorHeight); + // Center window into current monitor + #if defined(__APPLE__) + CORE.Window.position.x = monitorX + (monitorWidth - CORE.Window.screen.width)/2; + CORE.Window.position.y = monitorY + (monitorHeight - CORE.Window.screen.height)/2; + #else + CORE.Window.position.x = monitorX + (monitorWidth - CORE.Window.render.width)/2; + CORE.Window.position.y = monitorY + (monitorHeight - CORE.Window.render.height)/2; + #endif SetWindowPosition(CORE.Window.position.x, CORE.Window.position.y); if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_MINIMIZED)) MinimizeWindow(); @@ -1831,8 +1840,9 @@ static void FramebufferSizeCallback(GLFWwindow *window, int width, int height) SetupViewport(width, height); // Set render size - CORE.Window.currentFbo.width = width; - CORE.Window.currentFbo.height = height; + CORE.Window.render.width = width; + CORE.Window.render.height = height; + CORE.Window.currentFbo = CORE.Window.render; CORE.Window.resizedLastFrame = true; if (FLAG_IS_SET(CORE.Window.flags, FLAG_FULLSCREEN_MODE)) @@ -1878,8 +1888,9 @@ static void WindowContentScaleCallback(GLFWwindow *window, float scalex, float s { //TRACELOG(LOG_INFO, "GLFW3: Window content scale changed, scale: [%.2f,%.2f]", scalex, scaley); - float fbWidth = (float)CORE.Window.screen.width*scalex; - float fbHeight = (float)CORE.Window.screen.height*scaley; + CORE.Window.render.width = (int)((float)CORE.Window.screen.width*scalex); + CORE.Window.render.height = (int)((float)CORE.Window.screen.height*scaley); + CORE.Window.currentFbo = CORE.Window.render; // NOTE: On APPLE platforms system should manage window/input scaling and also framebuffer scaling // Framebuffer scaling is activated with: glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_TRUE); @@ -1889,10 +1900,6 @@ static void WindowContentScaleCallback(GLFWwindow *window, float scalex, float s // Mouse input scaling for the new screen size SetMouseScale(1.0f/scalex, 1.0f/scaley); #endif - - CORE.Window.render.width = (int)fbWidth; - CORE.Window.render.height = (int)fbHeight; - CORE.Window.currentFbo = CORE.Window.render; } // GLFW3: Window position callback, runs when window position changes From 6564cea6a31109e9f2fe1a6349c8dd12840098cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yui=20Kinomoto=20/=20=E3=81=8D=E3=81=AE=E3=82=82=E3=81=A8?= =?UTF-8?q?=20=E7=B5=90=E8=A1=A3?= Date: Mon, 16 Feb 2026 04:15:25 +0900 Subject: [PATCH 19/42] Fixed doesn't property load when 1 frame animation. (#5561) --- src/rmodels.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/rmodels.c b/src/rmodels.c index 755d0437d..eadc16f07 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -6244,7 +6244,10 @@ static bool GetPoseAtTimeGLTF(cgltf_interpolation_type interpolationType, cgltf_ } // Constant animation, no need to interpolate - if (FloatEquals(tend, tstart)) return true; + if (FloatEquals(tend, tstart)) + { + interpolationType = cgltf_interpolation_type_step; + } float duration = fmaxf((tend - tstart), EPSILON); float t = (time - tstart)/duration; From 7c48fa9ac9d6cacfa8a1fe5e8a5107380eccc7dd Mon Sep 17 00:00:00 2001 From: Ray Date: Sun, 15 Feb 2026 20:20:53 +0100 Subject: [PATCH 20/42] Update Makefile --- examples/Makefile | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/examples/Makefile b/examples/Makefile index acfcb0857..4f86ad5c0 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -393,14 +393,14 @@ ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_GLFW) # NOTE: Required packages: libegl1-mesa-dev LDLIBS = -lraylib -lGL -lm -lpthread -ldl -lrt - # On X11 requires also below libraries - LDLIBS += -lX11 - # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them - #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - - # On Wayland windowing system, additional libraries requires + # On Wayland, additional libraries requires ifeq ($(USE_WAYLAND_DISPLAY),TRUE) LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon + else + # On X11, additional libraries required + LDLIBS += -lX11 + # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them + #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor endif # Explicit link to libc ifeq ($(RAYLIB_LIBTYPE),SHARED) @@ -439,15 +439,16 @@ ifeq ($(TARGET_PLATFORM),PLATFORM_DESKTOP_SDL) # NOTE: Required packages: libegl1-mesa-dev LDLIBS = -lraylib $(SDL_LIBRARIES) -lGL -lm -lpthread -ldl -lrt - # On X11 requires also below libraries + # On X11, addition libraries required LDLIBS += -lX11 # NOTE: It seems additional libraries are not required any more, latest GLFW just dlopen them #LDLIBS += -lXrandr -lXinerama -lXi -lXxf86vm -lXcursor - # On Wayland windowing system, additional libraries requires + # On Wayland, additional libraries requires ifeq ($(USE_WAYLAND_DISPLAY),TRUE) LDLIBS += -lwayland-client -lwayland-cursor -lwayland-egl -lxkbcommon endif + # Explicit link to libc ifeq ($(RAYLIB_LIBTYPE),SHARED) LDLIBS += -lc From b871a556d7a2b3086e2e70ca254bb742e4f99021 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 17 Feb 2026 12:13:04 +0100 Subject: [PATCH 21/42] Init framebuffer using render size (should be same as currentFbo) --- src/rcore.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/src/rcore.c b/src/rcore.c index 49a928372..97a6cce0e 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -682,8 +682,6 @@ void InitWindow(int width, int height, const char *title) // Initialize window data CORE.Window.screen.width = width; CORE.Window.screen.height = height; - CORE.Window.currentFbo.width = CORE.Window.screen.width; - CORE.Window.currentFbo.height = CORE.Window.screen.height; CORE.Window.eventWaiting = false; CORE.Window.screenScale = MatrixIdentity(); // No draw scaling required by default @@ -709,10 +707,10 @@ void InitWindow(int width, int height, const char *title) // Initialize rlgl default data (buffers and shaders) // NOTE: Current fbo size stored as globals in rlgl for convenience - rlglInit(CORE.Window.currentFbo.width, CORE.Window.currentFbo.height); + rlglInit(CORE.Window.render.width, CORE.Window.render.height); // Setup default viewport - SetupViewport(CORE.Window.currentFbo.width, CORE.Window.currentFbo.height); + SetupViewport(CORE.Window.render.width, CORE.Window.render.height); #if defined(SUPPORT_MODULE_RTEXT) #if defined(SUPPORT_DEFAULT_FONT) From 4678a544b6f74753755c09291c63215bb37fc535 Mon Sep 17 00:00:00 2001 From: paddy <0xPD33@proton.me> Date: Tue, 17 Feb 2026 12:43:52 +0100 Subject: [PATCH 22/42] [rcore][glfw] Fix window scaling on Wayland with GLFW 3.4+ (#5564) * Fix window scaling on Wayland with GLFW 3.4+ display scaling GLFW 3.4 defaults GLFW_SCALE_FRAMEBUFFER to TRUE on all platforms, causing framebuffer/window size mismatch on Wayland with display scaling (content renders in a subset of the window, mouse coordinates are wrong). Three fixes: - Disable GLFW_SCALE_FRAMEBUFFER on Wayland when FLAG_WINDOW_HIGHDPI is not set, restoring 1:1 window-to-framebuffer mapping - With FLAG_WINDOW_HIGHDPI, read actual framebuffer size from GLFW instead of resizing the window (which double-scales on Wayland where GLFW_SCALE_TO_MONITOR has no effect) - Skip mouse coordinate scaling on Wayland since GLFW already reports coordinates in logical (window) space Tested on NixOS/Niri with GLFW 3.4 at 1x, 1.5x, and 2x scaling. Fixes #5504 * Fix fullscreen and borderless windowed scaling on Wayland with HiDPI ToggleFullscreen and ToggleBorderlessWindowed exit paths manually scale screen size by DPI before passing to glfwSetWindowMonitor, which double-scales on Wayland where GLFW_SCALE_FRAMEBUFFER already handles it. Skip the manual resize on Wayland. Also fix FramebufferSizeCallback fullscreen branch: on Wayland with GLFW_SCALE_FRAMEBUFFER the framebuffer is still scaled in fullscreen, so use the logical window size as screen size and derive screenScale from the framebuffer/window ratio. Fixes #5504 * Apply style fixes from code review: remove duplicate screenScale assignment, collapse single-statement ifs to one line, remove trailing periods from comments --- src/platforms/rcore_desktop_glfw.c | 56 +++++++++++++++++++++++------- 1 file changed, 43 insertions(+), 13 deletions(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index 68a321ffd..4cb3726e1 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -221,7 +221,9 @@ void ToggleFullscreen(void) #if !defined(__APPLE__) // Make sure to restore render size considering HighDPI scaling - if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)) + // NOTE: On Wayland, GLFW_SCALE_FRAMEBUFFER handles scaling, skip manual resize + if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI) && + (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND)) { Vector2 scaleDpi = GetWindowScaleDPI(); CORE.Window.screen.width = (unsigned int)(CORE.Window.screen.width*scaleDpi.x); @@ -300,7 +302,9 @@ void ToggleBorderlessWindowed(void) #if !defined(__APPLE__) // Make sure to restore size considering HighDPI scaling - if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)) + // NOTE: On Wayland, GLFW_SCALE_FRAMEBUFFER handles scaling, skip manual resize + if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI) && + (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND)) { Vector2 scaleDpi = GetWindowScaleDPI(); CORE.Window.screen.width = (unsigned int)(CORE.Window.screen.width*scaleDpi.x); @@ -1465,6 +1469,8 @@ int InitPlatform(void) #if defined(__APPLE__) glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_FALSE); #endif + // GLFW 3.4+ defaults GLFW_SCALE_FRAMEBUFFER to TRUE, causing framebuffer/window size mismatch on Wayland with display scaling + if (glfwGetPlatform() == GLFW_PLATFORM_WAYLAND) glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_FALSE); } // Mouse passthrough @@ -1663,15 +1669,23 @@ int InitPlatform(void) // NOTE: On APPLE platforms system manage window and input scaling // Framebuffer scaling is activated with: glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_TRUE); - // Screen scaling matrix is required in case desired screen area is different from display area - CORE.Window.screenScale = MatrixScale(scaleDpi.x, scaleDpi.y, 1.0f); - #if !defined(__APPLE__) - // Mouse input scaling for the new screen size - SetMouseScale(1.0f/scaleDpi.x, 1.0f/scaleDpi.y); + if (glfwGetPlatform() == GLFW_PLATFORM_WAYLAND) + { + // On Wayland, GLFW_SCALE_FRAMEBUFFER handles scaling; read actual framebuffer size instead of resizing the window (which would double-scale) + int fbWidth, fbHeight; + glfwGetFramebufferSize(platform.handle, &fbWidth, &fbHeight); + CORE.Window.render.width = fbWidth; + CORE.Window.render.height = fbHeight; + } + else + { + // Mouse input scaling for the new screen size + SetMouseScale(1.0f/scaleDpi.x, 1.0f/scaleDpi.y); - // Force window size (and framebuffer) refresh - glfwSetWindowSize(platform.handle, CORE.Window.render.width, CORE.Window.render.height); + // Force window size (and framebuffer) refresh + glfwSetWindowSize(platform.handle, CORE.Window.render.width, CORE.Window.render.height); + } #endif } else CORE.Window.render = CORE.Window.screen; @@ -1855,6 +1869,22 @@ static void FramebufferSizeCallback(GLFWwindow *window, int width, int height) CORE.Window.screen.height = height; CORE.Window.screenScale = MatrixScale(1.0f, 1.0f, 1.0f); SetMouseScale(1.0f, 1.0f); + + // On Wayland with GLFW_SCALE_FRAMEBUFFER, the framebuffer is still scaled in fullscreen, use logical window size as screen and apply screenScale + if ((glfwGetPlatform() == GLFW_PLATFORM_WAYLAND) && + FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)) + { + int winWidth, winHeight; + glfwGetWindowSize(platform.handle, &winWidth, &winHeight); + if ((winWidth != width) || (winHeight != height)) + { + CORE.Window.screen.width = winWidth; + CORE.Window.screen.height = winHeight; + float scaleX = (float)width/winWidth; + float scaleY = (float)height/winHeight; + CORE.Window.screenScale = MatrixScale(scaleX, scaleY, 1.0f); + } + } } else // Window mode (including borderless window) { @@ -1867,8 +1897,8 @@ static void FramebufferSizeCallback(GLFWwindow *window, int width, int height) CORE.Window.screen.height = (int)((float)height/scaleDpi.y); CORE.Window.screenScale = MatrixScale(scaleDpi.x, scaleDpi.y, 1.0f); #if !defined(__APPLE__) - // Mouse input scaling for the new screen size - SetMouseScale(1.0f/scaleDpi.x, 1.0f/scaleDpi.y); + // On Wayland, mouse coords are already in logical space + if (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND) SetMouseScale(1.0f/scaleDpi.x, 1.0f/scaleDpi.y); #endif } else @@ -1897,8 +1927,8 @@ static void WindowContentScaleCallback(GLFWwindow *window, float scalex, float s CORE.Window.screenScale = MatrixScale(scalex, scaley, 1.0f); #if !defined(__APPLE__) - // Mouse input scaling for the new screen size - SetMouseScale(1.0f/scalex, 1.0f/scaley); + // On Wayland, mouse coords are already in logical space + if (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND) SetMouseScale(1.0f/scalex, 1.0f/scaley); #endif } From 5bbb2fc1df612d48f53e23c586779ae383b8725d Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 17 Feb 2026 13:22:11 +0100 Subject: [PATCH 23/42] REVIEWED: Wayland checks, using compilation flags when possible #5564 --- src/platforms/rcore_desktop_glfw.c | 46 ++++++++++++++++++------------ 1 file changed, 27 insertions(+), 19 deletions(-) diff --git a/src/platforms/rcore_desktop_glfw.c b/src/platforms/rcore_desktop_glfw.c index 4cb3726e1..af3e6b6c1 100644 --- a/src/platforms/rcore_desktop_glfw.c +++ b/src/platforms/rcore_desktop_glfw.c @@ -219,11 +219,10 @@ void ToggleFullscreen(void) // and considered by GetWindowScaleDPI() FLAG_CLEAR(CORE.Window.flags, FLAG_FULLSCREEN_MODE); -#if !defined(__APPLE__) +#if !defined(__APPLE__) && !defined(_GLFW_WAYLAND) // Make sure to restore render size considering HighDPI scaling // NOTE: On Wayland, GLFW_SCALE_FRAMEBUFFER handles scaling, skip manual resize - if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI) && - (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND)) + if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)) { Vector2 scaleDpi = GetWindowScaleDPI(); CORE.Window.screen.width = (unsigned int)(CORE.Window.screen.width*scaleDpi.x); @@ -300,11 +299,10 @@ void ToggleBorderlessWindowed(void) glfwSetWindowAttrib(platform.handle, GLFW_DECORATED, GLFW_TRUE); FLAG_CLEAR(CORE.Window.flags, FLAG_WINDOW_UNDECORATED); - #if !defined(__APPLE__) + #if !defined(__APPLE__) && !defined(_GLFW_WAYLAND) // Make sure to restore size considering HighDPI scaling // NOTE: On Wayland, GLFW_SCALE_FRAMEBUFFER handles scaling, skip manual resize - if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI) && - (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND)) + if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)) { Vector2 scaleDpi = GetWindowScaleDPI(); CORE.Window.screen.width = (unsigned int)(CORE.Window.screen.width*scaleDpi.x); @@ -1469,8 +1467,11 @@ int InitPlatform(void) #if defined(__APPLE__) glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_FALSE); #endif - // GLFW 3.4+ defaults GLFW_SCALE_FRAMEBUFFER to TRUE, causing framebuffer/window size mismatch on Wayland with display scaling - if (glfwGetPlatform() == GLFW_PLATFORM_WAYLAND) glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_FALSE); +#if defined(_GLFW_WAYLAND) && !defined(_GLFW_X11) + // GLFW 3.4+ defaults GLFW_SCALE_FRAMEBUFFER to TRUE, + // causing framebuffer/window size mismatch on Wayland with display scaling + glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_FALSE); +#endif } // Mouse passthrough @@ -1672,9 +1673,12 @@ int InitPlatform(void) #if !defined(__APPLE__) if (glfwGetPlatform() == GLFW_PLATFORM_WAYLAND) { - // On Wayland, GLFW_SCALE_FRAMEBUFFER handles scaling; read actual framebuffer size instead of resizing the window (which would double-scale) - int fbWidth, fbHeight; + // On Wayland, GLFW_SCALE_FRAMEBUFFER handles scaling; read actual framebuffer size + // instead of resizing the window (which would double-scale) + int fbWidth = 0; + int fbHeight = 0; glfwGetFramebufferSize(platform.handle, &fbWidth, &fbHeight); + CORE.Window.render.width = fbWidth; CORE.Window.render.height = fbHeight; } @@ -1871,20 +1875,24 @@ static void FramebufferSizeCallback(GLFWwindow *window, int width, int height) SetMouseScale(1.0f, 1.0f); // On Wayland with GLFW_SCALE_FRAMEBUFFER, the framebuffer is still scaled in fullscreen, use logical window size as screen and apply screenScale - if ((glfwGetPlatform() == GLFW_PLATFORM_WAYLAND) && - FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)) +#if defined(_GLFW_WAYLAND) && !defined(_GLFW_X11) + if (FLAG_IS_SET(CORE.Window.flags, FLAG_WINDOW_HIGHDPI)) { - int winWidth, winHeight; + int winWidth = 0; + int winHeight = 0; glfwGetWindowSize(platform.handle, &winWidth, &winHeight); + if ((winWidth != width) || (winHeight != height)) { CORE.Window.screen.width = winWidth; CORE.Window.screen.height = winHeight; float scaleX = (float)width/winWidth; float scaleY = (float)height/winHeight; + CORE.Window.screenScale = MatrixScale(scaleX, scaleY, 1.0f); } } +#endif } else // Window mode (including borderless window) { @@ -1896,9 +1904,9 @@ static void FramebufferSizeCallback(GLFWwindow *window, int width, int height) CORE.Window.screen.width = (int)((float)width/scaleDpi.x); CORE.Window.screen.height = (int)((float)height/scaleDpi.y); CORE.Window.screenScale = MatrixScale(scaleDpi.x, scaleDpi.y, 1.0f); -#if !defined(__APPLE__) - // On Wayland, mouse coords are already in logical space - if (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND) SetMouseScale(1.0f/scaleDpi.x, 1.0f/scaleDpi.y); +#if !defined(__APPLE__) && !defined(_GLFW_WAYLAND) + // On macOS and Linux-Wayland, mouse coords are already in logical space + SetMouseScale(1.0f/scaleDpi.x, 1.0f/scaleDpi.y); #endif } else @@ -1926,9 +1934,9 @@ static void WindowContentScaleCallback(GLFWwindow *window, float scalex, float s // Framebuffer scaling is activated with: glfwWindowHint(GLFW_SCALE_FRAMEBUFFER, GLFW_TRUE); CORE.Window.screenScale = MatrixScale(scalex, scaley, 1.0f); -#if !defined(__APPLE__) - // On Wayland, mouse coords are already in logical space - if (glfwGetPlatform() != GLFW_PLATFORM_WAYLAND) SetMouseScale(1.0f/scalex, 1.0f/scaley); +#if !defined(__APPLE__) && !defined(_GLFW_WAYLAND) + // On macOS and Linux-Wayland, mouse coords are already in logical space + SetMouseScale(1.0f/scalex, 1.0f/scaley); #endif } From 4311df1e6d5632d718fb6b14f5d4b72ce6b7744f Mon Sep 17 00:00:00 2001 From: dmitrii-brand <114125495+dmitrii-brand@users.noreply.github.com> Date: Tue, 17 Feb 2026 14:43:46 +0000 Subject: [PATCH 24/42] Add bone blending animation example (#5543) - Demonstrates per-bone animation blending for smooth transitions - Supports upper/lower body selective blending (walk + attack) - Includes uniform blending mode for comparison - Uses GPU skinning for performance - Follows raylib example conventions --- examples/examples_list.txt | 1 + .../models/models_animation_bone_blending.c | 291 ++++++++++++++++++ 2 files changed, 292 insertions(+) create mode 100644 examples/models/models_animation_bone_blending.c diff --git a/examples/examples_list.txt b/examples/examples_list.txt index eda62ee13..f4cfa0e47 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -163,6 +163,7 @@ models;models_heightmap_rendering;★☆☆☆;1.8;3.5;2015;2025;"Ramon Santamar models;models_skybox_rendering;★★☆☆;1.8;4.0;2017;2025;"Ramon Santamaria";@raysan5 models;models_textured_cube;★★☆☆;4.5;4.5;2022;2025;"Ramon Santamaria";@raysan5 models;models_animation_gpu_skinning;★★★☆;4.5;4.5;2024;2025;"Daniel Holden";@orangeduck +models;models_animation_bone_blending;★★★★;5.5;5.5;2025;2025;"[Your Name]";@[your_github] models;models_bone_socket;★★★★;4.5;4.5;2024;2025;"iP";@ipzaur models;models_tesseract_view;★★☆☆;5.6-dev;5.6-dev;2024;2025;"Timothy van der Valk";@arceryz models;models_basic_voxel;★★☆☆;5.5;5.5;2025;2025;"Tim Little";@timlittle diff --git a/examples/models/models_animation_bone_blending.c b/examples/models/models_animation_bone_blending.c new file mode 100644 index 000000000..ea6827762 --- /dev/null +++ b/examples/models/models_animation_bone_blending.c @@ -0,0 +1,291 @@ +/******************************************************************************************* +* +* raylib [models] example - animation bone blending +* +* Example complexity rating: [★★★★] 4/4 +* +* Example originally created with raylib 5.5, last time updated with raylib 5.5 +* +* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software +* +* This example demonstrates per-bone animation blending, allowing smooth transitions +* between two animations by interpolating bone transforms. This is useful for: +* - Blending movement animations (walk/run) with action animations (jump/attack) +* - Creating smooth animation transitions +* - Layering animations (e.g., upper body attack while lower body walks) +* +* Note: Due to limitations in the Apple OpenGL driver, GPU skinning does not work on MacOS +* +********************************************************************************************/ + +#include "raylib.h" +#include "raymath.h" +#include // For memcpy +#include // For NULL + +#if defined(PLATFORM_DESKTOP) + #define GLSL_VERSION 330 +#else // PLATFORM_ANDROID, PLATFORM_WEB + #define GLSL_VERSION 100 +#endif + +//------------------------------------------------------------------------------------ +// Check if a bone is part of upper body (for selective blending) +//------------------------------------------------------------------------------------ +bool IsUpperBodyBone(const char *boneName) +{ + // Common upper body bone names (adjust based on your model) + if (TextIsEqual(boneName, "spine") || TextIsEqual(boneName, "spine1") || TextIsEqual(boneName, "spine2") || + TextIsEqual(boneName, "chest") || TextIsEqual(boneName, "upperChest") || + TextIsEqual(boneName, "neck") || TextIsEqual(boneName, "head") || + TextIsEqual(boneName, "shoulder") || TextIsEqual(boneName, "shoulder_L") || TextIsEqual(boneName, "shoulder_R") || + TextIsEqual(boneName, "upperArm") || TextIsEqual(boneName, "upperArm_L") || TextIsEqual(boneName, "upperArm_R") || + TextIsEqual(boneName, "lowerArm") || TextIsEqual(boneName, "lowerArm_L") || TextIsEqual(boneName, "lowerArm_R") || + TextIsEqual(boneName, "hand") || TextIsEqual(boneName, "hand_L") || TextIsEqual(boneName, "hand_R") || + TextIsEqual(boneName, "clavicle") || TextIsEqual(boneName, "clavicle_L") || TextIsEqual(boneName, "clavicle_R")) + { + return true; + } + + // Check if bone name contains upper body keywords + if (strstr(boneName, "spine") != NULL || strstr(boneName, "chest") != NULL || + strstr(boneName, "neck") != NULL || strstr(boneName, "head") != NULL || + strstr(boneName, "shoulder") != NULL || strstr(boneName, "arm") != NULL || + strstr(boneName, "hand") != NULL || strstr(boneName, "clavicle") != NULL) + { + return true; + } + + return false; +} + +//------------------------------------------------------------------------------------ +// Blend two animations per-bone with selective upper/lower body blending +//------------------------------------------------------------------------------------ +void BlendModelAnimationsBones(Model *model, ModelAnimation *anim1, int frame1, + ModelAnimation *anim2, int frame2, float blendFactor, bool upperBodyBlend) +{ + // Clamp blend factor to [0, 1] + blendFactor = fminf(1.0f, fmaxf(0.0f, blendFactor)); + + // Validate inputs + if (anim1->boneCount == 0 || anim1->framePoses == NULL || + anim2->boneCount == 0 || anim2->framePoses == NULL || + model->boneCount == 0 || model->bindPose == NULL) + { + return; + } + + // Ensure frame indices are valid + if (frame1 >= anim1->frameCount) frame1 = anim1->frameCount - 1; + if (frame2 >= anim2->frameCount) frame2 = anim2->frameCount - 1; + if (frame1 < 0) frame1 = 0; + if (frame2 < 0) frame2 = 0; + + // Find first mesh with bones + int firstMeshWithBones = -1; + for (int i = 0; i < model->meshCount; i++) + { + if (model->meshes[i].boneMatrices) + { + firstMeshWithBones = i; + break; + } + } + + if (firstMeshWithBones == -1) return; + + // Get bone count (use minimum of all to be safe) + int boneCount = model->boneCount; + if (anim1->boneCount < boneCount) boneCount = anim1->boneCount; + if (anim2->boneCount < boneCount) boneCount = anim2->boneCount; + + // Blend each bone + for (int boneId = 0; boneId < boneCount; boneId++) + { + // Determine blend factor for this bone + float boneBlendFactor = blendFactor; + + // If upper body blending is enabled, use different blend factors for upper vs lower body + if (upperBodyBlend) + { + const char *boneName = model->bones[boneId].name; + bool isUpperBody = IsUpperBodyBone(boneName); + + // Upper body: use anim2 (attack), Lower body: use anim1 (walk) + // blendFactor = 0.0 means full anim1 (walk), 1.0 means full anim2 (attack) + if (isUpperBody) + { + // Upper body: blend towards anim2 (attack) + boneBlendFactor = blendFactor; + } + else + { + // Lower body: blend towards anim1 (walk) - invert the blend + boneBlendFactor = 1.0f - blendFactor; + } + } + + // Get transforms from both animations + Transform *bindTransform = &model->bindPose[boneId]; + Transform *anim1Transform = &anim1->framePoses[frame1][boneId]; + Transform *anim2Transform = &anim2->framePoses[frame2][boneId]; + + // Blend the transforms + Transform blended; + blended.translation = Vector3Lerp(anim1Transform->translation, anim2Transform->translation, boneBlendFactor); + blended.rotation = QuaternionSlerp(anim1Transform->rotation, anim2Transform->rotation, boneBlendFactor); + blended.scale = Vector3Lerp(anim1Transform->scale, anim2Transform->scale, boneBlendFactor); + + // Convert bind pose to matrix + Matrix bindMatrix = MatrixMultiply(MatrixMultiply( + MatrixScale(bindTransform->scale.x, bindTransform->scale.y, bindTransform->scale.z), + QuaternionToMatrix(bindTransform->rotation)), + MatrixTranslate(bindTransform->translation.x, bindTransform->translation.y, bindTransform->translation.z)); + + // Convert blended transform to matrix + Matrix blendedMatrix = MatrixMultiply(MatrixMultiply( + MatrixScale(blended.scale.x, blended.scale.y, blended.scale.z), + QuaternionToMatrix(blended.rotation)), + MatrixTranslate(blended.translation.x, blended.translation.y, blended.translation.z)); + + // Calculate final bone matrix (similar to UpdateModelAnimationBones) + model->meshes[firstMeshWithBones].boneMatrices[boneId] = MatrixMultiply(MatrixInvert(bindMatrix), blendedMatrix); + } + + // Copy bone matrices to remaining meshes + for (int i = firstMeshWithBones + 1; i < model->meshCount; i++) + { + if (model->meshes[i].boneMatrices) + { + memcpy(model->meshes[i].boneMatrices, + model->meshes[firstMeshWithBones].boneMatrices, + model->meshes[i].boneCount * sizeof(model->meshes[i].boneMatrices[0])); + } + } +} + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [models] example - animation bone blending"); + + // Define the camera to look into our 3d world + Camera camera = { 0 }; + camera.position = (Vector3){ 5.0f, 5.0f, 5.0f }; // Camera position + camera.target = (Vector3){ 0.0f, 2.0f, 0.0f }; // Camera looking at point + camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) + camera.fovy = 45.0f; // Camera field-of-view Y + camera.projection = CAMERA_PERSPECTIVE; // Camera projection type + + // Load gltf model + Model characterModel = LoadModel("resources/models/gltf/greenman.glb"); + + // Load skinning shader + Shader skinningShader = LoadShader(TextFormat("resources/shaders/glsl%i/skinning.vs", GLSL_VERSION), + TextFormat("resources/shaders/glsl%i/skinning.fs", GLSL_VERSION)); + + characterModel.materials[1].shader = skinningShader; + + // Load gltf model animations + int animsCount = 0; + ModelAnimation *modelAnimations = LoadModelAnimations("resources/models/gltf/greenman.glb", &animsCount); + + // Log all available animations for debugging + TraceLog(LOG_INFO, "Found %d animations:", animsCount); + for (int i = 0; i < animsCount; i++) + { + TraceLog(LOG_INFO, " Animation %d: %s (%d frames)", i, modelAnimations[i].name, modelAnimations[i].frameCount); + } + + // Use specific indices: walk/move = 2, attack = 3 + unsigned int animIndex1 = 2; // Walk/Move animation (index 2) + unsigned int animIndex2 = 3; // Attack animation (index 3) + unsigned int animCurrentFrame1 = 0; + unsigned int animCurrentFrame2 = 0; + + // Validate indices + if (animIndex1 >= animsCount) animIndex1 = 0; + if (animIndex2 >= animsCount) animIndex2 = (animsCount > 1) ? 1 : 0; + + TraceLog(LOG_INFO, "Using Walk (index %d): %s", animIndex1, modelAnimations[animIndex1].name); + TraceLog(LOG_INFO, "Using Attack (index %d): %s", animIndex2, modelAnimations[animIndex2].name); + + Vector3 position = { 0.0f, 0.0f, 0.0f }; // Set model position + bool upperBodyBlend = true; // Toggle: true = upper/lower body blending, false = uniform blending (50/50) + + DisableCursor(); // Limit cursor to relative movement inside the window + + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + UpdateCamera(&camera, CAMERA_THIRD_PERSON); + + // Toggle upper/lower body blending mode (SPACE key) + if (IsKeyPressed(KEY_SPACE)) upperBodyBlend = !upperBodyBlend; + + // Update animation frames + ModelAnimation anim1 = modelAnimations[animIndex1]; + ModelAnimation anim2 = modelAnimations[animIndex2]; + + animCurrentFrame1 = (animCurrentFrame1 + 1) % anim1.frameCount; + animCurrentFrame2 = (animCurrentFrame2 + 1) % anim2.frameCount; + + // Blend the two animations + characterModel.transform = MatrixTranslate(position.x, position.y, position.z); + // When upperBodyBlend is ON: upper body = attack (1.0), lower body = walk (0.0) + // When upperBodyBlend is OFF: uniform blend at 0.5 (50% walk, 50% attack) + float blendFactor = upperBodyBlend ? 1.0f : 0.5f; + BlendModelAnimationsBones(&characterModel, &anim1, animCurrentFrame1, &anim2, animCurrentFrame2, blendFactor, upperBodyBlend); + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + BeginMode3D(camera); + + // Draw character mesh, pose calculation is done in shader (GPU skinning) + DrawMesh(characterModel.meshes[0], characterModel.materials[1], characterModel.transform); + + DrawGrid(10, 1.0f); + + EndMode3D(); + + // Draw UI + DrawText("BONE BLENDING EXAMPLE", 10, 10, 20, DARKGRAY); + DrawText(TextFormat("Walk (Animation 2): %s", anim1.name), 10, 35, 10, GRAY); + DrawText(TextFormat("Attack (Animation 3): %s", anim2.name), 10, 50, 10, GRAY); + DrawText(TextFormat("Mode: %s", upperBodyBlend ? "Upper/Lower Body Blending" : "Uniform Blending"), 10, 65, 10, GRAY); + DrawText("SPACE - Toggle blending mode", 10, GetScreenHeight() - 20, 10, DARKGRAY); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + UnloadModelAnimations(modelAnimations, animsCount); // Unload model animation + UnloadModel(characterModel); // Unload model and meshes/material + UnloadShader(skinningShader); // Unload GPU skinning shader + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} From 95edeeccd27c1cafb2241237415da28cc6dce6f0 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 17 Feb 2026 16:17:14 +0100 Subject: [PATCH 25/42] REVIEWED: example: `models_animation_bone_blending` --- examples/examples_list.txt | 1 - .../models/models_animation_bone_blending.c | 297 +++++++++--------- 2 files changed, 151 insertions(+), 147 deletions(-) diff --git a/examples/examples_list.txt b/examples/examples_list.txt index f4cfa0e47..eda62ee13 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -163,7 +163,6 @@ models;models_heightmap_rendering;★☆☆☆;1.8;3.5;2015;2025;"Ramon Santamar models;models_skybox_rendering;★★☆☆;1.8;4.0;2017;2025;"Ramon Santamaria";@raysan5 models;models_textured_cube;★★☆☆;4.5;4.5;2022;2025;"Ramon Santamaria";@raysan5 models;models_animation_gpu_skinning;★★★☆;4.5;4.5;2024;2025;"Daniel Holden";@orangeduck -models;models_animation_bone_blending;★★★★;5.5;5.5;2025;2025;"[Your Name]";@[your_github] models;models_bone_socket;★★★★;4.5;4.5;2024;2025;"iP";@ipzaur models;models_tesseract_view;★★☆☆;5.6-dev;5.6-dev;2024;2025;"Timothy van der Valk";@arceryz models;models_basic_voxel;★★☆☆;5.5;5.5;2025;2025;"Tim Little";@timlittle diff --git a/examples/models/models_animation_bone_blending.c b/examples/models/models_animation_bone_blending.c index ea6827762..11e05a305 100644 --- a/examples/models/models_animation_bone_blending.c +++ b/examples/models/models_animation_bone_blending.c @@ -6,23 +6,29 @@ * * Example originally created with raylib 5.5, last time updated with raylib 5.5 * +* This example demonstrates per-bone animation blending, allowing smooth transitions +* between two animations by interpolating bone transforms. This is useful for: +* - Blending movement animations (walk/run) with action animations (jump/attack) +* - Creating smooth animation transitions +* - Layering animations (e.g., upper body attack while lower body walks) +* +* Example contributed by dmitrii-brand (@dmitrii-brand) and reviewed by Ramon Santamaria (@raysan5) +* +* NOTE: Due to limitations in the Apple OpenGL driver, this feature does not work on MacOS +* * Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, * BSD-like license that allows static linking with closed source software * -* This example demonstrates per-bone animation blending, allowing smooth transitions -* between two animations by interpolating bone transforms. This is useful for: -* - Blending movement animations (walk/run) with action animations (jump/attack) -* - Creating smooth animation transitions -* - Layering animations (e.g., upper body attack while lower body walks) -* -* Note: Due to limitations in the Apple OpenGL driver, GPU skinning does not work on MacOS +* Copyright (c) 2026 dmitrii-brand (@dmitrii-brand) * ********************************************************************************************/ #include "raylib.h" + #include "raymath.h" -#include // For memcpy -#include // For NULL + +#include // Required for: memcpy() +#include // Required for: NULL #if defined(PLATFORM_DESKTOP) #define GLSL_VERSION 330 @@ -31,140 +37,11 @@ #endif //------------------------------------------------------------------------------------ -// Check if a bone is part of upper body (for selective blending) +// Module Functions Declaration //------------------------------------------------------------------------------------ -bool IsUpperBodyBone(const char *boneName) -{ - // Common upper body bone names (adjust based on your model) - if (TextIsEqual(boneName, "spine") || TextIsEqual(boneName, "spine1") || TextIsEqual(boneName, "spine2") || - TextIsEqual(boneName, "chest") || TextIsEqual(boneName, "upperChest") || - TextIsEqual(boneName, "neck") || TextIsEqual(boneName, "head") || - TextIsEqual(boneName, "shoulder") || TextIsEqual(boneName, "shoulder_L") || TextIsEqual(boneName, "shoulder_R") || - TextIsEqual(boneName, "upperArm") || TextIsEqual(boneName, "upperArm_L") || TextIsEqual(boneName, "upperArm_R") || - TextIsEqual(boneName, "lowerArm") || TextIsEqual(boneName, "lowerArm_L") || TextIsEqual(boneName, "lowerArm_R") || - TextIsEqual(boneName, "hand") || TextIsEqual(boneName, "hand_L") || TextIsEqual(boneName, "hand_R") || - TextIsEqual(boneName, "clavicle") || TextIsEqual(boneName, "clavicle_L") || TextIsEqual(boneName, "clavicle_R")) - { - return true; - } - - // Check if bone name contains upper body keywords - if (strstr(boneName, "spine") != NULL || strstr(boneName, "chest") != NULL || - strstr(boneName, "neck") != NULL || strstr(boneName, "head") != NULL || - strstr(boneName, "shoulder") != NULL || strstr(boneName, "arm") != NULL || - strstr(boneName, "hand") != NULL || strstr(boneName, "clavicle") != NULL) - { - return true; - } - - return false; -} - -//------------------------------------------------------------------------------------ -// Blend two animations per-bone with selective upper/lower body blending -//------------------------------------------------------------------------------------ -void BlendModelAnimationsBones(Model *model, ModelAnimation *anim1, int frame1, - ModelAnimation *anim2, int frame2, float blendFactor, bool upperBodyBlend) -{ - // Clamp blend factor to [0, 1] - blendFactor = fminf(1.0f, fmaxf(0.0f, blendFactor)); - - // Validate inputs - if (anim1->boneCount == 0 || anim1->framePoses == NULL || - anim2->boneCount == 0 || anim2->framePoses == NULL || - model->boneCount == 0 || model->bindPose == NULL) - { - return; - } - - // Ensure frame indices are valid - if (frame1 >= anim1->frameCount) frame1 = anim1->frameCount - 1; - if (frame2 >= anim2->frameCount) frame2 = anim2->frameCount - 1; - if (frame1 < 0) frame1 = 0; - if (frame2 < 0) frame2 = 0; - - // Find first mesh with bones - int firstMeshWithBones = -1; - for (int i = 0; i < model->meshCount; i++) - { - if (model->meshes[i].boneMatrices) - { - firstMeshWithBones = i; - break; - } - } - - if (firstMeshWithBones == -1) return; - - // Get bone count (use minimum of all to be safe) - int boneCount = model->boneCount; - if (anim1->boneCount < boneCount) boneCount = anim1->boneCount; - if (anim2->boneCount < boneCount) boneCount = anim2->boneCount; - - // Blend each bone - for (int boneId = 0; boneId < boneCount; boneId++) - { - // Determine blend factor for this bone - float boneBlendFactor = blendFactor; - - // If upper body blending is enabled, use different blend factors for upper vs lower body - if (upperBodyBlend) - { - const char *boneName = model->bones[boneId].name; - bool isUpperBody = IsUpperBodyBone(boneName); - - // Upper body: use anim2 (attack), Lower body: use anim1 (walk) - // blendFactor = 0.0 means full anim1 (walk), 1.0 means full anim2 (attack) - if (isUpperBody) - { - // Upper body: blend towards anim2 (attack) - boneBlendFactor = blendFactor; - } - else - { - // Lower body: blend towards anim1 (walk) - invert the blend - boneBlendFactor = 1.0f - blendFactor; - } - } - - // Get transforms from both animations - Transform *bindTransform = &model->bindPose[boneId]; - Transform *anim1Transform = &anim1->framePoses[frame1][boneId]; - Transform *anim2Transform = &anim2->framePoses[frame2][boneId]; - - // Blend the transforms - Transform blended; - blended.translation = Vector3Lerp(anim1Transform->translation, anim2Transform->translation, boneBlendFactor); - blended.rotation = QuaternionSlerp(anim1Transform->rotation, anim2Transform->rotation, boneBlendFactor); - blended.scale = Vector3Lerp(anim1Transform->scale, anim2Transform->scale, boneBlendFactor); - - // Convert bind pose to matrix - Matrix bindMatrix = MatrixMultiply(MatrixMultiply( - MatrixScale(bindTransform->scale.x, bindTransform->scale.y, bindTransform->scale.z), - QuaternionToMatrix(bindTransform->rotation)), - MatrixTranslate(bindTransform->translation.x, bindTransform->translation.y, bindTransform->translation.z)); - - // Convert blended transform to matrix - Matrix blendedMatrix = MatrixMultiply(MatrixMultiply( - MatrixScale(blended.scale.x, blended.scale.y, blended.scale.z), - QuaternionToMatrix(blended.rotation)), - MatrixTranslate(blended.translation.x, blended.translation.y, blended.translation.z)); - - // Calculate final bone matrix (similar to UpdateModelAnimationBones) - model->meshes[firstMeshWithBones].boneMatrices[boneId] = MatrixMultiply(MatrixInvert(bindMatrix), blendedMatrix); - } - - // Copy bone matrices to remaining meshes - for (int i = firstMeshWithBones + 1; i < model->meshCount; i++) - { - if (model->meshes[i].boneMatrices) - { - memcpy(model->meshes[i].boneMatrices, - model->meshes[firstMeshWithBones].boneMatrices, - model->meshes[i].boneCount * sizeof(model->meshes[i].boneMatrices[0])); - } - } -} +static bool IsUpperBodyBone(const char *boneName); +static void BlendModelAnimationsBones(Model *model, ModelAnimation *anim1, int frame1, + ModelAnimation *anim2, int frame2, float blendFactor, bool upperBodyBlend); //------------------------------------------------------------------------------------ // Program main entry point @@ -207,8 +84,8 @@ int main(void) } // Use specific indices: walk/move = 2, attack = 3 - unsigned int animIndex1 = 2; // Walk/Move animation (index 2) - unsigned int animIndex2 = 3; // Attack animation (index 3) + unsigned int animIndex1 = 2; // Walk/Move animation (index 2) + unsigned int animIndex2 = 3; // Attack animation (index 3) unsigned int animCurrentFrame1 = 0; unsigned int animCurrentFrame2 = 0; @@ -241,8 +118,8 @@ int main(void) ModelAnimation anim1 = modelAnimations[animIndex1]; ModelAnimation anim2 = modelAnimations[animIndex2]; - animCurrentFrame1 = (animCurrentFrame1 + 1) % anim1.frameCount; - animCurrentFrame2 = (animCurrentFrame2 + 1) % anim2.frameCount; + animCurrentFrame1 = (animCurrentFrame1 + 1)%anim1.frameCount; + animCurrentFrame2 = (animCurrentFrame2 + 1)%anim2.frameCount; // Blend the two animations characterModel.transform = MatrixTranslate(position.x, position.y, position.z); @@ -289,3 +166,131 @@ int main(void) return 0; } + +//---------------------------------------------------------------------------------- +// Module Functions Definition +//---------------------------------------------------------------------------------- +// Check if a bone is part of upper body (for selective blending) +static bool IsUpperBodyBone(const char *boneName) +{ + // Common upper body bone names (adjust based on your model) + if (TextIsEqual(boneName, "spine") || TextIsEqual(boneName, "spine1") || TextIsEqual(boneName, "spine2") || + TextIsEqual(boneName, "chest") || TextIsEqual(boneName, "upperChest") || + TextIsEqual(boneName, "neck") || TextIsEqual(boneName, "head") || + TextIsEqual(boneName, "shoulder") || TextIsEqual(boneName, "shoulder_L") || TextIsEqual(boneName, "shoulder_R") || + TextIsEqual(boneName, "upperArm") || TextIsEqual(boneName, "upperArm_L") || TextIsEqual(boneName, "upperArm_R") || + TextIsEqual(boneName, "lowerArm") || TextIsEqual(boneName, "lowerArm_L") || TextIsEqual(boneName, "lowerArm_R") || + TextIsEqual(boneName, "hand") || TextIsEqual(boneName, "hand_L") || TextIsEqual(boneName, "hand_R") || + TextIsEqual(boneName, "clavicle") || TextIsEqual(boneName, "clavicle_L") || TextIsEqual(boneName, "clavicle_R")) + { + return true; + } + + // Check if bone name contains upper body keywords + if (strstr(boneName, "spine") != NULL || strstr(boneName, "chest") != NULL || + strstr(boneName, "neck") != NULL || strstr(boneName, "head") != NULL || + strstr(boneName, "shoulder") != NULL || strstr(boneName, "arm") != NULL || + strstr(boneName, "hand") != NULL || strstr(boneName, "clavicle") != NULL) + { + return true; + } + + return false; +} + +// Blend two animations per-bone with selective upper/lower body blending +static void BlendModelAnimationsBones(Model *model, ModelAnimation *anim1, int frame1, + ModelAnimation *anim2, int frame2, float blendFactor, bool upperBodyBlend) +{ + // Validate inputs + if (anim1->boneCount == 0 || anim1->framePoses == NULL || + anim2->boneCount == 0 || anim2->framePoses == NULL || + model->boneCount == 0 || model->bindPose == NULL) + { + return; + } + + // Clamp blend factor to [0, 1] + blendFactor = fminf(1.0f, fmaxf(0.0f, blendFactor)); + + // Ensure frame indices are valid + if (frame1 >= anim1->frameCount) frame1 = anim1->frameCount - 1; + if (frame2 >= anim2->frameCount) frame2 = anim2->frameCount - 1; + if (frame1 < 0) frame1 = 0; + if (frame2 < 0) frame2 = 0; + + // Find first mesh with bones + int firstMeshWithBones = -1; + for (int i = 0; i < model->meshCount; i++) + { + if (model->meshes[i].boneMatrices) + { + firstMeshWithBones = i; + break; + } + } + + if (firstMeshWithBones == -1) return; + + // Get bone count (use minimum of all to be safe) + int boneCount = model->boneCount; + if (anim1->boneCount < boneCount) boneCount = anim1->boneCount; + if (anim2->boneCount < boneCount) boneCount = anim2->boneCount; + + // Blend each bone + for (int boneId = 0; boneId < boneCount; boneId++) + { + // Determine blend factor for this bone + float boneBlendFactor = blendFactor; + + // If upper body blending is enabled, use different blend factors for upper vs lower body + if (upperBodyBlend) + { + const char *boneName = model->bones[boneId].name; + bool isUpperBody = IsUpperBodyBone(boneName); + + // Upper body: use anim2 (attack), Lower body: use anim1 (walk) + // blendFactor = 0.0 means full anim1 (walk), 1.0 means full anim2 (attack) + if (isUpperBody) boneBlendFactor = blendFactor; // Upper body: blend towards anim2 (attack) + else boneBlendFactor = 1.0f - blendFactor; // Lower body: blend towards anim1 (walk) - invert the blend + } + + // Get transforms from both animations + Transform *bindTransform = &model->bindPose[boneId]; + Transform *anim1Transform = &anim1->framePoses[frame1][boneId]; + Transform *anim2Transform = &anim2->framePoses[frame2][boneId]; + + // Blend the transforms + Transform blended; + blended.translation = Vector3Lerp(anim1Transform->translation, anim2Transform->translation, boneBlendFactor); + blended.rotation = QuaternionSlerp(anim1Transform->rotation, anim2Transform->rotation, boneBlendFactor); + blended.scale = Vector3Lerp(anim1Transform->scale, anim2Transform->scale, boneBlendFactor); + + // Convert bind pose to matrix + Matrix bindMatrix = MatrixMultiply(MatrixMultiply( + MatrixScale(bindTransform->scale.x, bindTransform->scale.y, bindTransform->scale.z), + QuaternionToMatrix(bindTransform->rotation)), + MatrixTranslate(bindTransform->translation.x, bindTransform->translation.y, bindTransform->translation.z)); + + // Convert blended transform to matrix + Matrix blendedMatrix = MatrixMultiply(MatrixMultiply( + MatrixScale(blended.scale.x, blended.scale.y, blended.scale.z), + QuaternionToMatrix(blended.rotation)), + MatrixTranslate(blended.translation.x, blended.translation.y, blended.translation.z)); + + // Calculate final bone matrix (similar to UpdateModelAnimationBones) + model->meshes[firstMeshWithBones].boneMatrices[boneId] = MatrixMultiply(MatrixInvert(bindMatrix), blendedMatrix); + } + + // Copy bone matrices to remaining meshes + for (int i = firstMeshWithBones + 1; i < model->meshCount; i++) + { + if (model->meshes[i].boneMatrices) + { + memcpy(model->meshes[i].boneMatrices, + model->meshes[firstMeshWithBones].boneMatrices, + model->meshes[i].boneCount*sizeof(model->meshes[i].boneMatrices[0])); + } + } +} + From 1955516f54585c6a4418866fbaf96cb62eec91ed Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 17 Feb 2026 16:39:02 +0100 Subject: [PATCH 26/42] Updated raygui for examples --- examples/core/core_directory_files.c | 20 +- examples/core/raygui.h | 390 +- .../models/models_directional_billboard.c | 2 + examples/models/raygui.h | 6043 +++++++++++++++++ examples/shaders/raygui.h | 390 +- examples/shapes/raygui.h | 390 +- 6 files changed, 6732 insertions(+), 503 deletions(-) create mode 100644 examples/models/raygui.h diff --git a/examples/core/core_directory_files.c b/examples/core/core_directory_files.c index a98c950f6..5bc7b7e57 100644 --- a/examples/core/core_directory_files.c +++ b/examples/core/core_directory_files.c @@ -37,10 +37,17 @@ int main(void) char directory[MAX_FILEPATH_SIZE] = { 0 }; strcpy(directory, GetWorkingDirectory()); + // Load file-paths on current working directory + // NOTE: LoadDirectoryFiles() loads files and directories by default, + // use LoadDirectoryFilesEx() for custom filters and recursive directories loading FilePathList files = LoadDirectoryFiles(directory); int btnBackPressed = false; + int listScrollIndex = 0; + int listItemActive = -1; + int listItemFocused = -1; + SetTargetFPS(60); //-------------------------------------------------------------------------------------- @@ -62,10 +69,18 @@ int main(void) BeginDrawing(); ClearBackground(RAYWHITE); - DrawText(directory, 100, 40, 20, DARKGRAY); + btnBackPressed = GuiButton((Rectangle){ 40.0f, 10.0f, 48, 28 }, "<"); - btnBackPressed = GuiButton((Rectangle){ 40.0f, 38.0f, 48, 24 }, "<"); + GuiSetStyle(DEFAULT, TEXT_SIZE, GuiGetFont().baseSize*2); + GuiLabel((Rectangle){ 40 + 48 + 10, 10, 700, 28 }, directory); + GuiSetStyle(DEFAULT, TEXT_SIZE, GuiGetFont().baseSize); + GuiSetStyle(LISTVIEW, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + GuiSetStyle(LISTVIEW, TEXT_PADDING, 40); + GuiListViewEx((Rectangle){ 0, 50, GetScreenWidth(), GetScreenHeight() - 40 }, + files.paths, files.count, &listScrollIndex, &listItemActive, &listItemFocused); + + /* for (int i = 0; i < (int)files.count; i++) { Color color = Fade(LIGHTGRAY, 0.3f); @@ -84,6 +99,7 @@ int main(void) DrawRectangle(0, 85 + 40*i, screenWidth, 40, color); DrawText(GetFileName(files.paths[i]), 120, 100 + 40*i, 10, GRAY); } + */ EndDrawing(); //---------------------------------------------------------------------------------- diff --git a/examples/core/raygui.h b/examples/core/raygui.h index 88fe5cc5b..67c16be45 100644 --- a/examples/core/raygui.h +++ b/examples/core/raygui.h @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raygui v4.5-dev - A simple and easy-to-use immediate-mode gui library +* raygui v5.0-dev - A simple and easy-to-use immediate-mode gui library * * DESCRIPTION: * raygui is a tools-dev-focused immediate-mode-gui library based on raylib but also @@ -83,8 +83,8 @@ * used for all controls, when any of those base values is set, it is automatically populated to all * controls, so, specific control values overwriting generic style should be set after base values * -* After the first BASE set we have the EXTENDED properties (by default guiStyle[16..23]), those -* properties are actually common to all controls and can not be overwritten individually (like BASE ones) +* After the first BASE properties set, the EXTENDED properties set is defined (by default guiStyle[16..23]), +* those properties are actually common to all controls and can not be overwritten individually (like BASE ones) * Some of those properties are: TEXT_SIZE, TEXT_SPACING, LINE_COLOR, BACKGROUND_COLOR * * Custom control properties can be defined using the EXTENDED properties for each independent control. @@ -141,13 +141,14 @@ * Draw text bounds rectangles for debug * * VERSIONS HISTORY: -* 5.0 (xx-Nov-2025) ADDED: Support up to 32 controls (v500) +* 5.0 (xx-Mar-2026) ADDED: Support up to 32 controls (v500) * ADDED: guiControlExclusiveMode and guiControlExclusiveRec for exclusive modes * ADDED: GuiValueBoxFloat() * ADDED: GuiDropdonwBox() properties: DROPDOWN_ARROW_HIDDEN, DROPDOWN_ROLL_UP * ADDED: GuiListView() property: LIST_ITEMS_BORDER_WIDTH * ADDED: GuiLoadIconsFromMemory() * ADDED: Multiple new icons +* ADDED: Macros for inputs customization, raylib decoupling * REMOVED: GuiSpinner() from controls list, using BUTTON + VALUEBOX properties * REMOVED: GuiSliderPro(), functionality was redundant * REVIEWED: Controls using text labels to use LABEL properties @@ -165,6 +166,7 @@ * REVIEWED: GuiTextBox(), multiple improvements: autocursor and more * REVIEWED: Functions descriptions, removed wrong return value reference * REDESIGNED: GuiColorPanel(), improved HSV <-> RGBA convertion +* REDESIGNED: WARNING: TEXT_LINE_SPACING does not consider text height, only lines spacing * * 4.0 (12-Sep-2023) ADDED: GuiToggleSlider() * ADDED: GuiColorPickerHSV() and GuiColorPanelHSV() @@ -316,7 +318,7 @@ * * LICENSE: zlib/libpng * -* Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) +* Copyright (c) 2014-2026 Ramon Santamaria (@raysan5) * * This software is provided "as-is", without any express or implied warranty. In no event * will the authors be held liable for any damages arising from the use of this software. @@ -351,10 +353,11 @@ // NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll #if defined(_WIN32) #if defined(BUILD_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllexport) // We are building the library as a Win32 shared library (.dll) + #define RAYGUIAPI __declspec(dllexport) // Building the library as a Win32 shared library (.dll) #elif defined(USE_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllimport) // We are using the library as a Win32 shared library (.dll) + #define RAYGUIAPI __declspec(dllimport) // Using the library as a Win32 shared library (.dll) #endif + #define _CRT_SECURE_NO_WARNINGS // Disable unsafe warnings on scanf() functions in MSVC #endif // Function specifiers definition @@ -369,9 +372,48 @@ // NOTE: Avoiding those calls, also avoids const strings memory usage #define RAYGUI_SUPPORT_LOG_INFO #if defined(RAYGUI_SUPPORT_LOG_INFO) - #define RAYGUI_LOG(...) printf(__VA_ARGS__) + #define RAYGUI_LOG(...) printf(__VA_ARGS__) #else - #define RAYGUI_LOG(...) + #define RAYGUI_LOG(...) +#endif + +// Macros to define required UI inputs, including mapping to gamepad controls +// TODO: Define additionally required macros for missing inputs +#if !defined(GUI_BUTTON_DOWN) + #define GUI_BUTTON_DOWN (IsMouseButtonDown(MOUSE_LEFT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +#if !defined(GUI_BUTTON_DOWN_ALT) + // Mapping to alternative button down pressed + #define GUI_BUTTON_DOWN_ALT (IsMouseButtonDown(MOUSE_RIGHT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) +#endif +#if !defined(GUI_BUTTON_PRESSED) + #define GUI_BUTTON_PRESSED (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +// TODO: WARNING: GuiTabBar() still requires IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON) +#if !defined(GUI_BUTTON_RELEASED) + #define GUI_BUTTON_RELEASED (IsMouseButtonReleased(MOUSE_LEFT_BUTTON) || IsGamepadButtonReleased(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +#if !defined(GUI_SCROLL_DELTA) + // Mapping to scroll delta changes + // TODO: Review inconsistencies between platforms + #if defined(PLATFORM_WEB) + // NOTE: Gamepad axis triggers not detected on web platform + #define GUI_SCROLL_DELTA ((float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_TRIGGER_2) - (float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_LEFT_TRIGGER_2)) + #else + #define GUI_SCROLL_DELTA (GetMouseWheelMove() + (GetGamepadAxisMovement(0, GAMEPAD_AXIS_RIGHT_TRIGGER) + 1) - (GetGamepadAxisMovement(0, GAMEPAD_AXIS_LEFT_TRIGGER) + 1)) + #endif +#endif +#if !defined(GUI_POINTER_POSITION) + #define GUI_POINTER_POSITION GetMousePosition() +#endif +#if !defined(GUI_KEY_DOWN) + #define GUI_KEY_DOWN(key) IsKeyDown(key) +#endif +#if !defined(GUI_KEY_PRESSED) + #define GUI_KEY_PRESSED(key) IsKeyPressed(key) +#endif +#if !defined(GUI_INPUT_KEY) + #define GUI_INPUT_KEY GetCharPressed() #endif //---------------------------------------------------------------------------------- @@ -567,7 +609,7 @@ typedef enum { //---------------------------------------------------------------------------------- // DEFAULT extended properties // NOTE: Those properties are common to all controls or global -// WARNING: We only have 8 slots for those properties by default!!! -> New global control: TEXT? +// WARNING: Only 8 slots vailable for those properties by default typedef enum { TEXT_SIZE = 16, // Text size (glyphs max height) TEXT_SPACING, // Text spacing between glyphs @@ -1091,7 +1133,7 @@ typedef enum { // Icons data is defined by bit array (every bit represents one pixel) // Those arrays are stored as unsigned int data arrays, so, // every array element defines 32 pixels (bits) of information -// One icon is defined by 8 int, (8 int * 32 bit = 256 bit = 16*16 pixels) +// One icon is defined by 8 int, (8 int*32 bit = 256 bit = 16*16 pixels) // NOTE: Number of elemens depend on RAYGUI_ICON_SIZE (by default 16x16 pixels) #define RAYGUI_ICON_DATA_ELEMENTS (RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32) @@ -1450,12 +1492,12 @@ static bool IsMouseButtonReleased(int button); static bool IsKeyDown(int key); static bool IsKeyPressed(int key); -static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() +static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() //------------------------------------------------------------------------------- // Drawing required functions //------------------------------------------------------------------------------- -static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() +static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() static void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() //------------------------------------------------------------------------------- @@ -1520,11 +1562,11 @@ static Color GuiFade(Color color, float alpha); // Fade color by an alph // Gui Setup Functions Definition //---------------------------------------------------------------------------------- // Enable gui global state -// NOTE: We check for STATE_DISABLED to avoid messing custom global state setups +// NOTE: Checking for STATE_DISABLED to avoid messing custom global state setups void GuiEnable(void) { if (guiState == STATE_DISABLED) guiState = STATE_NORMAL; } // Disable gui global state -// NOTE: We check for STATE_NORMAL to avoid messing custom global state setups +// NOTE: Checking for STATE_NORMAL to avoid messing custom global state setups void GuiDisable(void) { if (guiState == STATE_NORMAL) guiState = STATE_DISABLED; } // Lock gui global state @@ -1557,9 +1599,8 @@ void GuiSetFont(Font font) { if (font.texture.id > 0) { - // NOTE: If we try to setup a font but default style has not been - // lazily loaded before, it will be overwritten, so we need to force - // default style loading first + // NOTE: If a font is tried to be set but default style has not been lazily loaded first, + // it will be overwritten, so default style loading needs to be forced first if (!guiStyleLoaded) GuiLoadStyleDefault(); guiFont = font; @@ -1613,13 +1654,14 @@ int GuiWindowBox(Rectangle bounds, const char *title) //GuiState state = guiState; int statusBarHeight = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT; + int statusBorderWidth = GuiGetStyle(STATUSBAR, BORDER_WIDTH); Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)statusBarHeight }; if (bounds.height < statusBarHeight*2.0f) bounds.height = statusBarHeight*2.0f; const float vPadding = statusBarHeight/2.0f - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT/2.0f; - Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - 1, bounds.width, bounds.height - (float)statusBarHeight + 1 }; - Rectangle closeButtonRec = { statusBar.x + statusBar.width - GuiGetStyle(STATUSBAR, BORDER_WIDTH) - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, + Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - (float)statusBorderWidth, bounds.width, bounds.height - (float)statusBarHeight + (float)statusBorderWidth }; + Rectangle closeButtonRec = { statusBar.x + statusBar.width - (float)statusBorderWidth - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, statusBar.y + vPadding, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT }; // Update control @@ -1629,8 +1671,8 @@ int GuiWindowBox(Rectangle bounds, const char *title) // Draw control //-------------------------------------------------------------------- - GuiStatusBar(statusBar, title); // Draw window header as status bar GuiPanel(windowPanel, NULL); // Draw window base + GuiStatusBar(statusBar, title); // Draw window header as status bar // Draw window close button int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); @@ -1786,7 +1828,7 @@ int GuiTabBar(Rectangle bounds, const char **text, int count, int *active) } // Close tab with middle mouse button pressed - if (CheckCollisionPointRec(GetMousePosition(), tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; + if (CheckCollisionPointRec(GUI_POINTER_POSITION, tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; GuiSetStyle(TOGGLE, TEXT_PADDING, textPadding); GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, textAlignment); @@ -1885,37 +1927,37 @@ int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; #if defined(SUPPORT_SCROLLBAR_KEY_INPUT) if (hasHorizontalScrollBar) { - if (IsKeyDown(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (IsKeyDown(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); } if (hasVerticalScrollBar) { - if (IsKeyDown(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (IsKeyDown(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); } #endif - float wheelMove = GetMouseWheelMove(); + float scrollDelta = GUI_SCROLL_DELTA; // Set scrolling speed with mouse wheel based on ratio between bounds and content - Vector2 mouseWheelSpeed = { content.width/bounds.width, content.height/bounds.height }; - if (mouseWheelSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) mouseWheelSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; - if (mouseWheelSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) mouseWheelSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; + Vector2 scrollSpeed = { content.width/bounds.width, content.height/bounds.height }; + if (scrollSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; + if (scrollSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; // Horizontal and vertical scrolling with mouse wheel - if (hasHorizontalScrollBar && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_LEFT_SHIFT))) scrollPos.x += wheelMove*mouseWheelSpeed.x; - else scrollPos.y += wheelMove*mouseWheelSpeed.y; // Vertical scroll + if (hasHorizontalScrollBar && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_LEFT_SHIFT))) scrollPos.x += scrollDelta*scrollSpeed.x; + else scrollPos.y += scrollDelta*scrollSpeed.y; // Vertical scroll } } @@ -2001,15 +2043,15 @@ int GuiButton(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_RELEASED) result = 1; } } //-------------------------------------------------------------------- @@ -2031,7 +2073,7 @@ int GuiLabelButton(Rectangle bounds, const char *text) GuiState state = guiState; bool pressed = false; - // NOTE: We force bounds.width to be all text + // NOTE: Force bounds.width to be all text float textWidth = (float)GuiGetTextWidth(text); if ((bounds.width - 2*GuiGetStyle(LABEL, BORDER_WIDTH) - 2*GuiGetStyle(LABEL, TEXT_PADDING)) < textWidth) bounds.width = textWidth + 2*GuiGetStyle(LABEL, BORDER_WIDTH) + 2*GuiGetStyle(LABEL, TEXT_PADDING) + 2; @@ -2039,15 +2081,15 @@ int GuiLabelButton(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check checkbox state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) pressed = true; + if (GUI_BUTTON_RELEASED) pressed = true; } } //-------------------------------------------------------------------- @@ -2073,13 +2115,13 @@ int GuiToggle(Rectangle bounds, const char *text, bool *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check toggle button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; - else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else if (GUI_BUTTON_RELEASED) { state = STATE_NORMAL; *active = !(*active); @@ -2184,12 +2226,12 @@ int GuiToggleSlider(Rectangle bounds, const char *text, int *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; - else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else if (GUI_BUTTON_RELEASED) { state = STATE_PRESSED; (*active)++; @@ -2255,7 +2297,7 @@ int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; Rectangle totalBounds = { (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT)? textBounds.x : bounds.x, @@ -2267,10 +2309,10 @@ int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) // Check checkbox state if (CheckCollisionPointRec(mousePoint, totalBounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_RELEASED) { *checked = !(*checked); result = 1; @@ -2323,18 +2365,18 @@ int GuiComboBox(Rectangle bounds, const char *text, int *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && (itemCount > 1) && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { *active += 1; if (*active >= itemCount) *active = 0; // Cyclic combobox } - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -2392,7 +2434,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && (editMode || !guiLocked) && (itemCount > 1) && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (editMode) { @@ -2401,11 +2443,11 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod // Check if mouse has been pressed or released outside limits if (!CheckCollisionPointRec(mousePoint, boundsOpen)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED || GUI_BUTTON_RELEASED) result = 1; } // Check if already selected item has been pressed again - if (CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED) result = 1; // Check focused and selected item for (int i = 0; i < itemCount; i++) @@ -2417,7 +2459,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod if (CheckCollisionPointRec(mousePoint, itemBounds)) { itemFocused = i; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_RELEASED) { itemSelected = i; result = 1; // Item selected @@ -2432,7 +2474,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod { if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { result = 1; state = STATE_PRESSED; @@ -2506,7 +2548,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) int result = 0; GuiState state = guiState; - bool multiline = false; // TODO: Consider multiline text input + bool multiline = false; // TODO: Consider multiline text input int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); Rectangle textBounds = GetTextBounds(TEXTBOX, bounds); @@ -2514,7 +2556,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) int thisCursorIndex = textBoxCursorIndex; if (thisCursorIndex > textLength) thisCursorIndex = textLength; int textWidth = GuiGetTextWidth(text) - GuiGetTextWidth(text + thisCursorIndex); - int textIndexOffset = 0; // Text index offset to start drawing in the box + int textIndexOffset = 0; // Text index offset to start drawing in the box // Cursor rectangle // NOTE: Position X value should be updated @@ -2547,13 +2589,13 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) !guiControlExclusiveMode && // No gui slider on dragging (wrapMode == TEXT_WRAP_NONE)) // No wrap mode { - Vector2 mousePosition = GetMousePosition(); + Vector2 mousePosition = GUI_POINTER_POSITION; if (editMode) { // GLOBAL: Auto-cursor movement logic // NOTE: Keystrokes are handled repeatedly when button is held down for some time - if (IsKeyDown(KEY_LEFT) || IsKeyDown(KEY_RIGHT) || IsKeyDown(KEY_UP) || IsKeyDown(KEY_DOWN) || IsKeyDown(KEY_BACKSPACE) || IsKeyDown(KEY_DELETE)) autoCursorCounter++; + if (GUI_KEY_DOWN(KEY_LEFT) || GUI_KEY_DOWN(KEY_RIGHT) || GUI_KEY_DOWN(KEY_UP) || GUI_KEY_DOWN(KEY_DOWN) || GUI_KEY_DOWN(KEY_BACKSPACE) || GUI_KEY_DOWN(KEY_DELETE)) autoCursorCounter++; else autoCursorCounter = 0; bool autoCursorShouldTrigger = (autoCursorCounter > RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) && ((autoCursorCounter % RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) == 0); @@ -2563,7 +2605,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) if (textBoxCursorIndex > textLength) textBoxCursorIndex = textLength; // If text does not fit in the textbox and current cursor position is out of bounds, - // we add an index offset to text for drawing only what requires depending on cursor + // adding an index offset to text for drawing only what requires depending on cursor while (textWidth >= textBounds.width) { int nextCodepointSize = 0; @@ -2574,15 +2616,15 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textWidth = GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex); } - int codepoint = GetCharPressed(); // Get Unicode codepoint - if (multiline && IsKeyPressed(KEY_ENTER)) codepoint = (int)'\n'; + int codepoint = GUI_INPUT_KEY; // Get Unicode codepoint + if (multiline && GUI_KEY_PRESSED(KEY_ENTER)) codepoint = (int)'\n'; // Encode codepoint as UTF-8 int codepointSize = 0; const char *charEncoded = CodepointToUTF8(codepoint, &codepointSize); // Handle text paste action - if (IsKeyPressed(KEY_V) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if (GUI_KEY_PRESSED(KEY_V) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { const char *pasteText = GetClipboardText(); if (pasteText != NULL) @@ -2632,13 +2674,13 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Move cursor to start - if ((textLength > 0) && IsKeyPressed(KEY_HOME)) textBoxCursorIndex = 0; + if ((textLength > 0) && GUI_KEY_PRESSED(KEY_HOME)) textBoxCursorIndex = 0; // Move cursor to end - if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_END)) textBoxCursorIndex = textLength; + if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_END)) textBoxCursorIndex = textLength; // Delete related codepoints from text, after current cursor position - if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_DELETE) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_DELETE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; int accCodepointSize = 0; @@ -2674,7 +2716,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textLength -= accCodepointSize; } - else if ((textLength > textBoxCursorIndex) && (IsKeyPressed(KEY_DELETE) || (IsKeyDown(KEY_DELETE) && autoCursorShouldTrigger))) + else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_DELETE) || (GUI_KEY_DOWN(KEY_DELETE) && autoCursorShouldTrigger))) { // Delete single codepoint from text, after current cursor position @@ -2688,12 +2730,12 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Delete related codepoints from text, before current cursor position - if ((textBoxCursorIndex > 0) && IsKeyPressed(KEY_BACKSPACE) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; int accCodepointSize = 0; - int prevCodepointSize; - int prevCodepoint; + int prevCodepointSize = 0; + int prevCodepoint = 0; // Check whitespace to delete (ASCII only) while (offset > 0) @@ -2724,7 +2766,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex -= accCodepointSize; } - else if ((textBoxCursorIndex > 0) && (IsKeyPressed(KEY_BACKSPACE) || (IsKeyDown(KEY_BACKSPACE) && autoCursorShouldTrigger))) + else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_BACKSPACE) || (GUI_KEY_DOWN(KEY_BACKSPACE) && autoCursorShouldTrigger))) { // Delete single codepoint from text, before current cursor position @@ -2740,12 +2782,12 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Move cursor position with keys - if ((textBoxCursorIndex > 0) && IsKeyPressed(KEY_LEFT) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_LEFT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; //int accCodepointSize = 0; - int prevCodepointSize; - int prevCodepoint; + int prevCodepointSize = 0; + int prevCodepoint = 0; // Check whitespace to skip (ASCII only) while (offset > 0) @@ -2771,14 +2813,14 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex = offset; } - else if ((textBoxCursorIndex > 0) && (IsKeyPressed(KEY_LEFT) || (IsKeyDown(KEY_LEFT) && autoCursorShouldTrigger))) + else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_LEFT) || (GUI_KEY_DOWN(KEY_LEFT) && autoCursorShouldTrigger))) { int prevCodepointSize = 0; GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); textBoxCursorIndex -= prevCodepointSize; } - else if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_RIGHT) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + else if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_RIGHT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; //int accCodepointSize = 0; @@ -2810,7 +2852,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex = offset; } - else if ((textLength > textBoxCursorIndex) && (IsKeyPressed(KEY_RIGHT) || (IsKeyDown(KEY_RIGHT) && autoCursorShouldTrigger))) + else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_RIGHT) || (GUI_KEY_DOWN(KEY_RIGHT) && autoCursorShouldTrigger))) { int nextCodepointSize = 0; GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); @@ -2847,14 +2889,14 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) // Check if mouse cursor is at the last position int textEndWidth = GuiGetTextWidth(text + textIndexOffset); - if (GetMousePosition().x >= (textBounds.x + textEndWidth - glyphWidth/2)) + if (GUI_POINTER_POSITION.x >= (textBounds.x + textEndWidth - glyphWidth/2)) { mouseCursor.x = textBounds.x + textEndWidth; mouseCursorIndex = textLength; } // Place cursor at required index on mouse click - if ((mouseCursor.x >= 0) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if ((mouseCursor.x >= 0) && GUI_BUTTON_PRESSED) { cursor.x = mouseCursor.x; textBoxCursorIndex = mouseCursorIndex; @@ -2867,8 +2909,8 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) //if (multiline) cursor.y = GetTextLines() // Finish text editing on ENTER or mouse click outside bounds - if ((!multiline && IsKeyPressed(KEY_ENTER)) || - (!CheckCollisionPointRec(mousePosition, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) + if ((!multiline && GUI_KEY_PRESSED(KEY_ENTER)) || + (!CheckCollisionPointRec(mousePosition, bounds) && GUI_BUTTON_PRESSED)) { textBoxCursorIndex = 0; // GLOBAL: Reset the shared cursor index autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes @@ -2881,7 +2923,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { textBoxCursorIndex = textLength; // GLOBAL: Place cursor index to the end of current text autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes @@ -2975,12 +3017,12 @@ int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check spinner state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -3050,7 +3092,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; bool valueHasChanged = false; if (editMode) @@ -3060,7 +3102,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in int keyCount = (int)strlen(textValue); // Add or remove minus symbol - if (IsKeyPressed(KEY_MINUS)) + if (GUI_KEY_PRESSED(KEY_MINUS)) { if (textValue[0] == '-') { @@ -3089,8 +3131,8 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in // Add new digit to text value if ((keyCount >= 0) && (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) && (GuiGetTextWidth(textValue) < bounds.width)) { - int key = GetCharPressed(); - + int key = GUI_INPUT_KEY; + // Only allow keys in range [48..57] if ((key >= 48) && (key <= 57)) { @@ -3101,7 +3143,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in } // Delete text - if ((keyCount > 0) && IsKeyPressed(KEY_BACKSPACE)) + if ((keyCount > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE)) { keyCount--; textValue[keyCount] = '\0'; @@ -3110,11 +3152,11 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in if (valueHasChanged) *value = TextToInteger(textValue); - // NOTE: We are not clamp values until user input finishes + // NOTE: Values are not clamped until user input finishes //if (*value > maxValue) *value = maxValue; //else if (*value < minValue) *value = minValue; - if ((IsKeyPressed(KEY_ENTER) || IsKeyPressed(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) + if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) { if (*value > maxValue) *value = maxValue; else if (*value < minValue) *value = minValue; @@ -3130,7 +3172,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in if (CheckCollisionPointRec(mousePoint, bounds)) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED) result = 1; } } } @@ -3191,7 +3233,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; bool valueHasChanged = false; @@ -3202,7 +3244,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float int keyCount = (int)strlen(textValue); // Add or remove minus symbol - if (IsKeyPressed(KEY_MINUS)) + if (GUI_KEY_PRESSED(KEY_MINUS)) { if (textValue[0] == '-') { @@ -3233,7 +3275,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float { if (GuiGetTextWidth(textValue) < bounds.width) { - int key = GetCharPressed(); + int key = GUI_INPUT_KEY; if (((key >= 48) && (key <= 57)) || (key == '.') || ((keyCount == 0) && (key == '+')) || // NOTE: Sign can only be in first position @@ -3248,7 +3290,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float } // Pressed backspace - if (IsKeyPressed(KEY_BACKSPACE)) + if (GUI_KEY_PRESSED(KEY_BACKSPACE)) { if (keyCount > 0) { @@ -3260,14 +3302,14 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float if (valueHasChanged) *value = TextToFloat(textValue); - if ((IsKeyPressed(KEY_ENTER) || IsKeyPressed(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) result = 1; + if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) result = 1; } else { if (CheckCollisionPointRec(mousePoint, bounds)) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED) result = 1; } } } @@ -3321,11 +3363,11 @@ int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, flo //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3342,7 +3384,7 @@ int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, flo } else if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3535,12 +3577,12 @@ int GuiDummyRec(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -3578,7 +3620,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd int itemFocused = (focus == NULL)? -1 : *focus; int itemSelected = (active == NULL)? -1 : *active; - // Check if we need a scroll bar + // Check if scroll bar is needed bool useScrollBar = false; if ((GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING))*count > bounds.height) useScrollBar = true; @@ -3602,7 +3644,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check mouse inside list view if (CheckCollisionPointRec(mousePoint, bounds)) @@ -3615,7 +3657,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd if (CheckCollisionPointRec(mousePoint, itemBounds)) { itemFocused = startIndex + i; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { if (itemSelected == (startIndex + i)) itemSelected = -1; else itemSelected = startIndex + i; @@ -3629,8 +3671,8 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd if (useScrollBar) { - int wheelMove = (int)GetMouseWheelMove(); - startIndex -= wheelMove; + float scrollDelta = GUI_SCROLL_DELTA; + startIndex -= (int)scrollDelta; if (startIndex < 0) startIndex = 0; else if (startIndex > (count - visibleItems)) startIndex = count - visibleItems; @@ -3659,7 +3701,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd { if ((startIndex + i) == itemSelected) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_DISABLED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_DISABLED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); } else { @@ -3667,18 +3709,18 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd { // Draw item selected GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_PRESSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); } - else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: We want items focused, despite not returned! + else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: Items focused, despite not returned { // Draw item focused GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_FOCUSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); } else { // Draw item normal (no rectangle) - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); } } @@ -3765,11 +3807,11 @@ int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3788,7 +3830,7 @@ int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) } else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3850,11 +3892,11 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3873,7 +3915,7 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) } else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3886,12 +3928,12 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) } else state = STATE_FOCUSED; - /*if (IsKeyDown(KEY_UP)) + /*if (GUI_KEY_DOWN(KEY_UP)) { hue -= 2.0f; if (hue <= 0.0f) hue = 0.0f; } - else if (IsKeyDown(KEY_DOWN)) + else if (GUI_KEY_DOWN(KEY_DOWN)) { hue += 2.0f; if (hue >= 360.0f) hue = 360.0f; @@ -4008,11 +4050,11 @@ int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -4042,7 +4084,7 @@ int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) } else if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -4198,6 +4240,9 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); } + int prevTextBoxAlignment = GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT); + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + if (secretViewActive != NULL) { static char stars[] = "****************"; @@ -4211,6 +4256,8 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co if (GuiTextBox(textBoxBounds, text, textMaxSize, textEditMode)) textEditMode = !textEditMode; } + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, prevTextBoxAlignment); + int prevBtnTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); @@ -4231,7 +4278,7 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co // Grid control // NOTE: Returns grid mouse-hover selected cell // About drawing lines at subpixel spacing, simple put, not easy solution: -// https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster +// REF: https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell) { // Grid lines alpha amount @@ -4242,7 +4289,7 @@ int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vect int result = 0; GuiState state = guiState; - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; Vector2 currentMouseCell = { -1, -1 }; float spaceWidth = spacing/(float)subdivs; @@ -4410,11 +4457,14 @@ void GuiLoadStyle(const char *fileName) if (fileDataSize > 0) { unsigned char *fileData = (unsigned char *)RAYGUI_CALLOC(fileDataSize, sizeof(unsigned char)); - fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); + if (fileData != NULL) + { + fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); - GuiLoadStyleFromMemory(fileData, fileDataSize); + GuiLoadStyleFromMemory(fileData, fileDataSize); - RAYGUI_FREE(fileData); + RAYGUI_FREE(fileData); + } } fclose(rgsFile); @@ -4425,7 +4475,7 @@ void GuiLoadStyle(const char *fileName) // Load style default over global style void GuiLoadStyleDefault(void) { - // We set this variable first to avoid cyclic function calls + // Setting this flag first to avoid cyclic function calls // when calling GuiSetStyle() and GuiGetStyle() guiStyleLoaded = true; @@ -4454,7 +4504,7 @@ void GuiLoadStyleDefault(void) GuiSetStyle(DEFAULT, TEXT_SPACING, 1); // DEFAULT, shared by all controls GuiSetStyle(DEFAULT, LINE_COLOR, 0x90abb5ff); // DEFAULT specific property GuiSetStyle(DEFAULT, BACKGROUND_COLOR, 0xf5f5f5ff); // DEFAULT specific property - GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 15); // DEFAULT, 15 pixels between lines + GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 5); // DEFAULT, pixels between lines, from bottom of first line to top of second GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); // DEFAULT, text aligned vertically to middle of text-bounds // Initialize control-specific property values @@ -4520,7 +4570,7 @@ void GuiLoadStyleDefault(void) // NOTE: Default raylib font character 95 is a white square Rectangle whiteChar = guiFont.recs[95]; - // NOTE: We set up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering + // NOTE: Setting up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering SetShapesTexture(guiFont.texture, RAYGUI_CLITERAL(Rectangle){ whiteChar.x + 1, whiteChar.y + 1, whiteChar.width - 2, whiteChar.height - 2 }); } } @@ -5037,14 +5087,14 @@ static Rectangle GetTextBounds(int control, Rectangle bounds) } // Get text icon if provided and move text cursor -// NOTE: We support up to 999 values for iconId +// NOTE: Up to #999# values supported for iconId static const char *GetTextIcon(const char *text, int *iconId) { #if !defined(RAYGUI_NO_ICONS) *iconId = -1; - if (text[0] == '#') // Maybe we have an icon! + if (text[0] == '#') // Maybe it is stars with an icon, ending # must be found { - char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' + char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' int pos = 1; while ((pos < 4) && (text[pos] >= '0') && (text[pos] <= '9')) @@ -5076,12 +5126,12 @@ static const char **GetTextLines(const char *text, int *count) static const char *lines[RAYGUI_MAX_TEXT_LINES] = { 0 }; for (int i = 0; i < RAYGUI_MAX_TEXT_LINES; i++) lines[i] = NULL; // Init NULL pointers to substrings - int textSize = (int)strlen(text); + int textLength = (int)strlen(text); lines[0] = text; *count = 1; - for (int i = 0, k = 0; (i < textSize) && (*count < RAYGUI_MAX_TEXT_LINES); i++) + for (int i = 0, k = 0; (i < textLength) && (*count < RAYGUI_MAX_TEXT_LINES); i++) { if (text[i] == '\n') { @@ -5141,7 +5191,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C // - For every line, wordwrap mode is checked (useful for GuitextBox(), read-only) // Get text lines (using '\n' as delimiter) to be processed individually - // WARNING: We can't use GuiTextSplit() function because it can be already used + // WARNING: GuiTextSplit() function can't be used now because it can have already been used // before the GuiDrawText() call and its buffer is static, it would be overriden :( int lineCount = 0; const char **lines = GetTextLines(text, &lineCount); @@ -5152,7 +5202,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); // Wrap-mode only available in read-only mode, no for text editing // TODO: WARNING: This totalHeight is not valid for vertical alignment in case of word-wrap - float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_SIZE)/2); + float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); float posOffsetY = 0.0f; for (int i = 0; i < lineCount; i++) @@ -5165,7 +5215,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C Vector2 textBoundsPosition = { textBounds.x, textBounds.y }; float textBoundsWidthOffset = 0.0f; - // NOTE: We get text size after icon has been processed + // NOTE: Get text size after icon has been processed // WARNING: GuiGetTextWidth() also processes text icon to get width! -> Really needed? int textSizeX = GuiGetTextWidth(lines[i]); @@ -5200,8 +5250,8 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C default: break; } - // NOTE: Make sure we get pixel-perfect coordinates, - // In case of decimals we got weird text positioning + // NOTE: Make sure getting pixel-perfect coordinates, + // In case of decimals, it could result in text positioning artifacts textBoundsPosition.x = (float)((int)textBoundsPosition.x); textBoundsPosition.y = (float)((int)textBoundsPosition.y); //--------------------------------------------------------------------------------- @@ -5211,7 +5261,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C #if !defined(RAYGUI_NO_ICONS) if (iconId >= 0) { - // NOTE: We consider icon height, probably different than text size + // NOTE: Considering icon height, probably different than text size GuiDrawIcon(iconId, (int)textBoundsPosition.x, (int)(textBounds.y + textBounds.height/2 - RAYGUI_ICON_SIZE*guiIconScale/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height)), guiIconScale, tint); textBoundsPosition.x += (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); textBoundsWidthOffset = (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); @@ -5237,8 +5287,8 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C int codepoint = GetCodepointNext(&lines[i][c], &codepointSize); int index = GetGlyphIndex(guiFont, codepoint); - // NOTE: Normally we exit the decoding sequence as soon as a bad byte is found (and return 0x3f) - // but we need to draw all of the bad bytes using the '?' symbol moving one byte + // NOTE: Normally, exiting the decoding sequence as soon as a bad byte is found (and return 0x3f) + // but all of the bad bytes need to be drawn using the '?' symbol, moving one byte if (codepoint == 0x3f) codepointSize = 1; // TODO: Review not recognized codepoints size // Get glyph width to check if it goes out of bounds @@ -5253,7 +5303,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C if ((textOffsetX + glyphWidth) > textBounds.width - textBoundsWidthOffset) { textOffsetX = 0.0f; - textOffsetY += GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); if (tempWrapCharMode) // Wrap at char level when too long words { @@ -5282,7 +5332,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C else if ((textOffsetX + nextSpaceWidth) > textBounds.width - textBoundsWidthOffset) { textOffsetX = 0.0f; - textOffsetY += GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); } } @@ -5332,7 +5382,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C } } - if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)(GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) posOffsetY += (textOffsetY + (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); //--------------------------------------------------------------------------------- } @@ -5374,13 +5424,19 @@ static void GuiTooltip(Rectangle controlRec) if ((controlRec.x + textSize.x + 16) > GetScreenWidth()) controlRec.x -= (textSize.x + 16 - controlRec.width); - GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, GuiGetStyle(DEFAULT, TEXT_SIZE) + 8.0f }, NULL); + int lineCount = 0; + GetTextLines(guiTooltipPtr, &lineCount); // Only using the line count + if ((controlRec.y + controlRec.height + textSize.y + 4 + 8*lineCount) > GetScreenHeight()) + controlRec.y -= (controlRec.height + textSize.y + 4 + 8*lineCount); + + // TODO: Probably TEXT_LINE_SPACING should be considered on panel size instead of hardcoding 8.0f + GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, NULL); int textPadding = GuiGetStyle(LABEL, TEXT_PADDING); int textAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); GuiSetStyle(LABEL, TEXT_PADDING, 0); GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, GuiGetStyle(DEFAULT, TEXT_SIZE) + 8.0f }, guiTooltipPtr); + GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, guiTooltipPtr); GuiSetStyle(LABEL, TEXT_ALIGNMENT, textAlignment); GuiSetStyle(LABEL, TEXT_PADDING, textPadding); } @@ -5416,7 +5472,7 @@ static const char **GuiTextSplit(const char *text, char delimiter, int *count, i if (textRow != NULL) textRow[0] = 0; - // Count how many substrings we have on text and point to every one + // Count how many substrings text contains and point to every one of them for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) { buffer[i] = text[i]; @@ -5637,11 +5693,11 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON) && + if (GUI_BUTTON_DOWN && !CheckCollisionPointRec(mousePoint, arrowUpLeft) && !CheckCollisionPointRec(mousePoint, arrowDownRight)) { @@ -5664,11 +5720,11 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) state = STATE_FOCUSED; // Handle mouse wheel - int wheel = (int)GetMouseWheelMove(); - if (wheel != 0) value += wheel; + float scrollDelta = GUI_SCROLL_DELTA; + if (scrollDelta != 0) value += (int)scrollDelta; // Handle mouse button down - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { guiControlExclusiveMode = true; guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts @@ -5690,13 +5746,13 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) /* if (isVertical) { - if (IsKeyDown(KEY_DOWN)) value += 5; - else if (IsKeyDown(KEY_UP)) value -= 5; + if (GUI_KEY_DOWN(KEY_DOWN)) value += 5; + else if (GUI_KEY_DOWN(KEY_UP)) value -= 5; } else { - if (IsKeyDown(KEY_RIGHT)) value += 5; - else if (IsKeyDown(KEY_LEFT)) value -= 5; + if (GUI_KEY_DOWN(KEY_RIGHT)) value += 5; + else if (GUI_KEY_DOWN(KEY_LEFT)) value -= 5; } */ } @@ -5833,7 +5889,7 @@ const char **TextSplit(const char *text, char delimiter, int *count) { counter = 1; - // Count how many substrings we have on text and point to every one + // Count how many substrings text contains and point to every one of them for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) { buffer[i] = text[i]; @@ -5866,7 +5922,7 @@ static int TextToInteger(const char *text) text++; } - for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); ++i) value = value*10 + (int)(text[i] - '0'); + for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10 + (int)(text[i] - '0'); return value*sign; } @@ -5941,9 +5997,9 @@ static const char *CodepointToUTF8(int codepoint, int *byteSize) } // Get next codepoint in a UTF-8 encoded text, scanning until '\0' is found -// When a invalid UTF-8 byte is encountered we exit as soon as possible and a '?'(0x3f) codepoint is returned +// When a invalid UTF-8 byte is encountered, exiting as soon as possible and returning a '?'(0x3f) codepoint // Total number of bytes processed are returned as a parameter -// NOTE: the standard says U+FFFD should be returned in case of errors +// NOTE: The standard says U+FFFD should be returned in case of errors // but that character is not supported by the default font in raylib static int GetCodepointNext(const char *text, int *codepointSize) { diff --git a/examples/models/models_directional_billboard.c b/examples/models/models_directional_billboard.c index e2c75c15a..caab94afb 100644 --- a/examples/models/models_directional_billboard.c +++ b/examples/models/models_directional_billboard.c @@ -17,7 +17,9 @@ ********************************************************************************************/ #include "raylib.h" + #include "raymath.h" + #include //------------------------------------------------------------------------------------ diff --git a/examples/models/raygui.h b/examples/models/raygui.h new file mode 100644 index 000000000..67c16be45 --- /dev/null +++ b/examples/models/raygui.h @@ -0,0 +1,6043 @@ +/******************************************************************************************* +* +* raygui v5.0-dev - A simple and easy-to-use immediate-mode gui library +* +* DESCRIPTION: +* raygui is a tools-dev-focused immediate-mode-gui library based on raylib but also +* available as a standalone library, as long as input and drawing functions are provided +* +* FEATURES: +* - Immediate-mode gui, minimal retained data +* - +25 controls provided (basic and advanced) +* - Styling system for colors, font and metrics +* - Icons supported, embedded as a 1-bit icons pack +* - Standalone mode option (custom input/graphics backend) +* - Multiple support tools provided for raygui development +* +* POSSIBLE IMPROVEMENTS: +* - Better standalone mode API for easy plug of custom backends +* - Externalize required inputs, allow user easier customization +* +* LIMITATIONS: +* - No editable multi-line word-wraped text box supported +* - No auto-layout mechanism, up to the user to define controls position and size +* - Standalone mode requires library modification and some user work to plug another backend +* +* NOTES: +* - WARNING: GuiLoadStyle() and GuiLoadStyle{Custom}() functions, allocate memory for +* font atlas recs and glyphs, freeing that memory is (usually) up to the user, +* no unload function is explicitly provided... but note that GuiLoadStyleDefault() unloads +* by default any previously loaded font (texture, recs, glyphs) +* - Global UI alpha (guiAlpha) is applied inside GuiDrawRectangle() and GuiDrawText() functions +* +* CONTROLS PROVIDED: +* # Container/separators Controls +* - WindowBox --> StatusBar, Panel +* - GroupBox --> Line +* - Line +* - Panel --> StatusBar +* - ScrollPanel --> StatusBar +* - TabBar --> Button +* +* # Basic Controls +* - Label +* - LabelButton --> Label +* - Button +* - Toggle +* - ToggleGroup --> Toggle +* - ToggleSlider +* - CheckBox +* - ComboBox +* - DropdownBox +* - TextBox +* - ValueBox --> TextBox +* - Spinner --> Button, ValueBox +* - Slider +* - SliderBar --> Slider +* - ProgressBar +* - StatusBar +* - DummyRec +* - Grid +* +* # Advance Controls +* - ListView +* - ColorPicker --> ColorPanel, ColorBarHue +* - MessageBox --> Window, Label, Button +* - TextInputBox --> Window, Label, TextBox, Button +* +* It also provides a set of functions for styling the controls based on its properties (size, color) +* +* +* RAYGUI STYLE (guiStyle): +* raygui uses a global data array for all gui style properties (allocated on data segment by default), +* when a new style is loaded, it is loaded over the global style... but a default gui style could always be +* recovered with GuiLoadStyleDefault() function, that overwrites the current style to the default one +* +* The global style array size is fixed and depends on the number of controls and properties: +* +* static unsigned int guiStyle[RAYGUI_MAX_CONTROLS*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED)]; +* +* guiStyle size is by default: 16*(16 + 8) = 384 int = 384*4 bytes = 1536 bytes = 1.5 KB +* +* Note that the first set of BASE properties (by default guiStyle[0..15]) belong to the generic style +* used for all controls, when any of those base values is set, it is automatically populated to all +* controls, so, specific control values overwriting generic style should be set after base values +* +* After the first BASE properties set, the EXTENDED properties set is defined (by default guiStyle[16..23]), +* those properties are actually common to all controls and can not be overwritten individually (like BASE ones) +* Some of those properties are: TEXT_SIZE, TEXT_SPACING, LINE_COLOR, BACKGROUND_COLOR +* +* Custom control properties can be defined using the EXTENDED properties for each independent control. +* +* TOOL: rGuiStyler is a visual tool to customize raygui style: github.com/raysan5/rguistyler +* +* +* RAYGUI ICONS (guiIcons): +* raygui could use a global array containing icons data (allocated on data segment by default), +* a custom icons set could be loaded over this array using GuiLoadIcons(), but loaded icons set +* must be same RAYGUI_ICON_SIZE and no more than RAYGUI_ICON_MAX_ICONS will be loaded +* +* Every icon is codified in binary form, using 1 bit per pixel, so, every 16x16 icon +* requires 8 integers (16*16/32) to be stored in memory. +* +* When the icon is draw, actually one quad per pixel is drawn if the bit for that pixel is set +* +* The global icons array size is fixed and depends on the number of icons and size: +* +* static unsigned int guiIcons[RAYGUI_ICON_MAX_ICONS*RAYGUI_ICON_DATA_ELEMENTS]; +* +* guiIcons size is by default: 256*(16*16/32) = 2048*4 = 8192 bytes = 8 KB +* +* TOOL: rGuiIcons is a visual tool to customize/create raygui icons: github.com/raysan5/rguiicons +* +* RAYGUI LAYOUT: +* raygui currently does not provide an auto-layout mechanism like other libraries, +* layouts must be defined manually on controls drawing, providing the right bounds Rectangle for it +* +* TOOL: rGuiLayout is a visual tool to create raygui layouts: github.com/raysan5/rguilayout +* +* CONFIGURATION: +* #define RAYGUI_IMPLEMENTATION +* Generates the implementation of the library into the included file +* If not defined, the library is in header only mode and can be included in other headers +* or source files without problems. But only ONE file should hold the implementation +* +* #define RAYGUI_STANDALONE +* Avoid raylib.h header inclusion in this file. Data types defined on raylib are defined +* internally in the library and input management and drawing functions must be provided by +* the user (check library implementation for further details) +* +* #define RAYGUI_NO_ICONS +* Avoid including embedded ricons data (256 icons, 16x16 pixels, 1-bit per pixel, 2KB) +* +* #define RAYGUI_CUSTOM_ICONS +* Includes custom ricons.h header defining a set of custom icons, +* this file can be generated using rGuiIcons tool +* +* #define RAYGUI_DEBUG_RECS_BOUNDS +* Draw control bounds rectangles for debug +* +* #define RAYGUI_DEBUG_TEXT_BOUNDS +* Draw text bounds rectangles for debug +* +* VERSIONS HISTORY: +* 5.0 (xx-Mar-2026) ADDED: Support up to 32 controls (v500) +* ADDED: guiControlExclusiveMode and guiControlExclusiveRec for exclusive modes +* ADDED: GuiValueBoxFloat() +* ADDED: GuiDropdonwBox() properties: DROPDOWN_ARROW_HIDDEN, DROPDOWN_ROLL_UP +* ADDED: GuiListView() property: LIST_ITEMS_BORDER_WIDTH +* ADDED: GuiLoadIconsFromMemory() +* ADDED: Multiple new icons +* ADDED: Macros for inputs customization, raylib decoupling +* REMOVED: GuiSpinner() from controls list, using BUTTON + VALUEBOX properties +* REMOVED: GuiSliderPro(), functionality was redundant +* REVIEWED: Controls using text labels to use LABEL properties +* REVIEWED: Replaced sprintf() by snprintf() for more safety +* REVIEWED: GuiTabBar(), close tab with mouse middle button +* REVIEWED: GuiScrollPanel(), scroll speed proportional to content +* REVIEWED: GuiDropdownBox(), support roll up and hidden arrow +* REVIEWED: GuiTextBox(), cursor position initialization +* REVIEWED: GuiSliderPro(), control value change check +* REVIEWED: GuiGrid(), simplified implementation +* REVIEWED: GuiIconText(), increase buffer size and reviewed padding +* REVIEWED: GuiDrawText(), improved wrap mode drawing +* REVIEWED: GuiScrollBar(), minor tweaks +* REVIEWED: GuiProgressBar(), improved borders computing +* REVIEWED: GuiTextBox(), multiple improvements: autocursor and more +* REVIEWED: Functions descriptions, removed wrong return value reference +* REDESIGNED: GuiColorPanel(), improved HSV <-> RGBA convertion +* REDESIGNED: WARNING: TEXT_LINE_SPACING does not consider text height, only lines spacing +* +* 4.0 (12-Sep-2023) ADDED: GuiToggleSlider() +* ADDED: GuiColorPickerHSV() and GuiColorPanelHSV() +* ADDED: Multiple new icons, mostly compiler related +* ADDED: New DEFAULT properties: TEXT_LINE_SPACING, TEXT_ALIGNMENT_VERTICAL, TEXT_WRAP_MODE +* ADDED: New enum values: GuiTextAlignment, GuiTextAlignmentVertical, GuiTextWrapMode +* ADDED: Support loading styles with custom font charset from external file +* REDESIGNED: GuiTextBox(), support mouse cursor positioning +* REDESIGNED: GuiDrawText(), support multiline and word-wrap modes (read only) +* REDESIGNED: GuiProgressBar() to be more visual, progress affects border color +* REDESIGNED: Global alpha consideration moved to GuiDrawRectangle() and GuiDrawText() +* REDESIGNED: GuiScrollPanel(), get parameters by reference and return result value +* REDESIGNED: GuiToggleGroup(), get parameters by reference and return result value +* REDESIGNED: GuiComboBox(), get parameters by reference and return result value +* REDESIGNED: GuiCheckBox(), get parameters by reference and return result value +* REDESIGNED: GuiSlider(), get parameters by reference and return result value +* REDESIGNED: GuiSliderBar(), get parameters by reference and return result value +* REDESIGNED: GuiProgressBar(), get parameters by reference and return result value +* REDESIGNED: GuiListView(), get parameters by reference and return result value +* REDESIGNED: GuiColorPicker(), get parameters by reference and return result value +* REDESIGNED: GuiColorPanel(), get parameters by reference and return result value +* REDESIGNED: GuiColorBarAlpha(), get parameters by reference and return result value +* REDESIGNED: GuiColorBarHue(), get parameters by reference and return result value +* REDESIGNED: GuiGrid(), get parameters by reference and return result value +* REDESIGNED: GuiGrid(), added extra parameter +* REDESIGNED: GuiListViewEx(), change parameters order +* REDESIGNED: All controls return result as int value +* REVIEWED: GuiScrollPanel() to avoid smallish scroll-bars +* REVIEWED: All examples and specially controls_test_suite +* RENAMED: gui_file_dialog module to gui_window_file_dialog +* UPDATED: All styles to include ISO-8859-15 charset (as much as possible) +* +* 3.6 (10-May-2023) ADDED: New icon: SAND_TIMER +* ADDED: GuiLoadStyleFromMemory() (binary only) +* REVIEWED: GuiScrollBar() horizontal movement key +* REVIEWED: GuiTextBox() crash on cursor movement +* REVIEWED: GuiTextBox(), additional inputs support +* REVIEWED: GuiLabelButton(), avoid text cut +* REVIEWED: GuiTextInputBox(), password input +* REVIEWED: Local GetCodepointNext(), aligned with raylib +* REDESIGNED: GuiSlider*()/GuiScrollBar() to support out-of-bounds +* +* 3.5 (20-Apr-2023) ADDED: GuiTabBar(), based on GuiToggle() +* ADDED: Helper functions to split text in separate lines +* ADDED: Multiple new icons, useful for code editing tools +* REMOVED: Unneeded icon editing functions +* REMOVED: GuiTextBoxMulti(), very limited and broken +* REMOVED: MeasureTextEx() dependency, logic directly implemented +* REMOVED: DrawTextEx() dependency, logic directly implemented +* REVIEWED: GuiScrollBar(), improve mouse-click behaviour +* REVIEWED: Library header info, more info, better organized +* REDESIGNED: GuiTextBox() to support cursor movement +* REDESIGNED: GuiDrawText() to divide drawing by lines +* +* 3.2 (22-May-2022) RENAMED: Some enum values, for unification, avoiding prefixes +* REMOVED: GuiScrollBar(), only internal +* REDESIGNED: GuiPanel() to support text parameter +* REDESIGNED: GuiScrollPanel() to support text parameter +* REDESIGNED: GuiColorPicker() to support text parameter +* REDESIGNED: GuiColorPanel() to support text parameter +* REDESIGNED: GuiColorBarAlpha() to support text parameter +* REDESIGNED: GuiColorBarHue() to support text parameter +* REDESIGNED: GuiTextInputBox() to support password +* +* 3.1 (12-Jan-2022) REVIEWED: Default style for consistency (aligned with rGuiLayout v2.5 tool) +* REVIEWED: GuiLoadStyle() to support compressed font atlas image data and unload previous textures +* REVIEWED: External icons usage logic +* REVIEWED: GuiLine() for centered alignment when including text +* RENAMED: Multiple controls properties definitions to prepend RAYGUI_ +* RENAMED: RICON_ references to RAYGUI_ICON_ for library consistency +* Projects updated and multiple tweaks +* +* 3.0 (04-Nov-2021) Integrated ricons data to avoid external file +* REDESIGNED: GuiTextBoxMulti() +* REMOVED: GuiImageButton*() +* Multiple minor tweaks and bugs corrected +* +* 2.9 (17-Mar-2021) REMOVED: Tooltip API +* 2.8 (03-May-2020) Centralized rectangles drawing to GuiDrawRectangle() +* 2.7 (20-Feb-2020) ADDED: Possible tooltips API +* 2.6 (09-Sep-2019) ADDED: GuiTextInputBox() +* REDESIGNED: GuiListView*(), GuiDropdownBox(), GuiSlider*(), GuiProgressBar(), GuiMessageBox() +* REVIEWED: GuiTextBox(), GuiSpinner(), GuiValueBox(), GuiLoadStyle() +* Replaced property INNER_PADDING by TEXT_PADDING, renamed some properties +* ADDED: 8 new custom styles ready to use +* Multiple minor tweaks and bugs corrected +* +* 2.5 (28-May-2019) Implemented extended GuiTextBox(), GuiValueBox(), GuiSpinner() +* 2.3 (29-Apr-2019) ADDED: rIcons auxiliar library and support for it, multiple controls reviewed +* Refactor all controls drawing mechanism to use control state +* 2.2 (05-Feb-2019) ADDED: GuiScrollBar(), GuiScrollPanel(), reviewed GuiListView(), removed Gui*Ex() controls +* 2.1 (26-Dec-2018) REDESIGNED: GuiCheckBox(), GuiComboBox(), GuiDropdownBox(), GuiToggleGroup() > Use combined text string +* REDESIGNED: Style system (breaking change) +* 2.0 (08-Nov-2018) ADDED: Support controls guiLock and custom fonts +* REVIEWED: GuiComboBox(), GuiListView()... +* 1.9 (09-Oct-2018) REVIEWED: GuiGrid(), GuiTextBox(), GuiTextBoxMulti(), GuiValueBox()... +* 1.8 (01-May-2018) Lot of rework and redesign to align with rGuiStyler and rGuiLayout +* 1.5 (21-Jun-2017) Working in an improved styles system +* 1.4 (15-Jun-2017) Rewritten all GUI functions (removed useless ones) +* 1.3 (12-Jun-2017) Complete redesign of style system +* 1.1 (01-Jun-2017) Complete review of the library +* 1.0 (07-Jun-2016) Converted to header-only by Ramon Santamaria +* 0.9 (07-Mar-2016) Reviewed and tested by Albert Martos, Ian Eito, Sergio Martinez and Ramon Santamaria +* 0.8 (27-Aug-2015) Initial release. Implemented by Kevin Gato, Daniel Nicolás and Ramon Santamaria +* +* DEPENDENCIES: +* raylib 5.6-dev - Inputs reading (keyboard/mouse), shapes drawing, font loading and text drawing +* +* STANDALONE MODE: +* By default raygui depends on raylib mostly for the inputs and the drawing functionality but that dependency can be disabled +* with the config flag RAYGUI_STANDALONE. In that case is up to the user to provide another backend to cover library needs +* +* The following functions should be redefined for a custom backend: +* +* - Vector2 GetMousePosition(void); +* - float GetMouseWheelMove(void); +* - bool IsMouseButtonDown(int button); +* - bool IsMouseButtonPressed(int button); +* - bool IsMouseButtonReleased(int button); +* - bool IsKeyDown(int key); +* - bool IsKeyPressed(int key); +* - int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() +* +* - void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() +* - void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() +* +* - Font GetFontDefault(void); // -- GuiLoadStyleDefault() +* - Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // -- GuiLoadStyle() +* - Texture2D LoadTextureFromImage(Image image); // -- GuiLoadStyle(), required to load texture from embedded font atlas image +* - void SetShapesTexture(Texture2D tex, Rectangle rec); // -- GuiLoadStyle(), required to set shapes rec to font white rec (optimization) +* - char *LoadFileText(const char *fileName); // -- GuiLoadStyle(), required to load charset data +* - void UnloadFileText(char *text); // -- GuiLoadStyle(), required to unload charset data +* - const char *GetDirectoryPath(const char *filePath); // -- GuiLoadStyle(), required to find charset/font file from text .rgs +* - int *LoadCodepoints(const char *text, int *count); // -- GuiLoadStyle(), required to load required font codepoints list +* - void UnloadCodepoints(int *codepoints); // -- GuiLoadStyle(), required to unload codepoints list +* - unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // -- GuiLoadStyle() +* +* CONTRIBUTORS: +* Ramon Santamaria: Supervision, review, redesign, update and maintenance +* Vlad Adrian: Complete rewrite of GuiTextBox() to support extended features (2019) +* Sergio Martinez: Review, testing (2015) and redesign of multiple controls (2018) +* Adria Arranz: Testing and implementation of additional controls (2018) +* Jordi Jorba: Testing and implementation of additional controls (2018) +* Albert Martos: Review and testing of the library (2015) +* Ian Eito: Review and testing of the library (2015) +* Kevin Gato: Initial implementation of basic components (2014) +* Daniel Nicolas: Initial implementation of basic components (2014) +* +* +* LICENSE: zlib/libpng +* +* Copyright (c) 2014-2026 Ramon Santamaria (@raysan5) +* +* This software is provided "as-is", without any express or implied warranty. In no event +* will the authors be held liable for any damages arising from the use of this software. +* +* Permission is granted to anyone to use this software for any purpose, including commercial +* applications, and to alter it and redistribute it freely, subject to the following restrictions: +* +* 1. The origin of this software must not be misrepresented; you must not claim that you +* wrote the original software. If you use this software in a product, an acknowledgment +* in the product documentation would be appreciated but is not required. +* +* 2. Altered source versions must be plainly marked as such, and must not be misrepresented +* as being the original software. +* +* 3. This notice may not be removed or altered from any source distribution. +* +**********************************************************************************************/ + +#ifndef RAYGUI_H +#define RAYGUI_H + +#define RAYGUI_VERSION_MAJOR 4 +#define RAYGUI_VERSION_MINOR 5 +#define RAYGUI_VERSION_PATCH 0 +#define RAYGUI_VERSION "5.0-dev" + +#if !defined(RAYGUI_STANDALONE) + #include "raylib.h" +#endif + +// Function specifiers in case library is build/used as a shared library (Windows) +// NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll +#if defined(_WIN32) + #if defined(BUILD_LIBTYPE_SHARED) + #define RAYGUIAPI __declspec(dllexport) // Building the library as a Win32 shared library (.dll) + #elif defined(USE_LIBTYPE_SHARED) + #define RAYGUIAPI __declspec(dllimport) // Using the library as a Win32 shared library (.dll) + #endif + #define _CRT_SECURE_NO_WARNINGS // Disable unsafe warnings on scanf() functions in MSVC +#endif + +// Function specifiers definition +#ifndef RAYGUIAPI + #define RAYGUIAPI // Functions defined as 'extern' by default (implicit specifiers) +#endif + +//---------------------------------------------------------------------------------- +// Defines and Macros +//---------------------------------------------------------------------------------- +// Simple log system to avoid printf() calls if required +// NOTE: Avoiding those calls, also avoids const strings memory usage +#define RAYGUI_SUPPORT_LOG_INFO +#if defined(RAYGUI_SUPPORT_LOG_INFO) + #define RAYGUI_LOG(...) printf(__VA_ARGS__) +#else + #define RAYGUI_LOG(...) +#endif + +// Macros to define required UI inputs, including mapping to gamepad controls +// TODO: Define additionally required macros for missing inputs +#if !defined(GUI_BUTTON_DOWN) + #define GUI_BUTTON_DOWN (IsMouseButtonDown(MOUSE_LEFT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +#if !defined(GUI_BUTTON_DOWN_ALT) + // Mapping to alternative button down pressed + #define GUI_BUTTON_DOWN_ALT (IsMouseButtonDown(MOUSE_RIGHT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) +#endif +#if !defined(GUI_BUTTON_PRESSED) + #define GUI_BUTTON_PRESSED (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +// TODO: WARNING: GuiTabBar() still requires IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON) +#if !defined(GUI_BUTTON_RELEASED) + #define GUI_BUTTON_RELEASED (IsMouseButtonReleased(MOUSE_LEFT_BUTTON) || IsGamepadButtonReleased(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +#if !defined(GUI_SCROLL_DELTA) + // Mapping to scroll delta changes + // TODO: Review inconsistencies between platforms + #if defined(PLATFORM_WEB) + // NOTE: Gamepad axis triggers not detected on web platform + #define GUI_SCROLL_DELTA ((float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_TRIGGER_2) - (float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_LEFT_TRIGGER_2)) + #else + #define GUI_SCROLL_DELTA (GetMouseWheelMove() + (GetGamepadAxisMovement(0, GAMEPAD_AXIS_RIGHT_TRIGGER) + 1) - (GetGamepadAxisMovement(0, GAMEPAD_AXIS_LEFT_TRIGGER) + 1)) + #endif +#endif +#if !defined(GUI_POINTER_POSITION) + #define GUI_POINTER_POSITION GetMousePosition() +#endif +#if !defined(GUI_KEY_DOWN) + #define GUI_KEY_DOWN(key) IsKeyDown(key) +#endif +#if !defined(GUI_KEY_PRESSED) + #define GUI_KEY_PRESSED(key) IsKeyPressed(key) +#endif +#if !defined(GUI_INPUT_KEY) + #define GUI_INPUT_KEY GetCharPressed() +#endif + +//---------------------------------------------------------------------------------- +// Types and Structures Definition +// NOTE: Some types are required for RAYGUI_STANDALONE usage +//---------------------------------------------------------------------------------- +#if defined(RAYGUI_STANDALONE) + #ifndef __cplusplus + // Boolean type + #ifndef true + typedef enum { false, true } bool; + #endif + #endif + + // Vector2 type + typedef struct Vector2 { + float x; + float y; + } Vector2; + + // Vector3 type // -- ConvertHSVtoRGB(), ConvertRGBtoHSV() + typedef struct Vector3 { + float x; + float y; + float z; + } Vector3; + + // Color type, RGBA (32bit) + typedef struct Color { + unsigned char r; + unsigned char g; + unsigned char b; + unsigned char a; + } Color; + + // Rectangle type + typedef struct Rectangle { + float x; + float y; + float width; + float height; + } Rectangle; + + // TODO: Texture2D type is very coupled to raylib, required by Font type + // It should be redesigned to be provided by user + typedef struct Texture { + unsigned int id; // OpenGL texture id + int width; // Texture base width + int height; // Texture base height + int mipmaps; // Mipmap levels, 1 by default + int format; // Data format (PixelFormat type) + } Texture; + + // Texture2D, same as Texture + typedef Texture Texture2D; + + // Image, pixel data stored in CPU memory (RAM) + typedef struct Image { + void *data; // Image raw data + int width; // Image base width + int height; // Image base height + int mipmaps; // Mipmap levels, 1 by default + int format; // Data format (PixelFormat type) + } Image; + + // GlyphInfo, font characters glyphs info + typedef struct GlyphInfo { + int value; // Character value (Unicode) + int offsetX; // Character offset X when drawing + int offsetY; // Character offset Y when drawing + int advanceX; // Character advance position X + Image image; // Character image data + } GlyphInfo; + + // TODO: Font type is very coupled to raylib, mostly required by GuiLoadStyle() + // It should be redesigned to be provided by user + typedef struct Font { + int baseSize; // Base size (default chars height) + int glyphCount; // Number of glyph characters + int glyphPadding; // Padding around the glyph characters + Texture2D texture; // Texture atlas containing the glyphs + Rectangle *recs; // Rectangles in texture for the glyphs + GlyphInfo *glyphs; // Glyphs info data + } Font; +#endif + +// Style property +// NOTE: Used when exporting style as code for convenience +typedef struct GuiStyleProp { + unsigned short controlId; // Control identifier + unsigned short propertyId; // Property identifier + int propertyValue; // Property value +} GuiStyleProp; + +/* +// Controls text style -NOT USED- +// NOTE: Text style is defined by control +typedef struct GuiTextStyle { + unsigned int size; + int charSpacing; + int lineSpacing; + int alignmentH; + int alignmentV; + int padding; +} GuiTextStyle; +*/ + +// Gui control state +typedef enum { + STATE_NORMAL = 0, + STATE_FOCUSED, + STATE_PRESSED, + STATE_DISABLED +} GuiState; + +// Gui control text alignment +typedef enum { + TEXT_ALIGN_LEFT = 0, + TEXT_ALIGN_CENTER, + TEXT_ALIGN_RIGHT +} GuiTextAlignment; + +// Gui control text alignment vertical +// NOTE: Text vertical position inside the text bounds +typedef enum { + TEXT_ALIGN_TOP = 0, + TEXT_ALIGN_MIDDLE, + TEXT_ALIGN_BOTTOM +} GuiTextAlignmentVertical; + +// Gui control text wrap mode +// NOTE: Useful for multiline text +typedef enum { + TEXT_WRAP_NONE = 0, + TEXT_WRAP_CHAR, + TEXT_WRAP_WORD +} GuiTextWrapMode; + +// Gui controls +typedef enum { + // Default -> populates to all controls when set + DEFAULT = 0, + + // Basic controls + LABEL, // Used also for: LABELBUTTON + BUTTON, + TOGGLE, // Used also for: TOGGLEGROUP + SLIDER, // Used also for: SLIDERBAR, TOGGLESLIDER + PROGRESSBAR, + CHECKBOX, + COMBOBOX, + DROPDOWNBOX, + TEXTBOX, // Used also for: TEXTBOXMULTI + VALUEBOX, + CONTROL11, + LISTVIEW, + COLORPICKER, + SCROLLBAR, + STATUSBAR +} GuiControl; + +// Gui base properties for every control +// NOTE: RAYGUI_MAX_PROPS_BASE properties (by default 16 properties) +typedef enum { + BORDER_COLOR_NORMAL = 0, // Control border color in STATE_NORMAL + BASE_COLOR_NORMAL, // Control base color in STATE_NORMAL + TEXT_COLOR_NORMAL, // Control text color in STATE_NORMAL + BORDER_COLOR_FOCUSED, // Control border color in STATE_FOCUSED + BASE_COLOR_FOCUSED, // Control base color in STATE_FOCUSED + TEXT_COLOR_FOCUSED, // Control text color in STATE_FOCUSED + BORDER_COLOR_PRESSED, // Control border color in STATE_PRESSED + BASE_COLOR_PRESSED, // Control base color in STATE_PRESSED + TEXT_COLOR_PRESSED, // Control text color in STATE_PRESSED + BORDER_COLOR_DISABLED, // Control border color in STATE_DISABLED + BASE_COLOR_DISABLED, // Control base color in STATE_DISABLED + TEXT_COLOR_DISABLED, // Control text color in STATE_DISABLED + BORDER_WIDTH = 12, // Control border size, 0 for no border + //TEXT_SIZE, // Control text size (glyphs max height) -> GLOBAL for all controls + //TEXT_SPACING, // Control text spacing between glyphs -> GLOBAL for all controls + //TEXT_LINE_SPACING, // Control text spacing between lines -> GLOBAL for all controls + TEXT_PADDING = 13, // Control text padding, not considering border + TEXT_ALIGNMENT = 14, // Control text horizontal alignment inside control text bound (after border and padding) + //TEXT_WRAP_MODE // Control text wrap-mode inside text bounds -> GLOBAL for all controls +} GuiControlProperty; + +// TODO: Which text styling properties should be global or per-control? +// At this moment TEXT_PADDING and TEXT_ALIGNMENT is configured and saved per control while +// TEXT_SIZE, TEXT_SPACING, TEXT_LINE_SPACING, TEXT_ALIGNMENT_VERTICAL, TEXT_WRAP_MODE are global and +// should be configured by user as needed while defining the UI layout + +// Gui extended properties depend on control +// NOTE: RAYGUI_MAX_PROPS_EXTENDED properties (by default, max 8 properties) +//---------------------------------------------------------------------------------- +// DEFAULT extended properties +// NOTE: Those properties are common to all controls or global +// WARNING: Only 8 slots vailable for those properties by default +typedef enum { + TEXT_SIZE = 16, // Text size (glyphs max height) + TEXT_SPACING, // Text spacing between glyphs + LINE_COLOR, // Line control color + BACKGROUND_COLOR, // Background color + TEXT_LINE_SPACING, // Text spacing between lines + TEXT_ALIGNMENT_VERTICAL, // Text vertical alignment inside text bounds (after border and padding) + TEXT_WRAP_MODE // Text wrap-mode inside text bounds + //TEXT_DECORATION // Text decoration: 0-None, 1-Underline, 2-Line-through, 3-Overline + //TEXT_DECORATION_THICK // Text decoration line thickness +} GuiDefaultProperty; + +// Other possible text properties: +// TEXT_WEIGHT // Normal, Italic, Bold -> Requires specific font change +// TEXT_INDENT // Text indentation -> Now using TEXT_PADDING... + +// Label +//typedef enum { } GuiLabelProperty; + +// Button/Spinner +//typedef enum { } GuiButtonProperty; + +// Toggle/ToggleGroup +typedef enum { + GROUP_PADDING = 16, // ToggleGroup separation between toggles +} GuiToggleProperty; + +// Slider/SliderBar +typedef enum { + SLIDER_WIDTH = 16, // Slider size of internal bar + SLIDER_PADDING // Slider/SliderBar internal bar padding +} GuiSliderProperty; + +// ProgressBar +typedef enum { + PROGRESS_PADDING = 16, // ProgressBar internal padding +} GuiProgressBarProperty; + +// ScrollBar +typedef enum { + ARROWS_SIZE = 16, // ScrollBar arrows size + ARROWS_VISIBLE, // ScrollBar arrows visible + SCROLL_SLIDER_PADDING, // ScrollBar slider internal padding + SCROLL_SLIDER_SIZE, // ScrollBar slider size + SCROLL_PADDING, // ScrollBar scroll padding from arrows + SCROLL_SPEED, // ScrollBar scrolling speed +} GuiScrollBarProperty; + +// CheckBox +typedef enum { + CHECK_PADDING = 16 // CheckBox internal check padding +} GuiCheckBoxProperty; + +// ComboBox +typedef enum { + COMBO_BUTTON_WIDTH = 16, // ComboBox right button width + COMBO_BUTTON_SPACING // ComboBox button separation +} GuiComboBoxProperty; + +// DropdownBox +typedef enum { + ARROW_PADDING = 16, // DropdownBox arrow separation from border and items + DROPDOWN_ITEMS_SPACING, // DropdownBox items separation + DROPDOWN_ARROW_HIDDEN, // DropdownBox arrow hidden + DROPDOWN_ROLL_UP // DropdownBox roll up flag (default rolls down) +} GuiDropdownBoxProperty; + +// TextBox/TextBoxMulti/ValueBox/Spinner +typedef enum { + TEXT_READONLY = 16, // TextBox in read-only mode: 0-text editable, 1-text no-editable +} GuiTextBoxProperty; + +// ValueBox/Spinner +typedef enum { + SPINNER_BUTTON_WIDTH = 16, // Spinner left/right buttons width + SPINNER_BUTTON_SPACING, // Spinner buttons separation +} GuiValueBoxProperty; + +// Control11 +//typedef enum { } GuiControl11Property; + +// ListView +typedef enum { + LIST_ITEMS_HEIGHT = 16, // ListView items height + LIST_ITEMS_SPACING, // ListView items separation + SCROLLBAR_WIDTH, // ListView scrollbar size (usually width) + SCROLLBAR_SIDE, // ListView scrollbar side (0-SCROLLBAR_LEFT_SIDE, 1-SCROLLBAR_RIGHT_SIDE) + LIST_ITEMS_BORDER_NORMAL, // ListView items border enabled in normal state + LIST_ITEMS_BORDER_WIDTH // ListView items border width +} GuiListViewProperty; + +// ColorPicker +typedef enum { + COLOR_SELECTOR_SIZE = 16, + HUEBAR_WIDTH, // ColorPicker right hue bar width + HUEBAR_PADDING, // ColorPicker right hue bar separation from panel + HUEBAR_SELECTOR_HEIGHT, // ColorPicker right hue bar selector height + HUEBAR_SELECTOR_OVERFLOW // ColorPicker right hue bar selector overflow +} GuiColorPickerProperty; + +#define SCROLLBAR_LEFT_SIDE 0 +#define SCROLLBAR_RIGHT_SIDE 1 + +//---------------------------------------------------------------------------------- +// Global Variables Definition +//---------------------------------------------------------------------------------- +// ... + +//---------------------------------------------------------------------------------- +// Module Functions Declaration +//---------------------------------------------------------------------------------- + +#if defined(__cplusplus) +extern "C" { // Prevents name mangling of functions +#endif + +// Global gui state control functions +RAYGUIAPI void GuiEnable(void); // Enable gui controls (global state) +RAYGUIAPI void GuiDisable(void); // Disable gui controls (global state) +RAYGUIAPI void GuiLock(void); // Lock gui controls (global state) +RAYGUIAPI void GuiUnlock(void); // Unlock gui controls (global state) +RAYGUIAPI bool GuiIsLocked(void); // Check if gui is locked (global state) +RAYGUIAPI void GuiSetAlpha(float alpha); // Set gui controls alpha (global state), alpha goes from 0.0f to 1.0f +RAYGUIAPI void GuiSetState(int state); // Set gui state (global state) +RAYGUIAPI int GuiGetState(void); // Get gui state (global state) + +// Font set/get functions +RAYGUIAPI void GuiSetFont(Font font); // Set gui custom font (global state) +RAYGUIAPI Font GuiGetFont(void); // Get gui custom font (global state) + +// Style set/get functions +RAYGUIAPI void GuiSetStyle(int control, int property, int value); // Set one style property +RAYGUIAPI int GuiGetStyle(int control, int property); // Get one style property + +// Styles loading functions +RAYGUIAPI void GuiLoadStyle(const char *fileName); // Load style file over global style variable (.rgs) +RAYGUIAPI void GuiLoadStyleDefault(void); // Load style default over global style + +// Tooltips management functions +RAYGUIAPI void GuiEnableTooltip(void); // Enable gui tooltips (global state) +RAYGUIAPI void GuiDisableTooltip(void); // Disable gui tooltips (global state) +RAYGUIAPI void GuiSetTooltip(const char *tooltip); // Set tooltip string + +// Icons functionality +RAYGUIAPI const char *GuiIconText(int iconId, const char *text); // Get text with icon id prepended (if supported) +#if !defined(RAYGUI_NO_ICONS) +RAYGUIAPI void GuiSetIconScale(int scale); // Set default icon drawing size +RAYGUIAPI unsigned int *GuiGetIcons(void); // Get raygui icons data pointer +RAYGUIAPI char **GuiLoadIcons(const char *fileName, bool loadIconsName); // Load raygui icons file (.rgi) into internal icons data +RAYGUIAPI void GuiDrawIcon(int iconId, int posX, int posY, int pixelSize, Color color); // Draw icon using pixel size at specified position +#endif + +// Utility functions +RAYGUIAPI int GuiGetTextWidth(const char *text); // Get text width considering gui style and icon size (if required) + +// Controls +//---------------------------------------------------------------------------------------------------------- +// Container/separator controls, useful for controls organization +RAYGUIAPI int GuiWindowBox(Rectangle bounds, const char *title); // Window Box control, shows a window that can be closed +RAYGUIAPI int GuiGroupBox(Rectangle bounds, const char *text); // Group Box control with text name +RAYGUIAPI int GuiLine(Rectangle bounds, const char *text); // Line separator control, could contain text +RAYGUIAPI int GuiPanel(Rectangle bounds, const char *text); // Panel control, useful to group controls +RAYGUIAPI int GuiTabBar(Rectangle bounds, const char **text, int count, int *active); // Tab Bar control, returns TAB to be closed or -1 +RAYGUIAPI int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector2 *scroll, Rectangle *view); // Scroll Panel control + +// Basic controls set +RAYGUIAPI int GuiLabel(Rectangle bounds, const char *text); // Label control +RAYGUIAPI int GuiButton(Rectangle bounds, const char *text); // Button control, returns true when clicked +RAYGUIAPI int GuiLabelButton(Rectangle bounds, const char *text); // Label button control, returns true when clicked +RAYGUIAPI int GuiToggle(Rectangle bounds, const char *text, bool *active); // Toggle Button control +RAYGUIAPI int GuiToggleGroup(Rectangle bounds, const char *text, int *active); // Toggle Group control +RAYGUIAPI int GuiToggleSlider(Rectangle bounds, const char *text, int *active); // Toggle Slider control +RAYGUIAPI int GuiCheckBox(Rectangle bounds, const char *text, bool *checked); // Check Box control, returns true when active +RAYGUIAPI int GuiComboBox(Rectangle bounds, const char *text, int *active); // Combo Box control + +RAYGUIAPI int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMode); // Dropdown Box control +RAYGUIAPI int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode); // Spinner control +RAYGUIAPI int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode); // Value Box control, updates input text with numbers +RAYGUIAPI int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float *value, bool editMode); // Value box control for float values +RAYGUIAPI int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode); // Text Box control, updates input text + +RAYGUIAPI int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Slider control +RAYGUIAPI int GuiSliderBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Slider Bar control +RAYGUIAPI int GuiProgressBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue); // Progress Bar control +RAYGUIAPI int GuiStatusBar(Rectangle bounds, const char *text); // Status Bar control, shows info text +RAYGUIAPI int GuiDummyRec(Rectangle bounds, const char *text); // Dummy control for placeholders +RAYGUIAPI int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell); // Grid control + +// Advance controls set +RAYGUIAPI int GuiListView(Rectangle bounds, const char *text, int *scrollIndex, int *active); // List View control +RAYGUIAPI int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollIndex, int *active, int *focus); // List View with extended parameters +RAYGUIAPI int GuiMessageBox(Rectangle bounds, const char *title, const char *message, const char *buttons); // Message Box control, displays a message +RAYGUIAPI int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, const char *buttons, char *text, int textMaxSize, bool *secretViewActive); // Text Input Box control, ask for text, supports secret +RAYGUIAPI int GuiColorPicker(Rectangle bounds, const char *text, Color *color); // Color Picker control (multiple color controls) +RAYGUIAPI int GuiColorPanel(Rectangle bounds, const char *text, Color *color); // Color Panel control +RAYGUIAPI int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha); // Color Bar Alpha control +RAYGUIAPI int GuiColorBarHue(Rectangle bounds, const char *text, float *value); // Color Bar Hue control +RAYGUIAPI int GuiColorPickerHSV(Rectangle bounds, const char *text, Vector3 *colorHsv); // Color Picker control that avoids conversion to RGB on each call (multiple color controls) +RAYGUIAPI int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv); // Color Panel control that updates Hue-Saturation-Value color value, used by GuiColorPickerHSV() +//---------------------------------------------------------------------------------------------------------- + +#if !defined(RAYGUI_NO_ICONS) + +#if !defined(RAYGUI_CUSTOM_ICONS) +//---------------------------------------------------------------------------------- +// Icons enumeration +//---------------------------------------------------------------------------------- +typedef enum { + ICON_NONE = 0, + ICON_FOLDER_FILE_OPEN = 1, + ICON_FILE_SAVE_CLASSIC = 2, + ICON_FOLDER_OPEN = 3, + ICON_FOLDER_SAVE = 4, + ICON_FILE_OPEN = 5, + ICON_FILE_SAVE = 6, + ICON_FILE_EXPORT = 7, + ICON_FILE_ADD = 8, + ICON_FILE_DELETE = 9, + ICON_FILETYPE_TEXT = 10, + ICON_FILETYPE_AUDIO = 11, + ICON_FILETYPE_IMAGE = 12, + ICON_FILETYPE_PLAY = 13, + ICON_FILETYPE_VIDEO = 14, + ICON_FILETYPE_INFO = 15, + ICON_FILE_COPY = 16, + ICON_FILE_CUT = 17, + ICON_FILE_PASTE = 18, + ICON_CURSOR_HAND = 19, + ICON_CURSOR_POINTER = 20, + ICON_CURSOR_CLASSIC = 21, + ICON_PENCIL = 22, + ICON_PENCIL_BIG = 23, + ICON_BRUSH_CLASSIC = 24, + ICON_BRUSH_PAINTER = 25, + ICON_WATER_DROP = 26, + ICON_COLOR_PICKER = 27, + ICON_RUBBER = 28, + ICON_COLOR_BUCKET = 29, + ICON_TEXT_T = 30, + ICON_TEXT_A = 31, + ICON_SCALE = 32, + ICON_RESIZE = 33, + ICON_FILTER_POINT = 34, + ICON_FILTER_BILINEAR = 35, + ICON_CROP = 36, + ICON_CROP_ALPHA = 37, + ICON_SQUARE_TOGGLE = 38, + ICON_SYMMETRY = 39, + ICON_SYMMETRY_HORIZONTAL = 40, + ICON_SYMMETRY_VERTICAL = 41, + ICON_LENS = 42, + ICON_LENS_BIG = 43, + ICON_EYE_ON = 44, + ICON_EYE_OFF = 45, + ICON_FILTER_TOP = 46, + ICON_FILTER = 47, + ICON_TARGET_POINT = 48, + ICON_TARGET_SMALL = 49, + ICON_TARGET_BIG = 50, + ICON_TARGET_MOVE = 51, + ICON_CURSOR_MOVE = 52, + ICON_CURSOR_SCALE = 53, + ICON_CURSOR_SCALE_RIGHT = 54, + ICON_CURSOR_SCALE_LEFT = 55, + ICON_UNDO = 56, + ICON_REDO = 57, + ICON_REREDO = 58, + ICON_MUTATE = 59, + ICON_ROTATE = 60, + ICON_REPEAT = 61, + ICON_SHUFFLE = 62, + ICON_EMPTYBOX = 63, + ICON_TARGET = 64, + ICON_TARGET_SMALL_FILL = 65, + ICON_TARGET_BIG_FILL = 66, + ICON_TARGET_MOVE_FILL = 67, + ICON_CURSOR_MOVE_FILL = 68, + ICON_CURSOR_SCALE_FILL = 69, + ICON_CURSOR_SCALE_RIGHT_FILL = 70, + ICON_CURSOR_SCALE_LEFT_FILL = 71, + ICON_UNDO_FILL = 72, + ICON_REDO_FILL = 73, + ICON_REREDO_FILL = 74, + ICON_MUTATE_FILL = 75, + ICON_ROTATE_FILL = 76, + ICON_REPEAT_FILL = 77, + ICON_SHUFFLE_FILL = 78, + ICON_EMPTYBOX_SMALL = 79, + ICON_BOX = 80, + ICON_BOX_TOP = 81, + ICON_BOX_TOP_RIGHT = 82, + ICON_BOX_RIGHT = 83, + ICON_BOX_BOTTOM_RIGHT = 84, + ICON_BOX_BOTTOM = 85, + ICON_BOX_BOTTOM_LEFT = 86, + ICON_BOX_LEFT = 87, + ICON_BOX_TOP_LEFT = 88, + ICON_BOX_CENTER = 89, + ICON_BOX_CIRCLE_MASK = 90, + ICON_POT = 91, + ICON_ALPHA_MULTIPLY = 92, + ICON_ALPHA_CLEAR = 93, + ICON_DITHERING = 94, + ICON_MIPMAPS = 95, + ICON_BOX_GRID = 96, + ICON_GRID = 97, + ICON_BOX_CORNERS_SMALL = 98, + ICON_BOX_CORNERS_BIG = 99, + ICON_FOUR_BOXES = 100, + ICON_GRID_FILL = 101, + ICON_BOX_MULTISIZE = 102, + ICON_ZOOM_SMALL = 103, + ICON_ZOOM_MEDIUM = 104, + ICON_ZOOM_BIG = 105, + ICON_ZOOM_ALL = 106, + ICON_ZOOM_CENTER = 107, + ICON_BOX_DOTS_SMALL = 108, + ICON_BOX_DOTS_BIG = 109, + ICON_BOX_CONCENTRIC = 110, + ICON_BOX_GRID_BIG = 111, + ICON_OK_TICK = 112, + ICON_CROSS = 113, + ICON_ARROW_LEFT = 114, + ICON_ARROW_RIGHT = 115, + ICON_ARROW_DOWN = 116, + ICON_ARROW_UP = 117, + ICON_ARROW_LEFT_FILL = 118, + ICON_ARROW_RIGHT_FILL = 119, + ICON_ARROW_DOWN_FILL = 120, + ICON_ARROW_UP_FILL = 121, + ICON_AUDIO = 122, + ICON_FX = 123, + ICON_WAVE = 124, + ICON_WAVE_SINUS = 125, + ICON_WAVE_SQUARE = 126, + ICON_WAVE_TRIANGULAR = 127, + ICON_CROSS_SMALL = 128, + ICON_PLAYER_PREVIOUS = 129, + ICON_PLAYER_PLAY_BACK = 130, + ICON_PLAYER_PLAY = 131, + ICON_PLAYER_PAUSE = 132, + ICON_PLAYER_STOP = 133, + ICON_PLAYER_NEXT = 134, + ICON_PLAYER_RECORD = 135, + ICON_MAGNET = 136, + ICON_LOCK_CLOSE = 137, + ICON_LOCK_OPEN = 138, + ICON_CLOCK = 139, + ICON_TOOLS = 140, + ICON_GEAR = 141, + ICON_GEAR_BIG = 142, + ICON_BIN = 143, + ICON_HAND_POINTER = 144, + ICON_LASER = 145, + ICON_COIN = 146, + ICON_EXPLOSION = 147, + ICON_1UP = 148, + ICON_PLAYER = 149, + ICON_PLAYER_JUMP = 150, + ICON_KEY = 151, + ICON_DEMON = 152, + ICON_TEXT_POPUP = 153, + ICON_GEAR_EX = 154, + ICON_CRACK = 155, + ICON_CRACK_POINTS = 156, + ICON_STAR = 157, + ICON_DOOR = 158, + ICON_EXIT = 159, + ICON_MODE_2D = 160, + ICON_MODE_3D = 161, + ICON_CUBE = 162, + ICON_CUBE_FACE_TOP = 163, + ICON_CUBE_FACE_LEFT = 164, + ICON_CUBE_FACE_FRONT = 165, + ICON_CUBE_FACE_BOTTOM = 166, + ICON_CUBE_FACE_RIGHT = 167, + ICON_CUBE_FACE_BACK = 168, + ICON_CAMERA = 169, + ICON_SPECIAL = 170, + ICON_LINK_NET = 171, + ICON_LINK_BOXES = 172, + ICON_LINK_MULTI = 173, + ICON_LINK = 174, + ICON_LINK_BROKE = 175, + ICON_TEXT_NOTES = 176, + ICON_NOTEBOOK = 177, + ICON_SUITCASE = 178, + ICON_SUITCASE_ZIP = 179, + ICON_MAILBOX = 180, + ICON_MONITOR = 181, + ICON_PRINTER = 182, + ICON_PHOTO_CAMERA = 183, + ICON_PHOTO_CAMERA_FLASH = 184, + ICON_HOUSE = 185, + ICON_HEART = 186, + ICON_CORNER = 187, + ICON_VERTICAL_BARS = 188, + ICON_VERTICAL_BARS_FILL = 189, + ICON_LIFE_BARS = 190, + ICON_INFO = 191, + ICON_CROSSLINE = 192, + ICON_HELP = 193, + ICON_FILETYPE_ALPHA = 194, + ICON_FILETYPE_HOME = 195, + ICON_LAYERS_VISIBLE = 196, + ICON_LAYERS = 197, + ICON_WINDOW = 198, + ICON_HIDPI = 199, + ICON_FILETYPE_BINARY = 200, + ICON_HEX = 201, + ICON_SHIELD = 202, + ICON_FILE_NEW = 203, + ICON_FOLDER_ADD = 204, + ICON_ALARM = 205, + ICON_CPU = 206, + ICON_ROM = 207, + ICON_STEP_OVER = 208, + ICON_STEP_INTO = 209, + ICON_STEP_OUT = 210, + ICON_RESTART = 211, + ICON_BREAKPOINT_ON = 212, + ICON_BREAKPOINT_OFF = 213, + ICON_BURGER_MENU = 214, + ICON_CASE_SENSITIVE = 215, + ICON_REG_EXP = 216, + ICON_FOLDER = 217, + ICON_FILE = 218, + ICON_SAND_TIMER = 219, + ICON_WARNING = 220, + ICON_HELP_BOX = 221, + ICON_INFO_BOX = 222, + ICON_PRIORITY = 223, + ICON_LAYERS_ISO = 224, + ICON_LAYERS2 = 225, + ICON_MLAYERS = 226, + ICON_MAPS = 227, + ICON_HOT = 228, + ICON_LABEL = 229, + ICON_NAME_ID = 230, + ICON_SLICING = 231, + ICON_MANUAL_CONTROL = 232, + ICON_COLLISION = 233, + ICON_CIRCLE_ADD = 234, + ICON_CIRCLE_ADD_FILL = 235, + ICON_CIRCLE_WARNING = 236, + ICON_CIRCLE_WARNING_FILL = 237, + ICON_BOX_MORE = 238, + ICON_BOX_MORE_FILL = 239, + ICON_BOX_MINUS = 240, + ICON_BOX_MINUS_FILL = 241, + ICON_UNION = 242, + ICON_INTERSECTION = 243, + ICON_DIFFERENCE = 244, + ICON_SPHERE = 245, + ICON_CYLINDER = 246, + ICON_CONE = 247, + ICON_ELLIPSOID = 248, + ICON_CAPSULE = 249, + ICON_250 = 250, + ICON_251 = 251, + ICON_252 = 252, + ICON_253 = 253, + ICON_254 = 254, + ICON_255 = 255 +} GuiIconName; +#endif + +#endif + +#if defined(__cplusplus) +} // Prevents name mangling of functions +#endif + +#endif // RAYGUI_H + +/*********************************************************************************** +* +* RAYGUI IMPLEMENTATION +* +************************************************************************************/ + +#if defined(RAYGUI_IMPLEMENTATION) + +#include // required for: isspace() [GuiTextBox()] +#include // Required for: FILE, fopen(), fclose(), fprintf(), feof(), fscanf(), snprintf(), vsprintf() [GuiLoadStyle(), GuiLoadIcons()] +#include // Required for: strlen() [GuiTextBox(), GuiValueBox()], memset(), memcpy() +#include // Required for: va_list, va_start(), vfprintf(), va_end() [TextFormat()] +#include // Required for: roundf() [GuiColorPicker()] + +// Allow custom memory allocators +#if defined(RAYGUI_MALLOC) || defined(RAYGUI_CALLOC) || defined(RAYGUI_FREE) + #if !defined(RAYGUI_MALLOC) || !defined(RAYGUI_CALLOC) || !defined(RAYGUI_FREE) + #error "RAYGUI: if RAYGUI_MALLOC, RAYGUI_CALLOC, or RAYGUI_FREE is customized, all three must be customized" + #endif +#else + #include // Required for: malloc(), calloc(), free() [GuiLoadStyle(), GuiLoadIcons()] + + #define RAYGUI_MALLOC(sz) malloc(sz) + #define RAYGUI_CALLOC(n,sz) calloc(n,sz) + #define RAYGUI_FREE(p) free(p) +#endif + +#ifdef __cplusplus + #define RAYGUI_CLITERAL(name) name +#else + #define RAYGUI_CLITERAL(name) (name) +#endif + +// Check if two rectangles are equal, used to validate a slider bounds as an id +#ifndef CHECK_BOUNDS_ID + #define CHECK_BOUNDS_ID(src, dst) (((int)src.x == (int)dst.x) && ((int)src.y == (int)dst.y) && ((int)src.width == (int)dst.width) && ((int)src.height == (int)dst.height)) +#endif + +#if !defined(RAYGUI_NO_ICONS) && !defined(RAYGUI_CUSTOM_ICONS) + +// Embedded icons, no external file provided +#define RAYGUI_ICON_SIZE 16 // Size of icons in pixels (squared) +#define RAYGUI_ICON_MAX_ICONS 256 // Maximum number of icons +#define RAYGUI_ICON_MAX_NAME_LENGTH 32 // Maximum length of icon name id + +// Icons data is defined by bit array (every bit represents one pixel) +// Those arrays are stored as unsigned int data arrays, so, +// every array element defines 32 pixels (bits) of information +// One icon is defined by 8 int, (8 int*32 bit = 256 bit = 16*16 pixels) +// NOTE: Number of elemens depend on RAYGUI_ICON_SIZE (by default 16x16 pixels) +#define RAYGUI_ICON_DATA_ELEMENTS (RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32) + +//---------------------------------------------------------------------------------- +// Icons data for all gui possible icons (allocated on data segment by default) +// +// NOTE 1: Every icon is codified in binary form, using 1 bit per pixel, so, +// every 16x16 icon requires 8 integers (16*16/32) to be stored +// +// NOTE 2: A different icon set could be loaded over this array using GuiLoadIcons(), +// but loaded icons set must be same RAYGUI_ICON_SIZE and no more than RAYGUI_ICON_MAX_ICONS +// +// guiIcons size is by default: 256*(16*16/32) = 2048*4 = 8192 bytes = 8 KB +//---------------------------------------------------------------------------------- +static unsigned int guiIcons[RAYGUI_ICON_MAX_ICONS*RAYGUI_ICON_DATA_ELEMENTS] = { + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_NONE + 0x3ff80000, 0x2f082008, 0x2042207e, 0x40027fc2, 0x40024002, 0x40024002, 0x40024002, 0x00007ffe, // ICON_FOLDER_FILE_OPEN + 0x3ffe0000, 0x44226422, 0x400247e2, 0x5ffa4002, 0x57ea500a, 0x500a500a, 0x40025ffa, 0x00007ffe, // ICON_FILE_SAVE_CLASSIC + 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x41024002, 0x44424282, 0x793e4102, 0x00000100, // ICON_FOLDER_OPEN + 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x41024102, 0x44424102, 0x793e4282, 0x00000000, // ICON_FOLDER_SAVE + 0x3ff00000, 0x201c2010, 0x20042004, 0x21042004, 0x24442284, 0x21042104, 0x20042104, 0x00003ffc, // ICON_FILE_OPEN + 0x3ff00000, 0x201c2010, 0x20042004, 0x21042004, 0x21042104, 0x22842444, 0x20042104, 0x00003ffc, // ICON_FILE_SAVE + 0x3ff00000, 0x201c2010, 0x00042004, 0x20041004, 0x20844784, 0x00841384, 0x20042784, 0x00003ffc, // ICON_FILE_EXPORT + 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x22042204, 0x22042f84, 0x20042204, 0x00003ffc, // ICON_FILE_ADD + 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x25042884, 0x25042204, 0x20042884, 0x00003ffc, // ICON_FILE_DELETE + 0x3ff00000, 0x201c2010, 0x20042004, 0x20042ff4, 0x20042ff4, 0x20042ff4, 0x20042004, 0x00003ffc, // ICON_FILETYPE_TEXT + 0x3ff00000, 0x201c2010, 0x27042004, 0x244424c4, 0x26442444, 0x20642664, 0x20042004, 0x00003ffc, // ICON_FILETYPE_AUDIO + 0x3ff00000, 0x201c2010, 0x26042604, 0x20042004, 0x35442884, 0x2414222c, 0x20042004, 0x00003ffc, // ICON_FILETYPE_IMAGE + 0x3ff00000, 0x201c2010, 0x20c42004, 0x22442144, 0x22442444, 0x20c42144, 0x20042004, 0x00003ffc, // ICON_FILETYPE_PLAY + 0x3ff00000, 0x3ffc2ff0, 0x3f3c2ff4, 0x3dbc2eb4, 0x3dbc2bb4, 0x3f3c2eb4, 0x3ffc2ff4, 0x00002ff4, // ICON_FILETYPE_VIDEO + 0x3ff00000, 0x201c2010, 0x21842184, 0x21842004, 0x21842184, 0x21842184, 0x20042184, 0x00003ffc, // ICON_FILETYPE_INFO + 0x0ff00000, 0x381c0810, 0x28042804, 0x28042804, 0x28042804, 0x28042804, 0x20102ffc, 0x00003ff0, // ICON_FILE_COPY + 0x00000000, 0x701c0000, 0x079c1e14, 0x55a000f0, 0x079c00f0, 0x701c1e14, 0x00000000, 0x00000000, // ICON_FILE_CUT + 0x01c00000, 0x13e41bec, 0x3f841004, 0x204420c4, 0x20442044, 0x20442044, 0x207c2044, 0x00003fc0, // ICON_FILE_PASTE + 0x00000000, 0x3aa00fe0, 0x2abc2aa0, 0x2aa42aa4, 0x20042aa4, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_CURSOR_HAND + 0x00000000, 0x003c000c, 0x030800c8, 0x30100c10, 0x10202020, 0x04400840, 0x01800280, 0x00000000, // ICON_CURSOR_POINTER + 0x00000000, 0x00180000, 0x01f00078, 0x03e007f0, 0x07c003e0, 0x04000e40, 0x00000000, 0x00000000, // ICON_CURSOR_CLASSIC + 0x00000000, 0x04000000, 0x11000a00, 0x04400a80, 0x01100220, 0x00580088, 0x00000038, 0x00000000, // ICON_PENCIL + 0x04000000, 0x15000a00, 0x50402880, 0x14102820, 0x05040a08, 0x015c028c, 0x007c00bc, 0x00000000, // ICON_PENCIL_BIG + 0x01c00000, 0x01400140, 0x01400140, 0x0ff80140, 0x0ff80808, 0x0aa80808, 0x0aa80aa8, 0x00000ff8, // ICON_BRUSH_CLASSIC + 0x1ffc0000, 0x5ffc7ffe, 0x40004000, 0x00807f80, 0x01c001c0, 0x01c001c0, 0x01c001c0, 0x00000080, // ICON_BRUSH_PAINTER + 0x00000000, 0x00800000, 0x01c00080, 0x03e001c0, 0x07f003e0, 0x036006f0, 0x000001c0, 0x00000000, // ICON_WATER_DROP + 0x00000000, 0x3e003800, 0x1f803f80, 0x0c201e40, 0x02080c10, 0x00840104, 0x00380044, 0x00000000, // ICON_COLOR_PICKER + 0x00000000, 0x07800300, 0x1fe00fc0, 0x3f883fd0, 0x0e021f04, 0x02040402, 0x00f00108, 0x00000000, // ICON_RUBBER + 0x00c00000, 0x02800140, 0x08200440, 0x20081010, 0x2ffe3004, 0x03f807fc, 0x00e001f0, 0x00000040, // ICON_COLOR_BUCKET + 0x00000000, 0x21843ffc, 0x01800180, 0x01800180, 0x01800180, 0x01800180, 0x03c00180, 0x00000000, // ICON_TEXT_T + 0x00800000, 0x01400180, 0x06200340, 0x0c100620, 0x1ff80c10, 0x380c1808, 0x70067004, 0x0000f80f, // ICON_TEXT_A + 0x78000000, 0x50004000, 0x00004800, 0x03c003c0, 0x03c003c0, 0x00100000, 0x0002000a, 0x0000000e, // ICON_SCALE + 0x75560000, 0x5e004002, 0x54001002, 0x41001202, 0x408200fe, 0x40820082, 0x40820082, 0x00006afe, // ICON_RESIZE + 0x00000000, 0x3f003f00, 0x3f003f00, 0x3f003f00, 0x00400080, 0x001c0020, 0x001c001c, 0x00000000, // ICON_FILTER_POINT + 0x6d800000, 0x00004080, 0x40804080, 0x40800000, 0x00406d80, 0x001c0020, 0x001c001c, 0x00000000, // ICON_FILTER_BILINEAR + 0x40080000, 0x1ffe2008, 0x14081008, 0x11081208, 0x10481088, 0x10081028, 0x10047ff8, 0x00001002, // ICON_CROP + 0x00100000, 0x3ffc0010, 0x2ab03550, 0x22b02550, 0x20b02150, 0x20302050, 0x2000fff0, 0x00002000, // ICON_CROP_ALPHA + 0x40000000, 0x1ff82000, 0x04082808, 0x01082208, 0x00482088, 0x00182028, 0x35542008, 0x00000002, // ICON_SQUARE_TOGGLE + 0x00000000, 0x02800280, 0x06c006c0, 0x0ea00ee0, 0x1e901eb0, 0x3e883e98, 0x7efc7e8c, 0x00000000, // ICON_SYMMETRY + 0x01000000, 0x05600100, 0x1d480d50, 0x7d423d44, 0x3d447d42, 0x0d501d48, 0x01000560, 0x00000100, // ICON_SYMMETRY_HORIZONTAL + 0x01800000, 0x04200240, 0x10080810, 0x00001ff8, 0x00007ffe, 0x0ff01ff8, 0x03c007e0, 0x00000180, // ICON_SYMMETRY_VERTICAL + 0x00000000, 0x010800f0, 0x02040204, 0x02040204, 0x07f00308, 0x1c000e00, 0x30003800, 0x00000000, // ICON_LENS + 0x00000000, 0x061803f0, 0x08240c0c, 0x08040814, 0x0c0c0804, 0x23f01618, 0x18002400, 0x00000000, // ICON_LENS_BIG + 0x00000000, 0x00000000, 0x1c7007c0, 0x638e3398, 0x1c703398, 0x000007c0, 0x00000000, 0x00000000, // ICON_EYE_ON + 0x00000000, 0x10002000, 0x04700fc0, 0x610e3218, 0x1c703098, 0x001007a0, 0x00000008, 0x00000000, // ICON_EYE_OFF + 0x00000000, 0x00007ffc, 0x40047ffc, 0x10102008, 0x04400820, 0x02800280, 0x02800280, 0x00000100, // ICON_FILTER_TOP + 0x00000000, 0x40027ffe, 0x10082004, 0x04200810, 0x02400240, 0x02400240, 0x01400240, 0x000000c0, // ICON_FILTER + 0x00800000, 0x00800080, 0x00000080, 0x3c9e0000, 0x00000000, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_POINT + 0x00800000, 0x00800080, 0x00800080, 0x3f7e01c0, 0x008001c0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_SMALL + 0x00800000, 0x00800080, 0x03e00080, 0x3e3e0220, 0x03e00220, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_BIG + 0x01000000, 0x04400280, 0x01000100, 0x43842008, 0x43849ab2, 0x01002008, 0x04400100, 0x01000280, // ICON_TARGET_MOVE + 0x01000000, 0x04400280, 0x01000100, 0x41042108, 0x41049ff2, 0x01002108, 0x04400100, 0x01000280, // ICON_CURSOR_MOVE + 0x781e0000, 0x500a4002, 0x04204812, 0x00000240, 0x02400000, 0x48120420, 0x4002500a, 0x0000781e, // ICON_CURSOR_SCALE + 0x00000000, 0x20003c00, 0x24002800, 0x01000200, 0x00400080, 0x00140024, 0x003c0004, 0x00000000, // ICON_CURSOR_SCALE_RIGHT + 0x00000000, 0x0004003c, 0x00240014, 0x00800040, 0x02000100, 0x28002400, 0x3c002000, 0x00000000, // ICON_CURSOR_SCALE_LEFT + 0x00000000, 0x00100020, 0x10101fc8, 0x10001020, 0x10001000, 0x10001000, 0x00001fc0, 0x00000000, // ICON_UNDO + 0x00000000, 0x08000400, 0x080813f8, 0x00080408, 0x00080008, 0x00080008, 0x000003f8, 0x00000000, // ICON_REDO + 0x00000000, 0x3ffc0000, 0x20042004, 0x20002000, 0x20402000, 0x3f902020, 0x00400020, 0x00000000, // ICON_REREDO + 0x00000000, 0x3ffc0000, 0x20042004, 0x27fc2004, 0x20202000, 0x3fc82010, 0x00200010, 0x00000000, // ICON_MUTATE + 0x00000000, 0x0ff00000, 0x10081818, 0x11801008, 0x10001180, 0x18101020, 0x00100fc8, 0x00000020, // ICON_ROTATE + 0x00000000, 0x04000200, 0x240429fc, 0x20042204, 0x20442004, 0x3f942024, 0x00400020, 0x00000000, // ICON_REPEAT + 0x00000000, 0x20001000, 0x22104c0e, 0x00801120, 0x11200040, 0x4c0e2210, 0x10002000, 0x00000000, // ICON_SHUFFLE + 0x7ffe0000, 0x50024002, 0x44024802, 0x41024202, 0x40424082, 0x40124022, 0x4002400a, 0x00007ffe, // ICON_EMPTYBOX + 0x00800000, 0x03e00080, 0x08080490, 0x3c9e0808, 0x08080808, 0x03e00490, 0x00800080, 0x00000000, // ICON_TARGET + 0x00800000, 0x00800080, 0x00800080, 0x3ffe01c0, 0x008001c0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_SMALL_FILL + 0x00800000, 0x00800080, 0x03e00080, 0x3ffe03e0, 0x03e003e0, 0x00800080, 0x00800080, 0x00000000, // ICON_TARGET_BIG_FILL + 0x01000000, 0x07c00380, 0x01000100, 0x638c2008, 0x638cfbbe, 0x01002008, 0x07c00100, 0x01000380, // ICON_TARGET_MOVE_FILL + 0x01000000, 0x07c00380, 0x01000100, 0x610c2108, 0x610cfffe, 0x01002108, 0x07c00100, 0x01000380, // ICON_CURSOR_MOVE_FILL + 0x781e0000, 0x6006700e, 0x04204812, 0x00000240, 0x02400000, 0x48120420, 0x700e6006, 0x0000781e, // ICON_CURSOR_SCALE_FILL + 0x00000000, 0x38003c00, 0x24003000, 0x01000200, 0x00400080, 0x000c0024, 0x003c001c, 0x00000000, // ICON_CURSOR_SCALE_RIGHT_FILL + 0x00000000, 0x001c003c, 0x0024000c, 0x00800040, 0x02000100, 0x30002400, 0x3c003800, 0x00000000, // ICON_CURSOR_SCALE_LEFT_FILL + 0x00000000, 0x00300020, 0x10301ff8, 0x10001020, 0x10001000, 0x10001000, 0x00001fc0, 0x00000000, // ICON_UNDO_FILL + 0x00000000, 0x0c000400, 0x0c081ff8, 0x00080408, 0x00080008, 0x00080008, 0x000003f8, 0x00000000, // ICON_REDO_FILL + 0x00000000, 0x3ffc0000, 0x20042004, 0x20002000, 0x20402000, 0x3ff02060, 0x00400060, 0x00000000, // ICON_REREDO_FILL + 0x00000000, 0x3ffc0000, 0x20042004, 0x27fc2004, 0x20202000, 0x3ff82030, 0x00200030, 0x00000000, // ICON_MUTATE_FILL + 0x00000000, 0x0ff00000, 0x10081818, 0x11801008, 0x10001180, 0x18301020, 0x00300ff8, 0x00000020, // ICON_ROTATE_FILL + 0x00000000, 0x06000200, 0x26042ffc, 0x20042204, 0x20442004, 0x3ff42064, 0x00400060, 0x00000000, // ICON_REPEAT_FILL + 0x00000000, 0x30001000, 0x32107c0e, 0x00801120, 0x11200040, 0x7c0e3210, 0x10003000, 0x00000000, // ICON_SHUFFLE_FILL + 0x00000000, 0x30043ffc, 0x24042804, 0x21042204, 0x20442084, 0x20142024, 0x3ffc200c, 0x00000000, // ICON_EMPTYBOX_SMALL + 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX + 0x00000000, 0x23c43ffc, 0x23c423c4, 0x200423c4, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP + 0x00000000, 0x3e043ffc, 0x3e043e04, 0x20043e04, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP_RIGHT + 0x00000000, 0x20043ffc, 0x20042004, 0x3e043e04, 0x3e043e04, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_RIGHT + 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x3e042004, 0x3e043e04, 0x3ffc3e04, 0x00000000, // ICON_BOX_BOTTOM_RIGHT + 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x23c42004, 0x23c423c4, 0x3ffc23c4, 0x00000000, // ICON_BOX_BOTTOM + 0x00000000, 0x20043ffc, 0x20042004, 0x20042004, 0x207c2004, 0x207c207c, 0x3ffc207c, 0x00000000, // ICON_BOX_BOTTOM_LEFT + 0x00000000, 0x20043ffc, 0x20042004, 0x207c207c, 0x207c207c, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_LEFT + 0x00000000, 0x207c3ffc, 0x207c207c, 0x2004207c, 0x20042004, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_TOP_LEFT + 0x00000000, 0x20043ffc, 0x20042004, 0x23c423c4, 0x23c423c4, 0x20042004, 0x3ffc2004, 0x00000000, // ICON_BOX_CENTER + 0x7ffe0000, 0x40024002, 0x47e24182, 0x4ff247e2, 0x47e24ff2, 0x418247e2, 0x40024002, 0x00007ffe, // ICON_BOX_CIRCLE_MASK + 0x7fff0000, 0x40014001, 0x40014001, 0x49555ddd, 0x4945495d, 0x400149c5, 0x40014001, 0x00007fff, // ICON_POT + 0x7ffe0000, 0x53327332, 0x44ce4cce, 0x41324332, 0x404e40ce, 0x48125432, 0x4006540e, 0x00007ffe, // ICON_ALPHA_MULTIPLY + 0x7ffe0000, 0x53327332, 0x44ce4cce, 0x41324332, 0x5c4e40ce, 0x44124432, 0x40065c0e, 0x00007ffe, // ICON_ALPHA_CLEAR + 0x7ffe0000, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x42fe417e, 0x00007ffe, // ICON_DITHERING + 0x07fe0000, 0x1ffa0002, 0x7fea000a, 0x402a402a, 0x5b2a512a, 0x5128552a, 0x40205128, 0x00007fe0, // ICON_MIPMAPS + 0x00000000, 0x1ff80000, 0x12481248, 0x12481ff8, 0x1ff81248, 0x12481248, 0x00001ff8, 0x00000000, // ICON_BOX_GRID + 0x12480000, 0x7ffe1248, 0x12481248, 0x12487ffe, 0x7ffe1248, 0x12481248, 0x12487ffe, 0x00001248, // ICON_GRID + 0x00000000, 0x1c380000, 0x1c3817e8, 0x08100810, 0x08100810, 0x17e81c38, 0x00001c38, 0x00000000, // ICON_BOX_CORNERS_SMALL + 0x700e0000, 0x700e5ffa, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x5ffa700e, 0x0000700e, // ICON_BOX_CORNERS_BIG + 0x3f7e0000, 0x21422142, 0x21422142, 0x00003f7e, 0x21423f7e, 0x21422142, 0x3f7e2142, 0x00000000, // ICON_FOUR_BOXES + 0x00000000, 0x3bb80000, 0x3bb83bb8, 0x3bb80000, 0x3bb83bb8, 0x3bb80000, 0x3bb83bb8, 0x00000000, // ICON_GRID_FILL + 0x7ffe0000, 0x7ffe7ffe, 0x77fe7000, 0x77fe77fe, 0x777e7700, 0x777e777e, 0x777e777e, 0x0000777e, // ICON_BOX_MULTISIZE + 0x781e0000, 0x40024002, 0x00004002, 0x01800000, 0x00000180, 0x40020000, 0x40024002, 0x0000781e, // ICON_ZOOM_SMALL + 0x781e0000, 0x40024002, 0x00004002, 0x03c003c0, 0x03c003c0, 0x40020000, 0x40024002, 0x0000781e, // ICON_ZOOM_MEDIUM + 0x781e0000, 0x40024002, 0x07e04002, 0x07e007e0, 0x07e007e0, 0x400207e0, 0x40024002, 0x0000781e, // ICON_ZOOM_BIG + 0x781e0000, 0x5ffa4002, 0x1ff85ffa, 0x1ff81ff8, 0x1ff81ff8, 0x5ffa1ff8, 0x40025ffa, 0x0000781e, // ICON_ZOOM_ALL + 0x00000000, 0x2004381c, 0x00002004, 0x00000000, 0x00000000, 0x20040000, 0x381c2004, 0x00000000, // ICON_ZOOM_CENTER + 0x00000000, 0x1db80000, 0x10081008, 0x10080000, 0x00001008, 0x10081008, 0x00001db8, 0x00000000, // ICON_BOX_DOTS_SMALL + 0x35560000, 0x00002002, 0x00002002, 0x00002002, 0x00002002, 0x00002002, 0x35562002, 0x00000000, // ICON_BOX_DOTS_BIG + 0x7ffe0000, 0x40024002, 0x48124ff2, 0x49924812, 0x48124992, 0x4ff24812, 0x40024002, 0x00007ffe, // ICON_BOX_CONCENTRIC + 0x00000000, 0x10841ffc, 0x10841084, 0x1ffc1084, 0x10841084, 0x10841084, 0x00001ffc, 0x00000000, // ICON_BOX_GRID_BIG + 0x00000000, 0x00000000, 0x10000000, 0x04000800, 0x01040200, 0x00500088, 0x00000020, 0x00000000, // ICON_OK_TICK + 0x00000000, 0x10080000, 0x04200810, 0x01800240, 0x02400180, 0x08100420, 0x00001008, 0x00000000, // ICON_CROSS + 0x00000000, 0x02000000, 0x00800100, 0x00200040, 0x00200010, 0x00800040, 0x02000100, 0x00000000, // ICON_ARROW_LEFT + 0x00000000, 0x00400000, 0x01000080, 0x04000200, 0x04000800, 0x01000200, 0x00400080, 0x00000000, // ICON_ARROW_RIGHT + 0x00000000, 0x00000000, 0x00000000, 0x08081004, 0x02200410, 0x00800140, 0x00000000, 0x00000000, // ICON_ARROW_DOWN + 0x00000000, 0x00000000, 0x01400080, 0x04100220, 0x10040808, 0x00000000, 0x00000000, 0x00000000, // ICON_ARROW_UP + 0x00000000, 0x02000000, 0x03800300, 0x03e003c0, 0x03e003f0, 0x038003c0, 0x02000300, 0x00000000, // ICON_ARROW_LEFT_FILL + 0x00000000, 0x00400000, 0x01c000c0, 0x07c003c0, 0x07c00fc0, 0x01c003c0, 0x004000c0, 0x00000000, // ICON_ARROW_RIGHT_FILL + 0x00000000, 0x00000000, 0x00000000, 0x0ff81ffc, 0x03e007f0, 0x008001c0, 0x00000000, 0x00000000, // ICON_ARROW_DOWN_FILL + 0x00000000, 0x00000000, 0x01c00080, 0x07f003e0, 0x1ffc0ff8, 0x00000000, 0x00000000, 0x00000000, // ICON_ARROW_UP_FILL + 0x00000000, 0x18a008c0, 0x32881290, 0x24822686, 0x26862482, 0x12903288, 0x08c018a0, 0x00000000, // ICON_AUDIO + 0x00000000, 0x04800780, 0x004000c0, 0x662000f0, 0x08103c30, 0x130a0e18, 0x0000318e, 0x00000000, // ICON_FX + 0x00000000, 0x00800000, 0x08880888, 0x2aaa0a8a, 0x0a8a2aaa, 0x08880888, 0x00000080, 0x00000000, // ICON_WAVE + 0x00000000, 0x00600000, 0x01080090, 0x02040108, 0x42044204, 0x24022402, 0x00001800, 0x00000000, // ICON_WAVE_SINUS + 0x00000000, 0x07f80000, 0x04080408, 0x04080408, 0x04080408, 0x7c0e0408, 0x00000000, 0x00000000, // ICON_WAVE_SQUARE + 0x00000000, 0x00000000, 0x00a00040, 0x22084110, 0x08021404, 0x00000000, 0x00000000, 0x00000000, // ICON_WAVE_TRIANGULAR + 0x00000000, 0x00000000, 0x04200000, 0x01800240, 0x02400180, 0x00000420, 0x00000000, 0x00000000, // ICON_CROSS_SMALL + 0x00000000, 0x18380000, 0x12281428, 0x10a81128, 0x112810a8, 0x14281228, 0x00001838, 0x00000000, // ICON_PLAYER_PREVIOUS + 0x00000000, 0x18000000, 0x11801600, 0x10181060, 0x10601018, 0x16001180, 0x00001800, 0x00000000, // ICON_PLAYER_PLAY_BACK + 0x00000000, 0x00180000, 0x01880068, 0x18080608, 0x06081808, 0x00680188, 0x00000018, 0x00000000, // ICON_PLAYER_PLAY + 0x00000000, 0x1e780000, 0x12481248, 0x12481248, 0x12481248, 0x12481248, 0x00001e78, 0x00000000, // ICON_PLAYER_PAUSE + 0x00000000, 0x1ff80000, 0x10081008, 0x10081008, 0x10081008, 0x10081008, 0x00001ff8, 0x00000000, // ICON_PLAYER_STOP + 0x00000000, 0x1c180000, 0x14481428, 0x15081488, 0x14881508, 0x14281448, 0x00001c18, 0x00000000, // ICON_PLAYER_NEXT + 0x00000000, 0x03c00000, 0x08100420, 0x10081008, 0x10081008, 0x04200810, 0x000003c0, 0x00000000, // ICON_PLAYER_RECORD + 0x00000000, 0x0c3007e0, 0x13c81818, 0x14281668, 0x14281428, 0x1c381c38, 0x08102244, 0x00000000, // ICON_MAGNET + 0x07c00000, 0x08200820, 0x3ff80820, 0x23882008, 0x21082388, 0x20082108, 0x1ff02008, 0x00000000, // ICON_LOCK_CLOSE + 0x07c00000, 0x08000800, 0x3ff80800, 0x23882008, 0x21082388, 0x20082108, 0x1ff02008, 0x00000000, // ICON_LOCK_OPEN + 0x01c00000, 0x0c180770, 0x3086188c, 0x60832082, 0x60034781, 0x30062002, 0x0c18180c, 0x01c00770, // ICON_CLOCK + 0x0a200000, 0x1b201b20, 0x04200e20, 0x04200420, 0x04700420, 0x0e700e70, 0x0e700e70, 0x04200e70, // ICON_TOOLS + 0x01800000, 0x3bdc318c, 0x0ff01ff8, 0x7c3e1e78, 0x1e787c3e, 0x1ff80ff0, 0x318c3bdc, 0x00000180, // ICON_GEAR + 0x01800000, 0x3ffc318c, 0x1c381ff8, 0x781e1818, 0x1818781e, 0x1ff81c38, 0x318c3ffc, 0x00000180, // ICON_GEAR_BIG + 0x00000000, 0x08080ff8, 0x08081ffc, 0x0aa80aa8, 0x0aa80aa8, 0x0aa80aa8, 0x08080aa8, 0x00000ff8, // ICON_BIN + 0x00000000, 0x00000000, 0x20043ffc, 0x08043f84, 0x04040f84, 0x04040784, 0x000007fc, 0x00000000, // ICON_HAND_POINTER + 0x00000000, 0x24400400, 0x00001480, 0x6efe0e00, 0x00000e00, 0x24401480, 0x00000400, 0x00000000, // ICON_LASER + 0x00000000, 0x03c00000, 0x08300460, 0x11181118, 0x11181118, 0x04600830, 0x000003c0, 0x00000000, // ICON_COIN + 0x00000000, 0x10880080, 0x06c00810, 0x366c07e0, 0x07e00240, 0x00001768, 0x04200240, 0x00000000, // ICON_EXPLOSION + 0x00000000, 0x3d280000, 0x2528252c, 0x3d282528, 0x05280528, 0x05e80528, 0x00000000, 0x00000000, // ICON_1UP + 0x01800000, 0x03c003c0, 0x018003c0, 0x0ff007e0, 0x0bd00bd0, 0x0a500bd0, 0x02400240, 0x02400240, // ICON_PLAYER + 0x01800000, 0x03c003c0, 0x118013c0, 0x03c81ff8, 0x07c003c8, 0x04400440, 0x0c080478, 0x00000000, // ICON_PLAYER_JUMP + 0x3ff80000, 0x30183ff8, 0x30183018, 0x3ff83ff8, 0x03000300, 0x03c003c0, 0x03e00300, 0x000003e0, // ICON_KEY + 0x3ff80000, 0x3ff83ff8, 0x33983ff8, 0x3ff83398, 0x3ff83ff8, 0x00000540, 0x0fe00aa0, 0x00000fe0, // ICON_DEMON + 0x00000000, 0x0ff00000, 0x20041008, 0x25442004, 0x10082004, 0x06000bf0, 0x00000300, 0x00000000, // ICON_TEXT_POPUP + 0x00000000, 0x11440000, 0x07f00be8, 0x1c1c0e38, 0x1c1c0c18, 0x07f00e38, 0x11440be8, 0x00000000, // ICON_GEAR_EX + 0x00000000, 0x20080000, 0x0c601010, 0x07c00fe0, 0x07c007c0, 0x0c600fe0, 0x20081010, 0x00000000, // ICON_CRACK + 0x00000000, 0x20080000, 0x0c601010, 0x04400fe0, 0x04405554, 0x0c600fe0, 0x20081010, 0x00000000, // ICON_CRACK_POINTS + 0x00000000, 0x00800080, 0x01c001c0, 0x1ffc3ffe, 0x03e007f0, 0x07f003e0, 0x0c180770, 0x00000808, // ICON_STAR + 0x0ff00000, 0x08180810, 0x08100818, 0x0a100810, 0x08180810, 0x08100818, 0x08100810, 0x00001ff8, // ICON_DOOR + 0x0ff00000, 0x08100810, 0x08100810, 0x10100010, 0x4f902010, 0x10102010, 0x08100010, 0x00000ff0, // ICON_EXIT + 0x00040000, 0x001f000e, 0x0ef40004, 0x12f41284, 0x0ef41214, 0x10040004, 0x7ffc3004, 0x10003000, // ICON_MODE_2D + 0x78040000, 0x501f600e, 0x0ef44004, 0x12f41284, 0x0ef41284, 0x10140004, 0x7ffc300c, 0x10003000, // ICON_MODE_3D + 0x7fe00000, 0x50286030, 0x47fe4804, 0x44224402, 0x44224422, 0x241275e2, 0x0c06140a, 0x000007fe, // ICON_CUBE + 0x7fe00000, 0x5ff87ff0, 0x47fe4ffc, 0x44224402, 0x44224422, 0x241275e2, 0x0c06140a, 0x000007fe, // ICON_CUBE_FACE_TOP + 0x7fe00000, 0x50386030, 0x47c2483c, 0x443e443e, 0x443e443e, 0x241e75fe, 0x0c06140e, 0x000007fe, // ICON_CUBE_FACE_LEFT + 0x7fe00000, 0x50286030, 0x47fe4804, 0x47fe47fe, 0x47fe47fe, 0x27fe77fe, 0x0ffe17fe, 0x000007fe, // ICON_CUBE_FACE_FRONT + 0x7fe00000, 0x50286030, 0x47fe4804, 0x44224402, 0x44224422, 0x3bf27be2, 0x0bfe1bfa, 0x000007fe, // ICON_CUBE_FACE_BOTTOM + 0x7fe00000, 0x70286030, 0x7ffe7804, 0x7c227c02, 0x7c227c22, 0x3c127de2, 0x0c061c0a, 0x000007fe, // ICON_CUBE_FACE_RIGHT + 0x7fe00000, 0x6fe85ff0, 0x781e77e4, 0x7be27be2, 0x7be27be2, 0x24127be2, 0x0c06140a, 0x000007fe, // ICON_CUBE_FACE_BACK + 0x00000000, 0x2a0233fe, 0x22022602, 0x22022202, 0x2a022602, 0x00a033fe, 0x02080110, 0x00000000, // ICON_CAMERA + 0x00000000, 0x200c3ffc, 0x000c000c, 0x3ffc000c, 0x30003000, 0x30003000, 0x3ffc3004, 0x00000000, // ICON_SPECIAL + 0x00000000, 0x0022003e, 0x012201e2, 0x0100013e, 0x01000100, 0x79000100, 0x4f004900, 0x00007800, // ICON_LINK_NET + 0x00000000, 0x44007c00, 0x45004600, 0x00627cbe, 0x00620022, 0x45007cbe, 0x44004600, 0x00007c00, // ICON_LINK_BOXES + 0x00000000, 0x0044007c, 0x0010007c, 0x3f100010, 0x3f1021f0, 0x3f100010, 0x3f0021f0, 0x00000000, // ICON_LINK_MULTI + 0x00000000, 0x0044007c, 0x00440044, 0x0010007c, 0x00100010, 0x44107c10, 0x440047f0, 0x00007c00, // ICON_LINK + 0x00000000, 0x0044007c, 0x00440044, 0x0000007c, 0x00000010, 0x44007c10, 0x44004550, 0x00007c00, // ICON_LINK_BROKE + 0x02a00000, 0x22a43ffc, 0x20042004, 0x20042ff4, 0x20042ff4, 0x20042ff4, 0x20042004, 0x00003ffc, // ICON_TEXT_NOTES + 0x3ffc0000, 0x20042004, 0x245e27c4, 0x27c42444, 0x2004201e, 0x201e2004, 0x20042004, 0x00003ffc, // ICON_NOTEBOOK + 0x00000000, 0x07e00000, 0x04200420, 0x24243ffc, 0x24242424, 0x24242424, 0x3ffc2424, 0x00000000, // ICON_SUITCASE + 0x00000000, 0x0fe00000, 0x08200820, 0x40047ffc, 0x7ffc5554, 0x40045554, 0x7ffc4004, 0x00000000, // ICON_SUITCASE_ZIP + 0x00000000, 0x20043ffc, 0x3ffc2004, 0x13c81008, 0x100813c8, 0x10081008, 0x1ff81008, 0x00000000, // ICON_MAILBOX + 0x00000000, 0x40027ffe, 0x5ffa5ffa, 0x5ffa5ffa, 0x40025ffa, 0x03c07ffe, 0x1ff81ff8, 0x00000000, // ICON_MONITOR + 0x0ff00000, 0x6bfe7ffe, 0x7ffe7ffe, 0x68167ffe, 0x08106816, 0x08100810, 0x0ff00810, 0x00000000, // ICON_PRINTER + 0x3ff80000, 0xfffe2008, 0x870a8002, 0x904a888a, 0x904a904a, 0x870a888a, 0xfffe8002, 0x00000000, // ICON_PHOTO_CAMERA + 0x0fc00000, 0xfcfe0cd8, 0x8002fffe, 0x84428382, 0x84428442, 0x80028382, 0xfffe8002, 0x00000000, // ICON_PHOTO_CAMERA_FLASH + 0x00000000, 0x02400180, 0x08100420, 0x20041008, 0x23c42004, 0x22442244, 0x3ffc2244, 0x00000000, // ICON_HOUSE + 0x00000000, 0x1c700000, 0x3ff83ef8, 0x3ff83ff8, 0x0fe01ff0, 0x038007c0, 0x00000100, 0x00000000, // ICON_HEART + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x80000000, 0xe000c000, // ICON_CORNER + 0x00000000, 0x14001c00, 0x15c01400, 0x15401540, 0x155c1540, 0x15541554, 0x1ddc1554, 0x00000000, // ICON_VERTICAL_BARS + 0x00000000, 0x03000300, 0x1b001b00, 0x1b601b60, 0x1b6c1b60, 0x1b6c1b6c, 0x1b6c1b6c, 0x00000000, // ICON_VERTICAL_BARS_FILL + 0x00000000, 0x00000000, 0x403e7ffe, 0x7ffe403e, 0x7ffe0000, 0x43fe43fe, 0x00007ffe, 0x00000000, // ICON_LIFE_BARS + 0x7ffc0000, 0x43844004, 0x43844284, 0x43844004, 0x42844284, 0x42844284, 0x40044384, 0x00007ffc, // ICON_INFO + 0x40008000, 0x10002000, 0x04000800, 0x01000200, 0x00400080, 0x00100020, 0x00040008, 0x00010002, // ICON_CROSSLINE + 0x00000000, 0x1ff01ff0, 0x18301830, 0x1f001830, 0x03001f00, 0x00000300, 0x03000300, 0x00000000, // ICON_HELP + 0x3ff00000, 0x2abc3550, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x2aac3554, 0x00003ffc, // ICON_FILETYPE_ALPHA + 0x3ff00000, 0x201c2010, 0x22442184, 0x28142424, 0x29942814, 0x2ff42994, 0x20042004, 0x00003ffc, // ICON_FILETYPE_HOME + 0x07fe0000, 0x04020402, 0x7fe20402, 0x44224422, 0x44224422, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_LAYERS_VISIBLE + 0x07fe0000, 0x04020402, 0x7c020402, 0x44024402, 0x44024402, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_LAYERS + 0x00000000, 0x40027ffe, 0x7ffe4002, 0x40024002, 0x40024002, 0x40024002, 0x7ffe4002, 0x00000000, // ICON_WINDOW + 0x09100000, 0x09f00910, 0x09100910, 0x00000910, 0x24a2779e, 0x27a224a2, 0x709e20a2, 0x00000000, // ICON_HIDPI + 0x3ff00000, 0x201c2010, 0x2a842e84, 0x2e842a84, 0x2ba42004, 0x2aa42aa4, 0x20042ba4, 0x00003ffc, // ICON_FILETYPE_BINARY + 0x00000000, 0x00000000, 0x00120012, 0x4a5e4bd2, 0x485233d2, 0x00004bd2, 0x00000000, 0x00000000, // ICON_HEX + 0x01800000, 0x381c0660, 0x23c42004, 0x23c42044, 0x13c82204, 0x08101008, 0x02400420, 0x00000180, // ICON_SHIELD + 0x007e0000, 0x20023fc2, 0x40227fe2, 0x400a403a, 0x400a400a, 0x400a400a, 0x4008400e, 0x00007ff8, // ICON_FILE_NEW + 0x00000000, 0x0042007e, 0x40027fc2, 0x44024002, 0x5f024402, 0x44024402, 0x7ffe4002, 0x00000000, // ICON_FOLDER_ADD + 0x44220000, 0x12482244, 0xf3cf0000, 0x14280420, 0x48122424, 0x08100810, 0x1ff81008, 0x03c00420, // ICON_ALARM + 0x0aa00000, 0x1ff80aa0, 0x1068700e, 0x1008706e, 0x1008700e, 0x1008700e, 0x0aa01ff8, 0x00000aa0, // ICON_CPU + 0x07e00000, 0x04201db8, 0x04a01c38, 0x04a01d38, 0x04a01d38, 0x04a01d38, 0x04201d38, 0x000007e0, // ICON_ROM + 0x00000000, 0x03c00000, 0x3c382ff0, 0x3c04380c, 0x01800000, 0x03c003c0, 0x00000180, 0x00000000, // ICON_STEP_OVER + 0x01800000, 0x01800180, 0x01800180, 0x03c007e0, 0x00000180, 0x01800000, 0x03c003c0, 0x00000180, // ICON_STEP_INTO + 0x01800000, 0x07e003c0, 0x01800180, 0x01800180, 0x00000180, 0x01800000, 0x03c003c0, 0x00000180, // ICON_STEP_OUT + 0x00000000, 0x0ff003c0, 0x181c1c34, 0x303c301c, 0x30003000, 0x1c301800, 0x03c00ff0, 0x00000000, // ICON_RESTART + 0x00000000, 0x00000000, 0x07e003c0, 0x0ff00ff0, 0x0ff00ff0, 0x03c007e0, 0x00000000, 0x00000000, // ICON_BREAKPOINT_ON + 0x00000000, 0x00000000, 0x042003c0, 0x08100810, 0x08100810, 0x03c00420, 0x00000000, 0x00000000, // ICON_BREAKPOINT_OFF + 0x00000000, 0x00000000, 0x1ff81ff8, 0x1ff80000, 0x00001ff8, 0x1ff81ff8, 0x00000000, 0x00000000, // ICON_BURGER_MENU + 0x00000000, 0x00000000, 0x00880070, 0x0c880088, 0x1e8810f8, 0x3e881288, 0x00000000, 0x00000000, // ICON_CASE_SENSITIVE + 0x00000000, 0x02000000, 0x07000a80, 0x07001fc0, 0x02000a80, 0x00300030, 0x00000000, 0x00000000, // ICON_REG_EXP + 0x00000000, 0x0042007e, 0x40027fc2, 0x40024002, 0x40024002, 0x40024002, 0x7ffe4002, 0x00000000, // ICON_FOLDER + 0x3ff00000, 0x201c2010, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x20042004, 0x00003ffc, // ICON_FILE + 0x1ff00000, 0x20082008, 0x17d02fe8, 0x05400ba0, 0x09200540, 0x23881010, 0x2fe827c8, 0x00001ff0, // ICON_SAND_TIMER + 0x01800000, 0x02400240, 0x05a00420, 0x09900990, 0x11881188, 0x21842004, 0x40024182, 0x00003ffc, // ICON_WARNING + 0x7ffe0000, 0x4ff24002, 0x4c324ff2, 0x4f824c02, 0x41824f82, 0x41824002, 0x40024182, 0x00007ffe, // ICON_HELP_BOX + 0x7ffe0000, 0x41824002, 0x40024182, 0x41824182, 0x41824182, 0x41824182, 0x40024182, 0x00007ffe, // ICON_INFO_BOX + 0x01800000, 0x04200240, 0x10080810, 0x7bde2004, 0x0a500a50, 0x08500bd0, 0x08100850, 0x00000ff0, // ICON_PRIORITY + 0x01800000, 0x18180660, 0x80016006, 0x98196006, 0x99996666, 0x19986666, 0x01800660, 0x00000000, // ICON_LAYERS_ISO + 0x07fe0000, 0x1c020402, 0x74021402, 0x54025402, 0x54025402, 0x500857fe, 0x40205ff8, 0x00007fe0, // ICON_LAYERS2 + 0x0ffe0000, 0x3ffa0802, 0x7fea200a, 0x402a402a, 0x422a422a, 0x422e422a, 0x40384e28, 0x00007fe0, // ICON_MLAYERS + 0x0ffe0000, 0x3ffa0802, 0x7fea200a, 0x402a402a, 0x5b2a512a, 0x512e552a, 0x40385128, 0x00007fe0, // ICON_MAPS + 0x04200000, 0x1cf00c60, 0x11f019f0, 0x0f3807b8, 0x1e3c0f3c, 0x1c1c1e1c, 0x1e3c1c1c, 0x00000f70, // ICON_HOT + 0x00000000, 0x20803f00, 0x2a202e40, 0x20082e10, 0x08021004, 0x02040402, 0x00900108, 0x00000060, // ICON_LABEL + 0x00000000, 0x042007e0, 0x47e27c3e, 0x4ffa4002, 0x47fa4002, 0x4ffa4002, 0x7ffe4002, 0x00000000, // ICON_NAME_ID + 0x7fe00000, 0x402e4020, 0x43ce5e0a, 0x40504078, 0x438e4078, 0x402e5e0a, 0x7fe04020, 0x00000000, // ICON_SLICING + 0x00000000, 0x40027ffe, 0x47c24002, 0x55425d42, 0x55725542, 0x50125552, 0x10105016, 0x00001ff0, // ICON_MANUAL_CONTROL + 0x7ffe0000, 0x43c24002, 0x48124422, 0x500a500a, 0x500a500a, 0x44224812, 0x400243c2, 0x00007ffe, // ICON_COLLISION + 0x03c00000, 0x10080c30, 0x21842184, 0x4ff24182, 0x41824ff2, 0x21842184, 0x0c301008, 0x000003c0, // ICON_CIRCLE_ADD + 0x03c00000, 0x1ff80ff0, 0x3e7c3e7c, 0x700e7e7e, 0x7e7e700e, 0x3e7c3e7c, 0x0ff01ff8, 0x000003c0, // ICON_CIRCLE_ADD_FILL + 0x03c00000, 0x10080c30, 0x21842184, 0x41824182, 0x40024182, 0x21842184, 0x0c301008, 0x000003c0, // ICON_CIRCLE_WARNING + 0x03c00000, 0x1ff80ff0, 0x3e7c3e7c, 0x7e7e7e7e, 0x7ffe7e7e, 0x3e7c3e7c, 0x0ff01ff8, 0x000003c0, // ICON_CIRCLE_WARNING_FILL + 0x00000000, 0x10041ffc, 0x10841004, 0x13e41084, 0x10841084, 0x10041004, 0x00001ffc, 0x00000000, // ICON_BOX_MORE + 0x00000000, 0x1ffc1ffc, 0x1f7c1ffc, 0x1c1c1f7c, 0x1f7c1f7c, 0x1ffc1ffc, 0x00001ffc, 0x00000000, // ICON_BOX_MORE_FILL + 0x00000000, 0x1ffc1ffc, 0x1ffc1ffc, 0x1c1c1ffc, 0x1ffc1ffc, 0x1ffc1ffc, 0x00001ffc, 0x00000000, // ICON_BOX_MINUS + 0x00000000, 0x10041ffc, 0x10041004, 0x13e41004, 0x10041004, 0x10041004, 0x00001ffc, 0x00000000, // ICON_BOX_MINUS_FILL + 0x07fe0000, 0x055606aa, 0x7ff606aa, 0x55766eba, 0x55766eaa, 0x55606ffe, 0x55606aa0, 0x00007fe0, // ICON_UNION + 0x07fe0000, 0x04020402, 0x7fe20402, 0x456246a2, 0x456246a2, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_INTERSECTION + 0x07fe0000, 0x055606aa, 0x7ff606aa, 0x4436442a, 0x4436442a, 0x402047fe, 0x40204020, 0x00007fe0, // ICON_DIFFERENCE + 0x03c00000, 0x10080c30, 0x20042004, 0x60064002, 0x47e2581a, 0x20042004, 0x0c301008, 0x000003c0, // ICON_SPHERE + 0x03e00000, 0x08080410, 0x0c180808, 0x08080be8, 0x08080808, 0x08080808, 0x04100808, 0x000003e0, // ICON_CYLINDER + 0x00800000, 0x01400140, 0x02200220, 0x04100410, 0x08080808, 0x1c1c13e4, 0x08081004, 0x000007f0, // ICON_CONE + 0x00000000, 0x07e00000, 0x20841918, 0x40824082, 0x40824082, 0x19182084, 0x000007e0, 0x00000000, // ICON_ELLIPSOID + 0x00000000, 0x00000000, 0x20041ff8, 0x40024002, 0x40024002, 0x1ff82004, 0x00000000, 0x00000000, // ICON_CAPSULE + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_250 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_251 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_252 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_253 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_254 + 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, // ICON_255 +}; + +// NOTE: A pointer to current icons array should be defined +static unsigned int *guiIconsPtr = guiIcons; + +#endif // !RAYGUI_NO_ICONS && !RAYGUI_CUSTOM_ICONS + +#ifndef RAYGUI_ICON_SIZE + #define RAYGUI_ICON_SIZE 0 +#endif + +// WARNING: Those values define the total size of the style data array, +// if changed, previous saved styles could become incompatible +#define RAYGUI_MAX_CONTROLS 16 // Maximum number of controls +#define RAYGUI_MAX_PROPS_BASE 16 // Maximum number of base properties +#define RAYGUI_MAX_PROPS_EXTENDED 8 // Maximum number of extended properties + +//---------------------------------------------------------------------------------- +// Module Types and Structures Definition +//---------------------------------------------------------------------------------- +// Gui control property style color element +typedef enum { BORDER = 0, BASE, TEXT, OTHER } GuiPropertyElement; + +//---------------------------------------------------------------------------------- +// Global Variables Definition +//---------------------------------------------------------------------------------- +static GuiState guiState = STATE_NORMAL; // Gui global state, if !STATE_NORMAL, forces defined state + +static Font guiFont = { 0 }; // Gui current font (WARNING: highly coupled to raylib) +static bool guiLocked = false; // Gui lock state (no inputs processed) +static float guiAlpha = 1.0f; // Gui controls transparency + +static unsigned int guiIconScale = 1; // Gui icon default scale (if icons enabled) + +static bool guiTooltip = false; // Tooltip enabled/disabled +static const char *guiTooltipPtr = NULL; // Tooltip string pointer (string provided by user) + +static bool guiControlExclusiveMode = false; // Gui control exclusive mode (no inputs processed except current control) +static Rectangle guiControlExclusiveRec = { 0 }; // Gui control exclusive bounds rectangle, used as an unique identifier + +static int textBoxCursorIndex = 0; // Cursor index, shared by all GuiTextBox*() +//static int blinkCursorFrameCounter = 0; // Frame counter for cursor blinking +static int autoCursorCounter = 0; // Frame counter for automatic repeated cursor movement on key-down (cooldown and delay) + +//---------------------------------------------------------------------------------- +// Style data array for all gui style properties (allocated on data segment by default) +// +// NOTE 1: First set of BASE properties are generic to all controls but could be individually +// overwritten per control, first set of EXTENDED properties are generic to all controls and +// can not be overwritten individually but custom EXTENDED properties can be used by control +// +// NOTE 2: A new style set could be loaded over this array using GuiLoadStyle(), +// but default gui style could always be recovered with GuiLoadStyleDefault() +// +// guiStyle size is by default: 16*(16 + 8) = 384*4 = 1536 bytes = 1.5 KB +//---------------------------------------------------------------------------------- +static unsigned int guiStyle[RAYGUI_MAX_CONTROLS*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED)] = { 0 }; + +static bool guiStyleLoaded = false; // Style loaded flag for lazy style initialization + +//---------------------------------------------------------------------------------- +// Standalone Mode Functions Declaration +// +// NOTE: raygui depend on some raylib input and drawing functions +// To use raygui as standalone library, below functions must be defined by the user +//---------------------------------------------------------------------------------- +#if defined(RAYGUI_STANDALONE) + +#define KEY_RIGHT 262 +#define KEY_LEFT 263 +#define KEY_DOWN 264 +#define KEY_UP 265 +#define KEY_BACKSPACE 259 +#define KEY_ENTER 257 + +#define MOUSE_LEFT_BUTTON 0 + +// Input required functions +//------------------------------------------------------------------------------- +static Vector2 GetMousePosition(void); +static float GetMouseWheelMove(void); +static bool IsMouseButtonDown(int button); +static bool IsMouseButtonPressed(int button); +static bool IsMouseButtonReleased(int button); + +static bool IsKeyDown(int key); +static bool IsKeyPressed(int key); +static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() +//------------------------------------------------------------------------------- + +// Drawing required functions +//------------------------------------------------------------------------------- +static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() +static void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() +//------------------------------------------------------------------------------- + +// Text required functions +//------------------------------------------------------------------------------- +static Font GetFontDefault(void); // -- GuiLoadStyleDefault() +static Font LoadFontEx(const char *fileName, int fontSize, int *codepoints, int codepointCount); // -- GuiLoadStyle(), load font + +static Texture2D LoadTextureFromImage(Image image); // -- GuiLoadStyle(), required to load texture from embedded font atlas image +static void SetShapesTexture(Texture2D tex, Rectangle rec); // -- GuiLoadStyle(), required to set shapes rec to font white rec (optimization) + +static char *LoadFileText(const char *fileName); // -- GuiLoadStyle(), required to load charset data +static void UnloadFileText(char *text); // -- GuiLoadStyle(), required to unload charset data + +static const char *GetDirectoryPath(const char *filePath); // -- GuiLoadStyle(), required to find charset/font file from text .rgs + +static int *LoadCodepoints(const char *text, int *count); // -- GuiLoadStyle(), required to load required font codepoints list +static void UnloadCodepoints(int *codepoints); // -- GuiLoadStyle(), required to unload codepoints list + +static unsigned char *DecompressData(const unsigned char *compData, int compDataSize, int *dataSize); // -- GuiLoadStyle() +//------------------------------------------------------------------------------- + +// raylib functions already implemented in raygui +//------------------------------------------------------------------------------- +static Color GetColor(int hexValue); // Returns a Color struct from hexadecimal value +static int ColorToInt(Color color); // Returns hexadecimal value for a Color +static bool CheckCollisionPointRec(Vector2 point, Rectangle rec); // Check if point is inside rectangle +static const char *TextFormat(const char *text, ...); // Formatting of text with variables to 'embed' +static const char **TextSplit(const char *text, char delimiter, int *count); // Split text into multiple strings +static int TextToInteger(const char *text); // Get integer value from text +static float TextToFloat(const char *text); // Get float value from text + +static int GetCodepointNext(const char *text, int *codepointSize); // Get next codepoint in a UTF-8 encoded text +static const char *CodepointToUTF8(int codepoint, int *byteSize); // Encode codepoint into UTF-8 text (char array size returned as parameter) + +static void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2); // Draw rectangle vertical gradient +//------------------------------------------------------------------------------- + +#endif // RAYGUI_STANDALONE + +//---------------------------------------------------------------------------------- +// Module Internal Functions Declaration +//---------------------------------------------------------------------------------- +static void GuiLoadStyleFromMemory(const unsigned char *fileData, int dataSize); // Load style from memory (binary only) + +static Rectangle GetTextBounds(int control, Rectangle bounds); // Get text bounds considering control bounds +static const char *GetTextIcon(const char *text, int *iconId); // Get text icon if provided and move text cursor + +static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, Color tint); // Gui draw text using default font +static void GuiDrawRectangle(Rectangle rec, int borderWidth, Color borderColor, Color color); // Gui draw rectangle using default raygui style + +static const char **GuiTextSplit(const char *text, char delimiter, int *count, int *textRow); // Split controls text into multiple strings +static Vector3 ConvertHSVtoRGB(Vector3 hsv); // Convert color data from HSV to RGB +static Vector3 ConvertRGBtoHSV(Vector3 rgb); // Convert color data from RGB to HSV + +static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue); // Scroll bar control, used by GuiScrollPanel() +static void GuiTooltip(Rectangle controlRec); // Draw tooltip using control rec position + +static Color GuiFade(Color color, float alpha); // Fade color by an alpha factor + +//---------------------------------------------------------------------------------- +// Gui Setup Functions Definition +//---------------------------------------------------------------------------------- +// Enable gui global state +// NOTE: Checking for STATE_DISABLED to avoid messing custom global state setups +void GuiEnable(void) { if (guiState == STATE_DISABLED) guiState = STATE_NORMAL; } + +// Disable gui global state +// NOTE: Checking for STATE_NORMAL to avoid messing custom global state setups +void GuiDisable(void) { if (guiState == STATE_NORMAL) guiState = STATE_DISABLED; } + +// Lock gui global state +void GuiLock(void) { guiLocked = true; } + +// Unlock gui global state +void GuiUnlock(void) { guiLocked = false; } + +// Check if gui is locked (global state) +bool GuiIsLocked(void) { return guiLocked; } + +// Set gui controls alpha global state +void GuiSetAlpha(float alpha) +{ + if (alpha < 0.0f) alpha = 0.0f; + else if (alpha > 1.0f) alpha = 1.0f; + + guiAlpha = alpha; +} + +// Set gui state (global state) +void GuiSetState(int state) { guiState = (GuiState)state; } + +// Get gui state (global state) +int GuiGetState(void) { return guiState; } + +// Set custom gui font +// NOTE: Font loading/unloading is external to raygui +void GuiSetFont(Font font) +{ + if (font.texture.id > 0) + { + // NOTE: If a font is tried to be set but default style has not been lazily loaded first, + // it will be overwritten, so default style loading needs to be forced first + if (!guiStyleLoaded) GuiLoadStyleDefault(); + + guiFont = font; + } +} + +// Get custom gui font +Font GuiGetFont(void) +{ + return guiFont; +} + +// Set control style property value +void GuiSetStyle(int control, int property, int value) +{ + if (!guiStyleLoaded) GuiLoadStyleDefault(); + guiStyle[control*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property] = value; + + // Default properties are propagated to all controls + if ((control == 0) && (property < RAYGUI_MAX_PROPS_BASE)) + { + for (int i = 1; i < RAYGUI_MAX_CONTROLS; i++) guiStyle[i*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property] = value; + } +} + +// Get control style property value +int GuiGetStyle(int control, int property) +{ + if (!guiStyleLoaded) GuiLoadStyleDefault(); + return guiStyle[control*(RAYGUI_MAX_PROPS_BASE + RAYGUI_MAX_PROPS_EXTENDED) + property]; +} + +//---------------------------------------------------------------------------------- +// Gui Controls Functions Definition +//---------------------------------------------------------------------------------- + +// Window Box control +int GuiWindowBox(Rectangle bounds, const char *title) +{ + // Window title bar height (including borders) + // NOTE: This define is also used by GuiMessageBox() and GuiTextInputBox() + #if !defined(RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT) + #define RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT 24 + #endif + + #if !defined(RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT) + #define RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT 18 + #endif + + int result = 0; + //GuiState state = guiState; + + int statusBarHeight = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT; + int statusBorderWidth = GuiGetStyle(STATUSBAR, BORDER_WIDTH); + + Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)statusBarHeight }; + if (bounds.height < statusBarHeight*2.0f) bounds.height = statusBarHeight*2.0f; + + const float vPadding = statusBarHeight/2.0f - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT/2.0f; + Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - (float)statusBorderWidth, bounds.width, bounds.height - (float)statusBarHeight + (float)statusBorderWidth }; + Rectangle closeButtonRec = { statusBar.x + statusBar.width - (float)statusBorderWidth - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, + statusBar.y + vPadding, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT }; + + // Update control + //-------------------------------------------------------------------- + // NOTE: Logic is directly managed by button + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiPanel(windowPanel, NULL); // Draw window base + GuiStatusBar(statusBar, title); // Draw window header as status bar + + // Draw window close button + int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); + int tempTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); + GuiSetStyle(BUTTON, BORDER_WIDTH, 1); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); +#if defined(RAYGUI_NO_ICONS) + result = GuiButton(closeButtonRec, "x"); +#else + result = GuiButton(closeButtonRec, GuiIconText(ICON_CROSS_SMALL, NULL)); +#endif + GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlignment); + //-------------------------------------------------------------------- + + return result; // Window close button clicked: result = 1 +} + +// Group Box control with text name +int GuiGroupBox(Rectangle bounds, const char *text) +{ + #if !defined(RAYGUI_GROUPBOX_LINE_THICK) + #define RAYGUI_GROUPBOX_LINE_THICK 1 + #endif + + int result = 0; + GuiState state = guiState; + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, RAYGUI_GROUPBOX_LINE_THICK, bounds.height }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, bounds.width, RAYGUI_GROUPBOX_LINE_THICK }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - 1, bounds.y, RAYGUI_GROUPBOX_LINE_THICK, bounds.height }, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR))); + + GuiLine(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y - GuiGetStyle(DEFAULT, TEXT_SIZE)/2, bounds.width, (float)GuiGetStyle(DEFAULT, TEXT_SIZE) }, text); + //-------------------------------------------------------------------- + + return result; +} + +// Line control +int GuiLine(Rectangle bounds, const char *text) +{ + #if !defined(RAYGUI_LINE_MARGIN_TEXT) + #define RAYGUI_LINE_MARGIN_TEXT 12 + #endif + #if !defined(RAYGUI_LINE_TEXT_PADDING) + #define RAYGUI_LINE_TEXT_PADDING 4 + #endif + + int result = 0; + GuiState state = guiState; + + Color color = GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR)); + + // Draw control + //-------------------------------------------------------------------- + if (text == NULL) GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height/2, bounds.width, 1 }, 0, BLANK, color); + else + { + Rectangle textBounds = { 0 }; + textBounds.width = (float)GuiGetTextWidth(text) + 2; + textBounds.height = bounds.height; + textBounds.x = bounds.x + RAYGUI_LINE_MARGIN_TEXT; + textBounds.y = bounds.y; + + // Draw line with embedded text label: "--- text --------------" + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height/2, RAYGUI_LINE_MARGIN_TEXT - RAYGUI_LINE_TEXT_PADDING, 1 }, 0, BLANK, color); + GuiDrawText(text, textBounds, TEXT_ALIGN_LEFT, color); + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + 12 + textBounds.width + 4, bounds.y + bounds.height/2, bounds.width - textBounds.width - RAYGUI_LINE_MARGIN_TEXT - RAYGUI_LINE_TEXT_PADDING, 1 }, 0, BLANK, color); + } + //-------------------------------------------------------------------- + + return result; +} + +// Panel control +int GuiPanel(Rectangle bounds, const char *text) +{ + #if !defined(RAYGUI_PANEL_BORDER_WIDTH) + #define RAYGUI_PANEL_BORDER_WIDTH 1 + #endif + + int result = 0; + GuiState state = guiState; + + // Text will be drawn as a header bar (if provided) + Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }; + if ((text != NULL) && (bounds.height < RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f)) bounds.height = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f; + + if (text != NULL) + { + // Move panel bounds after the header bar + bounds.y += (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; + bounds.height -= (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; + } + + // Draw control + //-------------------------------------------------------------------- + if (text != NULL) GuiStatusBar(statusBar, text); // Draw panel header as status bar + + GuiDrawRectangle(bounds, RAYGUI_PANEL_BORDER_WIDTH, GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BORDER_COLOR_DISABLED : (int)LINE_COLOR)), + GetColor(GuiGetStyle(DEFAULT, (state == STATE_DISABLED)? (int)BASE_COLOR_DISABLED : (int)BACKGROUND_COLOR))); + //-------------------------------------------------------------------- + + return result; +} + +// Tab Bar control +// NOTE: Using GuiToggle() for the TABS +int GuiTabBar(Rectangle bounds, const char **text, int count, int *active) +{ + #define RAYGUI_TABBAR_ITEM_WIDTH 148 + + int result = -1; + //GuiState state = guiState; + + Rectangle tabBounds = { bounds.x, bounds.y, RAYGUI_TABBAR_ITEM_WIDTH, bounds.height }; + + if (*active < 0) *active = 0; + else if (*active > count - 1) *active = count - 1; + + int offsetX = 0; // Required in case tabs go out of screen + offsetX = (*active + 2)*RAYGUI_TABBAR_ITEM_WIDTH - GetScreenWidth(); + if (offsetX < 0) offsetX = 0; + + bool toggle = false; // Required for individual toggles + + // Draw control + //-------------------------------------------------------------------- + for (int i = 0; i < count; i++) + { + tabBounds.x = bounds.x + (RAYGUI_TABBAR_ITEM_WIDTH + 4)*i - offsetX; + + if (tabBounds.x < GetScreenWidth()) + { + // Draw tabs as toggle controls + int textAlignment = GuiGetStyle(TOGGLE, TEXT_ALIGNMENT); + int textPadding = GuiGetStyle(TOGGLE, TEXT_PADDING); + GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + GuiSetStyle(TOGGLE, TEXT_PADDING, 8); + + if (i == (*active)) + { + toggle = true; + GuiToggle(tabBounds, text[i], &toggle); + } + else + { + toggle = false; + GuiToggle(tabBounds, text[i], &toggle); + if (toggle) *active = i; + } + + // Close tab with middle mouse button pressed + if (CheckCollisionPointRec(GUI_POINTER_POSITION, tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; + + GuiSetStyle(TOGGLE, TEXT_PADDING, textPadding); + GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, textAlignment); + + // Draw tab close button + // NOTE: Only draw close button for current tab: if (CheckCollisionPointRec(mousePosition, tabBounds)) + int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); + int tempTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); + GuiSetStyle(BUTTON, BORDER_WIDTH, 1); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); +#if defined(RAYGUI_NO_ICONS) + if (GuiButton(RAYGUI_CLITERAL(Rectangle){ tabBounds.x + tabBounds.width - 14 - 5, tabBounds.y + 5, 14, 14 }, "x")) result = i; +#else + if (GuiButton(RAYGUI_CLITERAL(Rectangle){ tabBounds.x + tabBounds.width - 14 - 5, tabBounds.y + 5, 14, 14 }, GuiIconText(ICON_CROSS_SMALL, NULL))) result = i; +#endif + GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlignment); + } + } + + // Draw tab-bar bottom line + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, bounds.width, 1 }, 0, BLANK, GetColor(GuiGetStyle(TOGGLE, BORDER_COLOR_NORMAL))); + //-------------------------------------------------------------------- + + return result; // Return as result the current TAB closing requested +} + +// Scroll Panel control +int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector2 *scroll, Rectangle *view) +{ + #define RAYGUI_MIN_SCROLLBAR_WIDTH 40 + #define RAYGUI_MIN_SCROLLBAR_HEIGHT 40 + #define RAYGUI_MIN_MOUSE_WHEEL_SPEED 20 + + int result = 0; + GuiState state = guiState; + + Rectangle temp = { 0 }; + if (view == NULL) view = &temp; + + Vector2 scrollPos = { 0.0f, 0.0f }; + if (scroll != NULL) scrollPos = *scroll; + + // Text will be drawn as a header bar (if provided) + Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT }; + if (bounds.height < RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f) bounds.height = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT*2.0f; + + if (text != NULL) + { + // Move panel bounds after the header bar + bounds.y += (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 1; + bounds.height -= (float)RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + 1; + } + + bool hasHorizontalScrollBar = (content.width > bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH))? true : false; + bool hasVerticalScrollBar = (content.height > bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH))? true : false; + + // Recheck to account for the other scrollbar being visible + if (!hasHorizontalScrollBar) hasHorizontalScrollBar = (hasVerticalScrollBar && (content.width > (bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH))))? true : false; + if (!hasVerticalScrollBar) hasVerticalScrollBar = (hasHorizontalScrollBar && (content.height > (bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH))))? true : false; + + int horizontalScrollBarWidth = hasHorizontalScrollBar? GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH) : 0; + int verticalScrollBarWidth = hasVerticalScrollBar? GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH) : 0; + Rectangle horizontalScrollBar = { + (float)((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)bounds.x + verticalScrollBarWidth : (float)bounds.x) + GuiGetStyle(DEFAULT, BORDER_WIDTH), + (float)bounds.y + bounds.height - horizontalScrollBarWidth - GuiGetStyle(DEFAULT, BORDER_WIDTH), + (float)bounds.width - verticalScrollBarWidth - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH), + (float)horizontalScrollBarWidth + }; + Rectangle verticalScrollBar = { + (float)((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH) : (float)bounds.x + bounds.width - verticalScrollBarWidth - GuiGetStyle(DEFAULT, BORDER_WIDTH)), + (float)bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), + (float)verticalScrollBarWidth, + (float)bounds.height - horizontalScrollBarWidth - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) + }; + + // Make sure scroll bars have a minimum width/height + if (horizontalScrollBar.width < RAYGUI_MIN_SCROLLBAR_WIDTH) horizontalScrollBar.width = RAYGUI_MIN_SCROLLBAR_WIDTH; + if (verticalScrollBar.height < RAYGUI_MIN_SCROLLBAR_HEIGHT) verticalScrollBar.height = RAYGUI_MIN_SCROLLBAR_HEIGHT; + + // Calculate view area (area without the scrollbars) + *view = (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? + RAYGUI_CLITERAL(Rectangle){ bounds.x + verticalScrollBarWidth + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth, bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth } : + RAYGUI_CLITERAL(Rectangle){ bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.y + GuiGetStyle(DEFAULT, BORDER_WIDTH), bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth, bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth }; + + // Clip view area to the actual content size + if (view->width > content.width) view->width = content.width; + if (view->height > content.height) view->height = content.height; + + float horizontalMin = hasHorizontalScrollBar? ((GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)-verticalScrollBarWidth : 0) - (float)GuiGetStyle(DEFAULT, BORDER_WIDTH) : (((float)GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)-verticalScrollBarWidth : 0) - (float)GuiGetStyle(DEFAULT, BORDER_WIDTH); + float horizontalMax = hasHorizontalScrollBar? content.width - bounds.width + (float)verticalScrollBarWidth + GuiGetStyle(DEFAULT, BORDER_WIDTH) - (((float)GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (float)verticalScrollBarWidth : 0) : (float)-GuiGetStyle(DEFAULT, BORDER_WIDTH); + float verticalMin = hasVerticalScrollBar? 0.0f : -1.0f; + float verticalMax = hasVerticalScrollBar? content.height - bounds.height + (float)horizontalScrollBarWidth + (float)GuiGetStyle(DEFAULT, BORDER_WIDTH) : (float)-GuiGetStyle(DEFAULT, BORDER_WIDTH); + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + // Check button state + if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else state = STATE_FOCUSED; + +#if defined(SUPPORT_SCROLLBAR_KEY_INPUT) + if (hasHorizontalScrollBar) + { + if (GUI_KEY_DOWN(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + } + + if (hasVerticalScrollBar) + { + if (GUI_KEY_DOWN(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + } +#endif + float scrollDelta = GUI_SCROLL_DELTA; + + // Set scrolling speed with mouse wheel based on ratio between bounds and content + Vector2 scrollSpeed = { content.width/bounds.width, content.height/bounds.height }; + if (scrollSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; + if (scrollSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; + + // Horizontal and vertical scrolling with mouse wheel + if (hasHorizontalScrollBar && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_LEFT_SHIFT))) scrollPos.x += scrollDelta*scrollSpeed.x; + else scrollPos.y += scrollDelta*scrollSpeed.y; // Vertical scroll + } + } + + // Normalize scroll values + if (scrollPos.x > -horizontalMin) scrollPos.x = -horizontalMin; + if (scrollPos.x < -horizontalMax) scrollPos.x = -horizontalMax; + if (scrollPos.y > -verticalMin) scrollPos.y = -verticalMin; + if (scrollPos.y < -verticalMax) scrollPos.y = -verticalMax; + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + if (text != NULL) GuiStatusBar(statusBar, text); // Draw panel header as status bar + + GuiDrawRectangle(bounds, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); // Draw background + + // Save size of the scrollbar slider + const int slider = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); + + // Draw horizontal scrollbar if visible + if (hasHorizontalScrollBar) + { + // Change scrollbar slider size to show the diff in size between the content width and the widget width + GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)(((bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth)/(int)content.width)*((int)bounds.width - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - verticalScrollBarWidth))); + scrollPos.x = (float)-GuiScrollBar(horizontalScrollBar, (int)-scrollPos.x, (int)horizontalMin, (int)horizontalMax); + } + else scrollPos.x = 0.0f; + + // Draw vertical scrollbar if visible + if (hasVerticalScrollBar) + { + // Change scrollbar slider size to show the diff in size between the content height and the widget height + GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)(((bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth)/(int)content.height)*((int)bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) - horizontalScrollBarWidth))); + scrollPos.y = (float)-GuiScrollBar(verticalScrollBar, (int)-scrollPos.y, (int)verticalMin, (int)verticalMax); + } + else scrollPos.y = 0.0f; + + // Draw detail corner rectangle if both scroll bars are visible + if (hasHorizontalScrollBar && hasVerticalScrollBar) + { + Rectangle corner = { (GuiGetStyle(LISTVIEW, SCROLLBAR_SIDE) == SCROLLBAR_LEFT_SIDE)? (bounds.x + GuiGetStyle(DEFAULT, BORDER_WIDTH) + 2) : (horizontalScrollBar.x + horizontalScrollBar.width + 2), verticalScrollBar.y + verticalScrollBar.height + 2, (float)horizontalScrollBarWidth - 4, (float)verticalScrollBarWidth - 4 }; + GuiDrawRectangle(corner, 0, BLANK, GetColor(GuiGetStyle(LISTVIEW, TEXT + (state*3)))); + } + + // Draw scrollbar lines depending on current state + GuiDrawRectangle(bounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + (state*3))), BLANK); + + // Set scrollbar slider size back to the way it was before + GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, slider); + //-------------------------------------------------------------------- + + if (scroll != NULL) *scroll = scrollPos; + + return result; +} + +// Label control +int GuiLabel(Rectangle bounds, const char *text) +{ + int result = 0; + GuiState state = guiState; + + // Update control + //-------------------------------------------------------------------- + //... + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawText(text, GetTextBounds(LABEL, bounds), GuiGetStyle(LABEL, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + //-------------------------------------------------------------------- + + return result; +} + +// Button control, returns true when clicked +int GuiButton(Rectangle bounds, const char *text) +{ + int result = 0; + GuiState state = guiState; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + // Check button state + if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else state = STATE_FOCUSED; + + if (GUI_BUTTON_RELEASED) result = 1; + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(bounds, GuiGetStyle(BUTTON, BORDER_WIDTH), GetColor(GuiGetStyle(BUTTON, BORDER + (state*3))), GetColor(GuiGetStyle(BUTTON, BASE + (state*3)))); + GuiDrawText(text, GetTextBounds(BUTTON, bounds), GuiGetStyle(BUTTON, TEXT_ALIGNMENT), GetColor(GuiGetStyle(BUTTON, TEXT + (state*3)))); + + if (state == STATE_FOCUSED) GuiTooltip(bounds); + //------------------------------------------------------------------ + + return result; // Button pressed: result = 1 +} + +// Label button control +int GuiLabelButton(Rectangle bounds, const char *text) +{ + GuiState state = guiState; + bool pressed = false; + + // NOTE: Force bounds.width to be all text + float textWidth = (float)GuiGetTextWidth(text); + if ((bounds.width - 2*GuiGetStyle(LABEL, BORDER_WIDTH) - 2*GuiGetStyle(LABEL, TEXT_PADDING)) < textWidth) bounds.width = textWidth + 2*GuiGetStyle(LABEL, BORDER_WIDTH) + 2*GuiGetStyle(LABEL, TEXT_PADDING) + 2; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + // Check checkbox state + if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else state = STATE_FOCUSED; + + if (GUI_BUTTON_RELEASED) pressed = true; + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawText(text, GetTextBounds(LABEL, bounds), GuiGetStyle(LABEL, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + //-------------------------------------------------------------------- + + return pressed; +} + +// Toggle Button control +int GuiToggle(Rectangle bounds, const char *text, bool *active) +{ + int result = 0; + GuiState state = guiState; + + bool temp = false; + if (active == NULL) active = &temp; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + // Check toggle button state + if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else if (GUI_BUTTON_RELEASED) + { + state = STATE_NORMAL; + *active = !(*active); + } + else state = STATE_FOCUSED; + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + if (state == STATE_NORMAL) + { + GuiDrawRectangle(bounds, GuiGetStyle(TOGGLE, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, ((*active)? BORDER_COLOR_PRESSED : (BORDER + state*3)))), GetColor(GuiGetStyle(TOGGLE, ((*active)? BASE_COLOR_PRESSED : (BASE + state*3))))); + GuiDrawText(text, GetTextBounds(TOGGLE, bounds), GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TOGGLE, ((*active)? TEXT_COLOR_PRESSED : (TEXT + state*3))))); + } + else + { + GuiDrawRectangle(bounds, GuiGetStyle(TOGGLE, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, BORDER + state*3)), GetColor(GuiGetStyle(TOGGLE, BASE + state*3))); + GuiDrawText(text, GetTextBounds(TOGGLE, bounds), GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TOGGLE, TEXT + state*3))); + } + + if (state == STATE_FOCUSED) GuiTooltip(bounds); + //-------------------------------------------------------------------- + + return result; +} + +// Toggle Group control +int GuiToggleGroup(Rectangle bounds, const char *text, int *active) +{ + #if !defined(RAYGUI_TOGGLEGROUP_MAX_ITEMS) + #define RAYGUI_TOGGLEGROUP_MAX_ITEMS 32 + #endif + + int result = 0; + float initBoundsX = bounds.x; + + int temp = 0; + if (active == NULL) active = &temp; + + bool toggle = false; // Required for individual toggles + + // Get substrings items from text (items pointers) + int rows[RAYGUI_TOGGLEGROUP_MAX_ITEMS] = { 0 }; + int itemCount = 0; + const char **items = GuiTextSplit(text, ';', &itemCount, rows); + + int prevRow = rows[0]; + + for (int i = 0; i < itemCount; i++) + { + if (prevRow != rows[i]) + { + bounds.x = initBoundsX; + bounds.y += (bounds.height + GuiGetStyle(TOGGLE, GROUP_PADDING)); + prevRow = rows[i]; + } + + if (i == (*active)) + { + toggle = true; + GuiToggle(bounds, items[i], &toggle); + } + else + { + toggle = false; + GuiToggle(bounds, items[i], &toggle); + if (toggle) *active = i; + } + + bounds.x += (bounds.width + GuiGetStyle(TOGGLE, GROUP_PADDING)); + } + + return result; +} + +// Toggle Slider control extended +int GuiToggleSlider(Rectangle bounds, const char *text, int *active) +{ + int result = 0; + GuiState state = guiState; + + int temp = 0; + if (active == NULL) active = &temp; + + //bool toggle = false; // Required for individual toggles + + // Get substrings items from text (items pointers) + int itemCount = 0; + const char **items = NULL; + + if (text != NULL) items = GuiTextSplit(text, ';', &itemCount, NULL); + + Rectangle slider = { + 0, // Calculated later depending on the active toggle + bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH) + GuiGetStyle(SLIDER, SLIDER_PADDING), + (bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - (itemCount + 1)*GuiGetStyle(SLIDER, SLIDER_PADDING))/itemCount, + bounds.height - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - 2*GuiGetStyle(SLIDER, SLIDER_PADDING) }; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else if (GUI_BUTTON_RELEASED) + { + state = STATE_PRESSED; + (*active)++; + result = 1; + } + else state = STATE_FOCUSED; + } + + if ((*active) && (state != STATE_FOCUSED)) state = STATE_PRESSED; + } + + if (*active >= itemCount) *active = 0; + slider.x = bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH) + (*active + 1)*GuiGetStyle(SLIDER, SLIDER_PADDING) + (*active)*slider.width; + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), GetColor(GuiGetStyle(TOGGLE, BORDER + (state*3))), + GetColor(GuiGetStyle(TOGGLE, BASE_COLOR_NORMAL))); + + // Draw internal slider + if (state == STATE_NORMAL) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); + else if (state == STATE_FOCUSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_FOCUSED))); + else if (state == STATE_PRESSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); + + // Draw text in slider + if (text != NULL) + { + Rectangle textBounds = { 0 }; + textBounds.width = (float)GuiGetTextWidth(text); + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = slider.x + slider.width/2 - textBounds.width/2; + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + + GuiDrawText(items[*active], textBounds, GuiGetStyle(TOGGLE, TEXT_ALIGNMENT), Fade(GetColor(GuiGetStyle(TOGGLE, TEXT + (state*3))), guiAlpha)); + } + //-------------------------------------------------------------------- + + return result; +} + +// Check Box control, returns 1 when state changed +int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) +{ + int result = 0; + GuiState state = guiState; + + bool temp = false; + if (checked == NULL) checked = &temp; + + Rectangle textBounds = { 0 }; + + if (text != NULL) + { + textBounds.width = (float)GuiGetTextWidth(text) + 2; + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = bounds.x + bounds.width + GuiGetStyle(CHECKBOX, TEXT_PADDING); + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + if (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(CHECKBOX, TEXT_PADDING); + } + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + Rectangle totalBounds = { + (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT)? textBounds.x : bounds.x, + bounds.y, + bounds.width + textBounds.width + GuiGetStyle(CHECKBOX, TEXT_PADDING), + bounds.height, + }; + + // Check checkbox state + if (CheckCollisionPointRec(mousePoint, totalBounds)) + { + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else state = STATE_FOCUSED; + + if (GUI_BUTTON_RELEASED) + { + *checked = !(*checked); + result = 1; + } + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(bounds, GuiGetStyle(CHECKBOX, BORDER_WIDTH), GetColor(GuiGetStyle(CHECKBOX, BORDER + (state*3))), BLANK); + + if (*checked) + { + Rectangle check = { bounds.x + GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING), + bounds.y + GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING), + bounds.width - 2*(GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING)), + bounds.height - 2*(GuiGetStyle(CHECKBOX, BORDER_WIDTH) + GuiGetStyle(CHECKBOX, CHECK_PADDING)) }; + GuiDrawRectangle(check, 0, BLANK, GetColor(GuiGetStyle(CHECKBOX, TEXT + state*3))); + } + + GuiDrawText(text, textBounds, (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + //-------------------------------------------------------------------- + + return result; +} + +// Combo Box control +int GuiComboBox(Rectangle bounds, const char *text, int *active) +{ + int result = 0; + GuiState state = guiState; + + int temp = 0; + if (active == NULL) active = &temp; + + bounds.width -= (GuiGetStyle(COMBOBOX, COMBO_BUTTON_WIDTH) + GuiGetStyle(COMBOBOX, COMBO_BUTTON_SPACING)); + + Rectangle selector = { (float)bounds.x + bounds.width + GuiGetStyle(COMBOBOX, COMBO_BUTTON_SPACING), + (float)bounds.y, (float)GuiGetStyle(COMBOBOX, COMBO_BUTTON_WIDTH), (float)bounds.height }; + + // Get substrings items from text (items pointers, lengths and count) + int itemCount = 0; + const char **items = GuiTextSplit(text, ';', &itemCount, NULL); + + if (*active < 0) *active = 0; + else if (*active > (itemCount - 1)) *active = itemCount - 1; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && (itemCount > 1) && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + if (CheckCollisionPointRec(mousePoint, bounds) || + CheckCollisionPointRec(mousePoint, selector)) + { + if (GUI_BUTTON_PRESSED) + { + *active += 1; + if (*active >= itemCount) *active = 0; // Cyclic combobox + } + + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else state = STATE_FOCUSED; + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + // Draw combo box main + GuiDrawRectangle(bounds, GuiGetStyle(COMBOBOX, BORDER_WIDTH), GetColor(GuiGetStyle(COMBOBOX, BORDER + (state*3))), GetColor(GuiGetStyle(COMBOBOX, BASE + (state*3)))); + GuiDrawText(items[*active], GetTextBounds(COMBOBOX, bounds), GuiGetStyle(COMBOBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(COMBOBOX, TEXT + (state*3)))); + + // Draw selector using a custom button + // NOTE: BORDER_WIDTH and TEXT_ALIGNMENT forced values + int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); + int tempTextAlign = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); + GuiSetStyle(BUTTON, BORDER_WIDTH, 1); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + + GuiButton(selector, TextFormat("%i/%i", *active + 1, itemCount)); + + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlign); + GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); + //-------------------------------------------------------------------- + + return result; +} + +// Dropdown Box control +// NOTE: Returns mouse click +int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMode) +{ + int result = 0; + GuiState state = guiState; + + int temp = 0; + if (active == NULL) active = &temp; + + int itemSelected = *active; + int itemFocused = -1; + + int direction = 0; // Dropdown box open direction: down (default) + if (GuiGetStyle(DROPDOWNBOX, DROPDOWN_ROLL_UP) == 1) direction = 1; // Up + + // Get substrings items from text (items pointers, lengths and count) + int itemCount = 0; + const char **items = GuiTextSplit(text, ';', &itemCount, NULL); + + Rectangle boundsOpen = bounds; + boundsOpen.height = (itemCount + 1)*(bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); + if (direction == 1) boundsOpen.y -= itemCount*(bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)) + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING); + + Rectangle itemBounds = bounds; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && (editMode || !guiLocked) && (itemCount > 1) && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + if (editMode) + { + state = STATE_PRESSED; + + // Check if mouse has been pressed or released outside limits + if (!CheckCollisionPointRec(mousePoint, boundsOpen)) + { + if (GUI_BUTTON_PRESSED || GUI_BUTTON_RELEASED) result = 1; + } + + // Check if already selected item has been pressed again + if (CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED) result = 1; + + // Check focused and selected item + for (int i = 0; i < itemCount; i++) + { + // Update item rectangle y position for next item + if (direction == 0) itemBounds.y += (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); + else itemBounds.y -= (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); + + if (CheckCollisionPointRec(mousePoint, itemBounds)) + { + itemFocused = i; + if (GUI_BUTTON_RELEASED) + { + itemSelected = i; + result = 1; // Item selected + } + break; + } + } + + itemBounds = bounds; + } + else + { + if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_PRESSED) + { + result = 1; + state = STATE_PRESSED; + } + else state = STATE_FOCUSED; + } + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + if (editMode) GuiPanel(boundsOpen, NULL); + + GuiDrawRectangle(bounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER + state*3)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE + state*3))); + GuiDrawText(items[itemSelected], GetTextBounds(DROPDOWNBOX, bounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + state*3))); + + if (editMode) + { + // Draw visible items + for (int i = 0; i < itemCount; i++) + { + // Update item rectangle y position for next item + if (direction == 0) itemBounds.y += (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); + else itemBounds.y -= (bounds.height + GuiGetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING)); + + if (i == itemSelected) + { + GuiDrawRectangle(itemBounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE_COLOR_PRESSED))); + GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_PRESSED))); + } + else if (i == itemFocused) + { + GuiDrawRectangle(itemBounds, GuiGetStyle(DROPDOWNBOX, BORDER_WIDTH), GetColor(GuiGetStyle(DROPDOWNBOX, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(DROPDOWNBOX, BASE_COLOR_FOCUSED))); + GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_FOCUSED))); + } + else GuiDrawText(items[i], GetTextBounds(DROPDOWNBOX, itemBounds), GuiGetStyle(DROPDOWNBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(DROPDOWNBOX, TEXT_COLOR_NORMAL))); + } + } + + if (!GuiGetStyle(DROPDOWNBOX, DROPDOWN_ARROW_HIDDEN)) + { + // Draw arrows (using icon if available) +#if defined(RAYGUI_NO_ICONS) + GuiDrawText("v", RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING), bounds.y + bounds.height/2 - 2, 10, 10 }, + TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); +#else + GuiDrawText(direction? "#121#" : "#120#", RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - GuiGetStyle(DROPDOWNBOX, ARROW_PADDING), bounds.y + bounds.height/2 - 6, 10, 10 }, + TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); // ICON_ARROW_DOWN_FILL +#endif + } + //-------------------------------------------------------------------- + + *active = itemSelected; + + // TODO: Use result to return more internal states: mouse-press out-of-bounds, mouse-press over selected-item... + return result; // Mouse click: result = 1 +} + +// Text Box control +// NOTE: Returns true on ENTER pressed (useful for data validation) +int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) +{ + #if !defined(RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) + #define RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN 20 // Frames to wait for autocursor movement + #endif + #if !defined(RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) + #define RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY 1 // Frames delay for autocursor movement + #endif + + int result = 0; + GuiState state = guiState; + + bool multiline = false; // TODO: Consider multiline text input + int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); + + Rectangle textBounds = GetTextBounds(TEXTBOX, bounds); + int textLength = (text != NULL)? (int)strlen(text) : 0; // Get current text length + int thisCursorIndex = textBoxCursorIndex; + if (thisCursorIndex > textLength) thisCursorIndex = textLength; + int textWidth = GuiGetTextWidth(text) - GuiGetTextWidth(text + thisCursorIndex); + int textIndexOffset = 0; // Text index offset to start drawing in the box + + // Cursor rectangle + // NOTE: Position X value should be updated + Rectangle cursor = { + textBounds.x + textWidth + GuiGetStyle(DEFAULT, TEXT_SPACING), + textBounds.y + textBounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE), + 2, + (float)GuiGetStyle(DEFAULT, TEXT_SIZE)*2 + }; + + if (cursor.height >= bounds.height) cursor.height = bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2; + if (cursor.y < (bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH))) cursor.y = bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH); + + // Mouse cursor rectangle + // NOTE: Initialized outside of screen + Rectangle mouseCursor = cursor; + mouseCursor.x = -1; + mouseCursor.width = 1; + + // Blink-cursor frame counter + //if (!autoCursorMode) blinkCursorFrameCounter++; + //else blinkCursorFrameCounter = 0; + + // Update control + //-------------------------------------------------------------------- + // WARNING: Text editing is only supported under certain conditions: + if ((state != STATE_DISABLED) && // Control not disabled + !GuiGetStyle(TEXTBOX, TEXT_READONLY) && // TextBox not on read-only mode + !guiLocked && // Gui not locked + !guiControlExclusiveMode && // No gui slider on dragging + (wrapMode == TEXT_WRAP_NONE)) // No wrap mode + { + Vector2 mousePosition = GUI_POINTER_POSITION; + + if (editMode) + { + // GLOBAL: Auto-cursor movement logic + // NOTE: Keystrokes are handled repeatedly when button is held down for some time + if (GUI_KEY_DOWN(KEY_LEFT) || GUI_KEY_DOWN(KEY_RIGHT) || GUI_KEY_DOWN(KEY_UP) || GUI_KEY_DOWN(KEY_DOWN) || GUI_KEY_DOWN(KEY_BACKSPACE) || GUI_KEY_DOWN(KEY_DELETE)) autoCursorCounter++; + else autoCursorCounter = 0; + + bool autoCursorShouldTrigger = (autoCursorCounter > RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) && ((autoCursorCounter % RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) == 0); + + state = STATE_PRESSED; + + if (textBoxCursorIndex > textLength) textBoxCursorIndex = textLength; + + // If text does not fit in the textbox and current cursor position is out of bounds, + // adding an index offset to text for drawing only what requires depending on cursor + while (textWidth >= textBounds.width) + { + int nextCodepointSize = 0; + GetCodepointNext(text + textIndexOffset, &nextCodepointSize); + + textIndexOffset += nextCodepointSize; + + textWidth = GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex); + } + + int codepoint = GUI_INPUT_KEY; // Get Unicode codepoint + if (multiline && GUI_KEY_PRESSED(KEY_ENTER)) codepoint = (int)'\n'; + + // Encode codepoint as UTF-8 + int codepointSize = 0; + const char *charEncoded = CodepointToUTF8(codepoint, &codepointSize); + + // Handle text paste action + if (GUI_KEY_PRESSED(KEY_V) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) + { + const char *pasteText = GetClipboardText(); + if (pasteText != NULL) + { + int pasteLength = 0; + int pasteCodepoint; + int pasteCodepointSize; + + // Count how many codepoints to copy, stopping at the first unwanted control character + while (true) + { + pasteCodepoint = GetCodepointNext(pasteText + pasteLength, &pasteCodepointSize); + if (textLength + pasteLength + pasteCodepointSize >= textSize) break; + if (!(multiline && (pasteCodepoint == (int)'\n')) && !(pasteCodepoint >= 32)) break; + pasteLength += pasteCodepointSize; + } + + if (pasteLength > 0) + { + // Move forward data from cursor position + for (int i = textLength + pasteLength; i > textBoxCursorIndex; i--) text[i] = text[i - pasteLength]; + + // Paste data in at cursor + for (int i = 0; i < pasteLength; i++) text[textBoxCursorIndex + i] = pasteText[i]; + + textBoxCursorIndex += pasteLength; + textLength += pasteLength; + text[textLength] = '\0'; + } + } + } + else if (((multiline && (codepoint == (int)'\n')) || (codepoint >= 32)) && ((textLength + codepointSize) < textSize)) + { + // Adding codepoint to text, at current cursor position + + // Move forward data from cursor position + for (int i = (textLength + codepointSize); i > textBoxCursorIndex; i--) text[i] = text[i - codepointSize]; + + // Add new codepoint in current cursor position + for (int i = 0; i < codepointSize; i++) text[textBoxCursorIndex + i] = charEncoded[i]; + + textBoxCursorIndex += codepointSize; + textLength += codepointSize; + + // Make sure text last character is EOL + text[textLength] = '\0'; + } + + // Move cursor to start + if ((textLength > 0) && GUI_KEY_PRESSED(KEY_HOME)) textBoxCursorIndex = 0; + + // Move cursor to end + if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_END)) textBoxCursorIndex = textLength; + + // Delete related codepoints from text, after current cursor position + if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_DELETE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) + { + int offset = textBoxCursorIndex; + int accCodepointSize = 0; + int nextCodepointSize; + int nextCodepoint; + + // Check characters of the same type to delete (either ASCII punctuation or anything non-whitespace) + // Not using isalnum() since it only works on ASCII characters + nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); + bool puctuation = ispunct(nextCodepoint & 0xff); + while (offset < textLength) + { + if ((puctuation && !ispunct(nextCodepoint & 0xff)) || (!puctuation && (isspace(nextCodepoint & 0xff) || ispunct(nextCodepoint & 0xff)))) + break; + offset += nextCodepointSize; + accCodepointSize += nextCodepointSize; + nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); + } + + // Check whitespace to delete (ASCII only) + while (offset < textLength) + { + if (!isspace(nextCodepoint & 0xff)) break; + + offset += nextCodepointSize; + accCodepointSize += nextCodepointSize; + nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); + } + + // Move text after cursor forward (including final null terminator) + for (int i = offset; i <= textLength; i++) text[i - accCodepointSize] = text[i]; + + textLength -= accCodepointSize; + } + + else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_DELETE) || (GUI_KEY_DOWN(KEY_DELETE) && autoCursorShouldTrigger))) + { + // Delete single codepoint from text, after current cursor position + + int nextCodepointSize = 0; + GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); + + // Move text after cursor forward (including final null terminator) + for (int i = textBoxCursorIndex + nextCodepointSize; i <= textLength; i++) text[i - nextCodepointSize] = text[i]; + + textLength -= nextCodepointSize; + } + + // Delete related codepoints from text, before current cursor position + if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) + { + int offset = textBoxCursorIndex; + int accCodepointSize = 0; + int prevCodepointSize = 0; + int prevCodepoint = 0; + + // Check whitespace to delete (ASCII only) + while (offset > 0) + { + prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); + if (!isspace(prevCodepoint & 0xff)) break; + + offset -= prevCodepointSize; + accCodepointSize += prevCodepointSize; + } + + // Check characters of the same type to delete (either ASCII punctuation or anything non-whitespace) + // Not using isalnum() since it only works on ASCII characters + bool puctuation = ispunct(prevCodepoint & 0xff); + while (offset > 0) + { + prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); + if ((puctuation && !ispunct(prevCodepoint & 0xff)) || (!puctuation && (isspace(prevCodepoint & 0xff) || ispunct(prevCodepoint & 0xff)))) break; + + offset -= prevCodepointSize; + accCodepointSize += prevCodepointSize; + } + + // Move text after cursor forward (including final null terminator) + for (int i = textBoxCursorIndex; i <= textLength; i++) text[i - accCodepointSize] = text[i]; + + textLength -= accCodepointSize; + textBoxCursorIndex -= accCodepointSize; + } + + else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_BACKSPACE) || (GUI_KEY_DOWN(KEY_BACKSPACE) && autoCursorShouldTrigger))) + { + // Delete single codepoint from text, before current cursor position + + int prevCodepointSize = 0; + + GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); + + // Move text after cursor forward (including final null terminator) + for (int i = textBoxCursorIndex; i <= textLength; i++) text[i - prevCodepointSize] = text[i]; + + textLength -= prevCodepointSize; + textBoxCursorIndex -= prevCodepointSize; + } + + // Move cursor position with keys + if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_LEFT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) + { + int offset = textBoxCursorIndex; + //int accCodepointSize = 0; + int prevCodepointSize = 0; + int prevCodepoint = 0; + + // Check whitespace to skip (ASCII only) + while (offset > 0) + { + prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); + if (!isspace(prevCodepoint & 0xff)) break; + + offset -= prevCodepointSize; + //accCodepointSize += prevCodepointSize; + } + + // Check characters of the same type to skip (either ASCII punctuation or anything non-whitespace) + // Not using isalnum() since it only works on ASCII characters + bool puctuation = ispunct(prevCodepoint & 0xff); + while (offset > 0) + { + prevCodepoint = GetCodepointPrevious(text + offset, &prevCodepointSize); + if ((puctuation && !ispunct(prevCodepoint & 0xff)) || (!puctuation && (isspace(prevCodepoint & 0xff) || ispunct(prevCodepoint & 0xff)))) break; + + offset -= prevCodepointSize; + //accCodepointSize += prevCodepointSize; + } + + textBoxCursorIndex = offset; + } + else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_LEFT) || (GUI_KEY_DOWN(KEY_LEFT) && autoCursorShouldTrigger))) + { + int prevCodepointSize = 0; + GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); + + textBoxCursorIndex -= prevCodepointSize; + } + else if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_RIGHT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) + { + int offset = textBoxCursorIndex; + //int accCodepointSize = 0; + int nextCodepointSize; + int nextCodepoint; + + // Check characters of the same type to skip (either ASCII punctuation or anything non-whitespace) + // Not using isalnum() since it only works on ASCII characters + nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); + bool puctuation = ispunct(nextCodepoint & 0xff); + while (offset < textLength) + { + if ((puctuation && !ispunct(nextCodepoint & 0xff)) || (!puctuation && (isspace(nextCodepoint & 0xff) || ispunct(nextCodepoint & 0xff)))) break; + + offset += nextCodepointSize; + //accCodepointSize += nextCodepointSize; + nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); + } + + // Check whitespace to skip (ASCII only) + while (offset < textLength) + { + if (!isspace(nextCodepoint & 0xff)) break; + + offset += nextCodepointSize; + //accCodepointSize += nextCodepointSize; + nextCodepoint = GetCodepointNext(text + offset, &nextCodepointSize); + } + + textBoxCursorIndex = offset; + } + else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_RIGHT) || (GUI_KEY_DOWN(KEY_RIGHT) && autoCursorShouldTrigger))) + { + int nextCodepointSize = 0; + GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); + + textBoxCursorIndex += nextCodepointSize; + } + + // Move cursor position with mouse + if (CheckCollisionPointRec(mousePosition, textBounds)) // Mouse hover text + { + float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/(float)guiFont.baseSize; + int codepointIndex = 0; + float glyphWidth = 0.0f; + float widthToMouseX = 0; + int mouseCursorIndex = 0; + + for (int i = textIndexOffset; i < textLength; i += codepointSize) + { + codepoint = GetCodepointNext(&text[i], &codepointSize); + codepointIndex = GetGlyphIndex(guiFont, codepoint); + + if (guiFont.glyphs[codepointIndex].advanceX == 0) glyphWidth = ((float)guiFont.recs[codepointIndex].width*scaleFactor); + else glyphWidth = ((float)guiFont.glyphs[codepointIndex].advanceX*scaleFactor); + + if (mousePosition.x <= (textBounds.x + (widthToMouseX + glyphWidth/2))) + { + mouseCursor.x = textBounds.x + widthToMouseX; + mouseCursorIndex = i; + break; + } + + widthToMouseX += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); + } + + // Check if mouse cursor is at the last position + int textEndWidth = GuiGetTextWidth(text + textIndexOffset); + if (GUI_POINTER_POSITION.x >= (textBounds.x + textEndWidth - glyphWidth/2)) + { + mouseCursor.x = textBounds.x + textEndWidth; + mouseCursorIndex = textLength; + } + + // Place cursor at required index on mouse click + if ((mouseCursor.x >= 0) && GUI_BUTTON_PRESSED) + { + cursor.x = mouseCursor.x; + textBoxCursorIndex = mouseCursorIndex; + } + } + else mouseCursor.x = -1; + + // Recalculate cursor position.y depending on textBoxCursorIndex + cursor.x = bounds.x + GuiGetStyle(TEXTBOX, TEXT_PADDING) + GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex) + GuiGetStyle(DEFAULT, TEXT_SPACING); + //if (multiline) cursor.y = GetTextLines() + + // Finish text editing on ENTER or mouse click outside bounds + if ((!multiline && GUI_KEY_PRESSED(KEY_ENTER)) || + (!CheckCollisionPointRec(mousePosition, bounds) && GUI_BUTTON_PRESSED)) + { + textBoxCursorIndex = 0; // GLOBAL: Reset the shared cursor index + autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes + result = 1; + } + } + else + { + if (CheckCollisionPointRec(mousePosition, bounds)) + { + state = STATE_FOCUSED; + + if (GUI_BUTTON_PRESSED) + { + textBoxCursorIndex = textLength; // GLOBAL: Place cursor index to the end of current text + autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes + result = 1; + } + } + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + if (state == STATE_PRESSED) + { + GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_PRESSED))); + } + else if (state == STATE_DISABLED) + { + GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), GetColor(GuiGetStyle(TEXTBOX, BASE_COLOR_DISABLED))); + } + else GuiDrawRectangle(bounds, GuiGetStyle(TEXTBOX, BORDER_WIDTH), GetColor(GuiGetStyle(TEXTBOX, BORDER + (state*3))), BLANK); + + // Draw text considering index offset if required + // NOTE: Text index offset depends on cursor position + GuiDrawText(text + textIndexOffset, textBounds, GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT), GetColor(GuiGetStyle(TEXTBOX, TEXT + (state*3)))); + + // Draw cursor + if (editMode && !GuiGetStyle(TEXTBOX, TEXT_READONLY)) + { + //if (autoCursorMode || ((blinkCursorFrameCounter/40)%2 == 0)) + GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED))); + + // Draw mouse position cursor (if required) + if (mouseCursor.x >= 0) GuiDrawRectangle(mouseCursor, 0, BLANK, GetColor(GuiGetStyle(TEXTBOX, BORDER_COLOR_PRESSED))); + } + else if (state == STATE_FOCUSED) GuiTooltip(bounds); + //-------------------------------------------------------------------- + + return result; // Mouse button pressed: result = 1 +} + +/* +// Text Box control with multiple lines and word-wrap +// NOTE: This text-box is readonly, no editing supported by default +bool GuiTextBoxMulti(Rectangle bounds, char *text, int textSize, bool editMode) +{ + bool pressed = false; + + GuiSetStyle(TEXTBOX, TEXT_READONLY, 1); + GuiSetStyle(DEFAULT, TEXT_WRAP_MODE, TEXT_WRAP_WORD); // WARNING: If wrap mode enabled, text editing is not supported + GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_TOP); + + // TODO: Implement methods to calculate cursor position properly + pressed = GuiTextBox(bounds, text, textSize, editMode); + + GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); + GuiSetStyle(DEFAULT, TEXT_WRAP_MODE, TEXT_WRAP_NONE); + GuiSetStyle(TEXTBOX, TEXT_READONLY, 0); + + return pressed; +} +*/ + +// Spinner control, returns selected value +int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode) +{ + int result = 1; + GuiState state = guiState; + + int tempValue = *value; + + Rectangle valueBoxBounds = { + bounds.x + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH) + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_SPACING), + bounds.y, + bounds.width - 2*(GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH) + GuiGetStyle(VALUEBOX, SPINNER_BUTTON_SPACING)), bounds.height }; + Rectangle leftButtonBound = { (float)bounds.x, (float)bounds.y, (float)GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.height }; + Rectangle rightButtonBound = { (float)bounds.x + bounds.width - GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.y, + (float)GuiGetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH), (float)bounds.height }; + + Rectangle textBounds = { 0 }; + if (text != NULL) + { + textBounds.width = (float)GuiGetTextWidth(text) + 2; + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); + } + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + // Check spinner state + if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else state = STATE_FOCUSED; + } + } + +#if defined(RAYGUI_NO_ICONS) + if (GuiButton(leftButtonBound, "<")) tempValue--; + if (GuiButton(rightButtonBound, ">")) tempValue++; +#else + if (GuiButton(leftButtonBound, GuiIconText(ICON_ARROW_LEFT_FILL, NULL))) tempValue--; + if (GuiButton(rightButtonBound, GuiIconText(ICON_ARROW_RIGHT_FILL, NULL))) tempValue++; +#endif + + if (!editMode) + { + if (tempValue < minValue) tempValue = minValue; + if (tempValue > maxValue) tempValue = maxValue; + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + result = GuiValueBox(valueBoxBounds, NULL, &tempValue, minValue, maxValue, editMode); + + // Draw value selector custom buttons + // NOTE: BORDER_WIDTH and TEXT_ALIGNMENT forced values + int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); + int tempTextAlign = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); + GuiSetStyle(BUTTON, BORDER_WIDTH, GuiGetStyle(VALUEBOX, BORDER_WIDTH)); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, tempTextAlign); + GuiSetStyle(BUTTON, BORDER_WIDTH, tempBorderWidth); + + // Draw text label if provided + GuiDrawText(text, textBounds, (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + //-------------------------------------------------------------------- + + *value = tempValue; + return result; +} + +// Value Box control, updates input text with numbers +// NOTE: Requires static variables: frameCounter +int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, int maxValue, bool editMode) +{ + #if !defined(RAYGUI_VALUEBOX_MAX_CHARS) + #define RAYGUI_VALUEBOX_MAX_CHARS 32 + #endif + + int result = 0; + GuiState state = guiState; + + char textValue[RAYGUI_VALUEBOX_MAX_CHARS + 1] = { 0 }; + snprintf(textValue, RAYGUI_VALUEBOX_MAX_CHARS + 1, "%i", *value); + + Rectangle textBounds = { 0 }; + if (text != NULL) + { + textBounds.width = (float)GuiGetTextWidth(text) + 2; + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); + } + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + bool valueHasChanged = false; + + if (editMode) + { + state = STATE_PRESSED; + + int keyCount = (int)strlen(textValue); + + // Add or remove minus symbol + if (GUI_KEY_PRESSED(KEY_MINUS)) + { + if (textValue[0] == '-') + { + for (int i = 0 ; i < keyCount; i++) textValue[i] = textValue[i + 1]; + + keyCount--; + valueHasChanged = true; + } + else if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) + { + if (keyCount == 0) + { + textValue[0] = '0'; + textValue[1] = '\0'; + keyCount++; + } + + for (int i = keyCount ; i > -1; i--) textValue[i + 1] = textValue[i]; + + textValue[0] = '-'; + keyCount++; + valueHasChanged = true; + } + } + + // Add new digit to text value + if ((keyCount >= 0) && (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) && (GuiGetTextWidth(textValue) < bounds.width)) + { + int key = GUI_INPUT_KEY; + + // Only allow keys in range [48..57] + if ((key >= 48) && (key <= 57)) + { + textValue[keyCount] = (char)key; + keyCount++; + valueHasChanged = true; + } + } + + // Delete text + if ((keyCount > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE)) + { + keyCount--; + textValue[keyCount] = '\0'; + valueHasChanged = true; + } + + if (valueHasChanged) *value = TextToInteger(textValue); + + // NOTE: Values are not clamped until user input finishes + //if (*value > maxValue) *value = maxValue; + //else if (*value < minValue) *value = minValue; + + if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) + { + if (*value > maxValue) *value = maxValue; + else if (*value < minValue) *value = minValue; + + result = 1; + } + } + else + { + if (*value > maxValue) *value = maxValue; + else if (*value < minValue) *value = minValue; + + if (CheckCollisionPointRec(mousePoint, bounds)) + { + state = STATE_FOCUSED; + if (GUI_BUTTON_PRESSED) result = 1; + } + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + Color baseColor = BLANK; + if (state == STATE_PRESSED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_PRESSED)); + else if (state == STATE_DISABLED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_DISABLED)); + + GuiDrawRectangle(bounds, GuiGetStyle(VALUEBOX, BORDER_WIDTH), GetColor(GuiGetStyle(VALUEBOX, BORDER + (state*3))), baseColor); + GuiDrawText(textValue, GetTextBounds(VALUEBOX, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(VALUEBOX, TEXT + (state*3)))); + + // Draw cursor rectangle + if (editMode) + { + // NOTE: ValueBox internal text is always centered + Rectangle cursor = { bounds.x + GuiGetTextWidth(textValue)/2 + bounds.width/2 + 1, + bounds.y + GuiGetStyle(TEXTBOX, BORDER_WIDTH) + 2, + 2, bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2 - 4 }; + if (cursor.height > bounds.height) cursor.height = bounds.height - GuiGetStyle(TEXTBOX, BORDER_WIDTH)*2; + GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED))); + } + + // Draw text label if provided + GuiDrawText(text, textBounds, (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + //-------------------------------------------------------------------- + + return result; +} + +// Floating point Value Box control, updates input val_str with numbers +// NOTE: Requires static variables: frameCounter +int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float *value, bool editMode) +{ + #if !defined(RAYGUI_VALUEBOX_MAX_CHARS) + #define RAYGUI_VALUEBOX_MAX_CHARS 32 + #endif + + int result = 0; + GuiState state = guiState; + + //char textValue[RAYGUI_VALUEBOX_MAX_CHARS + 1] = "\0"; + //snprintf(textValue, sizeof(textValue), "%2.2f", *value); + + Rectangle textBounds = { 0 }; + if (text != NULL) + { + textBounds.width = (float)GuiGetTextWidth(text) + 2; + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = bounds.x + bounds.width + GuiGetStyle(VALUEBOX, TEXT_PADDING); + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + if (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT) textBounds.x = bounds.x - textBounds.width - GuiGetStyle(VALUEBOX, TEXT_PADDING); + } + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + bool valueHasChanged = false; + + if (editMode) + { + state = STATE_PRESSED; + + int keyCount = (int)strlen(textValue); + + // Add or remove minus symbol + if (GUI_KEY_PRESSED(KEY_MINUS)) + { + if (textValue[0] == '-') + { + for (int i = 0; i < keyCount; i++) textValue[i] = textValue[i + 1]; + + keyCount--; + valueHasChanged = true; + } + else if (keyCount < (RAYGUI_VALUEBOX_MAX_CHARS - 1)) + { + if (keyCount == 0) + { + textValue[0] = '0'; + textValue[1] = '\0'; + keyCount++; + } + + for (int i = keyCount; i > -1; i--) textValue[i + 1] = textValue[i]; + + textValue[0] = '-'; + keyCount++; + valueHasChanged = true; + } + } + + // Only allow keys in range [48..57] + if (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) + { + if (GuiGetTextWidth(textValue) < bounds.width) + { + int key = GUI_INPUT_KEY; + if (((key >= 48) && (key <= 57)) || + (key == '.') || + ((keyCount == 0) && (key == '+')) || // NOTE: Sign can only be in first position + ((keyCount == 0) && (key == '-'))) + { + textValue[keyCount] = (char)key; + keyCount++; + + valueHasChanged = true; + } + } + } + + // Pressed backspace + if (GUI_KEY_PRESSED(KEY_BACKSPACE)) + { + if (keyCount > 0) + { + keyCount--; + textValue[keyCount] = '\0'; + valueHasChanged = true; + } + } + + if (valueHasChanged) *value = TextToFloat(textValue); + + if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) result = 1; + } + else + { + if (CheckCollisionPointRec(mousePoint, bounds)) + { + state = STATE_FOCUSED; + if (GUI_BUTTON_PRESSED) result = 1; + } + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + Color baseColor = BLANK; + if (state == STATE_PRESSED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_PRESSED)); + else if (state == STATE_DISABLED) baseColor = GetColor(GuiGetStyle(VALUEBOX, BASE_COLOR_DISABLED)); + + GuiDrawRectangle(bounds, GuiGetStyle(VALUEBOX, BORDER_WIDTH), GetColor(GuiGetStyle(VALUEBOX, BORDER + (state*3))), baseColor); + GuiDrawText(textValue, GetTextBounds(VALUEBOX, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(VALUEBOX, TEXT + (state*3)))); + + // Draw cursor + if (editMode) + { + // NOTE: ValueBox internal text is always centered + Rectangle cursor = {bounds.x + GuiGetTextWidth(textValue)/2 + bounds.width/2 + 1, + bounds.y + 2*GuiGetStyle(VALUEBOX, BORDER_WIDTH), 4, + bounds.height - 4*GuiGetStyle(VALUEBOX, BORDER_WIDTH)}; + GuiDrawRectangle(cursor, 0, BLANK, GetColor(GuiGetStyle(VALUEBOX, BORDER_COLOR_PRESSED))); + } + + // Draw text label if provided + GuiDrawText(text, textBounds, + (GuiGetStyle(VALUEBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT)? TEXT_ALIGN_LEFT : TEXT_ALIGN_RIGHT, + GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + //-------------------------------------------------------------------- + + return result; +} + +// Slider control with pro parameters +// NOTE: Other GuiSlider*() controls use this one +int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) +{ + int result = 0; + GuiState state = guiState; + + float temp = (maxValue - minValue)/2.0f; + if (value == NULL) value = &temp; + float oldValue = *value; + + int sliderWidth = GuiGetStyle(SLIDER, SLIDER_WIDTH); + + Rectangle slider = { bounds.x, bounds.y + GuiGetStyle(SLIDER, BORDER_WIDTH) + GuiGetStyle(SLIDER, SLIDER_PADDING), + 0, bounds.height - 2*GuiGetStyle(SLIDER, BORDER_WIDTH) - 2*GuiGetStyle(SLIDER, SLIDER_PADDING) }; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds + { + if (GUI_BUTTON_DOWN) + { + if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) + { + state = STATE_PRESSED; + // Get equivalent value and slider position from mousePosition.x + *value = (maxValue - minValue)*((mousePoint.x - bounds.x - sliderWidth/2)/(bounds.width - sliderWidth)) + minValue; + } + } + else + { + guiControlExclusiveMode = false; + guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; + } + } + else if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) + { + state = STATE_PRESSED; + guiControlExclusiveMode = true; + guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts + + if (!CheckCollisionPointRec(mousePoint, slider)) + { + // Get equivalent value and slider position from mousePosition.x + *value = (maxValue - minValue)*((mousePoint.x - bounds.x - sliderWidth/2)/(bounds.width - sliderWidth)) + minValue; + } + } + else state = STATE_FOCUSED; + } + + if (*value > maxValue) *value = maxValue; + else if (*value < minValue) *value = minValue; + } + + // Control value change check + if (oldValue == *value) result = 0; + else result = 1; + + // Slider bar limits check + float sliderValue = (((*value - minValue)/(maxValue - minValue))*(bounds.width - sliderWidth - 2*GuiGetStyle(SLIDER, BORDER_WIDTH))); + if (sliderWidth > 0) // Slider + { + slider.x += sliderValue; + slider.width = (float)sliderWidth; + if (slider.x <= (bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH))) slider.x = bounds.x + GuiGetStyle(SLIDER, BORDER_WIDTH); + else if ((slider.x + slider.width) >= (bounds.x + bounds.width)) slider.x = bounds.x + bounds.width - slider.width - GuiGetStyle(SLIDER, BORDER_WIDTH); + } + else if (sliderWidth == 0) // SliderBar + { + slider.x += GuiGetStyle(SLIDER, BORDER_WIDTH); + slider.width = sliderValue; + if (slider.width > bounds.width) slider.width = bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH); + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(bounds, GuiGetStyle(SLIDER, BORDER_WIDTH), GetColor(GuiGetStyle(SLIDER, BORDER + (state*3))), GetColor(GuiGetStyle(SLIDER, (state != STATE_DISABLED)? BASE_COLOR_NORMAL : BASE_COLOR_DISABLED))); + + // Draw slider internal bar (depends on state) + if (state == STATE_NORMAL) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BASE_COLOR_PRESSED))); + else if (state == STATE_FOCUSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_FOCUSED))); + else if (state == STATE_PRESSED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_PRESSED))); + else if (state == STATE_DISABLED) GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, TEXT_COLOR_DISABLED))); + + // Draw left/right text if provided + if (textLeft != NULL) + { + Rectangle textBounds = { 0 }; + textBounds.width = (float)GuiGetTextWidth(textLeft); + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = bounds.x - textBounds.width - GuiGetStyle(SLIDER, TEXT_PADDING); + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + + GuiDrawText(textLeft, textBounds, TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + } + + if (textRight != NULL) + { + Rectangle textBounds = { 0 }; + textBounds.width = (float)GuiGetTextWidth(textRight); + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = bounds.x + bounds.width + GuiGetStyle(SLIDER, TEXT_PADDING); + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + + GuiDrawText(textRight, textBounds, TEXT_ALIGN_LEFT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + } + //-------------------------------------------------------------------- + + return result; +} + +// Slider Bar control extended, returns selected value +int GuiSliderBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) +{ + int result = 0; + int preSliderWidth = GuiGetStyle(SLIDER, SLIDER_WIDTH); + GuiSetStyle(SLIDER, SLIDER_WIDTH, 0); + result = GuiSlider(bounds, textLeft, textRight, value, minValue, maxValue); + GuiSetStyle(SLIDER, SLIDER_WIDTH, preSliderWidth); + + return result; +} + +// Progress Bar control extended, shows current progress value +int GuiProgressBar(Rectangle bounds, const char *textLeft, const char *textRight, float *value, float minValue, float maxValue) +{ + int result = 0; + GuiState state = guiState; + + float temp = (maxValue - minValue)/2.0f; + if (value == NULL) value = &temp; + + // Progress bar + Rectangle progress = { bounds.x + GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), + bounds.y + GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) + GuiGetStyle(PROGRESSBAR, PROGRESS_PADDING), 0, + bounds.height - GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - 2*GuiGetStyle(PROGRESSBAR, PROGRESS_PADDING) -1 }; + + // Update control + //-------------------------------------------------------------------- + if (*value > maxValue) *value = maxValue; + + // WARNING: Working with floats could lead to rounding issues + if ((state != STATE_DISABLED)) progress.width = ((float)*value/(maxValue - minValue))*(bounds.width - 2*GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)); + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + if (state == STATE_DISABLED) + { + GuiDrawRectangle(bounds, GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), GetColor(GuiGetStyle(PROGRESSBAR, BORDER + (state*3))), BLANK); + } + else + { + if (*value > minValue) + { + // Draw progress bar with colored border, more visual + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height - 2 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y + bounds.height - 1, (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); + } + else GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x, bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); + + if (*value >= maxValue) GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1}, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_FOCUSED))); + else + { + // Draw borders not yet reached by value + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - (int)progress.width - 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + (int)progress.width + (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y + bounds.height - 1, bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) - (int)progress.width - 1, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH) }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ bounds.x + bounds.width - (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.y, (float)GuiGetStyle(PROGRESSBAR, BORDER_WIDTH), bounds.height+GuiGetStyle(PROGRESSBAR, BORDER_WIDTH)-1 }, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BORDER_COLOR_NORMAL))); + } + + // Draw slider internal progress bar (depends on state) + GuiDrawRectangle(progress, 0, BLANK, GetColor(GuiGetStyle(PROGRESSBAR, BASE_COLOR_PRESSED))); + } + + // Draw left/right text if provided + if (textLeft != NULL) + { + Rectangle textBounds = { 0 }; + textBounds.width = (float)GuiGetTextWidth(textLeft); + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = bounds.x - textBounds.width - GuiGetStyle(PROGRESSBAR, TEXT_PADDING); + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + + GuiDrawText(textLeft, textBounds, TEXT_ALIGN_RIGHT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + } + + if (textRight != NULL) + { + Rectangle textBounds = { 0 }; + textBounds.width = (float)GuiGetTextWidth(textRight); + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + textBounds.x = bounds.x + bounds.width + GuiGetStyle(PROGRESSBAR, TEXT_PADDING); + textBounds.y = bounds.y + bounds.height/2 - GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + + GuiDrawText(textRight, textBounds, TEXT_ALIGN_LEFT, GetColor(GuiGetStyle(LABEL, TEXT + (state*3)))); + } + //-------------------------------------------------------------------- + + return result; +} + +// Status Bar control +int GuiStatusBar(Rectangle bounds, const char *text) +{ + int result = 0; + GuiState state = guiState; + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(bounds, GuiGetStyle(STATUSBAR, BORDER_WIDTH), GetColor(GuiGetStyle(STATUSBAR, BORDER + (state*3))), GetColor(GuiGetStyle(STATUSBAR, BASE + (state*3)))); + GuiDrawText(text, GetTextBounds(STATUSBAR, bounds), GuiGetStyle(STATUSBAR, TEXT_ALIGNMENT), GetColor(GuiGetStyle(STATUSBAR, TEXT + (state*3)))); + //-------------------------------------------------------------------- + + return result; +} + +// Dummy rectangle control, intended for placeholding +int GuiDummyRec(Rectangle bounds, const char *text) +{ + int result = 0; + GuiState state = guiState; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + // Check button state + if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else state = STATE_FOCUSED; + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(bounds, 0, BLANK, GetColor(GuiGetStyle(DEFAULT, (state != STATE_DISABLED)? BASE_COLOR_NORMAL : BASE_COLOR_DISABLED))); + GuiDrawText(text, GetTextBounds(DEFAULT, bounds), TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(BUTTON, (state != STATE_DISABLED)? TEXT_COLOR_NORMAL : TEXT_COLOR_DISABLED))); + //------------------------------------------------------------------ + + return result; +} + +// List View control +int GuiListView(Rectangle bounds, const char *text, int *scrollIndex, int *active) +{ + int result = 0; + int itemCount = 0; + const char **items = NULL; + + if (text != NULL) items = GuiTextSplit(text, ';', &itemCount, NULL); + + result = GuiListViewEx(bounds, items, itemCount, scrollIndex, active, NULL); + + return result; +} + +// List View control with extended parameters +int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollIndex, int *active, int *focus) +{ + int result = 0; + GuiState state = guiState; + + int itemFocused = (focus == NULL)? -1 : *focus; + int itemSelected = (active == NULL)? -1 : *active; + + // Check if scroll bar is needed + bool useScrollBar = false; + if ((GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING))*count > bounds.height) useScrollBar = true; + + // Define base item rectangle [0] + Rectangle itemBounds = { 0 }; + itemBounds.x = bounds.x + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING); + itemBounds.y = bounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) + GuiGetStyle(DEFAULT, BORDER_WIDTH); + itemBounds.width = bounds.width - 2*GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) - GuiGetStyle(DEFAULT, BORDER_WIDTH); + itemBounds.height = (float)GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT); + if (useScrollBar) itemBounds.width -= GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH); + + // Get items on the list + int visibleItems = (int)bounds.height/(GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); + if (visibleItems > count) visibleItems = count; + + int startIndex = (scrollIndex == NULL)? 0 : *scrollIndex; + if ((startIndex < 0) || (startIndex > (count - visibleItems))) startIndex = 0; + int endIndex = startIndex + visibleItems; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + // Check mouse inside list view + if (CheckCollisionPointRec(mousePoint, bounds)) + { + state = STATE_FOCUSED; + + // Check focused and selected item + for (int i = 0; i < visibleItems; i++) + { + if (CheckCollisionPointRec(mousePoint, itemBounds)) + { + itemFocused = startIndex + i; + if (GUI_BUTTON_PRESSED) + { + if (itemSelected == (startIndex + i)) itemSelected = -1; + else itemSelected = startIndex + i; + } + break; + } + + // Update item rectangle y position for next item + itemBounds.y += (GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); + } + + if (useScrollBar) + { + float scrollDelta = GUI_SCROLL_DELTA; + startIndex -= (int)scrollDelta; + + if (startIndex < 0) startIndex = 0; + else if (startIndex > (count - visibleItems)) startIndex = count - visibleItems; + + endIndex = startIndex + visibleItems; + if (endIndex > count) endIndex = count; + } + } + else itemFocused = -1; + + // Reset item rectangle y to [0] + itemBounds.y = bounds.y + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING) + GuiGetStyle(DEFAULT, BORDER_WIDTH); + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(bounds, GuiGetStyle(LISTVIEW, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + state*3)), GetColor(GuiGetStyle(DEFAULT, BACKGROUND_COLOR))); // Draw background + + // Draw visible items + for (int i = 0; ((i < visibleItems) && (text != NULL)); i++) + { + if (GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_NORMAL)) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_NORMAL)), BLANK); + + if (state == STATE_DISABLED) + { + if ((startIndex + i) == itemSelected) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_DISABLED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_DISABLED))); + + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); + } + else + { + if (((startIndex + i) == itemSelected) && (active != NULL)) + { + // Draw item selected + GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_PRESSED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); + } + else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: Items focused, despite not returned + { + // Draw item focused + GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_FOCUSED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); + } + else + { + // Draw item normal (no rectangle) + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); + } + } + + // Update item rectangle y position for next item + itemBounds.y += (GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING)); + } + + if (useScrollBar) + { + Rectangle scrollBarBounds = { + bounds.x + bounds.width - GuiGetStyle(LISTVIEW, BORDER_WIDTH) - GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH), + bounds.y + GuiGetStyle(LISTVIEW, BORDER_WIDTH), (float)GuiGetStyle(LISTVIEW, SCROLLBAR_WIDTH), + bounds.height - 2*GuiGetStyle(DEFAULT, BORDER_WIDTH) + }; + + // Calculate percentage of visible items and apply same percentage to scrollbar + float percentVisible = (float)(endIndex - startIndex)/count; + float sliderSize = bounds.height*percentVisible; + + int prevSliderSize = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); // Save default slider size + int prevScrollSpeed = GuiGetStyle(SCROLLBAR, SCROLL_SPEED); // Save default scroll speed + GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, (int)sliderSize); // Change slider size + GuiSetStyle(SCROLLBAR, SCROLL_SPEED, count - visibleItems); // Change scroll speed + + startIndex = GuiScrollBar(scrollBarBounds, startIndex, 0, count - visibleItems); + + GuiSetStyle(SCROLLBAR, SCROLL_SPEED, prevScrollSpeed); // Reset scroll speed to default + GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, prevSliderSize); // Reset slider size to default + } + //-------------------------------------------------------------------- + + if (active != NULL) *active = itemSelected; + if (focus != NULL) *focus = itemFocused; + if (scrollIndex != NULL) *scrollIndex = startIndex; + + return result; +} + +// Color Panel control - Color (RGBA) variant +int GuiColorPanel(Rectangle bounds, const char *text, Color *color) +{ + int result = 0; + + Vector3 vcolor = { (float)color->r/255.0f, (float)color->g/255.0f, (float)color->b/255.0f }; + Vector3 hsv = ConvertRGBtoHSV(vcolor); + Vector3 prevHsv = hsv; // workaround to see if GuiColorPanelHSV modifies the hsv + + GuiColorPanelHSV(bounds, text, &hsv); + + // Check if the hsv was changed, only then change the color + // This is required, because the Color->HSV->Color conversion has precision errors + // Thus the assignment from HSV to Color should only be made, if the HSV has a new user-entered value + // Otherwise GuiColorPanel would often modify it's color without user input + // TODO: GuiColorPanelHSV could return 1 if the slider was dragged, to simplify this check + if (hsv.x != prevHsv.x || hsv.y != prevHsv.y || hsv.z != prevHsv.z) + { + Vector3 rgb = ConvertHSVtoRGB(hsv); + + // NOTE: Vector3ToColor() only available on raylib 1.8.1 + *color = RAYGUI_CLITERAL(Color){ (unsigned char)(255.0f*rgb.x), + (unsigned char)(255.0f*rgb.y), + (unsigned char)(255.0f*rgb.z), + color->a }; + } + return result; +} + +// Color Bar Alpha control +// NOTE: Returns alpha value normalized [0..1] +int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) +{ + #if !defined(RAYGUI_COLORBARALPHA_CHECKED_SIZE) + #define RAYGUI_COLORBARALPHA_CHECKED_SIZE 10 + #endif + + int result = 0; + GuiState state = guiState; + Rectangle selector = { (float)bounds.x + (*alpha)*bounds.width - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT)/2, + (float)bounds.y - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW), + (float)GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT), + (float)bounds.height + GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW)*2 }; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds + { + if (GUI_BUTTON_DOWN) + { + if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) + { + state = STATE_PRESSED; + + *alpha = (mousePoint.x - bounds.x)/bounds.width; + if (*alpha <= 0.0f) *alpha = 0.0f; + if (*alpha >= 1.0f) *alpha = 1.0f; + } + } + else + { + guiControlExclusiveMode = false; + guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; + } + } + else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) + { + if (GUI_BUTTON_DOWN) + { + state = STATE_PRESSED; + guiControlExclusiveMode = true; + guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts + + *alpha = (mousePoint.x - bounds.x)/bounds.width; + if (*alpha <= 0.0f) *alpha = 0.0f; + if (*alpha >= 1.0f) *alpha = 1.0f; + //selector.x = bounds.x + (int)(((alpha - 0)/(100 - 0))*(bounds.width - 2*GuiGetStyle(SLIDER, BORDER_WIDTH))) - selector.width/2; + } + else state = STATE_FOCUSED; + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + // Draw alpha bar: checked background + if (state != STATE_DISABLED) + { + int checksX = (int)bounds.width/RAYGUI_COLORBARALPHA_CHECKED_SIZE; + int checksY = (int)bounds.height/RAYGUI_COLORBARALPHA_CHECKED_SIZE; + + for (int x = 0; x < checksX; x++) + { + for (int y = 0; y < checksY; y++) + { + Rectangle check = { bounds.x + x*RAYGUI_COLORBARALPHA_CHECKED_SIZE, bounds.y + y*RAYGUI_COLORBARALPHA_CHECKED_SIZE, RAYGUI_COLORBARALPHA_CHECKED_SIZE, RAYGUI_COLORBARALPHA_CHECKED_SIZE }; + GuiDrawRectangle(check, 0, BLANK, ((x + y)%2)? Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), 0.4f) : Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.4f)); + } + } + + DrawRectangleGradientEx(bounds, RAYGUI_CLITERAL(Color){ 255, 255, 255, 0 }, RAYGUI_CLITERAL(Color){ 255, 255, 255, 0 }, Fade(RAYGUI_CLITERAL(Color){ 0, 0, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 0, 255 }, guiAlpha)); + } + else DrawRectangleGradientEx(bounds, Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha)); + + GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); + + // Draw alpha bar: selector + GuiDrawRectangle(selector, 0, BLANK, GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3))); + //-------------------------------------------------------------------- + + return result; +} + +// Color Bar Hue control +// Returns hue value normalized [0..1] +// NOTE: Other similar bars (for reference): +// Color GuiColorBarSat() [WHITE->color] +// Color GuiColorBarValue() [BLACK->color], HSV/HSL +// float GuiColorBarLuminance() [BLACK->WHITE] +int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) +{ + int result = 0; + GuiState state = guiState; + Rectangle selector = { (float)bounds.x - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW), (float)bounds.y + (*hue)/360.0f*bounds.height - GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT)/2, (float)bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW)*2, (float)GuiGetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT) }; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds + { + if (GUI_BUTTON_DOWN) + { + if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) + { + state = STATE_PRESSED; + + *hue = (mousePoint.y - bounds.y)*360/bounds.height; + if (*hue <= 0.0f) *hue = 0.0f; + if (*hue >= 359.0f) *hue = 359.0f; + } + } + else + { + guiControlExclusiveMode = false; + guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; + } + } + else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) + { + if (GUI_BUTTON_DOWN) + { + state = STATE_PRESSED; + guiControlExclusiveMode = true; + guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts + + *hue = (mousePoint.y - bounds.y)*360/bounds.height; + if (*hue <= 0.0f) *hue = 0.0f; + if (*hue >= 359.0f) *hue = 359.0f; + + } + else state = STATE_FOCUSED; + + /*if (GUI_KEY_DOWN(KEY_UP)) + { + hue -= 2.0f; + if (hue <= 0.0f) hue = 0.0f; + } + else if (GUI_KEY_DOWN(KEY_DOWN)) + { + hue += 2.0f; + if (hue >= 360.0f) hue = 360.0f; + }*/ + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + if (state != STATE_DISABLED) + { + // Draw hue bar:color bars + // TODO: Use directly DrawRectangleGradientEx(bounds, color1, color2, color2, color1); + DrawRectangleGradientV((int)bounds.x, (int)(bounds.y), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 255, 0, 255 }, guiAlpha)); + DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + bounds.height/6), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 255, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 0, 255 }, guiAlpha)); + DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 2*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 0, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 255, 255 }, guiAlpha)); + DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 3*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 255, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 255, 255 }, guiAlpha)); + DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 4*(bounds.height/6)), (int)bounds.width, (int)ceilf(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 0, 0, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 255, 255 }, guiAlpha)); + DrawRectangleGradientV((int)bounds.x, (int)(bounds.y + 5*(bounds.height/6)), (int)bounds.width, (int)(bounds.height/6), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 255, 255 }, guiAlpha), Fade(RAYGUI_CLITERAL(Color){ 255, 0, 0, 255 }, guiAlpha)); + } + else DrawRectangleGradientV((int)bounds.x, (int)bounds.y, (int)bounds.width, (int)bounds.height, Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), guiAlpha), Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), guiAlpha)); + + GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); + + // Draw hue bar: selector + GuiDrawRectangle(selector, 0, BLANK, GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3))); + //-------------------------------------------------------------------- + + return result; +} + +// Color Picker control +// NOTE: It's divided in multiple controls: +// Color GuiColorPanel(Rectangle bounds, Color color) +// float GuiColorBarAlpha(Rectangle bounds, float alpha) +// float GuiColorBarHue(Rectangle bounds, float value) +// NOTE: bounds define GuiColorPanel() size +// NOTE: this picker converts RGB to HSV, which can cause the Hue control to jump. If you have this problem, consider using the HSV variant instead +int GuiColorPicker(Rectangle bounds, const char *text, Color *color) +{ + int result = 0; + + Color temp = { 200, 0, 0, 255 }; + if (color == NULL) color = &temp; + + GuiColorPanel(bounds, NULL, color); + + Rectangle boundsHue = { (float)bounds.x + bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_PADDING), (float)bounds.y, (float)GuiGetStyle(COLORPICKER, HUEBAR_WIDTH), (float)bounds.height }; + //Rectangle boundsAlpha = { bounds.x, bounds.y + bounds.height + GuiGetStyle(COLORPICKER, BARS_PADDING), bounds.width, GuiGetStyle(COLORPICKER, BARS_THICK) }; + + // NOTE: this conversion can cause low hue-resolution, if the r, g and b value are very similar, which causes the hue bar to shift around when only the GuiColorPanel is used + Vector3 hsv = ConvertRGBtoHSV(RAYGUI_CLITERAL(Vector3){ (*color).r/255.0f, (*color).g/255.0f, (*color).b/255.0f }); + + GuiColorBarHue(boundsHue, NULL, &hsv.x); + + //color.a = (unsigned char)(GuiColorBarAlpha(boundsAlpha, (float)color.a/255.0f)*255.0f); + Vector3 rgb = ConvertHSVtoRGB(hsv); + + *color = RAYGUI_CLITERAL(Color){ (unsigned char)roundf(rgb.x*255.0f), (unsigned char)roundf(rgb.y*255.0f), (unsigned char)roundf(rgb.z*255.0f), (*color).a }; + + return result; +} + +// Color Picker control that avoids conversion to RGB and back to HSV on each call, thus avoiding jittering +// The user can call ConvertHSVtoRGB() to convert *colorHsv value to RGB +// NOTE: It's divided in multiple controls: +// int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) +// int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) +// float GuiColorBarHue(Rectangle bounds, float value) +// NOTE: bounds define GuiColorPanelHSV() size +int GuiColorPickerHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) +{ + int result = 0; + + Vector3 tempHsv = { 0 }; + + if (colorHsv == NULL) + { + const Vector3 tempColor = { 200.0f/255.0f, 0.0f, 0.0f }; + tempHsv = ConvertRGBtoHSV(tempColor); + colorHsv = &tempHsv; + } + + GuiColorPanelHSV(bounds, NULL, colorHsv); + + const Rectangle boundsHue = { (float)bounds.x + bounds.width + GuiGetStyle(COLORPICKER, HUEBAR_PADDING), (float)bounds.y, (float)GuiGetStyle(COLORPICKER, HUEBAR_WIDTH), (float)bounds.height }; + + GuiColorBarHue(boundsHue, NULL, &colorHsv->x); + + return result; +} + +// Color Panel control - HSV variant +int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) +{ + int result = 0; + GuiState state = guiState; + Vector2 pickerSelector = { 0 }; + + const Color colWhite = { 255, 255, 255, 255 }; + const Color colBlack = { 0, 0, 0, 255 }; + + pickerSelector.x = bounds.x + (float)colorHsv->y*bounds.width; // HSV: Saturation + pickerSelector.y = bounds.y + (1.0f - (float)colorHsv->z)*bounds.height; // HSV: Value + + Vector3 maxHue = { colorHsv->x, 1.0f, 1.0f }; + Vector3 rgbHue = ConvertHSVtoRGB(maxHue); + Color maxHueCol = { (unsigned char)(255.0f*rgbHue.x), + (unsigned char)(255.0f*rgbHue.y), + (unsigned char)(255.0f*rgbHue.z), 255 }; + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds + { + if (GUI_BUTTON_DOWN) + { + if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) + { + pickerSelector = mousePoint; + + if (pickerSelector.x < bounds.x) pickerSelector.x = bounds.x; + if (pickerSelector.x > bounds.x + bounds.width) pickerSelector.x = bounds.x + bounds.width; + if (pickerSelector.y < bounds.y) pickerSelector.y = bounds.y; + if (pickerSelector.y > bounds.y + bounds.height) pickerSelector.y = bounds.y + bounds.height; + + // Calculate color from picker + Vector2 colorPick = { pickerSelector.x - bounds.x, pickerSelector.y - bounds.y }; + + colorPick.x /= (float)bounds.width; // Get normalized value on x + colorPick.y /= (float)bounds.height; // Get normalized value on y + + colorHsv->y = colorPick.x; + colorHsv->z = 1.0f - colorPick.y; + + } + } + else + { + guiControlExclusiveMode = false; + guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; + } + } + else if (CheckCollisionPointRec(mousePoint, bounds)) + { + if (GUI_BUTTON_DOWN) + { + state = STATE_PRESSED; + guiControlExclusiveMode = true; + guiControlExclusiveRec = bounds; + pickerSelector = mousePoint; + + // Calculate color from picker + Vector2 colorPick = { pickerSelector.x - bounds.x, pickerSelector.y - bounds.y }; + + colorPick.x /= (float)bounds.width; // Get normalized value on x + colorPick.y /= (float)bounds.height; // Get normalized value on y + + colorHsv->y = colorPick.x; + colorHsv->z = 1.0f - colorPick.y; + } + else state = STATE_FOCUSED; + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + if (state != STATE_DISABLED) + { + DrawRectangleGradientEx(bounds, Fade(colWhite, guiAlpha), Fade(colWhite, guiAlpha), Fade(maxHueCol, guiAlpha), Fade(maxHueCol, guiAlpha)); + DrawRectangleGradientEx(bounds, Fade(colBlack, 0), Fade(colBlack, guiAlpha), Fade(colBlack, guiAlpha), Fade(colBlack, 0)); + + // Draw color picker: selector + Rectangle selector = { pickerSelector.x - GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE)/2, pickerSelector.y - GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE)/2, (float)GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE), (float)GuiGetStyle(COLORPICKER, COLOR_SELECTOR_SIZE) }; + GuiDrawRectangle(selector, 0, BLANK, colWhite); + } + else + { + DrawRectangleGradientEx(bounds, Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BASE_COLOR_DISABLED)), 0.1f), guiAlpha), Fade(Fade(colBlack, 0.6f), guiAlpha), Fade(Fade(colBlack, 0.6f), guiAlpha), Fade(Fade(GetColor(GuiGetStyle(COLORPICKER, BORDER_COLOR_DISABLED)), 0.6f), guiAlpha)); + } + + GuiDrawRectangle(bounds, GuiGetStyle(COLORPICKER, BORDER_WIDTH), GetColor(GuiGetStyle(COLORPICKER, BORDER + state*3)), BLANK); + //-------------------------------------------------------------------- + + return result; +} + +// Message Box control +int GuiMessageBox(Rectangle bounds, const char *title, const char *message, const char *buttons) +{ + #if !defined(RAYGUI_MESSAGEBOX_BUTTON_HEIGHT) + #define RAYGUI_MESSAGEBOX_BUTTON_HEIGHT 24 + #endif + #if !defined(RAYGUI_MESSAGEBOX_BUTTON_PADDING) + #define RAYGUI_MESSAGEBOX_BUTTON_PADDING 12 + #endif + + int result = -1; // Returns clicked button from buttons list, 0 refers to closed window button + + int buttonCount = 0; + const char **buttonsText = GuiTextSplit(buttons, ';', &buttonCount, NULL); + Rectangle buttonBounds = { 0 }; + buttonBounds.x = bounds.x + RAYGUI_MESSAGEBOX_BUTTON_PADDING; + buttonBounds.y = bounds.y + bounds.height - RAYGUI_MESSAGEBOX_BUTTON_HEIGHT - RAYGUI_MESSAGEBOX_BUTTON_PADDING; + buttonBounds.width = (bounds.width - RAYGUI_MESSAGEBOX_BUTTON_PADDING*(buttonCount + 1))/buttonCount; + buttonBounds.height = RAYGUI_MESSAGEBOX_BUTTON_HEIGHT; + + //int textWidth = GuiGetTextWidth(message) + 2; + + Rectangle textBounds = { 0 }; + textBounds.x = bounds.x + RAYGUI_MESSAGEBOX_BUTTON_PADDING; + textBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + RAYGUI_MESSAGEBOX_BUTTON_PADDING; + textBounds.width = bounds.width - RAYGUI_MESSAGEBOX_BUTTON_PADDING*2; + textBounds.height = bounds.height - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - 3*RAYGUI_MESSAGEBOX_BUTTON_PADDING - RAYGUI_MESSAGEBOX_BUTTON_HEIGHT; + + // Draw control + //-------------------------------------------------------------------- + if (GuiWindowBox(bounds, title)) result = 0; + + int prevTextAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); + GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + GuiLabel(textBounds, message); + GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); + + prevTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + + for (int i = 0; i < buttonCount; i++) + { + if (GuiButton(buttonBounds, buttonsText[i])) result = i + 1; + buttonBounds.x += (buttonBounds.width + RAYGUI_MESSAGEBOX_BUTTON_PADDING); + } + + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, prevTextAlignment); + //-------------------------------------------------------------------- + + return result; +} + +// Text Input Box control, ask for text +int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, const char *buttons, char *text, int textMaxSize, bool *secretViewActive) +{ + #if !defined(RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT) + #define RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT 24 + #endif + #if !defined(RAYGUI_TEXTINPUTBOX_BUTTON_PADDING) + #define RAYGUI_TEXTINPUTBOX_BUTTON_PADDING 12 + #endif + #if !defined(RAYGUI_TEXTINPUTBOX_HEIGHT) + #define RAYGUI_TEXTINPUTBOX_HEIGHT 26 + #endif + + // Used to enable text edit mode + // WARNING: No more than one GuiTextInputBox() should be open at the same time + static bool textEditMode = false; + + int result = -1; + + int buttonCount = 0; + const char **buttonsText = GuiTextSplit(buttons, ';', &buttonCount, NULL); + Rectangle buttonBounds = { 0 }; + buttonBounds.x = bounds.x + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; + buttonBounds.y = bounds.y + bounds.height - RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; + buttonBounds.width = (bounds.width - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING*(buttonCount + 1))/buttonCount; + buttonBounds.height = RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT; + + int messageInputHeight = (int)bounds.height - RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - GuiGetStyle(STATUSBAR, BORDER_WIDTH) - RAYGUI_TEXTINPUTBOX_BUTTON_HEIGHT - 2*RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; + + Rectangle textBounds = { 0 }; + if (message != NULL) + { + int textSize = GuiGetTextWidth(message) + 2; + + textBounds.x = bounds.x + bounds.width/2 - textSize/2; + textBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT + messageInputHeight/4 - (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/2; + textBounds.width = (float)textSize; + textBounds.height = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + } + + Rectangle textBoxBounds = { 0 }; + textBoxBounds.x = bounds.x + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; + textBoxBounds.y = bounds.y + RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT - RAYGUI_TEXTINPUTBOX_HEIGHT/2; + if (message == NULL) textBoxBounds.y = bounds.y + 24 + RAYGUI_TEXTINPUTBOX_BUTTON_PADDING; + else textBoxBounds.y += (messageInputHeight/2 + messageInputHeight/4); + textBoxBounds.width = bounds.width - RAYGUI_TEXTINPUTBOX_BUTTON_PADDING*2; + textBoxBounds.height = RAYGUI_TEXTINPUTBOX_HEIGHT; + + // Draw control + //-------------------------------------------------------------------- + if (GuiWindowBox(bounds, title)) result = 0; + + // Draw message if available + if (message != NULL) + { + int prevTextAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); + GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + GuiLabel(textBounds, message); + GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); + } + + int prevTextBoxAlignment = GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT); + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + + if (secretViewActive != NULL) + { + static char stars[] = "****************"; + if (GuiTextBox(RAYGUI_CLITERAL(Rectangle){ textBoxBounds.x, textBoxBounds.y, textBoxBounds.width - 4 - RAYGUI_TEXTINPUTBOX_HEIGHT, textBoxBounds.height }, + ((*secretViewActive == 1) || textEditMode)? text : stars, textMaxSize, textEditMode)) textEditMode = !textEditMode; + + GuiToggle(RAYGUI_CLITERAL(Rectangle){ textBoxBounds.x + textBoxBounds.width - RAYGUI_TEXTINPUTBOX_HEIGHT, textBoxBounds.y, RAYGUI_TEXTINPUTBOX_HEIGHT, RAYGUI_TEXTINPUTBOX_HEIGHT }, (*secretViewActive == 1)? "#44#" : "#45#", secretViewActive); + } + else + { + if (GuiTextBox(textBoxBounds, text, textMaxSize, textEditMode)) textEditMode = !textEditMode; + } + + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, prevTextBoxAlignment); + + int prevBtnTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + + for (int i = 0; i < buttonCount; i++) + { + if (GuiButton(buttonBounds, buttonsText[i])) result = i + 1; + buttonBounds.x += (buttonBounds.width + RAYGUI_MESSAGEBOX_BUTTON_PADDING); + } + + if (result >= 0) textEditMode = false; + + GuiSetStyle(BUTTON, TEXT_ALIGNMENT, prevBtnTextAlignment); + //-------------------------------------------------------------------- + + return result; // Result is the pressed button index +} + +// Grid control +// NOTE: Returns grid mouse-hover selected cell +// About drawing lines at subpixel spacing, simple put, not easy solution: +// REF: https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster +int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell) +{ + // Grid lines alpha amount + #if !defined(RAYGUI_GRID_ALPHA) + #define RAYGUI_GRID_ALPHA 0.15f + #endif + + int result = 0; + GuiState state = guiState; + + Vector2 mousePoint = GUI_POINTER_POSITION; + Vector2 currentMouseCell = { -1, -1 }; + + float spaceWidth = spacing/(float)subdivs; + int linesV = (int)(bounds.width/spaceWidth) + 1; + int linesH = (int)(bounds.height/spaceWidth) + 1; + + int color = GuiGetStyle(DEFAULT, LINE_COLOR); + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) + { + if (CheckCollisionPointRec(mousePoint, bounds)) + { + // NOTE: Cell values must be the upper left of the cell the mouse is in + currentMouseCell.x = floorf((mousePoint.x - bounds.x)/spacing); + currentMouseCell.y = floorf((mousePoint.y - bounds.y)/spacing); + } + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + if (state == STATE_DISABLED) color = GuiGetStyle(DEFAULT, BORDER_COLOR_DISABLED); + + if (subdivs > 0) + { + // Draw vertical grid lines + for (int i = 0; i < linesV; i++) + { + Rectangle lineV = { bounds.x + spacing*i/subdivs, bounds.y, 1, bounds.height + 1 }; + GuiDrawRectangle(lineV, 0, BLANK, ((i%subdivs) == 0)? GuiFade(GetColor(color), RAYGUI_GRID_ALPHA*4) : GuiFade(GetColor(color), RAYGUI_GRID_ALPHA)); + } + + // Draw horizontal grid lines + for (int i = 0; i < linesH; i++) + { + Rectangle lineH = { bounds.x, bounds.y + spacing*i/subdivs, bounds.width + 1, 1 }; + GuiDrawRectangle(lineH, 0, BLANK, ((i%subdivs) == 0)? GuiFade(GetColor(color), RAYGUI_GRID_ALPHA*4) : GuiFade(GetColor(color), RAYGUI_GRID_ALPHA)); + } + } + + if (mouseCell != NULL) *mouseCell = currentMouseCell; + return result; +} + +//---------------------------------------------------------------------------------- +// Tooltip management functions +// NOTE: Tooltips requires some global variables: tooltipPtr +//---------------------------------------------------------------------------------- +// Enable gui tooltips (global state) +void GuiEnableTooltip(void) { guiTooltip = true; } + +// Disable gui tooltips (global state) +void GuiDisableTooltip(void) { guiTooltip = false; } + +// Set tooltip string +void GuiSetTooltip(const char *tooltip) { guiTooltipPtr = tooltip; } + +//---------------------------------------------------------------------------------- +// Styles loading functions +//---------------------------------------------------------------------------------- + +// Load raygui style file (.rgs) +// NOTE: By default a binary file is expected, that file could contain a custom font, +// in that case, custom font image atlas is GRAY+ALPHA and pixel data can be compressed (DEFLATE) +void GuiLoadStyle(const char *fileName) +{ + #define MAX_LINE_BUFFER_SIZE 256 + + bool tryBinary = false; + if (!guiStyleLoaded) GuiLoadStyleDefault(); + + // Try reading the files as text file first + FILE *rgsFile = fopen(fileName, "rt"); + + if (rgsFile != NULL) + { + char buffer[MAX_LINE_BUFFER_SIZE] = { 0 }; + fgets(buffer, MAX_LINE_BUFFER_SIZE, rgsFile); + + if (buffer[0] == '#') + { + int controlId = 0; + int propertyId = 0; + unsigned int propertyValue = 0; + + while (!feof(rgsFile)) + { + switch (buffer[0]) + { + case 'p': + { + // Style property: p + + sscanf(buffer, "p %d %d 0x%x", &controlId, &propertyId, &propertyValue); + GuiSetStyle(controlId, propertyId, (int)propertyValue); + + } break; + case 'f': + { + // Style font: f + + int fontSize = 0; + char charmapFileName[256] = { 0 }; + char fontFileName[256] = { 0 }; + sscanf(buffer, "f %d %s %[^\r\n]s", &fontSize, charmapFileName, fontFileName); + + Font font = { 0 }; + int *codepoints = NULL; + int codepointCount = 0; + + if (charmapFileName[0] != '0') + { + // Load text data from file + // NOTE: Expected an UTF-8 array of codepoints, no separation + char *textData = LoadFileText(TextFormat("%s/%s", GetDirectoryPath(fileName), charmapFileName)); + codepoints = LoadCodepoints(textData, &codepointCount); + UnloadFileText(textData); + } + + if (fontFileName[0] != '\0') + { + // In case a font is already loaded and it is not default internal font, unload it + if (font.texture.id != GetFontDefault().texture.id) UnloadTexture(font.texture); + + if (codepointCount > 0) font = LoadFontEx(TextFormat("%s/%s", GetDirectoryPath(fileName), fontFileName), fontSize, codepoints, codepointCount); + else font = LoadFontEx(TextFormat("%s/%s", GetDirectoryPath(fileName), fontFileName), fontSize, NULL, 0); // Default to 95 standard codepoints + } + + // If font texture not properly loaded, revert to default font and size/spacing + if (font.texture.id == 0) + { + font = GetFontDefault(); + GuiSetStyle(DEFAULT, TEXT_SIZE, 10); + GuiSetStyle(DEFAULT, TEXT_SPACING, 1); + } + + UnloadCodepoints(codepoints); + + if ((font.texture.id > 0) && (font.glyphCount > 0)) GuiSetFont(font); + + } break; + default: break; + } + + fgets(buffer, MAX_LINE_BUFFER_SIZE, rgsFile); + } + } + else tryBinary = true; + + fclose(rgsFile); + } + + if (tryBinary) + { + rgsFile = fopen(fileName, "rb"); + + if (rgsFile != NULL) + { + fseek(rgsFile, 0, SEEK_END); + int fileDataSize = ftell(rgsFile); + fseek(rgsFile, 0, SEEK_SET); + + if (fileDataSize > 0) + { + unsigned char *fileData = (unsigned char *)RAYGUI_CALLOC(fileDataSize, sizeof(unsigned char)); + if (fileData != NULL) + { + fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); + + GuiLoadStyleFromMemory(fileData, fileDataSize); + + RAYGUI_FREE(fileData); + } + } + + fclose(rgsFile); + } + } +} + +// Load style default over global style +void GuiLoadStyleDefault(void) +{ + // Setting this flag first to avoid cyclic function calls + // when calling GuiSetStyle() and GuiGetStyle() + guiStyleLoaded = true; + + // Initialize default LIGHT style property values + // WARNING: Default value are applied to all controls on set but + // they can be overwritten later on for every custom control + GuiSetStyle(DEFAULT, BORDER_COLOR_NORMAL, 0x838383ff); + GuiSetStyle(DEFAULT, BASE_COLOR_NORMAL, 0xc9c9c9ff); + GuiSetStyle(DEFAULT, TEXT_COLOR_NORMAL, 0x686868ff); + GuiSetStyle(DEFAULT, BORDER_COLOR_FOCUSED, 0x5bb2d9ff); + GuiSetStyle(DEFAULT, BASE_COLOR_FOCUSED, 0xc9effeff); + GuiSetStyle(DEFAULT, TEXT_COLOR_FOCUSED, 0x6c9bbcff); + GuiSetStyle(DEFAULT, BORDER_COLOR_PRESSED, 0x0492c7ff); + GuiSetStyle(DEFAULT, BASE_COLOR_PRESSED, 0x97e8ffff); + GuiSetStyle(DEFAULT, TEXT_COLOR_PRESSED, 0x368bafff); + GuiSetStyle(DEFAULT, BORDER_COLOR_DISABLED, 0xb5c1c2ff); + GuiSetStyle(DEFAULT, BASE_COLOR_DISABLED, 0xe6e9e9ff); + GuiSetStyle(DEFAULT, TEXT_COLOR_DISABLED, 0xaeb7b8ff); + GuiSetStyle(DEFAULT, BORDER_WIDTH, 1); + GuiSetStyle(DEFAULT, TEXT_PADDING, 0); + GuiSetStyle(DEFAULT, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + + // Initialize default extended property values + // NOTE: By default, extended property values are initialized to 0 + GuiSetStyle(DEFAULT, TEXT_SIZE, 10); // DEFAULT, shared by all controls + GuiSetStyle(DEFAULT, TEXT_SPACING, 1); // DEFAULT, shared by all controls + GuiSetStyle(DEFAULT, LINE_COLOR, 0x90abb5ff); // DEFAULT specific property + GuiSetStyle(DEFAULT, BACKGROUND_COLOR, 0xf5f5f5ff); // DEFAULT specific property + GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 5); // DEFAULT, pixels between lines, from bottom of first line to top of second + GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); // DEFAULT, text aligned vertically to middle of text-bounds + + // Initialize control-specific property values + // NOTE: Those properties are in default list but require specific values by control type + GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + GuiSetStyle(BUTTON, BORDER_WIDTH, 2); + GuiSetStyle(SLIDER, TEXT_PADDING, 4); + GuiSetStyle(PROGRESSBAR, TEXT_PADDING, 4); + GuiSetStyle(CHECKBOX, TEXT_PADDING, 4); + GuiSetStyle(CHECKBOX, TEXT_ALIGNMENT, TEXT_ALIGN_RIGHT); + GuiSetStyle(DROPDOWNBOX, TEXT_PADDING, 0); + GuiSetStyle(DROPDOWNBOX, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + GuiSetStyle(TEXTBOX, TEXT_PADDING, 4); + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + GuiSetStyle(VALUEBOX, TEXT_PADDING, 0); + GuiSetStyle(VALUEBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + GuiSetStyle(STATUSBAR, TEXT_PADDING, 8); + GuiSetStyle(STATUSBAR, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + + // Initialize extended property values + // NOTE: By default, extended property values are initialized to 0 + GuiSetStyle(TOGGLE, GROUP_PADDING, 2); + GuiSetStyle(SLIDER, SLIDER_WIDTH, 16); + GuiSetStyle(SLIDER, SLIDER_PADDING, 1); + GuiSetStyle(PROGRESSBAR, PROGRESS_PADDING, 1); + GuiSetStyle(CHECKBOX, CHECK_PADDING, 1); + GuiSetStyle(COMBOBOX, COMBO_BUTTON_WIDTH, 32); + GuiSetStyle(COMBOBOX, COMBO_BUTTON_SPACING, 2); + GuiSetStyle(DROPDOWNBOX, ARROW_PADDING, 16); + GuiSetStyle(DROPDOWNBOX, DROPDOWN_ITEMS_SPACING, 2); + GuiSetStyle(VALUEBOX, SPINNER_BUTTON_WIDTH, 24); + GuiSetStyle(VALUEBOX, SPINNER_BUTTON_SPACING, 2); + GuiSetStyle(SCROLLBAR, BORDER_WIDTH, 0); + GuiSetStyle(SCROLLBAR, ARROWS_VISIBLE, 0); + GuiSetStyle(SCROLLBAR, ARROWS_SIZE, 6); + GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING, 0); + GuiSetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE, 16); + GuiSetStyle(SCROLLBAR, SCROLL_PADDING, 0); + GuiSetStyle(SCROLLBAR, SCROLL_SPEED, 12); + GuiSetStyle(LISTVIEW, LIST_ITEMS_HEIGHT, 28); + GuiSetStyle(LISTVIEW, LIST_ITEMS_SPACING, 2); + GuiSetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH, 1); + GuiSetStyle(LISTVIEW, SCROLLBAR_WIDTH, 12); + GuiSetStyle(LISTVIEW, SCROLLBAR_SIDE, SCROLLBAR_RIGHT_SIDE); + GuiSetStyle(COLORPICKER, COLOR_SELECTOR_SIZE, 8); + GuiSetStyle(COLORPICKER, HUEBAR_WIDTH, 16); + GuiSetStyle(COLORPICKER, HUEBAR_PADDING, 8); + GuiSetStyle(COLORPICKER, HUEBAR_SELECTOR_HEIGHT, 8); + GuiSetStyle(COLORPICKER, HUEBAR_SELECTOR_OVERFLOW, 2); + + if (guiFont.texture.id != GetFontDefault().texture.id) + { + // Unload previous font texture + UnloadTexture(guiFont.texture); + RAYGUI_FREE(guiFont.recs); + RAYGUI_FREE(guiFont.glyphs); + guiFont.recs = NULL; + guiFont.glyphs = NULL; + + // Setup default raylib font + guiFont = GetFontDefault(); + + // NOTE: Default raylib font character 95 is a white square + Rectangle whiteChar = guiFont.recs[95]; + + // NOTE: Setting up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering + SetShapesTexture(guiFont.texture, RAYGUI_CLITERAL(Rectangle){ whiteChar.x + 1, whiteChar.y + 1, whiteChar.width - 2, whiteChar.height - 2 }); + } +} + +// Get text with icon id prepended +// NOTE: Useful to add icons by name id (enum) instead of +// a number that can change between ricon versions +const char *GuiIconText(int iconId, const char *text) +{ +#if defined(RAYGUI_NO_ICONS) + return NULL; +#else + static char buffer[1024] = { 0 }; + static char iconBuffer[16] = { 0 }; + + if (text != NULL) + { + memset(buffer, 0, 1024); + snprintf(buffer, 1024, "#%03i#", iconId); + + for (int i = 5; i < 1024; i++) + { + buffer[i] = text[i - 5]; + if (text[i - 5] == '\0') break; + } + + return buffer; + } + else + { + snprintf(iconBuffer, 16, "#%03i#", iconId); + + return iconBuffer; + } +#endif +} + +#if !defined(RAYGUI_NO_ICONS) +// Get full icons data pointer +unsigned int *GuiGetIcons(void) { return guiIconsPtr; } + +// Load raygui icons file (.rgi) +// NOTE: In case nameIds are required, they can be requested with loadIconsName, +// they are returned as a guiIconsName[iconCount][RAYGUI_ICON_MAX_NAME_LENGTH], +// WARNING: guiIconsName[]][] memory should be manually freed! +char **GuiLoadIcons(const char *fileName, bool loadIconsName) +{ + // Style File Structure (.rgi) + // ------------------------------------------------------ + // Offset | Size | Type | Description + // ------------------------------------------------------ + // 0 | 4 | char | Signature: "rGI " + // 4 | 2 | short | Version: 100 + // 6 | 2 | short | reserved + + // 8 | 2 | short | Num icons (N) + // 10 | 2 | short | Icons size (Options: 16, 32, 64) (S) + + // Icons name id (32 bytes per name id) + // foreach (icon) + // { + // 12+32*i | 32 | char | Icon NameId + // } + + // Icons data: One bit per pixel, stored as unsigned int array (depends on icon size) + // S*S pixels/32bit per unsigned int = K unsigned int per icon + // foreach (icon) + // { + // ... | K | unsigned int | Icon Data + // } + + FILE *rgiFile = fopen(fileName, "rb"); + + char **guiIconsName = NULL; + + if (rgiFile != NULL) + { + char signature[5] = { 0 }; + short version = 0; + short reserved = 0; + short iconCount = 0; + short iconSize = 0; + + fread(signature, 1, 4, rgiFile); + fread(&version, sizeof(short), 1, rgiFile); + fread(&reserved, sizeof(short), 1, rgiFile); + fread(&iconCount, sizeof(short), 1, rgiFile); + fread(&iconSize, sizeof(short), 1, rgiFile); + + if ((signature[0] == 'r') && + (signature[1] == 'G') && + (signature[2] == 'I') && + (signature[3] == ' ')) + { + if (loadIconsName) + { + guiIconsName = (char **)RAYGUI_CALLOC(iconCount, sizeof(char *)); + for (int i = 0; i < iconCount; i++) + { + guiIconsName[i] = (char *)RAYGUI_CALLOC(RAYGUI_ICON_MAX_NAME_LENGTH, sizeof(char)); + fread(guiIconsName[i], 1, RAYGUI_ICON_MAX_NAME_LENGTH, rgiFile); + } + } + else fseek(rgiFile, iconCount*RAYGUI_ICON_MAX_NAME_LENGTH, SEEK_CUR); + + // Read icons data directly over internal icons array + fread(guiIconsPtr, sizeof(unsigned int), (int)iconCount*((int)iconSize*(int)iconSize/32), rgiFile); + } + + fclose(rgiFile); + } + + return guiIconsName; +} + +// Load icons from memory +// WARNING: Binary files only +char **GuiLoadIconsFromMemory(const unsigned char *fileData, int dataSize, bool loadIconsName) +{ + unsigned char *fileDataPtr = (unsigned char *)fileData; + char **guiIconsName = NULL; + + char signature[5] = { 0 }; + short version = 0; + short reserved = 0; + short iconCount = 0; + short iconSize = 0; + + memcpy(signature, fileDataPtr, 4); + memcpy(&version, fileDataPtr + 4, sizeof(short)); + memcpy(&reserved, fileDataPtr + 4 + 2, sizeof(short)); + memcpy(&iconCount, fileDataPtr + 4 + 2 + 2, sizeof(short)); + memcpy(&iconSize, fileDataPtr + 4 + 2 + 2 + 2, sizeof(short)); + fileDataPtr += 12; + + if ((signature[0] == 'r') && + (signature[1] == 'G') && + (signature[2] == 'I') && + (signature[3] == ' ')) + { + if (loadIconsName) + { + guiIconsName = (char **)RAYGUI_CALLOC(iconCount, sizeof(char *)); + for (int i = 0; i < iconCount; i++) + { + guiIconsName[i] = (char *)RAYGUI_CALLOC(RAYGUI_ICON_MAX_NAME_LENGTH, sizeof(char)); + memcpy(guiIconsName[i], fileDataPtr, RAYGUI_ICON_MAX_NAME_LENGTH); + fileDataPtr += RAYGUI_ICON_MAX_NAME_LENGTH; + } + } + else + { + // Skip icon name data if not required + fileDataPtr += iconCount*RAYGUI_ICON_MAX_NAME_LENGTH; + } + + int iconDataSize = iconCount*((int)iconSize*(int)iconSize/32)*(int)sizeof(unsigned int); + guiIconsPtr = (unsigned int *)RAYGUI_CALLOC(iconDataSize, 1); + + memcpy(guiIconsPtr, fileDataPtr, iconDataSize); + } + + return guiIconsName; +} + +// Draw selected icon using rectangles pixel-by-pixel +void GuiDrawIcon(int iconId, int posX, int posY, int pixelSize, Color color) +{ + #define BIT_CHECK(a,b) ((a) & (1u<<(b))) + + for (int i = 0, y = 0; i < RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32; i++) + { + for (int k = 0; k < 32; k++) + { + if (BIT_CHECK(guiIconsPtr[iconId*RAYGUI_ICON_DATA_ELEMENTS + i], k)) + { + #if !defined(RAYGUI_STANDALONE) + GuiDrawRectangle(RAYGUI_CLITERAL(Rectangle){ (float)posX + (k%RAYGUI_ICON_SIZE)*pixelSize, (float)posY + y*pixelSize, (float)pixelSize, (float)pixelSize }, 0, BLANK, color); + #endif + } + + if ((k == 15) || (k == 31)) y++; + } + } +} + +// Set icon drawing size +void GuiSetIconScale(int scale) +{ + if (scale >= 1) guiIconScale = scale; +} + +// Get text width considering gui style and icon size (if required) +int GuiGetTextWidth(const char *text) +{ + #if !defined(ICON_TEXT_PADDING) + #define ICON_TEXT_PADDING 4 + #endif + + Vector2 textSize = { 0 }; + int textIconOffset = 0; + + if ((text != NULL) && (text[0] != '\0')) + { + if (text[0] == '#') + { + for (int i = 1; (i < 5) && (text[i] != '\0'); i++) + { + if (text[i] == '#') + { + textIconOffset = i; + break; + } + } + } + + text += textIconOffset; + + // Make sure guiFont is set, GuiGetStyle() initializes it lazynessly + float fontSize = (float)GuiGetStyle(DEFAULT, TEXT_SIZE); + + // Custom MeasureText() implementation + if ((guiFont.texture.id > 0) && (text != NULL)) + { + // Get size in bytes of text, considering end of line and line break + int size = 0; + for (int i = 0; i < MAX_LINE_BUFFER_SIZE; i++) + { + if ((text[i] != '\0') && (text[i] != '\n')) size++; + else break; + } + + float scaleFactor = fontSize/(float)guiFont.baseSize; + textSize.y = (float)guiFont.baseSize*scaleFactor; + float glyphWidth = 0.0f; + + for (int i = 0, codepointSize = 0; i < size; i += codepointSize) + { + int codepoint = GetCodepointNext(&text[i], &codepointSize); + int codepointIndex = GetGlyphIndex(guiFont, codepoint); + + if (guiFont.glyphs[codepointIndex].advanceX == 0) glyphWidth = ((float)guiFont.recs[codepointIndex].width*scaleFactor); + else glyphWidth = ((float)guiFont.glyphs[codepointIndex].advanceX*scaleFactor); + + textSize.x += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); + } + } + + if (textIconOffset > 0) textSize.x += (RAYGUI_ICON_SIZE + ICON_TEXT_PADDING); + } + + return (int)textSize.x; +} + +#endif // !RAYGUI_NO_ICONS + +//---------------------------------------------------------------------------------- +// Module Internal Functions Definition +//---------------------------------------------------------------------------------- +// Load style from memory +// WARNING: Binary files only +static void GuiLoadStyleFromMemory(const unsigned char *fileData, int dataSize) +{ + unsigned char *fileDataPtr = (unsigned char *)fileData; + + char signature[5] = { 0 }; + short version = 0; + short reserved = 0; + int propertyCount = 0; + + memcpy(signature, fileDataPtr, 4); + memcpy(&version, fileDataPtr + 4, sizeof(short)); + memcpy(&reserved, fileDataPtr + 4 + 2, sizeof(short)); + memcpy(&propertyCount, fileDataPtr + 4 + 2 + 2, sizeof(int)); + fileDataPtr += 12; + + if ((signature[0] == 'r') && + (signature[1] == 'G') && + (signature[2] == 'S') && + (signature[3] == ' ')) + { + short controlId = 0; + short propertyId = 0; + unsigned int propertyValue = 0; + + for (int i = 0; i < propertyCount; i++) + { + memcpy(&controlId, fileDataPtr, sizeof(short)); + memcpy(&propertyId, fileDataPtr + 2, sizeof(short)); + memcpy(&propertyValue, fileDataPtr + 2 + 2, sizeof(unsigned int)); + fileDataPtr += 8; + + if (controlId == 0) // DEFAULT control + { + // If a DEFAULT property is loaded, it is propagated to all controls + // NOTE: All DEFAULT properties should be defined first in the file + GuiSetStyle(0, (int)propertyId, propertyValue); + + if (propertyId < RAYGUI_MAX_PROPS_BASE) for (int j = 1; j < RAYGUI_MAX_CONTROLS; j++) GuiSetStyle(j, (int)propertyId, propertyValue); + } + else GuiSetStyle((int)controlId, (int)propertyId, propertyValue); + } + + // Font loading is highly dependant on raylib API to load font data and image + +#if !defined(RAYGUI_STANDALONE) + // Load custom font if available + int fontDataSize = 0; + memcpy(&fontDataSize, fileDataPtr, sizeof(int)); + fileDataPtr += 4; + + if (fontDataSize > 0) + { + Font font = { 0 }; + int fontType = 0; // 0-Normal, 1-SDF + + memcpy(&font.baseSize, fileDataPtr, sizeof(int)); + memcpy(&font.glyphCount, fileDataPtr + 4, sizeof(int)); + memcpy(&fontType, fileDataPtr + 4 + 4, sizeof(int)); + fileDataPtr += 12; + + // Load font white rectangle + Rectangle fontWhiteRec = { 0 }; + memcpy(&fontWhiteRec, fileDataPtr, sizeof(Rectangle)); + fileDataPtr += 16; + + // Load font image parameters + int fontImageUncompSize = 0; + int fontImageCompSize = 0; + memcpy(&fontImageUncompSize, fileDataPtr, sizeof(int)); + memcpy(&fontImageCompSize, fileDataPtr + 4, sizeof(int)); + fileDataPtr += 8; + + Image imFont = { 0 }; + imFont.mipmaps = 1; + memcpy(&imFont.width, fileDataPtr, sizeof(int)); + memcpy(&imFont.height, fileDataPtr + 4, sizeof(int)); + memcpy(&imFont.format, fileDataPtr + 4 + 4, sizeof(int)); + fileDataPtr += 12; + + if ((fontImageCompSize > 0) && (fontImageCompSize != fontImageUncompSize)) + { + // Compressed font atlas image data (DEFLATE), it requires DecompressData() + int dataUncompSize = 0; + unsigned char *compData = (unsigned char *)RAYGUI_CALLOC(fontImageCompSize, sizeof(unsigned char)); + memcpy(compData, fileDataPtr, fontImageCompSize); + fileDataPtr += fontImageCompSize; + + imFont.data = DecompressData(compData, fontImageCompSize, &dataUncompSize); + + // Security check, dataUncompSize must match the provided fontImageUncompSize + if (dataUncompSize != fontImageUncompSize) RAYGUI_LOG("WARNING: Uncompressed font atlas image data could be corrupted"); + + RAYGUI_FREE(compData); + } + else + { + // Font atlas image data is not compressed + imFont.data = (unsigned char *)RAYGUI_CALLOC(fontImageUncompSize, sizeof(unsigned char)); + memcpy(imFont.data, fileDataPtr, fontImageUncompSize); + fileDataPtr += fontImageUncompSize; + } + + if (font.texture.id != GetFontDefault().texture.id) UnloadTexture(font.texture); + font.texture = LoadTextureFromImage(imFont); + + RAYGUI_FREE(imFont.data); + + // Validate font atlas texture was loaded correctly + if (font.texture.id != 0) + { + // Load font recs data + int recsDataSize = font.glyphCount*sizeof(Rectangle); + int recsDataCompressedSize = 0; + + // WARNING: Version 400 adds the compression size parameter + if (version >= 400) + { + // RGS files version 400 support compressed recs data + memcpy(&recsDataCompressedSize, fileDataPtr, sizeof(int)); + fileDataPtr += sizeof(int); + } + + if ((recsDataCompressedSize > 0) && (recsDataCompressedSize != recsDataSize)) + { + // Recs data is compressed, uncompress it + unsigned char *recsDataCompressed = (unsigned char *)RAYGUI_CALLOC(recsDataCompressedSize, sizeof(unsigned char)); + + memcpy(recsDataCompressed, fileDataPtr, recsDataCompressedSize); + fileDataPtr += recsDataCompressedSize; + + int recsDataUncompSize = 0; + font.recs = (Rectangle *)DecompressData(recsDataCompressed, recsDataCompressedSize, &recsDataUncompSize); + + // Security check, data uncompressed size must match the expected original data size + if (recsDataUncompSize != recsDataSize) RAYGUI_LOG("WARNING: Uncompressed font recs data could be corrupted"); + + RAYGUI_FREE(recsDataCompressed); + } + else + { + // Recs data is uncompressed + font.recs = (Rectangle *)RAYGUI_CALLOC(font.glyphCount, sizeof(Rectangle)); + for (int i = 0; i < font.glyphCount; i++) + { + memcpy(&font.recs[i], fileDataPtr, sizeof(Rectangle)); + fileDataPtr += sizeof(Rectangle); + } + } + + // Load font glyphs info data + int glyphsDataSize = font.glyphCount*16; // 16 bytes data per glyph + int glyphsDataCompressedSize = 0; + + // WARNING: Version 400 adds the compression size parameter + if (version >= 400) + { + // RGS files version 400 support compressed glyphs data + memcpy(&glyphsDataCompressedSize, fileDataPtr, sizeof(int)); + fileDataPtr += sizeof(int); + } + + // Allocate required glyphs space to fill with data + font.glyphs = (GlyphInfo *)RAYGUI_CALLOC(font.glyphCount, sizeof(GlyphInfo)); + + if ((glyphsDataCompressedSize > 0) && (glyphsDataCompressedSize != glyphsDataSize)) + { + // Glyphs data is compressed, uncompress it + unsigned char *glypsDataCompressed = (unsigned char *)RAYGUI_CALLOC(glyphsDataCompressedSize, sizeof(unsigned char)); + + memcpy(glypsDataCompressed, fileDataPtr, glyphsDataCompressedSize); + fileDataPtr += glyphsDataCompressedSize; + + int glyphsDataUncompSize = 0; + unsigned char *glyphsDataUncomp = DecompressData(glypsDataCompressed, glyphsDataCompressedSize, &glyphsDataUncompSize); + + // Security check, data uncompressed size must match the expected original data size + if (glyphsDataUncompSize != glyphsDataSize) RAYGUI_LOG("WARNING: Uncompressed font glyphs data could be corrupted"); + + unsigned char *glyphsDataUncompPtr = glyphsDataUncomp; + + for (int i = 0; i < font.glyphCount; i++) + { + memcpy(&font.glyphs[i].value, glyphsDataUncompPtr, sizeof(int)); + memcpy(&font.glyphs[i].offsetX, glyphsDataUncompPtr + 4, sizeof(int)); + memcpy(&font.glyphs[i].offsetY, glyphsDataUncompPtr + 8, sizeof(int)); + memcpy(&font.glyphs[i].advanceX, glyphsDataUncompPtr + 12, sizeof(int)); + glyphsDataUncompPtr += 16; + } + + RAYGUI_FREE(glypsDataCompressed); + RAYGUI_FREE(glyphsDataUncomp); + } + else + { + // Glyphs data is uncompressed + for (int i = 0; i < font.glyphCount; i++) + { + memcpy(&font.glyphs[i].value, fileDataPtr, sizeof(int)); + memcpy(&font.glyphs[i].offsetX, fileDataPtr + 4, sizeof(int)); + memcpy(&font.glyphs[i].offsetY, fileDataPtr + 8, sizeof(int)); + memcpy(&font.glyphs[i].advanceX, fileDataPtr + 12, sizeof(int)); + fileDataPtr += 16; + } + } + } + else font = GetFontDefault(); // Fallback in case of errors loading font atlas texture + + GuiSetFont(font); + + // Set font texture source rectangle to be used as white texture to draw shapes + // NOTE: It makes possible to draw shapes and text (full UI) in a single draw call + if ((fontWhiteRec.x > 0) && + (fontWhiteRec.y > 0) && + (fontWhiteRec.width > 0) && + (fontWhiteRec.height > 0)) SetShapesTexture(font.texture, fontWhiteRec); + } +#endif + } +} + +// Get text bounds considering control bounds +static Rectangle GetTextBounds(int control, Rectangle bounds) +{ + Rectangle textBounds = bounds; + + textBounds.x = bounds.x + GuiGetStyle(control, BORDER_WIDTH); + textBounds.y = bounds.y + GuiGetStyle(control, BORDER_WIDTH) + GuiGetStyle(control, TEXT_PADDING); + textBounds.width = bounds.width - 2*GuiGetStyle(control, BORDER_WIDTH) - 2*GuiGetStyle(control, TEXT_PADDING); + textBounds.height = bounds.height - 2*GuiGetStyle(control, BORDER_WIDTH) - 2*GuiGetStyle(control, TEXT_PADDING); // NOTE: Text is processed line per line! + + // Depending on control, TEXT_PADDING and TEXT_ALIGNMENT properties could affect the text-bounds + switch (control) + { + case COMBOBOX: + case DROPDOWNBOX: + case LISTVIEW: + // TODO: Special cases (no label): COMBOBOX, DROPDOWNBOX, LISTVIEW + case SLIDER: + case CHECKBOX: + case VALUEBOX: + case CONTROL11: + // TODO: More special cases (label on side): SLIDER, CHECKBOX, VALUEBOX, SPINNER + default: + { + // TODO: WARNING: TEXT_ALIGNMENT is already considered in GuiDrawText() + if (GuiGetStyle(control, TEXT_ALIGNMENT) == TEXT_ALIGN_RIGHT) textBounds.x -= GuiGetStyle(control, TEXT_PADDING); + else textBounds.x += GuiGetStyle(control, TEXT_PADDING); + } + break; + } + + return textBounds; +} + +// Get text icon if provided and move text cursor +// NOTE: Up to #999# values supported for iconId +static const char *GetTextIcon(const char *text, int *iconId) +{ +#if !defined(RAYGUI_NO_ICONS) + *iconId = -1; + if (text[0] == '#') // Maybe it is stars with an icon, ending # must be found + { + char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' + + int pos = 1; + while ((pos < 4) && (text[pos] >= '0') && (text[pos] <= '9')) + { + iconValue[pos - 1] = text[pos]; + pos++; + } + + if (text[pos] == '#') + { + *iconId = TextToInteger(iconValue); + + // Move text pointer after icon + // WARNING: If only icon provided, it could point to EOL character: '\0' + if (*iconId >= 0) text += (pos + 1); + } + } +#endif + + return text; +} + +// Get text divided into lines (by line-breaks '\n') +// WARNING: It returns pointers to new lines but it does not add NULL ('\0') terminator! +static const char **GetTextLines(const char *text, int *count) +{ + #define RAYGUI_MAX_TEXT_LINES 128 + + static const char *lines[RAYGUI_MAX_TEXT_LINES] = { 0 }; + for (int i = 0; i < RAYGUI_MAX_TEXT_LINES; i++) lines[i] = NULL; // Init NULL pointers to substrings + + int textLength = (int)strlen(text); + + lines[0] = text; + *count = 1; + + for (int i = 0, k = 0; (i < textLength) && (*count < RAYGUI_MAX_TEXT_LINES); i++) + { + if (text[i] == '\n') + { + k++; + lines[k] = &text[i + 1]; // WARNING: next value is valid? + *count += 1; + } + } + + return lines; +} + +// Get text width to next space for provided string +static float GetNextSpaceWidth(const char *text, int *nextSpaceIndex) +{ + float width = 0; + int codepointByteCount = 0; + int codepoint = 0; + int index = 0; + float glyphWidth = 0; + float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/guiFont.baseSize; + + for (int i = 0; text[i] != '\0'; i++) + { + if (text[i] != ' ') + { + codepoint = GetCodepoint(&text[i], &codepointByteCount); + index = GetGlyphIndex(guiFont, codepoint); + glyphWidth = (guiFont.glyphs[index].advanceX == 0)? guiFont.recs[index].width*scaleFactor : guiFont.glyphs[index].advanceX*scaleFactor; + width += (glyphWidth + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); + } + else + { + *nextSpaceIndex = i; + break; + } + } + + return width; +} + +// Gui draw text using default font +static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, Color tint) +{ + #define TEXT_VALIGN_PIXEL_OFFSET(h) ((int)h%2) // Vertical alignment for pixel perfect + + #if !defined(ICON_TEXT_PADDING) + #define ICON_TEXT_PADDING 4 + #endif + + if ((text == NULL) || (text[0] == '\0')) return; // Security check + + // PROCEDURE: + // - Text is processed line per line + // - For every line, horizontal alignment is defined + // - For all text, vertical alignment is defined (multiline text only) + // - For every line, wordwrap mode is checked (useful for GuitextBox(), read-only) + + // Get text lines (using '\n' as delimiter) to be processed individually + // WARNING: GuiTextSplit() function can't be used now because it can have already been used + // before the GuiDrawText() call and its buffer is static, it would be overriden :( + int lineCount = 0; + const char **lines = GetTextLines(text, &lineCount); + + // Text style variables + //int alignment = GuiGetStyle(DEFAULT, TEXT_ALIGNMENT); + int alignmentVertical = GuiGetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL); + int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); // Wrap-mode only available in read-only mode, no for text editing + + // TODO: WARNING: This totalHeight is not valid for vertical alignment in case of word-wrap + float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); + float posOffsetY = 0.0f; + + for (int i = 0; i < lineCount; i++) + { + int iconId = 0; + lines[i] = GetTextIcon(lines[i], &iconId); // Check text for icon and move cursor + + // Get text position depending on alignment and iconId + //--------------------------------------------------------------------------------- + Vector2 textBoundsPosition = { textBounds.x, textBounds.y }; + float textBoundsWidthOffset = 0.0f; + + // NOTE: Get text size after icon has been processed + // WARNING: GuiGetTextWidth() also processes text icon to get width! -> Really needed? + int textSizeX = GuiGetTextWidth(lines[i]); + + // If text requires an icon, add size to measure + if (iconId >= 0) + { + textSizeX += RAYGUI_ICON_SIZE*guiIconScale; + + // WARNING: If only icon provided, text could be pointing to EOF character: '\0' +#if !defined(RAYGUI_NO_ICONS) + if ((lines[i] != NULL) && (lines[i][0] != '\0')) textSizeX += ICON_TEXT_PADDING; +#endif + } + + // Check guiTextAlign global variables + switch (alignment) + { + case TEXT_ALIGN_LEFT: textBoundsPosition.x = textBounds.x; break; + case TEXT_ALIGN_CENTER: textBoundsPosition.x = textBounds.x + textBounds.width/2 - textSizeX/2; break; + case TEXT_ALIGN_RIGHT: textBoundsPosition.x = textBounds.x + textBounds.width - textSizeX; break; + default: break; + } + + if (textSizeX > textBounds.width && (lines[i] != NULL) && (lines[i][0] != '\0')) textBoundsPosition.x = textBounds.x; + + switch (alignmentVertical) + { + // Only valid in case of wordWrap = 0; + case TEXT_ALIGN_TOP: textBoundsPosition.y = textBounds.y + posOffsetY; break; + case TEXT_ALIGN_MIDDLE: textBoundsPosition.y = textBounds.y + posOffsetY + textBounds.height/2 - totalHeight/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height); break; + case TEXT_ALIGN_BOTTOM: textBoundsPosition.y = textBounds.y + posOffsetY + textBounds.height - totalHeight + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height); break; + default: break; + } + + // NOTE: Make sure getting pixel-perfect coordinates, + // In case of decimals, it could result in text positioning artifacts + textBoundsPosition.x = (float)((int)textBoundsPosition.x); + textBoundsPosition.y = (float)((int)textBoundsPosition.y); + //--------------------------------------------------------------------------------- + + // Draw text (with icon if available) + //--------------------------------------------------------------------------------- +#if !defined(RAYGUI_NO_ICONS) + if (iconId >= 0) + { + // NOTE: Considering icon height, probably different than text size + GuiDrawIcon(iconId, (int)textBoundsPosition.x, (int)(textBounds.y + textBounds.height/2 - RAYGUI_ICON_SIZE*guiIconScale/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height)), guiIconScale, tint); + textBoundsPosition.x += (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); + textBoundsWidthOffset = (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); + } +#endif + // Get size in bytes of text, + // considering end of line and line break + int lineSize = 0; + for (int c = 0; (lines[i][c] != '\0') && (lines[i][c] != '\n') && (lines[i][c] != '\r'); c++, lineSize++){ } + float scaleFactor = (float)GuiGetStyle(DEFAULT, TEXT_SIZE)/guiFont.baseSize; + + int lastSpaceIndex = 0; + bool tempWrapCharMode = false; + + int textOffsetY = 0; + float textOffsetX = 0.0f; + float glyphWidth = 0; + + int ellipsisWidth = GuiGetTextWidth("..."); + bool textOverflow = false; + for (int c = 0, codepointSize = 0; c < lineSize; c += codepointSize) + { + int codepoint = GetCodepointNext(&lines[i][c], &codepointSize); + int index = GetGlyphIndex(guiFont, codepoint); + + // NOTE: Normally, exiting the decoding sequence as soon as a bad byte is found (and return 0x3f) + // but all of the bad bytes need to be drawn using the '?' symbol, moving one byte + if (codepoint == 0x3f) codepointSize = 1; // TODO: Review not recognized codepoints size + + // Get glyph width to check if it goes out of bounds + if (guiFont.glyphs[index].advanceX == 0) glyphWidth = ((float)guiFont.recs[index].width*scaleFactor); + else glyphWidth = (float)guiFont.glyphs[index].advanceX*scaleFactor; + + // Wrap mode text measuring, to validate if + // it can be drawn or a new line is required + if (wrapMode == TEXT_WRAP_CHAR) + { + // Jump to next line if current character reach end of the box limits + if ((textOffsetX + glyphWidth) > textBounds.width - textBoundsWidthOffset) + { + textOffsetX = 0.0f; + textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); + + if (tempWrapCharMode) // Wrap at char level when too long words + { + wrapMode = TEXT_WRAP_WORD; + tempWrapCharMode = false; + } + } + } + else if (wrapMode == TEXT_WRAP_WORD) + { + if (codepoint == 32) lastSpaceIndex = c; + + // Get width to next space in line + int nextSpaceIndex = 0; + float nextSpaceWidth = GetNextSpaceWidth(lines[i] + c, &nextSpaceIndex); + + int nextSpaceIndex2 = 0; + float nextWordSize = GetNextSpaceWidth(lines[i] + lastSpaceIndex + 1, &nextSpaceIndex2); + + if (nextWordSize > textBounds.width - textBoundsWidthOffset) + { + // Considering the case the next word is longer than bounds + tempWrapCharMode = true; + wrapMode = TEXT_WRAP_CHAR; + } + else if ((textOffsetX + nextSpaceWidth) > textBounds.width - textBoundsWidthOffset) + { + textOffsetX = 0.0f; + textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); + } + } + + if (codepoint == '\n') break; // WARNING: Lines are already processed manually, no need to keep drawing after this codepoint + else + { + // TODO: There are multiple types of spaces in Unicode, + // maybe it's a good idea to add support for more: http://jkorpela.fi/chars/spaces.html + if ((codepoint != ' ') && (codepoint != '\t')) // Do not draw codepoints with no glyph + { + if (wrapMode == TEXT_WRAP_NONE) + { + // Draw only required text glyphs fitting the textBounds.width + if (textSizeX > textBounds.width) + { + if (textOffsetX <= (textBounds.width - glyphWidth - textBoundsWidthOffset - ellipsisWidth)) + { + DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); + } + else if (!textOverflow) + { + textOverflow = true; + + for (int j = 0; j < ellipsisWidth; j += ellipsisWidth/3) + { + DrawTextCodepoint(guiFont, '.', RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX + j, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); + } + } + } + else + { + DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); + } + } + else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) + { + // Draw only glyphs inside the bounds + if ((textBoundsPosition.y + textOffsetY) <= (textBounds.y + textBounds.height - GuiGetStyle(DEFAULT, TEXT_SIZE))) + { + DrawTextCodepoint(guiFont, codepoint, RAYGUI_CLITERAL(Vector2){ textBoundsPosition.x + textOffsetX, textBoundsPosition.y + textOffsetY }, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), GuiFade(tint, guiAlpha)); + } + } + } + + if (guiFont.glyphs[index].advanceX == 0) textOffsetX += ((float)guiFont.recs[index].width*scaleFactor + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); + else textOffsetX += ((float)guiFont.glyphs[index].advanceX*scaleFactor + (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); + } + } + + if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)(GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); + else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) posOffsetY += (textOffsetY + (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); + //--------------------------------------------------------------------------------- + } + +#if defined(RAYGUI_DEBUG_TEXT_BOUNDS) + GuiDrawRectangle(textBounds, 0, WHITE, Fade(BLUE, 0.4f)); +#endif +} + +// Gui draw rectangle using default raygui plain style with borders +static void GuiDrawRectangle(Rectangle rec, int borderWidth, Color borderColor, Color color) +{ + if (color.a > 0) + { + // Draw rectangle filled with color + DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, (int)rec.height, GuiFade(color, guiAlpha)); + } + + if (borderWidth > 0) + { + // Draw rectangle border lines with color + DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, borderWidth, GuiFade(borderColor, guiAlpha)); + DrawRectangle((int)rec.x, (int)rec.y + borderWidth, borderWidth, (int)rec.height - 2*borderWidth, GuiFade(borderColor, guiAlpha)); + DrawRectangle((int)rec.x + (int)rec.width - borderWidth, (int)rec.y + borderWidth, borderWidth, (int)rec.height - 2*borderWidth, GuiFade(borderColor, guiAlpha)); + DrawRectangle((int)rec.x, (int)rec.y + (int)rec.height - borderWidth, (int)rec.width, borderWidth, GuiFade(borderColor, guiAlpha)); + } + +#if defined(RAYGUI_DEBUG_RECS_BOUNDS) + DrawRectangle((int)rec.x, (int)rec.y, (int)rec.width, (int)rec.height, Fade(RED, 0.4f)); +#endif +} + +// Draw tooltip using control bounds +static void GuiTooltip(Rectangle controlRec) +{ + if (!guiLocked && guiTooltip && (guiTooltipPtr != NULL) && !guiControlExclusiveMode) + { + Vector2 textSize = MeasureTextEx(GuiGetFont(), guiTooltipPtr, (float)GuiGetStyle(DEFAULT, TEXT_SIZE), (float)GuiGetStyle(DEFAULT, TEXT_SPACING)); + + if ((controlRec.x + textSize.x + 16) > GetScreenWidth()) controlRec.x -= (textSize.x + 16 - controlRec.width); + + int lineCount = 0; + GetTextLines(guiTooltipPtr, &lineCount); // Only using the line count + if ((controlRec.y + controlRec.height + textSize.y + 4 + 8*lineCount) > GetScreenHeight()) + controlRec.y -= (controlRec.height + textSize.y + 4 + 8*lineCount); + + // TODO: Probably TEXT_LINE_SPACING should be considered on panel size instead of hardcoding 8.0f + GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, NULL); + + int textPadding = GuiGetStyle(LABEL, TEXT_PADDING); + int textAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); + GuiSetStyle(LABEL, TEXT_PADDING, 0); + GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); + GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, guiTooltipPtr); + GuiSetStyle(LABEL, TEXT_ALIGNMENT, textAlignment); + GuiSetStyle(LABEL, TEXT_PADDING, textPadding); + } +} + +// Split controls text into multiple strings +// Also check for multiple columns (required by GuiToggleGroup()) +static const char **GuiTextSplit(const char *text, char delimiter, int *count, int *textRow) +{ + // NOTE: Current implementation returns a copy of the provided string with '\0' (string end delimiter) + // inserted between strings defined by "delimiter" parameter. No memory is dynamically allocated, + // all used memory is static... it has some limitations: + // 1. Maximum number of possible split strings is set by RAYGUI_TEXTSPLIT_MAX_ITEMS + // 2. Maximum size of text to split is RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE + // NOTE: Those definitions could be externally provided if required + + // TODO: HACK: GuiTextSplit() - Review how textRows are returned to user + // textRow is an externally provided array of integers that stores row number for every splitted string + + #if !defined(RAYGUI_TEXTSPLIT_MAX_ITEMS) + #define RAYGUI_TEXTSPLIT_MAX_ITEMS 128 + #endif + #if !defined(RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE) + #define RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE 1024 + #endif + + static const char *result[RAYGUI_TEXTSPLIT_MAX_ITEMS] = { NULL }; // String pointers array (points to buffer data) + static char buffer[RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE] = { 0 }; // Buffer data (text input copy with '\0' added) + memset(buffer, 0, RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE); + + result[0] = buffer; + int counter = 1; + + if (textRow != NULL) textRow[0] = 0; + + // Count how many substrings text contains and point to every one of them + for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) + { + buffer[i] = text[i]; + if (buffer[i] == '\0') break; + else if ((buffer[i] == delimiter) || (buffer[i] == '\n')) + { + result[counter] = buffer + i + 1; + + if (textRow != NULL) + { + if (buffer[i] == '\n') textRow[counter] = textRow[counter - 1] + 1; + else textRow[counter] = textRow[counter - 1]; + } + + buffer[i] = '\0'; // Set an end of string at this point + + counter++; + if (counter >= RAYGUI_TEXTSPLIT_MAX_ITEMS) break; + } + } + + *count = counter; + + return result; +} + +// Convert color data from RGB to HSV +// NOTE: Color data should be passed normalized +static Vector3 ConvertRGBtoHSV(Vector3 rgb) +{ + Vector3 hsv = { 0 }; + float min = 0.0f; + float max = 0.0f; + float delta = 0.0f; + + min = (rgb.x < rgb.y)? rgb.x : rgb.y; + min = (min < rgb.z)? min : rgb.z; + + max = (rgb.x > rgb.y)? rgb.x : rgb.y; + max = (max > rgb.z)? max : rgb.z; + + hsv.z = max; // Value + delta = max - min; + + if (delta < 0.00001f) + { + hsv.y = 0.0f; + hsv.x = 0.0f; // Undefined, maybe NAN? + return hsv; + } + + if (max > 0.0f) + { + // NOTE: If max is 0, this divide would cause a crash + hsv.y = (delta/max); // Saturation + } + else + { + // NOTE: If max is 0, then r = g = b = 0, s = 0, h is undefined + hsv.y = 0.0f; + hsv.x = 0.0f; // Undefined, maybe NAN? + return hsv; + } + + // NOTE: Comparing float values could not work properly + if (rgb.x >= max) hsv.x = (rgb.y - rgb.z)/delta; // Between yellow & magenta + else + { + if (rgb.y >= max) hsv.x = 2.0f + (rgb.z - rgb.x)/delta; // Between cyan & yellow + else hsv.x = 4.0f + (rgb.x - rgb.y)/delta; // Between magenta & cyan + } + + hsv.x *= 60.0f; // Convert to degrees + + if (hsv.x < 0.0f) hsv.x += 360.0f; + + return hsv; +} + +// Convert color data from HSV to RGB +// NOTE: Color data should be passed normalized +static Vector3 ConvertHSVtoRGB(Vector3 hsv) +{ + Vector3 rgb = { 0 }; + float hh = 0.0f, p = 0.0f, q = 0.0f, t = 0.0f, ff = 0.0f; + long i = 0; + + // NOTE: Comparing float values could not work properly + if (hsv.y <= 0.0f) + { + rgb.x = hsv.z; + rgb.y = hsv.z; + rgb.z = hsv.z; + return rgb; + } + + hh = hsv.x; + if (hh >= 360.0f) hh = 0.0f; + hh /= 60.0f; + + i = (long)hh; + ff = hh - i; + p = hsv.z*(1.0f - hsv.y); + q = hsv.z*(1.0f - (hsv.y*ff)); + t = hsv.z*(1.0f - (hsv.y*(1.0f - ff))); + + switch (i) + { + case 0: + { + rgb.x = hsv.z; + rgb.y = t; + rgb.z = p; + } break; + case 1: + { + rgb.x = q; + rgb.y = hsv.z; + rgb.z = p; + } break; + case 2: + { + rgb.x = p; + rgb.y = hsv.z; + rgb.z = t; + } break; + case 3: + { + rgb.x = p; + rgb.y = q; + rgb.z = hsv.z; + } break; + case 4: + { + rgb.x = t; + rgb.y = p; + rgb.z = hsv.z; + } break; + case 5: + default: + { + rgb.x = hsv.z; + rgb.y = p; + rgb.z = q; + } break; + } + + return rgb; +} + +// Scroll bar control (used by GuiScrollPanel()) +static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) +{ + GuiState state = guiState; + + // Is the scrollbar horizontal or vertical? + bool isVertical = (bounds.width > bounds.height)? false : true; + + // The size (width or height depending on scrollbar type) of the spinner buttons + const int spinnerSize = GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE)? + (isVertical? (int)bounds.width - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH) : + (int)bounds.height - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH)) : 0; + + // Arrow buttons [<] [>] [∧] [∨] + Rectangle arrowUpLeft = { 0 }; + Rectangle arrowDownRight = { 0 }; + + // Actual area of the scrollbar excluding the arrow buttons + Rectangle scrollbar = { 0 }; + + // Slider bar that moves --[///]----- + Rectangle slider = { 0 }; + + // Normalize value + if (value > maxValue) value = maxValue; + if (value < minValue) value = minValue; + + int valueRange = maxValue - minValue; + if (valueRange <= 0) valueRange = 1; + + int sliderSize = GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_SIZE); + if (sliderSize < 1) sliderSize = 1; // TODO: Consider a minimum slider size + + // Calculate rectangles for all of the components + arrowUpLeft = RAYGUI_CLITERAL(Rectangle){ + (float)bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), + (float)bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), + (float)spinnerSize, (float)spinnerSize }; + + if (isVertical) + { + arrowDownRight = RAYGUI_CLITERAL(Rectangle){ (float)bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)bounds.y + bounds.height - spinnerSize - GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)spinnerSize, (float)spinnerSize }; + scrollbar = RAYGUI_CLITERAL(Rectangle){ bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING), arrowUpLeft.y + arrowUpLeft.height, bounds.width - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING)), bounds.height - arrowUpLeft.height - arrowDownRight.height - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH) }; + + // Make sure the slider won't get outside of the scrollbar + sliderSize = (sliderSize >= scrollbar.height)? ((int)scrollbar.height - 2) : sliderSize; + slider = RAYGUI_CLITERAL(Rectangle){ + bounds.x + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING), + scrollbar.y + (int)(((float)(value - minValue)/valueRange)*(scrollbar.height - sliderSize)), + bounds.width - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING)), + (float)sliderSize }; + } + else // horizontal + { + arrowDownRight = RAYGUI_CLITERAL(Rectangle){ (float)bounds.x + bounds.width - spinnerSize - GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH), (float)spinnerSize, (float)spinnerSize }; + scrollbar = RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x + arrowUpLeft.width, bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING), bounds.width - arrowUpLeft.width - arrowDownRight.width - 2*GuiGetStyle(SCROLLBAR, BORDER_WIDTH), bounds.height - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_PADDING)) }; + + // Make sure the slider won't get outside of the scrollbar + sliderSize = (sliderSize >= scrollbar.width)? ((int)scrollbar.width - 2) : sliderSize; + slider = RAYGUI_CLITERAL(Rectangle){ + scrollbar.x + (int)(((float)(value - minValue)/valueRange)*(scrollbar.width - sliderSize)), + bounds.y + GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING), + (float)sliderSize, + bounds.height - 2*(GuiGetStyle(SCROLLBAR, BORDER_WIDTH) + GuiGetStyle(SCROLLBAR, SCROLL_SLIDER_PADDING)) }; + } + + // Update control + //-------------------------------------------------------------------- + if ((state != STATE_DISABLED) && !guiLocked) + { + Vector2 mousePoint = GUI_POINTER_POSITION; + + if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds + { + if (GUI_BUTTON_DOWN && + !CheckCollisionPointRec(mousePoint, arrowUpLeft) && + !CheckCollisionPointRec(mousePoint, arrowDownRight)) + { + if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) + { + state = STATE_PRESSED; + + if (isVertical) value = (int)(((float)(mousePoint.y - scrollbar.y - slider.height/2)*valueRange)/(scrollbar.height - slider.height) + minValue); + else value = (int)(((float)(mousePoint.x - scrollbar.x - slider.width/2)*valueRange)/(scrollbar.width - slider.width) + minValue); + } + } + else + { + guiControlExclusiveMode = false; + guiControlExclusiveRec = RAYGUI_CLITERAL(Rectangle){ 0, 0, 0, 0 }; + } + } + else if (CheckCollisionPointRec(mousePoint, bounds)) + { + state = STATE_FOCUSED; + + // Handle mouse wheel + float scrollDelta = GUI_SCROLL_DELTA; + if (scrollDelta != 0) value += (int)scrollDelta; + + // Handle mouse button down + if (GUI_BUTTON_PRESSED) + { + guiControlExclusiveMode = true; + guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts + + // Check arrows click + if (CheckCollisionPointRec(mousePoint, arrowUpLeft)) value -= valueRange/GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + else if (CheckCollisionPointRec(mousePoint, arrowDownRight)) value += valueRange/GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + else if (!CheckCollisionPointRec(mousePoint, slider)) + { + // If click on scrollbar position but not on slider, place slider directly on that position + if (isVertical) value = (int)(((float)(mousePoint.y - scrollbar.y - slider.height/2)*valueRange)/(scrollbar.height - slider.height) + minValue); + else value = (int)(((float)(mousePoint.x - scrollbar.x - slider.width/2)*valueRange)/(scrollbar.width - slider.width) + minValue); + } + + state = STATE_PRESSED; + } + + // Keyboard control on mouse hover scrollbar + /* + if (isVertical) + { + if (GUI_KEY_DOWN(KEY_DOWN)) value += 5; + else if (GUI_KEY_DOWN(KEY_UP)) value -= 5; + } + else + { + if (GUI_KEY_DOWN(KEY_RIGHT)) value += 5; + else if (GUI_KEY_DOWN(KEY_LEFT)) value -= 5; + } + */ + } + + // Normalize value + if (value > maxValue) value = maxValue; + if (value < minValue) value = minValue; + } + //-------------------------------------------------------------------- + + // Draw control + //-------------------------------------------------------------------- + GuiDrawRectangle(bounds, GuiGetStyle(SCROLLBAR, BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER + state*3)), GetColor(GuiGetStyle(DEFAULT, BORDER_COLOR_DISABLED))); // Draw the background + + GuiDrawRectangle(scrollbar, 0, BLANK, GetColor(GuiGetStyle(BUTTON, BASE_COLOR_NORMAL))); // Draw the scrollbar active area background + GuiDrawRectangle(slider, 0, BLANK, GetColor(GuiGetStyle(SLIDER, BORDER + state*3))); // Draw the slider bar + + // Draw arrows (using icon if available) + if (GuiGetStyle(SCROLLBAR, ARROWS_VISIBLE)) + { +#if defined(RAYGUI_NO_ICONS) + GuiDrawText(isVertical? "^" : "<", + RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x, arrowUpLeft.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, + TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); + GuiDrawText(isVertical? "v" : ">", + RAYGUI_CLITERAL(Rectangle){ arrowDownRight.x, arrowDownRight.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, + TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(DROPDOWNBOX, TEXT + (state*3)))); +#else + GuiDrawText(isVertical? "#121#" : "#118#", + RAYGUI_CLITERAL(Rectangle){ arrowUpLeft.x, arrowUpLeft.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, + TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(SCROLLBAR, TEXT + state*3))); // ICON_ARROW_UP_FILL / ICON_ARROW_LEFT_FILL + GuiDrawText(isVertical? "#120#" : "#119#", + RAYGUI_CLITERAL(Rectangle){ arrowDownRight.x, arrowDownRight.y, isVertical? bounds.width : bounds.height, isVertical? bounds.width : bounds.height }, + TEXT_ALIGN_CENTER, GetColor(GuiGetStyle(SCROLLBAR, TEXT + state*3))); // ICON_ARROW_DOWN_FILL / ICON_ARROW_RIGHT_FILL +#endif + } + //-------------------------------------------------------------------- + + return value; +} + +// Color fade-in or fade-out, alpha goes from 0.0f to 1.0f +// WARNING: It multiplies current alpha by alpha scale factor +static Color GuiFade(Color color, float alpha) +{ + if (alpha < 0.0f) alpha = 0.0f; + else if (alpha > 1.0f) alpha = 1.0f; + + Color result = { color.r, color.g, color.b, (unsigned char)(color.a*alpha) }; + + return result; +} + +#if defined(RAYGUI_STANDALONE) +// Returns a Color struct from hexadecimal value +static Color GetColor(int hexValue) +{ + Color color; + + color.r = (unsigned char)(hexValue >> 24) & 0xff; + color.g = (unsigned char)(hexValue >> 16) & 0xff; + color.b = (unsigned char)(hexValue >> 8) & 0xff; + color.a = (unsigned char)hexValue & 0xff; + + return color; +} + +// Returns hexadecimal value for a Color +static int ColorToInt(Color color) +{ + return (((int)color.r << 24) | ((int)color.g << 16) | ((int)color.b << 8) | (int)color.a); +} + +// Check if point is inside rectangle +static bool CheckCollisionPointRec(Vector2 point, Rectangle rec) +{ + bool collision = false; + + if ((point.x >= rec.x) && (point.x <= (rec.x + rec.width)) && + (point.y >= rec.y) && (point.y <= (rec.y + rec.height))) collision = true; + + return collision; +} + +// Formatting of text with variables to 'embed' +static const char *TextFormat(const char *text, ...) +{ + #if !defined(RAYGUI_TEXTFORMAT_MAX_SIZE) + #define RAYGUI_TEXTFORMAT_MAX_SIZE 256 + #endif + + static char buffer[RAYGUI_TEXTFORMAT_MAX_SIZE]; + + va_list args; + va_start(args, text); + vsnprintf(buffer, RAYGUI_TEXTFORMAT_MAX_SIZE, text, args); + va_end(args); + + return buffer; +} + +// Draw rectangle with vertical gradient fill color +// NOTE: This function is only used by GuiColorPicker() +static void DrawRectangleGradientV(int posX, int posY, int width, int height, Color color1, Color color2) +{ + Rectangle bounds = { (float)posX, (float)posY, (float)width, (float)height }; + DrawRectangleGradientEx(bounds, color1, color2, color2, color1); +} + +// Split string into multiple strings +const char **TextSplit(const char *text, char delimiter, int *count) +{ + // NOTE: Current implementation returns a copy of the provided string with '\0' (string end delimiter) + // inserted between strings defined by "delimiter" parameter. No memory is dynamically allocated, + // all used memory is static... it has some limitations: + // 1. Maximum number of possible split strings is set by RAYGUI_TEXTSPLIT_MAX_ITEMS + // 2. Maximum size of text to split is RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE + + #if !defined(RAYGUI_TEXTSPLIT_MAX_ITEMS) + #define RAYGUI_TEXTSPLIT_MAX_ITEMS 128 + #endif + #if !defined(RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE) + #define RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE 1024 + #endif + + static const char *result[RAYGUI_TEXTSPLIT_MAX_ITEMS] = { NULL }; + static char buffer[RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE] = { 0 }; + memset(buffer, 0, RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE); + + result[0] = buffer; + int counter = 0; + + if (text != NULL) + { + counter = 1; + + // Count how many substrings text contains and point to every one of them + for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) + { + buffer[i] = text[i]; + if (buffer[i] == '\0') break; + else if (buffer[i] == delimiter) + { + buffer[i] = '\0'; // Set an end of string at this point + result[counter] = buffer + i + 1; + counter++; + + if (counter == RAYGUI_TEXTSPLIT_MAX_ITEMS) break; + } + } + } + + *count = counter; + return result; +} + +// Get integer value from text +// NOTE: This function replaces atoi() [stdlib.h] +static int TextToInteger(const char *text) +{ + int value = 0; + int sign = 1; + + if ((text[0] == '+') || (text[0] == '-')) + { + if (text[0] == '-') sign = -1; + text++; + } + + for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10 + (int)(text[i] - '0'); + + return value*sign; +} + +// Get float value from text +// NOTE: This function replaces atof() [stdlib.h] +// WARNING: Only '.' character is understood as decimal point +static float TextToFloat(const char *text) +{ + float value = 0.0f; + float sign = 1.0f; + + if ((text[0] == '+') || (text[0] == '-')) + { + if (text[0] == '-') sign = -1.0f; + text++; + } + + int i = 0; + for (; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10.0f + (float)(text[i] - '0'); + + if (text[i++] != '.') value *= sign; + else + { + float divisor = 10.0f; + for (; ((text[i] >= '0') && (text[i] <= '9')); i++) + { + value += ((float)(text[i] - '0'))/divisor; + divisor = divisor*10.0f; + } + } + + return value; +} + +// Encode codepoint into UTF-8 text (char array size returned as parameter) +static const char *CodepointToUTF8(int codepoint, int *byteSize) +{ + static char utf8[6] = { 0 }; + int size = 0; + + if (codepoint <= 0x7f) + { + utf8[0] = (char)codepoint; + size = 1; + } + else if (codepoint <= 0x7ff) + { + utf8[0] = (char)(((codepoint >> 6) & 0x1f) | 0xc0); + utf8[1] = (char)((codepoint & 0x3f) | 0x80); + size = 2; + } + else if (codepoint <= 0xffff) + { + utf8[0] = (char)(((codepoint >> 12) & 0x0f) | 0xe0); + utf8[1] = (char)(((codepoint >> 6) & 0x3f) | 0x80); + utf8[2] = (char)((codepoint & 0x3f) | 0x80); + size = 3; + } + else if (codepoint <= 0x10ffff) + { + utf8[0] = (char)(((codepoint >> 18) & 0x07) | 0xf0); + utf8[1] = (char)(((codepoint >> 12) & 0x3f) | 0x80); + utf8[2] = (char)(((codepoint >> 6) & 0x3f) | 0x80); + utf8[3] = (char)((codepoint & 0x3f) | 0x80); + size = 4; + } + + *byteSize = size; + + return utf8; +} + +// Get next codepoint in a UTF-8 encoded text, scanning until '\0' is found +// When a invalid UTF-8 byte is encountered, exiting as soon as possible and returning a '?'(0x3f) codepoint +// Total number of bytes processed are returned as a parameter +// NOTE: The standard says U+FFFD should be returned in case of errors +// but that character is not supported by the default font in raylib +static int GetCodepointNext(const char *text, int *codepointSize) +{ + const char *ptr = text; + int codepoint = 0x3f; // Codepoint (defaults to '?') + *codepointSize = 1; + + // Get current codepoint and bytes processed + if (0xf0 == (0xf8 & ptr[0])) + { + // 4 byte UTF-8 codepoint + if (((ptr[1] & 0xC0) ^ 0x80) || ((ptr[2] & 0xC0) ^ 0x80) || ((ptr[3] & 0xC0) ^ 0x80)) { return codepoint; } //10xxxxxx checks + codepoint = ((0x07 & ptr[0]) << 18) | ((0x3f & ptr[1]) << 12) | ((0x3f & ptr[2]) << 6) | (0x3f & ptr[3]); + *codepointSize = 4; + } + else if (0xe0 == (0xf0 & ptr[0])) + { + // 3 byte UTF-8 codepoint + if (((ptr[1] & 0xC0) ^ 0x80) || ((ptr[2] & 0xC0) ^ 0x80)) { return codepoint; } //10xxxxxx checks + codepoint = ((0x0f & ptr[0]) << 12) | ((0x3f & ptr[1]) << 6) | (0x3f & ptr[2]); + *codepointSize = 3; + } + else if (0xc0 == (0xe0 & ptr[0])) + { + // 2 byte UTF-8 codepoint + if ((ptr[1] & 0xC0) ^ 0x80) { return codepoint; } //10xxxxxx checks + codepoint = ((0x1f & ptr[0]) << 6) | (0x3f & ptr[1]); + *codepointSize = 2; + } + else if (0x00 == (0x80 & ptr[0])) + { + // 1 byte UTF-8 codepoint + codepoint = ptr[0]; + *codepointSize = 1; + } + + return codepoint; +} +#endif // RAYGUI_STANDALONE + +#endif // RAYGUI_IMPLEMENTATION diff --git a/examples/shaders/raygui.h b/examples/shaders/raygui.h index 88fe5cc5b..67c16be45 100644 --- a/examples/shaders/raygui.h +++ b/examples/shaders/raygui.h @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raygui v4.5-dev - A simple and easy-to-use immediate-mode gui library +* raygui v5.0-dev - A simple and easy-to-use immediate-mode gui library * * DESCRIPTION: * raygui is a tools-dev-focused immediate-mode-gui library based on raylib but also @@ -83,8 +83,8 @@ * used for all controls, when any of those base values is set, it is automatically populated to all * controls, so, specific control values overwriting generic style should be set after base values * -* After the first BASE set we have the EXTENDED properties (by default guiStyle[16..23]), those -* properties are actually common to all controls and can not be overwritten individually (like BASE ones) +* After the first BASE properties set, the EXTENDED properties set is defined (by default guiStyle[16..23]), +* those properties are actually common to all controls and can not be overwritten individually (like BASE ones) * Some of those properties are: TEXT_SIZE, TEXT_SPACING, LINE_COLOR, BACKGROUND_COLOR * * Custom control properties can be defined using the EXTENDED properties for each independent control. @@ -141,13 +141,14 @@ * Draw text bounds rectangles for debug * * VERSIONS HISTORY: -* 5.0 (xx-Nov-2025) ADDED: Support up to 32 controls (v500) +* 5.0 (xx-Mar-2026) ADDED: Support up to 32 controls (v500) * ADDED: guiControlExclusiveMode and guiControlExclusiveRec for exclusive modes * ADDED: GuiValueBoxFloat() * ADDED: GuiDropdonwBox() properties: DROPDOWN_ARROW_HIDDEN, DROPDOWN_ROLL_UP * ADDED: GuiListView() property: LIST_ITEMS_BORDER_WIDTH * ADDED: GuiLoadIconsFromMemory() * ADDED: Multiple new icons +* ADDED: Macros for inputs customization, raylib decoupling * REMOVED: GuiSpinner() from controls list, using BUTTON + VALUEBOX properties * REMOVED: GuiSliderPro(), functionality was redundant * REVIEWED: Controls using text labels to use LABEL properties @@ -165,6 +166,7 @@ * REVIEWED: GuiTextBox(), multiple improvements: autocursor and more * REVIEWED: Functions descriptions, removed wrong return value reference * REDESIGNED: GuiColorPanel(), improved HSV <-> RGBA convertion +* REDESIGNED: WARNING: TEXT_LINE_SPACING does not consider text height, only lines spacing * * 4.0 (12-Sep-2023) ADDED: GuiToggleSlider() * ADDED: GuiColorPickerHSV() and GuiColorPanelHSV() @@ -316,7 +318,7 @@ * * LICENSE: zlib/libpng * -* Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) +* Copyright (c) 2014-2026 Ramon Santamaria (@raysan5) * * This software is provided "as-is", without any express or implied warranty. In no event * will the authors be held liable for any damages arising from the use of this software. @@ -351,10 +353,11 @@ // NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll #if defined(_WIN32) #if defined(BUILD_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllexport) // We are building the library as a Win32 shared library (.dll) + #define RAYGUIAPI __declspec(dllexport) // Building the library as a Win32 shared library (.dll) #elif defined(USE_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllimport) // We are using the library as a Win32 shared library (.dll) + #define RAYGUIAPI __declspec(dllimport) // Using the library as a Win32 shared library (.dll) #endif + #define _CRT_SECURE_NO_WARNINGS // Disable unsafe warnings on scanf() functions in MSVC #endif // Function specifiers definition @@ -369,9 +372,48 @@ // NOTE: Avoiding those calls, also avoids const strings memory usage #define RAYGUI_SUPPORT_LOG_INFO #if defined(RAYGUI_SUPPORT_LOG_INFO) - #define RAYGUI_LOG(...) printf(__VA_ARGS__) + #define RAYGUI_LOG(...) printf(__VA_ARGS__) #else - #define RAYGUI_LOG(...) + #define RAYGUI_LOG(...) +#endif + +// Macros to define required UI inputs, including mapping to gamepad controls +// TODO: Define additionally required macros for missing inputs +#if !defined(GUI_BUTTON_DOWN) + #define GUI_BUTTON_DOWN (IsMouseButtonDown(MOUSE_LEFT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +#if !defined(GUI_BUTTON_DOWN_ALT) + // Mapping to alternative button down pressed + #define GUI_BUTTON_DOWN_ALT (IsMouseButtonDown(MOUSE_RIGHT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) +#endif +#if !defined(GUI_BUTTON_PRESSED) + #define GUI_BUTTON_PRESSED (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +// TODO: WARNING: GuiTabBar() still requires IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON) +#if !defined(GUI_BUTTON_RELEASED) + #define GUI_BUTTON_RELEASED (IsMouseButtonReleased(MOUSE_LEFT_BUTTON) || IsGamepadButtonReleased(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +#if !defined(GUI_SCROLL_DELTA) + // Mapping to scroll delta changes + // TODO: Review inconsistencies between platforms + #if defined(PLATFORM_WEB) + // NOTE: Gamepad axis triggers not detected on web platform + #define GUI_SCROLL_DELTA ((float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_TRIGGER_2) - (float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_LEFT_TRIGGER_2)) + #else + #define GUI_SCROLL_DELTA (GetMouseWheelMove() + (GetGamepadAxisMovement(0, GAMEPAD_AXIS_RIGHT_TRIGGER) + 1) - (GetGamepadAxisMovement(0, GAMEPAD_AXIS_LEFT_TRIGGER) + 1)) + #endif +#endif +#if !defined(GUI_POINTER_POSITION) + #define GUI_POINTER_POSITION GetMousePosition() +#endif +#if !defined(GUI_KEY_DOWN) + #define GUI_KEY_DOWN(key) IsKeyDown(key) +#endif +#if !defined(GUI_KEY_PRESSED) + #define GUI_KEY_PRESSED(key) IsKeyPressed(key) +#endif +#if !defined(GUI_INPUT_KEY) + #define GUI_INPUT_KEY GetCharPressed() #endif //---------------------------------------------------------------------------------- @@ -567,7 +609,7 @@ typedef enum { //---------------------------------------------------------------------------------- // DEFAULT extended properties // NOTE: Those properties are common to all controls or global -// WARNING: We only have 8 slots for those properties by default!!! -> New global control: TEXT? +// WARNING: Only 8 slots vailable for those properties by default typedef enum { TEXT_SIZE = 16, // Text size (glyphs max height) TEXT_SPACING, // Text spacing between glyphs @@ -1091,7 +1133,7 @@ typedef enum { // Icons data is defined by bit array (every bit represents one pixel) // Those arrays are stored as unsigned int data arrays, so, // every array element defines 32 pixels (bits) of information -// One icon is defined by 8 int, (8 int * 32 bit = 256 bit = 16*16 pixels) +// One icon is defined by 8 int, (8 int*32 bit = 256 bit = 16*16 pixels) // NOTE: Number of elemens depend on RAYGUI_ICON_SIZE (by default 16x16 pixels) #define RAYGUI_ICON_DATA_ELEMENTS (RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32) @@ -1450,12 +1492,12 @@ static bool IsMouseButtonReleased(int button); static bool IsKeyDown(int key); static bool IsKeyPressed(int key); -static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() +static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() //------------------------------------------------------------------------------- // Drawing required functions //------------------------------------------------------------------------------- -static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() +static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() static void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() //------------------------------------------------------------------------------- @@ -1520,11 +1562,11 @@ static Color GuiFade(Color color, float alpha); // Fade color by an alph // Gui Setup Functions Definition //---------------------------------------------------------------------------------- // Enable gui global state -// NOTE: We check for STATE_DISABLED to avoid messing custom global state setups +// NOTE: Checking for STATE_DISABLED to avoid messing custom global state setups void GuiEnable(void) { if (guiState == STATE_DISABLED) guiState = STATE_NORMAL; } // Disable gui global state -// NOTE: We check for STATE_NORMAL to avoid messing custom global state setups +// NOTE: Checking for STATE_NORMAL to avoid messing custom global state setups void GuiDisable(void) { if (guiState == STATE_NORMAL) guiState = STATE_DISABLED; } // Lock gui global state @@ -1557,9 +1599,8 @@ void GuiSetFont(Font font) { if (font.texture.id > 0) { - // NOTE: If we try to setup a font but default style has not been - // lazily loaded before, it will be overwritten, so we need to force - // default style loading first + // NOTE: If a font is tried to be set but default style has not been lazily loaded first, + // it will be overwritten, so default style loading needs to be forced first if (!guiStyleLoaded) GuiLoadStyleDefault(); guiFont = font; @@ -1613,13 +1654,14 @@ int GuiWindowBox(Rectangle bounds, const char *title) //GuiState state = guiState; int statusBarHeight = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT; + int statusBorderWidth = GuiGetStyle(STATUSBAR, BORDER_WIDTH); Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)statusBarHeight }; if (bounds.height < statusBarHeight*2.0f) bounds.height = statusBarHeight*2.0f; const float vPadding = statusBarHeight/2.0f - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT/2.0f; - Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - 1, bounds.width, bounds.height - (float)statusBarHeight + 1 }; - Rectangle closeButtonRec = { statusBar.x + statusBar.width - GuiGetStyle(STATUSBAR, BORDER_WIDTH) - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, + Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - (float)statusBorderWidth, bounds.width, bounds.height - (float)statusBarHeight + (float)statusBorderWidth }; + Rectangle closeButtonRec = { statusBar.x + statusBar.width - (float)statusBorderWidth - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, statusBar.y + vPadding, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT }; // Update control @@ -1629,8 +1671,8 @@ int GuiWindowBox(Rectangle bounds, const char *title) // Draw control //-------------------------------------------------------------------- - GuiStatusBar(statusBar, title); // Draw window header as status bar GuiPanel(windowPanel, NULL); // Draw window base + GuiStatusBar(statusBar, title); // Draw window header as status bar // Draw window close button int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); @@ -1786,7 +1828,7 @@ int GuiTabBar(Rectangle bounds, const char **text, int count, int *active) } // Close tab with middle mouse button pressed - if (CheckCollisionPointRec(GetMousePosition(), tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; + if (CheckCollisionPointRec(GUI_POINTER_POSITION, tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; GuiSetStyle(TOGGLE, TEXT_PADDING, textPadding); GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, textAlignment); @@ -1885,37 +1927,37 @@ int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; #if defined(SUPPORT_SCROLLBAR_KEY_INPUT) if (hasHorizontalScrollBar) { - if (IsKeyDown(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (IsKeyDown(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); } if (hasVerticalScrollBar) { - if (IsKeyDown(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (IsKeyDown(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); } #endif - float wheelMove = GetMouseWheelMove(); + float scrollDelta = GUI_SCROLL_DELTA; // Set scrolling speed with mouse wheel based on ratio between bounds and content - Vector2 mouseWheelSpeed = { content.width/bounds.width, content.height/bounds.height }; - if (mouseWheelSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) mouseWheelSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; - if (mouseWheelSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) mouseWheelSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; + Vector2 scrollSpeed = { content.width/bounds.width, content.height/bounds.height }; + if (scrollSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; + if (scrollSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; // Horizontal and vertical scrolling with mouse wheel - if (hasHorizontalScrollBar && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_LEFT_SHIFT))) scrollPos.x += wheelMove*mouseWheelSpeed.x; - else scrollPos.y += wheelMove*mouseWheelSpeed.y; // Vertical scroll + if (hasHorizontalScrollBar && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_LEFT_SHIFT))) scrollPos.x += scrollDelta*scrollSpeed.x; + else scrollPos.y += scrollDelta*scrollSpeed.y; // Vertical scroll } } @@ -2001,15 +2043,15 @@ int GuiButton(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_RELEASED) result = 1; } } //-------------------------------------------------------------------- @@ -2031,7 +2073,7 @@ int GuiLabelButton(Rectangle bounds, const char *text) GuiState state = guiState; bool pressed = false; - // NOTE: We force bounds.width to be all text + // NOTE: Force bounds.width to be all text float textWidth = (float)GuiGetTextWidth(text); if ((bounds.width - 2*GuiGetStyle(LABEL, BORDER_WIDTH) - 2*GuiGetStyle(LABEL, TEXT_PADDING)) < textWidth) bounds.width = textWidth + 2*GuiGetStyle(LABEL, BORDER_WIDTH) + 2*GuiGetStyle(LABEL, TEXT_PADDING) + 2; @@ -2039,15 +2081,15 @@ int GuiLabelButton(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check checkbox state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) pressed = true; + if (GUI_BUTTON_RELEASED) pressed = true; } } //-------------------------------------------------------------------- @@ -2073,13 +2115,13 @@ int GuiToggle(Rectangle bounds, const char *text, bool *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check toggle button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; - else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else if (GUI_BUTTON_RELEASED) { state = STATE_NORMAL; *active = !(*active); @@ -2184,12 +2226,12 @@ int GuiToggleSlider(Rectangle bounds, const char *text, int *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; - else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else if (GUI_BUTTON_RELEASED) { state = STATE_PRESSED; (*active)++; @@ -2255,7 +2297,7 @@ int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; Rectangle totalBounds = { (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT)? textBounds.x : bounds.x, @@ -2267,10 +2309,10 @@ int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) // Check checkbox state if (CheckCollisionPointRec(mousePoint, totalBounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_RELEASED) { *checked = !(*checked); result = 1; @@ -2323,18 +2365,18 @@ int GuiComboBox(Rectangle bounds, const char *text, int *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && (itemCount > 1) && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { *active += 1; if (*active >= itemCount) *active = 0; // Cyclic combobox } - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -2392,7 +2434,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && (editMode || !guiLocked) && (itemCount > 1) && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (editMode) { @@ -2401,11 +2443,11 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod // Check if mouse has been pressed or released outside limits if (!CheckCollisionPointRec(mousePoint, boundsOpen)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED || GUI_BUTTON_RELEASED) result = 1; } // Check if already selected item has been pressed again - if (CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED) result = 1; // Check focused and selected item for (int i = 0; i < itemCount; i++) @@ -2417,7 +2459,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod if (CheckCollisionPointRec(mousePoint, itemBounds)) { itemFocused = i; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_RELEASED) { itemSelected = i; result = 1; // Item selected @@ -2432,7 +2474,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod { if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { result = 1; state = STATE_PRESSED; @@ -2506,7 +2548,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) int result = 0; GuiState state = guiState; - bool multiline = false; // TODO: Consider multiline text input + bool multiline = false; // TODO: Consider multiline text input int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); Rectangle textBounds = GetTextBounds(TEXTBOX, bounds); @@ -2514,7 +2556,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) int thisCursorIndex = textBoxCursorIndex; if (thisCursorIndex > textLength) thisCursorIndex = textLength; int textWidth = GuiGetTextWidth(text) - GuiGetTextWidth(text + thisCursorIndex); - int textIndexOffset = 0; // Text index offset to start drawing in the box + int textIndexOffset = 0; // Text index offset to start drawing in the box // Cursor rectangle // NOTE: Position X value should be updated @@ -2547,13 +2589,13 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) !guiControlExclusiveMode && // No gui slider on dragging (wrapMode == TEXT_WRAP_NONE)) // No wrap mode { - Vector2 mousePosition = GetMousePosition(); + Vector2 mousePosition = GUI_POINTER_POSITION; if (editMode) { // GLOBAL: Auto-cursor movement logic // NOTE: Keystrokes are handled repeatedly when button is held down for some time - if (IsKeyDown(KEY_LEFT) || IsKeyDown(KEY_RIGHT) || IsKeyDown(KEY_UP) || IsKeyDown(KEY_DOWN) || IsKeyDown(KEY_BACKSPACE) || IsKeyDown(KEY_DELETE)) autoCursorCounter++; + if (GUI_KEY_DOWN(KEY_LEFT) || GUI_KEY_DOWN(KEY_RIGHT) || GUI_KEY_DOWN(KEY_UP) || GUI_KEY_DOWN(KEY_DOWN) || GUI_KEY_DOWN(KEY_BACKSPACE) || GUI_KEY_DOWN(KEY_DELETE)) autoCursorCounter++; else autoCursorCounter = 0; bool autoCursorShouldTrigger = (autoCursorCounter > RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) && ((autoCursorCounter % RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) == 0); @@ -2563,7 +2605,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) if (textBoxCursorIndex > textLength) textBoxCursorIndex = textLength; // If text does not fit in the textbox and current cursor position is out of bounds, - // we add an index offset to text for drawing only what requires depending on cursor + // adding an index offset to text for drawing only what requires depending on cursor while (textWidth >= textBounds.width) { int nextCodepointSize = 0; @@ -2574,15 +2616,15 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textWidth = GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex); } - int codepoint = GetCharPressed(); // Get Unicode codepoint - if (multiline && IsKeyPressed(KEY_ENTER)) codepoint = (int)'\n'; + int codepoint = GUI_INPUT_KEY; // Get Unicode codepoint + if (multiline && GUI_KEY_PRESSED(KEY_ENTER)) codepoint = (int)'\n'; // Encode codepoint as UTF-8 int codepointSize = 0; const char *charEncoded = CodepointToUTF8(codepoint, &codepointSize); // Handle text paste action - if (IsKeyPressed(KEY_V) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if (GUI_KEY_PRESSED(KEY_V) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { const char *pasteText = GetClipboardText(); if (pasteText != NULL) @@ -2632,13 +2674,13 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Move cursor to start - if ((textLength > 0) && IsKeyPressed(KEY_HOME)) textBoxCursorIndex = 0; + if ((textLength > 0) && GUI_KEY_PRESSED(KEY_HOME)) textBoxCursorIndex = 0; // Move cursor to end - if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_END)) textBoxCursorIndex = textLength; + if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_END)) textBoxCursorIndex = textLength; // Delete related codepoints from text, after current cursor position - if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_DELETE) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_DELETE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; int accCodepointSize = 0; @@ -2674,7 +2716,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textLength -= accCodepointSize; } - else if ((textLength > textBoxCursorIndex) && (IsKeyPressed(KEY_DELETE) || (IsKeyDown(KEY_DELETE) && autoCursorShouldTrigger))) + else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_DELETE) || (GUI_KEY_DOWN(KEY_DELETE) && autoCursorShouldTrigger))) { // Delete single codepoint from text, after current cursor position @@ -2688,12 +2730,12 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Delete related codepoints from text, before current cursor position - if ((textBoxCursorIndex > 0) && IsKeyPressed(KEY_BACKSPACE) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; int accCodepointSize = 0; - int prevCodepointSize; - int prevCodepoint; + int prevCodepointSize = 0; + int prevCodepoint = 0; // Check whitespace to delete (ASCII only) while (offset > 0) @@ -2724,7 +2766,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex -= accCodepointSize; } - else if ((textBoxCursorIndex > 0) && (IsKeyPressed(KEY_BACKSPACE) || (IsKeyDown(KEY_BACKSPACE) && autoCursorShouldTrigger))) + else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_BACKSPACE) || (GUI_KEY_DOWN(KEY_BACKSPACE) && autoCursorShouldTrigger))) { // Delete single codepoint from text, before current cursor position @@ -2740,12 +2782,12 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Move cursor position with keys - if ((textBoxCursorIndex > 0) && IsKeyPressed(KEY_LEFT) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_LEFT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; //int accCodepointSize = 0; - int prevCodepointSize; - int prevCodepoint; + int prevCodepointSize = 0; + int prevCodepoint = 0; // Check whitespace to skip (ASCII only) while (offset > 0) @@ -2771,14 +2813,14 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex = offset; } - else if ((textBoxCursorIndex > 0) && (IsKeyPressed(KEY_LEFT) || (IsKeyDown(KEY_LEFT) && autoCursorShouldTrigger))) + else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_LEFT) || (GUI_KEY_DOWN(KEY_LEFT) && autoCursorShouldTrigger))) { int prevCodepointSize = 0; GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); textBoxCursorIndex -= prevCodepointSize; } - else if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_RIGHT) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + else if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_RIGHT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; //int accCodepointSize = 0; @@ -2810,7 +2852,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex = offset; } - else if ((textLength > textBoxCursorIndex) && (IsKeyPressed(KEY_RIGHT) || (IsKeyDown(KEY_RIGHT) && autoCursorShouldTrigger))) + else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_RIGHT) || (GUI_KEY_DOWN(KEY_RIGHT) && autoCursorShouldTrigger))) { int nextCodepointSize = 0; GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); @@ -2847,14 +2889,14 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) // Check if mouse cursor is at the last position int textEndWidth = GuiGetTextWidth(text + textIndexOffset); - if (GetMousePosition().x >= (textBounds.x + textEndWidth - glyphWidth/2)) + if (GUI_POINTER_POSITION.x >= (textBounds.x + textEndWidth - glyphWidth/2)) { mouseCursor.x = textBounds.x + textEndWidth; mouseCursorIndex = textLength; } // Place cursor at required index on mouse click - if ((mouseCursor.x >= 0) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if ((mouseCursor.x >= 0) && GUI_BUTTON_PRESSED) { cursor.x = mouseCursor.x; textBoxCursorIndex = mouseCursorIndex; @@ -2867,8 +2909,8 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) //if (multiline) cursor.y = GetTextLines() // Finish text editing on ENTER or mouse click outside bounds - if ((!multiline && IsKeyPressed(KEY_ENTER)) || - (!CheckCollisionPointRec(mousePosition, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) + if ((!multiline && GUI_KEY_PRESSED(KEY_ENTER)) || + (!CheckCollisionPointRec(mousePosition, bounds) && GUI_BUTTON_PRESSED)) { textBoxCursorIndex = 0; // GLOBAL: Reset the shared cursor index autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes @@ -2881,7 +2923,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { textBoxCursorIndex = textLength; // GLOBAL: Place cursor index to the end of current text autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes @@ -2975,12 +3017,12 @@ int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check spinner state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -3050,7 +3092,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; bool valueHasChanged = false; if (editMode) @@ -3060,7 +3102,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in int keyCount = (int)strlen(textValue); // Add or remove minus symbol - if (IsKeyPressed(KEY_MINUS)) + if (GUI_KEY_PRESSED(KEY_MINUS)) { if (textValue[0] == '-') { @@ -3089,8 +3131,8 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in // Add new digit to text value if ((keyCount >= 0) && (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) && (GuiGetTextWidth(textValue) < bounds.width)) { - int key = GetCharPressed(); - + int key = GUI_INPUT_KEY; + // Only allow keys in range [48..57] if ((key >= 48) && (key <= 57)) { @@ -3101,7 +3143,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in } // Delete text - if ((keyCount > 0) && IsKeyPressed(KEY_BACKSPACE)) + if ((keyCount > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE)) { keyCount--; textValue[keyCount] = '\0'; @@ -3110,11 +3152,11 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in if (valueHasChanged) *value = TextToInteger(textValue); - // NOTE: We are not clamp values until user input finishes + // NOTE: Values are not clamped until user input finishes //if (*value > maxValue) *value = maxValue; //else if (*value < minValue) *value = minValue; - if ((IsKeyPressed(KEY_ENTER) || IsKeyPressed(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) + if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) { if (*value > maxValue) *value = maxValue; else if (*value < minValue) *value = minValue; @@ -3130,7 +3172,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in if (CheckCollisionPointRec(mousePoint, bounds)) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED) result = 1; } } } @@ -3191,7 +3233,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; bool valueHasChanged = false; @@ -3202,7 +3244,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float int keyCount = (int)strlen(textValue); // Add or remove minus symbol - if (IsKeyPressed(KEY_MINUS)) + if (GUI_KEY_PRESSED(KEY_MINUS)) { if (textValue[0] == '-') { @@ -3233,7 +3275,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float { if (GuiGetTextWidth(textValue) < bounds.width) { - int key = GetCharPressed(); + int key = GUI_INPUT_KEY; if (((key >= 48) && (key <= 57)) || (key == '.') || ((keyCount == 0) && (key == '+')) || // NOTE: Sign can only be in first position @@ -3248,7 +3290,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float } // Pressed backspace - if (IsKeyPressed(KEY_BACKSPACE)) + if (GUI_KEY_PRESSED(KEY_BACKSPACE)) { if (keyCount > 0) { @@ -3260,14 +3302,14 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float if (valueHasChanged) *value = TextToFloat(textValue); - if ((IsKeyPressed(KEY_ENTER) || IsKeyPressed(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) result = 1; + if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) result = 1; } else { if (CheckCollisionPointRec(mousePoint, bounds)) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED) result = 1; } } } @@ -3321,11 +3363,11 @@ int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, flo //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3342,7 +3384,7 @@ int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, flo } else if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3535,12 +3577,12 @@ int GuiDummyRec(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -3578,7 +3620,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd int itemFocused = (focus == NULL)? -1 : *focus; int itemSelected = (active == NULL)? -1 : *active; - // Check if we need a scroll bar + // Check if scroll bar is needed bool useScrollBar = false; if ((GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING))*count > bounds.height) useScrollBar = true; @@ -3602,7 +3644,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check mouse inside list view if (CheckCollisionPointRec(mousePoint, bounds)) @@ -3615,7 +3657,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd if (CheckCollisionPointRec(mousePoint, itemBounds)) { itemFocused = startIndex + i; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { if (itemSelected == (startIndex + i)) itemSelected = -1; else itemSelected = startIndex + i; @@ -3629,8 +3671,8 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd if (useScrollBar) { - int wheelMove = (int)GetMouseWheelMove(); - startIndex -= wheelMove; + float scrollDelta = GUI_SCROLL_DELTA; + startIndex -= (int)scrollDelta; if (startIndex < 0) startIndex = 0; else if (startIndex > (count - visibleItems)) startIndex = count - visibleItems; @@ -3659,7 +3701,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd { if ((startIndex + i) == itemSelected) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_DISABLED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_DISABLED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); } else { @@ -3667,18 +3709,18 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd { // Draw item selected GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_PRESSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); } - else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: We want items focused, despite not returned! + else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: Items focused, despite not returned { // Draw item focused GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_FOCUSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); } else { // Draw item normal (no rectangle) - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); } } @@ -3765,11 +3807,11 @@ int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3788,7 +3830,7 @@ int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) } else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3850,11 +3892,11 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3873,7 +3915,7 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) } else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3886,12 +3928,12 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) } else state = STATE_FOCUSED; - /*if (IsKeyDown(KEY_UP)) + /*if (GUI_KEY_DOWN(KEY_UP)) { hue -= 2.0f; if (hue <= 0.0f) hue = 0.0f; } - else if (IsKeyDown(KEY_DOWN)) + else if (GUI_KEY_DOWN(KEY_DOWN)) { hue += 2.0f; if (hue >= 360.0f) hue = 360.0f; @@ -4008,11 +4050,11 @@ int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -4042,7 +4084,7 @@ int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) } else if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -4198,6 +4240,9 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); } + int prevTextBoxAlignment = GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT); + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + if (secretViewActive != NULL) { static char stars[] = "****************"; @@ -4211,6 +4256,8 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co if (GuiTextBox(textBoxBounds, text, textMaxSize, textEditMode)) textEditMode = !textEditMode; } + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, prevTextBoxAlignment); + int prevBtnTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); @@ -4231,7 +4278,7 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co // Grid control // NOTE: Returns grid mouse-hover selected cell // About drawing lines at subpixel spacing, simple put, not easy solution: -// https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster +// REF: https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell) { // Grid lines alpha amount @@ -4242,7 +4289,7 @@ int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vect int result = 0; GuiState state = guiState; - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; Vector2 currentMouseCell = { -1, -1 }; float spaceWidth = spacing/(float)subdivs; @@ -4410,11 +4457,14 @@ void GuiLoadStyle(const char *fileName) if (fileDataSize > 0) { unsigned char *fileData = (unsigned char *)RAYGUI_CALLOC(fileDataSize, sizeof(unsigned char)); - fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); + if (fileData != NULL) + { + fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); - GuiLoadStyleFromMemory(fileData, fileDataSize); + GuiLoadStyleFromMemory(fileData, fileDataSize); - RAYGUI_FREE(fileData); + RAYGUI_FREE(fileData); + } } fclose(rgsFile); @@ -4425,7 +4475,7 @@ void GuiLoadStyle(const char *fileName) // Load style default over global style void GuiLoadStyleDefault(void) { - // We set this variable first to avoid cyclic function calls + // Setting this flag first to avoid cyclic function calls // when calling GuiSetStyle() and GuiGetStyle() guiStyleLoaded = true; @@ -4454,7 +4504,7 @@ void GuiLoadStyleDefault(void) GuiSetStyle(DEFAULT, TEXT_SPACING, 1); // DEFAULT, shared by all controls GuiSetStyle(DEFAULT, LINE_COLOR, 0x90abb5ff); // DEFAULT specific property GuiSetStyle(DEFAULT, BACKGROUND_COLOR, 0xf5f5f5ff); // DEFAULT specific property - GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 15); // DEFAULT, 15 pixels between lines + GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 5); // DEFAULT, pixels between lines, from bottom of first line to top of second GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); // DEFAULT, text aligned vertically to middle of text-bounds // Initialize control-specific property values @@ -4520,7 +4570,7 @@ void GuiLoadStyleDefault(void) // NOTE: Default raylib font character 95 is a white square Rectangle whiteChar = guiFont.recs[95]; - // NOTE: We set up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering + // NOTE: Setting up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering SetShapesTexture(guiFont.texture, RAYGUI_CLITERAL(Rectangle){ whiteChar.x + 1, whiteChar.y + 1, whiteChar.width - 2, whiteChar.height - 2 }); } } @@ -5037,14 +5087,14 @@ static Rectangle GetTextBounds(int control, Rectangle bounds) } // Get text icon if provided and move text cursor -// NOTE: We support up to 999 values for iconId +// NOTE: Up to #999# values supported for iconId static const char *GetTextIcon(const char *text, int *iconId) { #if !defined(RAYGUI_NO_ICONS) *iconId = -1; - if (text[0] == '#') // Maybe we have an icon! + if (text[0] == '#') // Maybe it is stars with an icon, ending # must be found { - char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' + char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' int pos = 1; while ((pos < 4) && (text[pos] >= '0') && (text[pos] <= '9')) @@ -5076,12 +5126,12 @@ static const char **GetTextLines(const char *text, int *count) static const char *lines[RAYGUI_MAX_TEXT_LINES] = { 0 }; for (int i = 0; i < RAYGUI_MAX_TEXT_LINES; i++) lines[i] = NULL; // Init NULL pointers to substrings - int textSize = (int)strlen(text); + int textLength = (int)strlen(text); lines[0] = text; *count = 1; - for (int i = 0, k = 0; (i < textSize) && (*count < RAYGUI_MAX_TEXT_LINES); i++) + for (int i = 0, k = 0; (i < textLength) && (*count < RAYGUI_MAX_TEXT_LINES); i++) { if (text[i] == '\n') { @@ -5141,7 +5191,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C // - For every line, wordwrap mode is checked (useful for GuitextBox(), read-only) // Get text lines (using '\n' as delimiter) to be processed individually - // WARNING: We can't use GuiTextSplit() function because it can be already used + // WARNING: GuiTextSplit() function can't be used now because it can have already been used // before the GuiDrawText() call and its buffer is static, it would be overriden :( int lineCount = 0; const char **lines = GetTextLines(text, &lineCount); @@ -5152,7 +5202,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); // Wrap-mode only available in read-only mode, no for text editing // TODO: WARNING: This totalHeight is not valid for vertical alignment in case of word-wrap - float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_SIZE)/2); + float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); float posOffsetY = 0.0f; for (int i = 0; i < lineCount; i++) @@ -5165,7 +5215,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C Vector2 textBoundsPosition = { textBounds.x, textBounds.y }; float textBoundsWidthOffset = 0.0f; - // NOTE: We get text size after icon has been processed + // NOTE: Get text size after icon has been processed // WARNING: GuiGetTextWidth() also processes text icon to get width! -> Really needed? int textSizeX = GuiGetTextWidth(lines[i]); @@ -5200,8 +5250,8 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C default: break; } - // NOTE: Make sure we get pixel-perfect coordinates, - // In case of decimals we got weird text positioning + // NOTE: Make sure getting pixel-perfect coordinates, + // In case of decimals, it could result in text positioning artifacts textBoundsPosition.x = (float)((int)textBoundsPosition.x); textBoundsPosition.y = (float)((int)textBoundsPosition.y); //--------------------------------------------------------------------------------- @@ -5211,7 +5261,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C #if !defined(RAYGUI_NO_ICONS) if (iconId >= 0) { - // NOTE: We consider icon height, probably different than text size + // NOTE: Considering icon height, probably different than text size GuiDrawIcon(iconId, (int)textBoundsPosition.x, (int)(textBounds.y + textBounds.height/2 - RAYGUI_ICON_SIZE*guiIconScale/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height)), guiIconScale, tint); textBoundsPosition.x += (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); textBoundsWidthOffset = (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); @@ -5237,8 +5287,8 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C int codepoint = GetCodepointNext(&lines[i][c], &codepointSize); int index = GetGlyphIndex(guiFont, codepoint); - // NOTE: Normally we exit the decoding sequence as soon as a bad byte is found (and return 0x3f) - // but we need to draw all of the bad bytes using the '?' symbol moving one byte + // NOTE: Normally, exiting the decoding sequence as soon as a bad byte is found (and return 0x3f) + // but all of the bad bytes need to be drawn using the '?' symbol, moving one byte if (codepoint == 0x3f) codepointSize = 1; // TODO: Review not recognized codepoints size // Get glyph width to check if it goes out of bounds @@ -5253,7 +5303,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C if ((textOffsetX + glyphWidth) > textBounds.width - textBoundsWidthOffset) { textOffsetX = 0.0f; - textOffsetY += GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); if (tempWrapCharMode) // Wrap at char level when too long words { @@ -5282,7 +5332,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C else if ((textOffsetX + nextSpaceWidth) > textBounds.width - textBoundsWidthOffset) { textOffsetX = 0.0f; - textOffsetY += GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); } } @@ -5332,7 +5382,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C } } - if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)(GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) posOffsetY += (textOffsetY + (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); //--------------------------------------------------------------------------------- } @@ -5374,13 +5424,19 @@ static void GuiTooltip(Rectangle controlRec) if ((controlRec.x + textSize.x + 16) > GetScreenWidth()) controlRec.x -= (textSize.x + 16 - controlRec.width); - GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, GuiGetStyle(DEFAULT, TEXT_SIZE) + 8.0f }, NULL); + int lineCount = 0; + GetTextLines(guiTooltipPtr, &lineCount); // Only using the line count + if ((controlRec.y + controlRec.height + textSize.y + 4 + 8*lineCount) > GetScreenHeight()) + controlRec.y -= (controlRec.height + textSize.y + 4 + 8*lineCount); + + // TODO: Probably TEXT_LINE_SPACING should be considered on panel size instead of hardcoding 8.0f + GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, NULL); int textPadding = GuiGetStyle(LABEL, TEXT_PADDING); int textAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); GuiSetStyle(LABEL, TEXT_PADDING, 0); GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, GuiGetStyle(DEFAULT, TEXT_SIZE) + 8.0f }, guiTooltipPtr); + GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, guiTooltipPtr); GuiSetStyle(LABEL, TEXT_ALIGNMENT, textAlignment); GuiSetStyle(LABEL, TEXT_PADDING, textPadding); } @@ -5416,7 +5472,7 @@ static const char **GuiTextSplit(const char *text, char delimiter, int *count, i if (textRow != NULL) textRow[0] = 0; - // Count how many substrings we have on text and point to every one + // Count how many substrings text contains and point to every one of them for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) { buffer[i] = text[i]; @@ -5637,11 +5693,11 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON) && + if (GUI_BUTTON_DOWN && !CheckCollisionPointRec(mousePoint, arrowUpLeft) && !CheckCollisionPointRec(mousePoint, arrowDownRight)) { @@ -5664,11 +5720,11 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) state = STATE_FOCUSED; // Handle mouse wheel - int wheel = (int)GetMouseWheelMove(); - if (wheel != 0) value += wheel; + float scrollDelta = GUI_SCROLL_DELTA; + if (scrollDelta != 0) value += (int)scrollDelta; // Handle mouse button down - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { guiControlExclusiveMode = true; guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts @@ -5690,13 +5746,13 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) /* if (isVertical) { - if (IsKeyDown(KEY_DOWN)) value += 5; - else if (IsKeyDown(KEY_UP)) value -= 5; + if (GUI_KEY_DOWN(KEY_DOWN)) value += 5; + else if (GUI_KEY_DOWN(KEY_UP)) value -= 5; } else { - if (IsKeyDown(KEY_RIGHT)) value += 5; - else if (IsKeyDown(KEY_LEFT)) value -= 5; + if (GUI_KEY_DOWN(KEY_RIGHT)) value += 5; + else if (GUI_KEY_DOWN(KEY_LEFT)) value -= 5; } */ } @@ -5833,7 +5889,7 @@ const char **TextSplit(const char *text, char delimiter, int *count) { counter = 1; - // Count how many substrings we have on text and point to every one + // Count how many substrings text contains and point to every one of them for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) { buffer[i] = text[i]; @@ -5866,7 +5922,7 @@ static int TextToInteger(const char *text) text++; } - for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); ++i) value = value*10 + (int)(text[i] - '0'); + for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10 + (int)(text[i] - '0'); return value*sign; } @@ -5941,9 +5997,9 @@ static const char *CodepointToUTF8(int codepoint, int *byteSize) } // Get next codepoint in a UTF-8 encoded text, scanning until '\0' is found -// When a invalid UTF-8 byte is encountered we exit as soon as possible and a '?'(0x3f) codepoint is returned +// When a invalid UTF-8 byte is encountered, exiting as soon as possible and returning a '?'(0x3f) codepoint // Total number of bytes processed are returned as a parameter -// NOTE: the standard says U+FFFD should be returned in case of errors +// NOTE: The standard says U+FFFD should be returned in case of errors // but that character is not supported by the default font in raylib static int GetCodepointNext(const char *text, int *codepointSize) { diff --git a/examples/shapes/raygui.h b/examples/shapes/raygui.h index 88fe5cc5b..67c16be45 100644 --- a/examples/shapes/raygui.h +++ b/examples/shapes/raygui.h @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raygui v4.5-dev - A simple and easy-to-use immediate-mode gui library +* raygui v5.0-dev - A simple and easy-to-use immediate-mode gui library * * DESCRIPTION: * raygui is a tools-dev-focused immediate-mode-gui library based on raylib but also @@ -83,8 +83,8 @@ * used for all controls, when any of those base values is set, it is automatically populated to all * controls, so, specific control values overwriting generic style should be set after base values * -* After the first BASE set we have the EXTENDED properties (by default guiStyle[16..23]), those -* properties are actually common to all controls and can not be overwritten individually (like BASE ones) +* After the first BASE properties set, the EXTENDED properties set is defined (by default guiStyle[16..23]), +* those properties are actually common to all controls and can not be overwritten individually (like BASE ones) * Some of those properties are: TEXT_SIZE, TEXT_SPACING, LINE_COLOR, BACKGROUND_COLOR * * Custom control properties can be defined using the EXTENDED properties for each independent control. @@ -141,13 +141,14 @@ * Draw text bounds rectangles for debug * * VERSIONS HISTORY: -* 5.0 (xx-Nov-2025) ADDED: Support up to 32 controls (v500) +* 5.0 (xx-Mar-2026) ADDED: Support up to 32 controls (v500) * ADDED: guiControlExclusiveMode and guiControlExclusiveRec for exclusive modes * ADDED: GuiValueBoxFloat() * ADDED: GuiDropdonwBox() properties: DROPDOWN_ARROW_HIDDEN, DROPDOWN_ROLL_UP * ADDED: GuiListView() property: LIST_ITEMS_BORDER_WIDTH * ADDED: GuiLoadIconsFromMemory() * ADDED: Multiple new icons +* ADDED: Macros for inputs customization, raylib decoupling * REMOVED: GuiSpinner() from controls list, using BUTTON + VALUEBOX properties * REMOVED: GuiSliderPro(), functionality was redundant * REVIEWED: Controls using text labels to use LABEL properties @@ -165,6 +166,7 @@ * REVIEWED: GuiTextBox(), multiple improvements: autocursor and more * REVIEWED: Functions descriptions, removed wrong return value reference * REDESIGNED: GuiColorPanel(), improved HSV <-> RGBA convertion +* REDESIGNED: WARNING: TEXT_LINE_SPACING does not consider text height, only lines spacing * * 4.0 (12-Sep-2023) ADDED: GuiToggleSlider() * ADDED: GuiColorPickerHSV() and GuiColorPanelHSV() @@ -316,7 +318,7 @@ * * LICENSE: zlib/libpng * -* Copyright (c) 2014-2025 Ramon Santamaria (@raysan5) +* Copyright (c) 2014-2026 Ramon Santamaria (@raysan5) * * This software is provided "as-is", without any express or implied warranty. In no event * will the authors be held liable for any damages arising from the use of this software. @@ -351,10 +353,11 @@ // NOTE: Microsoft specifiers to tell compiler that symbols are imported/exported from a .dll #if defined(_WIN32) #if defined(BUILD_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllexport) // We are building the library as a Win32 shared library (.dll) + #define RAYGUIAPI __declspec(dllexport) // Building the library as a Win32 shared library (.dll) #elif defined(USE_LIBTYPE_SHARED) - #define RAYGUIAPI __declspec(dllimport) // We are using the library as a Win32 shared library (.dll) + #define RAYGUIAPI __declspec(dllimport) // Using the library as a Win32 shared library (.dll) #endif + #define _CRT_SECURE_NO_WARNINGS // Disable unsafe warnings on scanf() functions in MSVC #endif // Function specifiers definition @@ -369,9 +372,48 @@ // NOTE: Avoiding those calls, also avoids const strings memory usage #define RAYGUI_SUPPORT_LOG_INFO #if defined(RAYGUI_SUPPORT_LOG_INFO) - #define RAYGUI_LOG(...) printf(__VA_ARGS__) + #define RAYGUI_LOG(...) printf(__VA_ARGS__) #else - #define RAYGUI_LOG(...) + #define RAYGUI_LOG(...) +#endif + +// Macros to define required UI inputs, including mapping to gamepad controls +// TODO: Define additionally required macros for missing inputs +#if !defined(GUI_BUTTON_DOWN) + #define GUI_BUTTON_DOWN (IsMouseButtonDown(MOUSE_LEFT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +#if !defined(GUI_BUTTON_DOWN_ALT) + // Mapping to alternative button down pressed + #define GUI_BUTTON_DOWN_ALT (IsMouseButtonDown(MOUSE_RIGHT_BUTTON) || IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_FACE_RIGHT)) +#endif +#if !defined(GUI_BUTTON_PRESSED) + #define GUI_BUTTON_PRESSED (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsGamepadButtonPressed(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +// TODO: WARNING: GuiTabBar() still requires IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON) +#if !defined(GUI_BUTTON_RELEASED) + #define GUI_BUTTON_RELEASED (IsMouseButtonReleased(MOUSE_LEFT_BUTTON) || IsGamepadButtonReleased(0, GAMEPAD_BUTTON_RIGHT_FACE_DOWN)) +#endif +#if !defined(GUI_SCROLL_DELTA) + // Mapping to scroll delta changes + // TODO: Review inconsistencies between platforms + #if defined(PLATFORM_WEB) + // NOTE: Gamepad axis triggers not detected on web platform + #define GUI_SCROLL_DELTA ((float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_RIGHT_TRIGGER_2) - (float)IsGamepadButtonDown(0, GAMEPAD_BUTTON_LEFT_TRIGGER_2)) + #else + #define GUI_SCROLL_DELTA (GetMouseWheelMove() + (GetGamepadAxisMovement(0, GAMEPAD_AXIS_RIGHT_TRIGGER) + 1) - (GetGamepadAxisMovement(0, GAMEPAD_AXIS_LEFT_TRIGGER) + 1)) + #endif +#endif +#if !defined(GUI_POINTER_POSITION) + #define GUI_POINTER_POSITION GetMousePosition() +#endif +#if !defined(GUI_KEY_DOWN) + #define GUI_KEY_DOWN(key) IsKeyDown(key) +#endif +#if !defined(GUI_KEY_PRESSED) + #define GUI_KEY_PRESSED(key) IsKeyPressed(key) +#endif +#if !defined(GUI_INPUT_KEY) + #define GUI_INPUT_KEY GetCharPressed() #endif //---------------------------------------------------------------------------------- @@ -567,7 +609,7 @@ typedef enum { //---------------------------------------------------------------------------------- // DEFAULT extended properties // NOTE: Those properties are common to all controls or global -// WARNING: We only have 8 slots for those properties by default!!! -> New global control: TEXT? +// WARNING: Only 8 slots vailable for those properties by default typedef enum { TEXT_SIZE = 16, // Text size (glyphs max height) TEXT_SPACING, // Text spacing between glyphs @@ -1091,7 +1133,7 @@ typedef enum { // Icons data is defined by bit array (every bit represents one pixel) // Those arrays are stored as unsigned int data arrays, so, // every array element defines 32 pixels (bits) of information -// One icon is defined by 8 int, (8 int * 32 bit = 256 bit = 16*16 pixels) +// One icon is defined by 8 int, (8 int*32 bit = 256 bit = 16*16 pixels) // NOTE: Number of elemens depend on RAYGUI_ICON_SIZE (by default 16x16 pixels) #define RAYGUI_ICON_DATA_ELEMENTS (RAYGUI_ICON_SIZE*RAYGUI_ICON_SIZE/32) @@ -1450,12 +1492,12 @@ static bool IsMouseButtonReleased(int button); static bool IsKeyDown(int key); static bool IsKeyPressed(int key); -static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() +static int GetCharPressed(void); // -- GuiTextBox(), GuiValueBox() //------------------------------------------------------------------------------- // Drawing required functions //------------------------------------------------------------------------------- -static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() +static void DrawRectangle(int x, int y, int width, int height, Color color); // -- GuiDrawRectangle() static void DrawRectangleGradientEx(Rectangle rec, Color col1, Color col2, Color col3, Color col4); // -- GuiColorPicker() //------------------------------------------------------------------------------- @@ -1520,11 +1562,11 @@ static Color GuiFade(Color color, float alpha); // Fade color by an alph // Gui Setup Functions Definition //---------------------------------------------------------------------------------- // Enable gui global state -// NOTE: We check for STATE_DISABLED to avoid messing custom global state setups +// NOTE: Checking for STATE_DISABLED to avoid messing custom global state setups void GuiEnable(void) { if (guiState == STATE_DISABLED) guiState = STATE_NORMAL; } // Disable gui global state -// NOTE: We check for STATE_NORMAL to avoid messing custom global state setups +// NOTE: Checking for STATE_NORMAL to avoid messing custom global state setups void GuiDisable(void) { if (guiState == STATE_NORMAL) guiState = STATE_DISABLED; } // Lock gui global state @@ -1557,9 +1599,8 @@ void GuiSetFont(Font font) { if (font.texture.id > 0) { - // NOTE: If we try to setup a font but default style has not been - // lazily loaded before, it will be overwritten, so we need to force - // default style loading first + // NOTE: If a font is tried to be set but default style has not been lazily loaded first, + // it will be overwritten, so default style loading needs to be forced first if (!guiStyleLoaded) GuiLoadStyleDefault(); guiFont = font; @@ -1613,13 +1654,14 @@ int GuiWindowBox(Rectangle bounds, const char *title) //GuiState state = guiState; int statusBarHeight = RAYGUI_WINDOWBOX_STATUSBAR_HEIGHT; + int statusBorderWidth = GuiGetStyle(STATUSBAR, BORDER_WIDTH); Rectangle statusBar = { bounds.x, bounds.y, bounds.width, (float)statusBarHeight }; if (bounds.height < statusBarHeight*2.0f) bounds.height = statusBarHeight*2.0f; const float vPadding = statusBarHeight/2.0f - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT/2.0f; - Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - 1, bounds.width, bounds.height - (float)statusBarHeight + 1 }; - Rectangle closeButtonRec = { statusBar.x + statusBar.width - GuiGetStyle(STATUSBAR, BORDER_WIDTH) - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, + Rectangle windowPanel = { bounds.x, bounds.y + (float)statusBarHeight - (float)statusBorderWidth, bounds.width, bounds.height - (float)statusBarHeight + (float)statusBorderWidth }; + Rectangle closeButtonRec = { statusBar.x + statusBar.width - (float)statusBorderWidth - RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT - vPadding, statusBar.y + vPadding, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT, RAYGUI_WINDOWBOX_CLOSEBUTTON_HEIGHT }; // Update control @@ -1629,8 +1671,8 @@ int GuiWindowBox(Rectangle bounds, const char *title) // Draw control //-------------------------------------------------------------------- - GuiStatusBar(statusBar, title); // Draw window header as status bar GuiPanel(windowPanel, NULL); // Draw window base + GuiStatusBar(statusBar, title); // Draw window header as status bar // Draw window close button int tempBorderWidth = GuiGetStyle(BUTTON, BORDER_WIDTH); @@ -1786,7 +1828,7 @@ int GuiTabBar(Rectangle bounds, const char **text, int count, int *active) } // Close tab with middle mouse button pressed - if (CheckCollisionPointRec(GetMousePosition(), tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; + if (CheckCollisionPointRec(GUI_POINTER_POSITION, tabBounds) && IsMouseButtonPressed(MOUSE_MIDDLE_BUTTON)) result = i; GuiSetStyle(TOGGLE, TEXT_PADDING, textPadding); GuiSetStyle(TOGGLE, TEXT_ALIGNMENT, textAlignment); @@ -1885,37 +1927,37 @@ int GuiScrollPanel(Rectangle bounds, const char *text, Rectangle content, Vector //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; #if defined(SUPPORT_SCROLLBAR_KEY_INPUT) if (hasHorizontalScrollBar) { - if (IsKeyDown(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (IsKeyDown(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_RIGHT)) scrollPos.x -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_LEFT)) scrollPos.x += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); } if (hasVerticalScrollBar) { - if (IsKeyDown(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); - if (IsKeyDown(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_DOWN)) scrollPos.y -= GuiGetStyle(SCROLLBAR, SCROLL_SPEED); + if (GUI_KEY_DOWN(KEY_UP)) scrollPos.y += GuiGetStyle(SCROLLBAR, SCROLL_SPEED); } #endif - float wheelMove = GetMouseWheelMove(); + float scrollDelta = GUI_SCROLL_DELTA; // Set scrolling speed with mouse wheel based on ratio between bounds and content - Vector2 mouseWheelSpeed = { content.width/bounds.width, content.height/bounds.height }; - if (mouseWheelSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) mouseWheelSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; - if (mouseWheelSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) mouseWheelSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; + Vector2 scrollSpeed = { content.width/bounds.width, content.height/bounds.height }; + if (scrollSpeed.x < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.x = RAYGUI_MIN_MOUSE_WHEEL_SPEED; + if (scrollSpeed.y < RAYGUI_MIN_MOUSE_WHEEL_SPEED) scrollSpeed.y = RAYGUI_MIN_MOUSE_WHEEL_SPEED; // Horizontal and vertical scrolling with mouse wheel - if (hasHorizontalScrollBar && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_LEFT_SHIFT))) scrollPos.x += wheelMove*mouseWheelSpeed.x; - else scrollPos.y += wheelMove*mouseWheelSpeed.y; // Vertical scroll + if (hasHorizontalScrollBar && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_LEFT_SHIFT))) scrollPos.x += scrollDelta*scrollSpeed.x; + else scrollPos.y += scrollDelta*scrollSpeed.y; // Vertical scroll } } @@ -2001,15 +2043,15 @@ int GuiButton(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_RELEASED) result = 1; } } //-------------------------------------------------------------------- @@ -2031,7 +2073,7 @@ int GuiLabelButton(Rectangle bounds, const char *text) GuiState state = guiState; bool pressed = false; - // NOTE: We force bounds.width to be all text + // NOTE: Force bounds.width to be all text float textWidth = (float)GuiGetTextWidth(text); if ((bounds.width - 2*GuiGetStyle(LABEL, BORDER_WIDTH) - 2*GuiGetStyle(LABEL, TEXT_PADDING)) < textWidth) bounds.width = textWidth + 2*GuiGetStyle(LABEL, BORDER_WIDTH) + 2*GuiGetStyle(LABEL, TEXT_PADDING) + 2; @@ -2039,15 +2081,15 @@ int GuiLabelButton(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check checkbox state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) pressed = true; + if (GUI_BUTTON_RELEASED) pressed = true; } } //-------------------------------------------------------------------- @@ -2073,13 +2115,13 @@ int GuiToggle(Rectangle bounds, const char *text, bool *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check toggle button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; - else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else if (GUI_BUTTON_RELEASED) { state = STATE_NORMAL; *active = !(*active); @@ -2184,12 +2226,12 @@ int GuiToggleSlider(Rectangle bounds, const char *text, int *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; - else if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; + else if (GUI_BUTTON_RELEASED) { state = STATE_PRESSED; (*active)++; @@ -2255,7 +2297,7 @@ int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; Rectangle totalBounds = { (GuiGetStyle(CHECKBOX, TEXT_ALIGNMENT) == TEXT_ALIGN_LEFT)? textBounds.x : bounds.x, @@ -2267,10 +2309,10 @@ int GuiCheckBox(Rectangle bounds, const char *text, bool *checked) // Check checkbox state if (CheckCollisionPointRec(mousePoint, totalBounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_RELEASED) { *checked = !(*checked); result = 1; @@ -2323,18 +2365,18 @@ int GuiComboBox(Rectangle bounds, const char *text, int *active) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && (itemCount > 1) && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { *active += 1; if (*active >= itemCount) *active = 0; // Cyclic combobox } - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -2392,7 +2434,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && (editMode || !guiLocked) && (itemCount > 1) && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (editMode) { @@ -2401,11 +2443,11 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod // Check if mouse has been pressed or released outside limits if (!CheckCollisionPointRec(mousePoint, boundsOpen)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON) || IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED || GUI_BUTTON_RELEASED) result = 1; } // Check if already selected item has been pressed again - if (CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED) result = 1; // Check focused and selected item for (int i = 0; i < itemCount; i++) @@ -2417,7 +2459,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod if (CheckCollisionPointRec(mousePoint, itemBounds)) { itemFocused = i; - if (IsMouseButtonReleased(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_RELEASED) { itemSelected = i; result = 1; // Item selected @@ -2432,7 +2474,7 @@ int GuiDropdownBox(Rectangle bounds, const char *text, int *active, bool editMod { if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { result = 1; state = STATE_PRESSED; @@ -2506,7 +2548,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) int result = 0; GuiState state = guiState; - bool multiline = false; // TODO: Consider multiline text input + bool multiline = false; // TODO: Consider multiline text input int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); Rectangle textBounds = GetTextBounds(TEXTBOX, bounds); @@ -2514,7 +2556,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) int thisCursorIndex = textBoxCursorIndex; if (thisCursorIndex > textLength) thisCursorIndex = textLength; int textWidth = GuiGetTextWidth(text) - GuiGetTextWidth(text + thisCursorIndex); - int textIndexOffset = 0; // Text index offset to start drawing in the box + int textIndexOffset = 0; // Text index offset to start drawing in the box // Cursor rectangle // NOTE: Position X value should be updated @@ -2547,13 +2589,13 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) !guiControlExclusiveMode && // No gui slider on dragging (wrapMode == TEXT_WRAP_NONE)) // No wrap mode { - Vector2 mousePosition = GetMousePosition(); + Vector2 mousePosition = GUI_POINTER_POSITION; if (editMode) { // GLOBAL: Auto-cursor movement logic // NOTE: Keystrokes are handled repeatedly when button is held down for some time - if (IsKeyDown(KEY_LEFT) || IsKeyDown(KEY_RIGHT) || IsKeyDown(KEY_UP) || IsKeyDown(KEY_DOWN) || IsKeyDown(KEY_BACKSPACE) || IsKeyDown(KEY_DELETE)) autoCursorCounter++; + if (GUI_KEY_DOWN(KEY_LEFT) || GUI_KEY_DOWN(KEY_RIGHT) || GUI_KEY_DOWN(KEY_UP) || GUI_KEY_DOWN(KEY_DOWN) || GUI_KEY_DOWN(KEY_BACKSPACE) || GUI_KEY_DOWN(KEY_DELETE)) autoCursorCounter++; else autoCursorCounter = 0; bool autoCursorShouldTrigger = (autoCursorCounter > RAYGUI_TEXTBOX_AUTO_CURSOR_COOLDOWN) && ((autoCursorCounter % RAYGUI_TEXTBOX_AUTO_CURSOR_DELAY) == 0); @@ -2563,7 +2605,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) if (textBoxCursorIndex > textLength) textBoxCursorIndex = textLength; // If text does not fit in the textbox and current cursor position is out of bounds, - // we add an index offset to text for drawing only what requires depending on cursor + // adding an index offset to text for drawing only what requires depending on cursor while (textWidth >= textBounds.width) { int nextCodepointSize = 0; @@ -2574,15 +2616,15 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textWidth = GuiGetTextWidth(text + textIndexOffset) - GuiGetTextWidth(text + textBoxCursorIndex); } - int codepoint = GetCharPressed(); // Get Unicode codepoint - if (multiline && IsKeyPressed(KEY_ENTER)) codepoint = (int)'\n'; + int codepoint = GUI_INPUT_KEY; // Get Unicode codepoint + if (multiline && GUI_KEY_PRESSED(KEY_ENTER)) codepoint = (int)'\n'; // Encode codepoint as UTF-8 int codepointSize = 0; const char *charEncoded = CodepointToUTF8(codepoint, &codepointSize); // Handle text paste action - if (IsKeyPressed(KEY_V) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if (GUI_KEY_PRESSED(KEY_V) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { const char *pasteText = GetClipboardText(); if (pasteText != NULL) @@ -2632,13 +2674,13 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Move cursor to start - if ((textLength > 0) && IsKeyPressed(KEY_HOME)) textBoxCursorIndex = 0; + if ((textLength > 0) && GUI_KEY_PRESSED(KEY_HOME)) textBoxCursorIndex = 0; // Move cursor to end - if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_END)) textBoxCursorIndex = textLength; + if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_END)) textBoxCursorIndex = textLength; // Delete related codepoints from text, after current cursor position - if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_DELETE) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_DELETE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; int accCodepointSize = 0; @@ -2674,7 +2716,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textLength -= accCodepointSize; } - else if ((textLength > textBoxCursorIndex) && (IsKeyPressed(KEY_DELETE) || (IsKeyDown(KEY_DELETE) && autoCursorShouldTrigger))) + else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_DELETE) || (GUI_KEY_DOWN(KEY_DELETE) && autoCursorShouldTrigger))) { // Delete single codepoint from text, after current cursor position @@ -2688,12 +2730,12 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Delete related codepoints from text, before current cursor position - if ((textBoxCursorIndex > 0) && IsKeyPressed(KEY_BACKSPACE) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; int accCodepointSize = 0; - int prevCodepointSize; - int prevCodepoint; + int prevCodepointSize = 0; + int prevCodepoint = 0; // Check whitespace to delete (ASCII only) while (offset > 0) @@ -2724,7 +2766,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex -= accCodepointSize; } - else if ((textBoxCursorIndex > 0) && (IsKeyPressed(KEY_BACKSPACE) || (IsKeyDown(KEY_BACKSPACE) && autoCursorShouldTrigger))) + else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_BACKSPACE) || (GUI_KEY_DOWN(KEY_BACKSPACE) && autoCursorShouldTrigger))) { // Delete single codepoint from text, before current cursor position @@ -2740,12 +2782,12 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) } // Move cursor position with keys - if ((textBoxCursorIndex > 0) && IsKeyPressed(KEY_LEFT) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + if ((textBoxCursorIndex > 0) && GUI_KEY_PRESSED(KEY_LEFT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; //int accCodepointSize = 0; - int prevCodepointSize; - int prevCodepoint; + int prevCodepointSize = 0; + int prevCodepoint = 0; // Check whitespace to skip (ASCII only) while (offset > 0) @@ -2771,14 +2813,14 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex = offset; } - else if ((textBoxCursorIndex > 0) && (IsKeyPressed(KEY_LEFT) || (IsKeyDown(KEY_LEFT) && autoCursorShouldTrigger))) + else if ((textBoxCursorIndex > 0) && (GUI_KEY_PRESSED(KEY_LEFT) || (GUI_KEY_DOWN(KEY_LEFT) && autoCursorShouldTrigger))) { int prevCodepointSize = 0; GetCodepointPrevious(text + textBoxCursorIndex, &prevCodepointSize); textBoxCursorIndex -= prevCodepointSize; } - else if ((textLength > textBoxCursorIndex) && IsKeyPressed(KEY_RIGHT) && (IsKeyDown(KEY_LEFT_CONTROL) || IsKeyDown(KEY_RIGHT_CONTROL))) + else if ((textLength > textBoxCursorIndex) && GUI_KEY_PRESSED(KEY_RIGHT) && (GUI_KEY_DOWN(KEY_LEFT_CONTROL) || GUI_KEY_DOWN(KEY_RIGHT_CONTROL))) { int offset = textBoxCursorIndex; //int accCodepointSize = 0; @@ -2810,7 +2852,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) textBoxCursorIndex = offset; } - else if ((textLength > textBoxCursorIndex) && (IsKeyPressed(KEY_RIGHT) || (IsKeyDown(KEY_RIGHT) && autoCursorShouldTrigger))) + else if ((textLength > textBoxCursorIndex) && (GUI_KEY_PRESSED(KEY_RIGHT) || (GUI_KEY_DOWN(KEY_RIGHT) && autoCursorShouldTrigger))) { int nextCodepointSize = 0; GetCodepointNext(text + textBoxCursorIndex, &nextCodepointSize); @@ -2847,14 +2889,14 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) // Check if mouse cursor is at the last position int textEndWidth = GuiGetTextWidth(text + textIndexOffset); - if (GetMousePosition().x >= (textBounds.x + textEndWidth - glyphWidth/2)) + if (GUI_POINTER_POSITION.x >= (textBounds.x + textEndWidth - glyphWidth/2)) { mouseCursor.x = textBounds.x + textEndWidth; mouseCursorIndex = textLength; } // Place cursor at required index on mouse click - if ((mouseCursor.x >= 0) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if ((mouseCursor.x >= 0) && GUI_BUTTON_PRESSED) { cursor.x = mouseCursor.x; textBoxCursorIndex = mouseCursorIndex; @@ -2867,8 +2909,8 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) //if (multiline) cursor.y = GetTextLines() // Finish text editing on ENTER or mouse click outside bounds - if ((!multiline && IsKeyPressed(KEY_ENTER)) || - (!CheckCollisionPointRec(mousePosition, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) + if ((!multiline && GUI_KEY_PRESSED(KEY_ENTER)) || + (!CheckCollisionPointRec(mousePosition, bounds) && GUI_BUTTON_PRESSED)) { textBoxCursorIndex = 0; // GLOBAL: Reset the shared cursor index autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes @@ -2881,7 +2923,7 @@ int GuiTextBox(Rectangle bounds, char *text, int textSize, bool editMode) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { textBoxCursorIndex = textLength; // GLOBAL: Place cursor index to the end of current text autoCursorCounter = 0; // GLOBAL: Reset counter for repeated keystrokes @@ -2975,12 +3017,12 @@ int GuiSpinner(Rectangle bounds, const char *text, int *value, int minValue, int //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check spinner state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -3050,7 +3092,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; bool valueHasChanged = false; if (editMode) @@ -3060,7 +3102,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in int keyCount = (int)strlen(textValue); // Add or remove minus symbol - if (IsKeyPressed(KEY_MINUS)) + if (GUI_KEY_PRESSED(KEY_MINUS)) { if (textValue[0] == '-') { @@ -3089,8 +3131,8 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in // Add new digit to text value if ((keyCount >= 0) && (keyCount < RAYGUI_VALUEBOX_MAX_CHARS) && (GuiGetTextWidth(textValue) < bounds.width)) { - int key = GetCharPressed(); - + int key = GUI_INPUT_KEY; + // Only allow keys in range [48..57] if ((key >= 48) && (key <= 57)) { @@ -3101,7 +3143,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in } // Delete text - if ((keyCount > 0) && IsKeyPressed(KEY_BACKSPACE)) + if ((keyCount > 0) && GUI_KEY_PRESSED(KEY_BACKSPACE)) { keyCount--; textValue[keyCount] = '\0'; @@ -3110,11 +3152,11 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in if (valueHasChanged) *value = TextToInteger(textValue); - // NOTE: We are not clamp values until user input finishes + // NOTE: Values are not clamped until user input finishes //if (*value > maxValue) *value = maxValue; //else if (*value < minValue) *value = minValue; - if ((IsKeyPressed(KEY_ENTER) || IsKeyPressed(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) + if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) { if (*value > maxValue) *value = maxValue; else if (*value < minValue) *value = minValue; @@ -3130,7 +3172,7 @@ int GuiValueBox(Rectangle bounds, const char *text, int *value, int minValue, in if (CheckCollisionPointRec(mousePoint, bounds)) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED) result = 1; } } } @@ -3191,7 +3233,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; bool valueHasChanged = false; @@ -3202,7 +3244,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float int keyCount = (int)strlen(textValue); // Add or remove minus symbol - if (IsKeyPressed(KEY_MINUS)) + if (GUI_KEY_PRESSED(KEY_MINUS)) { if (textValue[0] == '-') { @@ -3233,7 +3275,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float { if (GuiGetTextWidth(textValue) < bounds.width) { - int key = GetCharPressed(); + int key = GUI_INPUT_KEY; if (((key >= 48) && (key <= 57)) || (key == '.') || ((keyCount == 0) && (key == '+')) || // NOTE: Sign can only be in first position @@ -3248,7 +3290,7 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float } // Pressed backspace - if (IsKeyPressed(KEY_BACKSPACE)) + if (GUI_KEY_PRESSED(KEY_BACKSPACE)) { if (keyCount > 0) { @@ -3260,14 +3302,14 @@ int GuiValueBoxFloat(Rectangle bounds, const char *text, char *textValue, float if (valueHasChanged) *value = TextToFloat(textValue); - if ((IsKeyPressed(KEY_ENTER) || IsKeyPressed(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && IsMouseButtonPressed(MOUSE_LEFT_BUTTON))) result = 1; + if ((GUI_KEY_PRESSED(KEY_ENTER) || GUI_KEY_PRESSED(KEY_KP_ENTER)) || (!CheckCollisionPointRec(mousePoint, bounds) && GUI_BUTTON_PRESSED)) result = 1; } else { if (CheckCollisionPointRec(mousePoint, bounds)) { state = STATE_FOCUSED; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) result = 1; + if (GUI_BUTTON_PRESSED) result = 1; } } } @@ -3321,11 +3363,11 @@ int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, flo //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3342,7 +3384,7 @@ int GuiSlider(Rectangle bounds, const char *textLeft, const char *textRight, flo } else if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3535,12 +3577,12 @@ int GuiDummyRec(Rectangle bounds, const char *text) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check button state if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) state = STATE_PRESSED; + if (GUI_BUTTON_DOWN) state = STATE_PRESSED; else state = STATE_FOCUSED; } } @@ -3578,7 +3620,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd int itemFocused = (focus == NULL)? -1 : *focus; int itemSelected = (active == NULL)? -1 : *active; - // Check if we need a scroll bar + // Check if scroll bar is needed bool useScrollBar = false; if ((GuiGetStyle(LISTVIEW, LIST_ITEMS_HEIGHT) + GuiGetStyle(LISTVIEW, LIST_ITEMS_SPACING))*count > bounds.height) useScrollBar = true; @@ -3602,7 +3644,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked && !guiControlExclusiveMode) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; // Check mouse inside list view if (CheckCollisionPointRec(mousePoint, bounds)) @@ -3615,7 +3657,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd if (CheckCollisionPointRec(mousePoint, itemBounds)) { itemFocused = startIndex + i; - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { if (itemSelected == (startIndex + i)) itemSelected = -1; else itemSelected = startIndex + i; @@ -3629,8 +3671,8 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd if (useScrollBar) { - int wheelMove = (int)GetMouseWheelMove(); - startIndex -= wheelMove; + float scrollDelta = GUI_SCROLL_DELTA; + startIndex -= (int)scrollDelta; if (startIndex < 0) startIndex = 0; else if (startIndex > (count - visibleItems)) startIndex = count - visibleItems; @@ -3659,7 +3701,7 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd { if ((startIndex + i) == itemSelected) GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_DISABLED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_DISABLED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_DISABLED))); } else { @@ -3667,18 +3709,18 @@ int GuiListViewEx(Rectangle bounds, const char **text, int count, int *scrollInd { // Draw item selected GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_PRESSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_PRESSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_PRESSED))); } - else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: We want items focused, despite not returned! + else if (((startIndex + i) == itemFocused)) // && (focus != NULL)) // NOTE: Items focused, despite not returned { // Draw item focused GuiDrawRectangle(itemBounds, GuiGetStyle(LISTVIEW, LIST_ITEMS_BORDER_WIDTH), GetColor(GuiGetStyle(LISTVIEW, BORDER_COLOR_FOCUSED)), GetColor(GuiGetStyle(LISTVIEW, BASE_COLOR_FOCUSED))); - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_FOCUSED))); } else { // Draw item normal (no rectangle) - GuiDrawText(text[startIndex + i], GetTextBounds(DEFAULT, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); + GuiDrawText(text[startIndex + i], GetTextBounds(LISTVIEW, itemBounds), GuiGetStyle(LISTVIEW, TEXT_ALIGNMENT), GetColor(GuiGetStyle(LISTVIEW, TEXT_COLOR_NORMAL))); } } @@ -3765,11 +3807,11 @@ int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3788,7 +3830,7 @@ int GuiColorBarAlpha(Rectangle bounds, const char *text, float *alpha) } else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3850,11 +3892,11 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -3873,7 +3915,7 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) } else if (CheckCollisionPointRec(mousePoint, bounds) || CheckCollisionPointRec(mousePoint, selector)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -3886,12 +3928,12 @@ int GuiColorBarHue(Rectangle bounds, const char *text, float *hue) } else state = STATE_FOCUSED; - /*if (IsKeyDown(KEY_UP)) + /*if (GUI_KEY_DOWN(KEY_UP)) { hue -= 2.0f; if (hue <= 0.0f) hue = 0.0f; } - else if (IsKeyDown(KEY_DOWN)) + else if (GUI_KEY_DOWN(KEY_DOWN)) { hue += 2.0f; if (hue >= 360.0f) hue = 360.0f; @@ -4008,11 +4050,11 @@ int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { if (CHECK_BOUNDS_ID(bounds, guiControlExclusiveRec)) { @@ -4042,7 +4084,7 @@ int GuiColorPanelHSV(Rectangle bounds, const char *text, Vector3 *colorHsv) } else if (CheckCollisionPointRec(mousePoint, bounds)) { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_DOWN) { state = STATE_PRESSED; guiControlExclusiveMode = true; @@ -4198,6 +4240,9 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co GuiSetStyle(LABEL, TEXT_ALIGNMENT, prevTextAlignment); } + int prevTextBoxAlignment = GuiGetStyle(TEXTBOX, TEXT_ALIGNMENT); + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); + if (secretViewActive != NULL) { static char stars[] = "****************"; @@ -4211,6 +4256,8 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co if (GuiTextBox(textBoxBounds, text, textMaxSize, textEditMode)) textEditMode = !textEditMode; } + GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, prevTextBoxAlignment); + int prevBtnTextAlignment = GuiGetStyle(BUTTON, TEXT_ALIGNMENT); GuiSetStyle(BUTTON, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); @@ -4231,7 +4278,7 @@ int GuiTextInputBox(Rectangle bounds, const char *title, const char *message, co // Grid control // NOTE: Returns grid mouse-hover selected cell // About drawing lines at subpixel spacing, simple put, not easy solution: -// https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster +// REF: https://stackoverflow.com/questions/4435450/2d-opengl-drawing-lines-that-dont-exactly-fit-pixel-raster int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vector2 *mouseCell) { // Grid lines alpha amount @@ -4242,7 +4289,7 @@ int GuiGrid(Rectangle bounds, const char *text, float spacing, int subdivs, Vect int result = 0; GuiState state = guiState; - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; Vector2 currentMouseCell = { -1, -1 }; float spaceWidth = spacing/(float)subdivs; @@ -4410,11 +4457,14 @@ void GuiLoadStyle(const char *fileName) if (fileDataSize > 0) { unsigned char *fileData = (unsigned char *)RAYGUI_CALLOC(fileDataSize, sizeof(unsigned char)); - fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); + if (fileData != NULL) + { + fread(fileData, sizeof(unsigned char), fileDataSize, rgsFile); - GuiLoadStyleFromMemory(fileData, fileDataSize); + GuiLoadStyleFromMemory(fileData, fileDataSize); - RAYGUI_FREE(fileData); + RAYGUI_FREE(fileData); + } } fclose(rgsFile); @@ -4425,7 +4475,7 @@ void GuiLoadStyle(const char *fileName) // Load style default over global style void GuiLoadStyleDefault(void) { - // We set this variable first to avoid cyclic function calls + // Setting this flag first to avoid cyclic function calls // when calling GuiSetStyle() and GuiGetStyle() guiStyleLoaded = true; @@ -4454,7 +4504,7 @@ void GuiLoadStyleDefault(void) GuiSetStyle(DEFAULT, TEXT_SPACING, 1); // DEFAULT, shared by all controls GuiSetStyle(DEFAULT, LINE_COLOR, 0x90abb5ff); // DEFAULT specific property GuiSetStyle(DEFAULT, BACKGROUND_COLOR, 0xf5f5f5ff); // DEFAULT specific property - GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 15); // DEFAULT, 15 pixels between lines + GuiSetStyle(DEFAULT, TEXT_LINE_SPACING, 5); // DEFAULT, pixels between lines, from bottom of first line to top of second GuiSetStyle(DEFAULT, TEXT_ALIGNMENT_VERTICAL, TEXT_ALIGN_MIDDLE); // DEFAULT, text aligned vertically to middle of text-bounds // Initialize control-specific property values @@ -4520,7 +4570,7 @@ void GuiLoadStyleDefault(void) // NOTE: Default raylib font character 95 is a white square Rectangle whiteChar = guiFont.recs[95]; - // NOTE: We set up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering + // NOTE: Setting up a 1px padding on char rectangle to avoid pixel bleeding on MSAA filtering SetShapesTexture(guiFont.texture, RAYGUI_CLITERAL(Rectangle){ whiteChar.x + 1, whiteChar.y + 1, whiteChar.width - 2, whiteChar.height - 2 }); } } @@ -5037,14 +5087,14 @@ static Rectangle GetTextBounds(int control, Rectangle bounds) } // Get text icon if provided and move text cursor -// NOTE: We support up to 999 values for iconId +// NOTE: Up to #999# values supported for iconId static const char *GetTextIcon(const char *text, int *iconId) { #if !defined(RAYGUI_NO_ICONS) *iconId = -1; - if (text[0] == '#') // Maybe we have an icon! + if (text[0] == '#') // Maybe it is stars with an icon, ending # must be found { - char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' + char iconValue[4] = { 0 }; // Maximum length for icon value: 3 digits + '\0' int pos = 1; while ((pos < 4) && (text[pos] >= '0') && (text[pos] <= '9')) @@ -5076,12 +5126,12 @@ static const char **GetTextLines(const char *text, int *count) static const char *lines[RAYGUI_MAX_TEXT_LINES] = { 0 }; for (int i = 0; i < RAYGUI_MAX_TEXT_LINES; i++) lines[i] = NULL; // Init NULL pointers to substrings - int textSize = (int)strlen(text); + int textLength = (int)strlen(text); lines[0] = text; *count = 1; - for (int i = 0, k = 0; (i < textSize) && (*count < RAYGUI_MAX_TEXT_LINES); i++) + for (int i = 0, k = 0; (i < textLength) && (*count < RAYGUI_MAX_TEXT_LINES); i++) { if (text[i] == '\n') { @@ -5141,7 +5191,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C // - For every line, wordwrap mode is checked (useful for GuitextBox(), read-only) // Get text lines (using '\n' as delimiter) to be processed individually - // WARNING: We can't use GuiTextSplit() function because it can be already used + // WARNING: GuiTextSplit() function can't be used now because it can have already been used // before the GuiDrawText() call and its buffer is static, it would be overriden :( int lineCount = 0; const char **lines = GetTextLines(text, &lineCount); @@ -5152,7 +5202,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C int wrapMode = GuiGetStyle(DEFAULT, TEXT_WRAP_MODE); // Wrap-mode only available in read-only mode, no for text editing // TODO: WARNING: This totalHeight is not valid for vertical alignment in case of word-wrap - float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_SIZE)/2); + float totalHeight = (float)(lineCount*GuiGetStyle(DEFAULT, TEXT_SIZE) + (lineCount - 1)*GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); float posOffsetY = 0.0f; for (int i = 0; i < lineCount; i++) @@ -5165,7 +5215,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C Vector2 textBoundsPosition = { textBounds.x, textBounds.y }; float textBoundsWidthOffset = 0.0f; - // NOTE: We get text size after icon has been processed + // NOTE: Get text size after icon has been processed // WARNING: GuiGetTextWidth() also processes text icon to get width! -> Really needed? int textSizeX = GuiGetTextWidth(lines[i]); @@ -5200,8 +5250,8 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C default: break; } - // NOTE: Make sure we get pixel-perfect coordinates, - // In case of decimals we got weird text positioning + // NOTE: Make sure getting pixel-perfect coordinates, + // In case of decimals, it could result in text positioning artifacts textBoundsPosition.x = (float)((int)textBoundsPosition.x); textBoundsPosition.y = (float)((int)textBoundsPosition.y); //--------------------------------------------------------------------------------- @@ -5211,7 +5261,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C #if !defined(RAYGUI_NO_ICONS) if (iconId >= 0) { - // NOTE: We consider icon height, probably different than text size + // NOTE: Considering icon height, probably different than text size GuiDrawIcon(iconId, (int)textBoundsPosition.x, (int)(textBounds.y + textBounds.height/2 - RAYGUI_ICON_SIZE*guiIconScale/2 + TEXT_VALIGN_PIXEL_OFFSET(textBounds.height)), guiIconScale, tint); textBoundsPosition.x += (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); textBoundsWidthOffset = (float)(RAYGUI_ICON_SIZE*guiIconScale + ICON_TEXT_PADDING); @@ -5237,8 +5287,8 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C int codepoint = GetCodepointNext(&lines[i][c], &codepointSize); int index = GetGlyphIndex(guiFont, codepoint); - // NOTE: Normally we exit the decoding sequence as soon as a bad byte is found (and return 0x3f) - // but we need to draw all of the bad bytes using the '?' symbol moving one byte + // NOTE: Normally, exiting the decoding sequence as soon as a bad byte is found (and return 0x3f) + // but all of the bad bytes need to be drawn using the '?' symbol, moving one byte if (codepoint == 0x3f) codepointSize = 1; // TODO: Review not recognized codepoints size // Get glyph width to check if it goes out of bounds @@ -5253,7 +5303,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C if ((textOffsetX + glyphWidth) > textBounds.width - textBoundsWidthOffset) { textOffsetX = 0.0f; - textOffsetY += GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); if (tempWrapCharMode) // Wrap at char level when too long words { @@ -5282,7 +5332,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C else if ((textOffsetX + nextSpaceWidth) > textBounds.width - textBoundsWidthOffset) { textOffsetX = 0.0f; - textOffsetY += GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + textOffsetY += (GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); } } @@ -5332,7 +5382,7 @@ static void GuiDrawText(const char *text, Rectangle textBounds, int alignment, C } } - if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING); + if (wrapMode == TEXT_WRAP_NONE) posOffsetY += (float)(GuiGetStyle(DEFAULT, TEXT_SIZE) + GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); else if ((wrapMode == TEXT_WRAP_CHAR) || (wrapMode == TEXT_WRAP_WORD)) posOffsetY += (textOffsetY + (float)GuiGetStyle(DEFAULT, TEXT_LINE_SPACING)); //--------------------------------------------------------------------------------- } @@ -5374,13 +5424,19 @@ static void GuiTooltip(Rectangle controlRec) if ((controlRec.x + textSize.x + 16) > GetScreenWidth()) controlRec.x -= (textSize.x + 16 - controlRec.width); - GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, GuiGetStyle(DEFAULT, TEXT_SIZE) + 8.0f }, NULL); + int lineCount = 0; + GetTextLines(guiTooltipPtr, &lineCount); // Only using the line count + if ((controlRec.y + controlRec.height + textSize.y + 4 + 8*lineCount) > GetScreenHeight()) + controlRec.y -= (controlRec.height + textSize.y + 4 + 8*lineCount); + + // TODO: Probably TEXT_LINE_SPACING should be considered on panel size instead of hardcoding 8.0f + GuiPanel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, NULL); int textPadding = GuiGetStyle(LABEL, TEXT_PADDING); int textAlignment = GuiGetStyle(LABEL, TEXT_ALIGNMENT); GuiSetStyle(LABEL, TEXT_PADDING, 0); GuiSetStyle(LABEL, TEXT_ALIGNMENT, TEXT_ALIGN_CENTER); - GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, GuiGetStyle(DEFAULT, TEXT_SIZE) + 8.0f }, guiTooltipPtr); + GuiLabel(RAYGUI_CLITERAL(Rectangle){ controlRec.x, controlRec.y + controlRec.height + 4, textSize.x + 16, textSize.y + 8.0f*lineCount }, guiTooltipPtr); GuiSetStyle(LABEL, TEXT_ALIGNMENT, textAlignment); GuiSetStyle(LABEL, TEXT_PADDING, textPadding); } @@ -5416,7 +5472,7 @@ static const char **GuiTextSplit(const char *text, char delimiter, int *count, i if (textRow != NULL) textRow[0] = 0; - // Count how many substrings we have on text and point to every one + // Count how many substrings text contains and point to every one of them for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) { buffer[i] = text[i]; @@ -5637,11 +5693,11 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) //-------------------------------------------------------------------- if ((state != STATE_DISABLED) && !guiLocked) { - Vector2 mousePoint = GetMousePosition(); + Vector2 mousePoint = GUI_POINTER_POSITION; if (guiControlExclusiveMode) // Allows to keep dragging outside of bounds { - if (IsMouseButtonDown(MOUSE_LEFT_BUTTON) && + if (GUI_BUTTON_DOWN && !CheckCollisionPointRec(mousePoint, arrowUpLeft) && !CheckCollisionPointRec(mousePoint, arrowDownRight)) { @@ -5664,11 +5720,11 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) state = STATE_FOCUSED; // Handle mouse wheel - int wheel = (int)GetMouseWheelMove(); - if (wheel != 0) value += wheel; + float scrollDelta = GUI_SCROLL_DELTA; + if (scrollDelta != 0) value += (int)scrollDelta; // Handle mouse button down - if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) + if (GUI_BUTTON_PRESSED) { guiControlExclusiveMode = true; guiControlExclusiveRec = bounds; // Store bounds as an identifier when dragging starts @@ -5690,13 +5746,13 @@ static int GuiScrollBar(Rectangle bounds, int value, int minValue, int maxValue) /* if (isVertical) { - if (IsKeyDown(KEY_DOWN)) value += 5; - else if (IsKeyDown(KEY_UP)) value -= 5; + if (GUI_KEY_DOWN(KEY_DOWN)) value += 5; + else if (GUI_KEY_DOWN(KEY_UP)) value -= 5; } else { - if (IsKeyDown(KEY_RIGHT)) value += 5; - else if (IsKeyDown(KEY_LEFT)) value -= 5; + if (GUI_KEY_DOWN(KEY_RIGHT)) value += 5; + else if (GUI_KEY_DOWN(KEY_LEFT)) value -= 5; } */ } @@ -5833,7 +5889,7 @@ const char **TextSplit(const char *text, char delimiter, int *count) { counter = 1; - // Count how many substrings we have on text and point to every one + // Count how many substrings text contains and point to every one of them for (int i = 0; i < RAYGUI_TEXTSPLIT_MAX_TEXT_SIZE; i++) { buffer[i] = text[i]; @@ -5866,7 +5922,7 @@ static int TextToInteger(const char *text) text++; } - for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); ++i) value = value*10 + (int)(text[i] - '0'); + for (int i = 0; ((text[i] >= '0') && (text[i] <= '9')); i++) value = value*10 + (int)(text[i] - '0'); return value*sign; } @@ -5941,9 +5997,9 @@ static const char *CodepointToUTF8(int codepoint, int *byteSize) } // Get next codepoint in a UTF-8 encoded text, scanning until '\0' is found -// When a invalid UTF-8 byte is encountered we exit as soon as possible and a '?'(0x3f) codepoint is returned +// When a invalid UTF-8 byte is encountered, exiting as soon as possible and returning a '?'(0x3f) codepoint // Total number of bytes processed are returned as a parameter -// NOTE: the standard says U+FFFD should be returned in case of errors +// NOTE: The standard says U+FFFD should be returned in case of errors // but that character is not supported by the default font in raylib static int GetCodepointNext(const char *text, int *codepointSize) { From 872cfae7ca4eb28d48201fd1478ea6235ecf1e6d Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 17 Feb 2026 16:51:50 +0100 Subject: [PATCH 27/42] REVIEWED: `LoadDirectoryFilesEx()`, minor tweak #5569 --- examples/core/core_directory_files.c | 5 +++-- src/rcore.c | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/examples/core/core_directory_files.c b/examples/core/core_directory_files.c index 5bc7b7e57..f879b933e 100644 --- a/examples/core/core_directory_files.c +++ b/examples/core/core_directory_files.c @@ -40,7 +40,8 @@ int main(void) // Load file-paths on current working directory // NOTE: LoadDirectoryFiles() loads files and directories by default, // use LoadDirectoryFilesEx() for custom filters and recursive directories loading - FilePathList files = LoadDirectoryFiles(directory); + //FilePathList files = LoadDirectoryFiles(directory); + FilePathList files = LoadDirectoryFilesEx(directory, ".png;.c", false); int btnBackPressed = false; @@ -77,7 +78,7 @@ int main(void) GuiSetStyle(LISTVIEW, TEXT_ALIGNMENT, TEXT_ALIGN_LEFT); GuiSetStyle(LISTVIEW, TEXT_PADDING, 40); - GuiListViewEx((Rectangle){ 0, 50, GetScreenWidth(), GetScreenHeight() - 40 }, + GuiListViewEx((Rectangle){ 0, 50, GetScreenWidth(), GetScreenHeight() - 50 }, files.paths, files.count, &listScrollIndex, &listItemActive, &listItemFocused); /* diff --git a/src/rcore.c b/src/rcore.c index 97a6cce0e..c29fb1e19 100644 --- a/src/rcore.c +++ b/src/rcore.c @@ -2773,6 +2773,8 @@ FilePathList LoadDirectoryFilesEx(const char *basePath, const char *filter, bool if (DirectoryExists(basePath)) // It's a directory { + if ((filter != NULL) && (filter[0] == '\0')) filter = NULL; + // SCAN 1: Count files unsigned int fileCounter = GetDirectoryFileCountEx(basePath, filter, scanSubdirs); From e8ce00dc0bf1a64e6d2ff191c91c2f17aee2a378 Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 17 Feb 2026 17:02:19 +0100 Subject: [PATCH 28/42] REVIEWED: `LoadGLTF()`, log warning about draco compression not supported #5567 --- src/rmodels.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/rmodels.c b/src/rmodels.c index eadc16f07..0ee103212 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -5373,6 +5373,7 @@ static Model LoadGLTF(const char *fileName) if (result != cgltf_result_success) TRACELOG(LOG_INFO, "MODEL: [%s] Failed to load mesh/material buffers", fileName); int primitivesCount = 0; + bool dracoCompression = false; // NOTE: We will load every primitive in the glTF as a separate raylib Mesh // Determine total number of meshes needed from the node hierarchy @@ -5384,9 +5385,22 @@ static Model LoadGLTF(const char *fileName) for (unsigned int p = 0; p < mesh->primitives_count; p++) { - if (mesh->primitives[p].type == cgltf_primitive_type_triangles) primitivesCount++; + if (mesh->primitives[p].has_draco_mesh_compression) + { + dracoCompression = true; + TRACELOG(LOG_WARNING, "MODEL: [%s] Failed to load mesh data, Draco compression not supported", fileName); + break; + } + else if (mesh->primitives[p].type == cgltf_primitive_type_triangles) primitivesCount++; } } + + if (dracoCompression) + { + return model; + TRACELOG(LOG_WARNING, "MODEL: [%s] Failed to load glTF data", fileName); + } + TRACELOG(LOG_DEBUG, " > Primitives (triangles only) count based on hierarchy : %i", primitivesCount); // Load our model data: meshes and materials From 97023def48c4be1e27bbaab70242521dd0d829df Mon Sep 17 00:00:00 2001 From: Ray Date: Tue, 17 Feb 2026 18:45:14 +0100 Subject: [PATCH 29/42] REVIEWED: `GenImageFontAtlas()`, scale image to fit all characters, in case it fails size estimation #5542 --- src/rtext.c | 25 +++++++++++++------------ 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/rtext.c b/src/rtext.c index 8e7fafec2..0fd2d8e6b 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -796,7 +796,7 @@ Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyp if (glyphs == NULL) { - TRACELOG(LOG_WARNING, "FONT: Provided chars info not valid, returning empty image atlas"); + TRACELOG(LOG_WARNING, "FONT: Provided glyphs info not valid, returning empty image atlas"); return atlas; } @@ -881,16 +881,17 @@ Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyp if (offsetY > (atlas.height - fontSize - padding)) { - for (int j = i + 1; j < glyphCount; j++) - { - TRACELOG(LOG_WARNING, "FONT: Failed to package character (0x%02x)", glyphs[j].value); - // Make sure remaining recs contain valid data - recs[j].x = 0; - recs[j].y = 0; - recs[j].width = 0; - recs[j].height = 0; - } - break; // Break for() loop, stop processing glyphs + TRACELOG(LOG_WARNING, "FONT: Updating atlas size to fit all characters"); + + // TODO: Increment atlas size (atlas.height*2) and continue adding glyphs + int updatedAtlasHeight = atlas.height*2; + int updatedAtlasDataSize = atlas.width*atlas.height; + unsigned char *updatedAtlasData = (unsigned char *)RL_CALLOC(updatedAtlasDataSize, 1); + + memcpy(updatedAtlasData, atlas.data, atlasDataSize); + RL_FREE(atlas.data); + atlas.height = updatedAtlasHeight; + atlasDataSize = updatedAtlasDataSize; } } @@ -967,7 +968,7 @@ Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyp } } } - else TRACELOG(LOG_WARNING, "FONT: Failed to package character (0x%02x)", glyphs[i].value); + else TRACELOG(LOG_WARNING, "FONT: Failed to package glyph (0x%02x)", glyphs[i].value); } RL_FREE(rects); From 0e6cb0993d1b86c75771969cb998b682c77d546f Mon Sep 17 00:00:00 2001 From: Kirandeep-Singh-Khehra <107160937+Kirandeep-Singh-Khehra@users.noreply.github.com> Date: Thu, 19 Feb 2026 17:27:05 +0530 Subject: [PATCH 30/42] [rmodels] Added implementation of `UpdateModelAnimationBonesWithBlending()` function (#4578) * [rmodels] Added implementation of `UpdateModelAnimationBonesWithBlending()` function Signed-off-by: Kirandeep-Singh-Khehra * [rmodels] Added example for animation blending and fixed wrap issue for blend factor Signed-off-by: Kirandeep-Singh-Khehra * [rmodels] Updated build information for animation blending example Signed-off-by: Kirandeep-Singh-Khehra * [rmodels] Fixed typos in anmation blending example Signed-off-by: Kirandeep-Singh-Khehra * [rmodels] Updated blend function signature and added function to update verts from bones Signed-off-by: Kirandeep-Singh-Khehra * [rmodels] Updated documentation Signed-off-by: Kirandeep-Singh-Khehra * rlparser: update raylib_api.* by CI * rlparser: update raylib_api.* by CI --------- Signed-off-by: Kirandeep-Singh-Khehra Co-authored-by: Ray Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> --- examples/models/models_animation_blending.c | 152 + examples/models/models_animation_blending.png | Bin 0 -> 26143 bytes .../models_animation_blending.vcxproj | 387 + projects/VS2022/raylib.sln | 11340 ++++++++-------- src/raylib.h | 2 + src/rmodels.c | 77 +- tools/rlparser/output/raylib_api.json | 42 + tools/rlparser/output/raylib_api.lua | 21 + tools/rlparser/output/raylib_api.txt | 171 +- tools/rlparser/output/raylib_api.xml | 13 +- 10 files changed, 6451 insertions(+), 5754 deletions(-) create mode 100644 examples/models/models_animation_blending.c create mode 100644 examples/models/models_animation_blending.png create mode 100644 projects/VS2022/examples/models_animation_blending.vcxproj diff --git a/examples/models/models_animation_blending.c b/examples/models/models_animation_blending.c new file mode 100644 index 000000000..225c1bfbb --- /dev/null +++ b/examples/models/models_animation_blending.c @@ -0,0 +1,152 @@ +/******************************************************************************************* +* +* raylib [core] example - Model animation blending +* +* Example originally created with raylib 5.5 +* +* Example contributed by Kirandeep (@Kirandeep-Singh-Khehra) +* +* Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, +* BSD-like license that allows static linking with closed source software +* +* Copyright (c) 2024 Kirandeep (@Kirandeep-Singh-Khehra) +* +* Note: Due to limitations in the Apple OpenGL driver, this feature does not work on MacOS +* Note: This example uses CPU for updating meshes. +* For GPU skinning see comments with 'INFO:'. +* +********************************************************************************************/ + +#include "raylib.h" + +#define clamp(x,a,b) ((x < a)? a : (x > b)? b : x) + +#if defined(PLATFORM_DESKTOP) + #define GLSL_VERSION 330 +#else // PLATFORM_ANDROID, PLATFORM_WEB + #define GLSL_VERSION 100 +#endif + +//------------------------------------------------------------------------------------ +// Program main entry point +//------------------------------------------------------------------------------------ +int main(void) +{ + // Initialization + //-------------------------------------------------------------------------------------- + const int screenWidth = 800; + const int screenHeight = 450; + + InitWindow(screenWidth, screenHeight, "raylib [models] example - Model Animation Blending"); + + // Define the camera to look into our 3d world + Camera camera = { 0 }; + camera.position = (Vector3){ 8.0f, 8.0f, 8.0f }; // Camera position + camera.target = (Vector3){ 0.0f, 2.0f, 0.0f }; // Camera looking at point + camera.up = (Vector3){ 0.0f, 1.0f, 0.0f }; // Camera up vector (rotation towards target) + camera.fovy = 45.0f; // Camera field-of-view Y + camera.projection = CAMERA_PERSPECTIVE; // Camera projection type + + // Load gltf model + Model characterModel = LoadModel("resources/models/gltf/robot.glb"); // Load character model + +/* INFO: Uncomment this to use GPU skinning + // Load skinning shader + Shader skinningShader = LoadShader(TextFormat("resources/shaders/glsl%i/skinning.vs", GLSL_VERSION), + TextFormat("resources/shaders/glsl%i/skinning.fs", GLSL_VERSION)); + + for (int i = 0; i < characterModel.materialCount; i++) + { + characterModel.materials[i].shader = skinningShader; + } +*/ + + // Load gltf model animations + int animsCount = 0; + unsigned int animIndex0 = 0; + unsigned int animIndex1 = 0; + unsigned int animCurrentFrame = 0; + ModelAnimation *modelAnimations = LoadModelAnimations("resources/models/gltf/robot.glb", &animsCount); + + float blendFactor = 0.5f; + + DisableCursor(); // Limit cursor to relative movement inside the window + + SetTargetFPS(60); // Set our game to run at 60 frames-per-second + //-------------------------------------------------------------------------------------- + + // Main game loop + while (!WindowShouldClose()) // Detect window close button or ESC key + { + // Update + //---------------------------------------------------------------------------------- + UpdateCamera(&camera, CAMERA_THIRD_PERSON); + + // Select current animation + if (IsKeyPressed(KEY_T)) animIndex0 = (animIndex0 + 1)%animsCount; + else if (IsKeyPressed(KEY_G)) animIndex0 = (animIndex0 + animsCount - 1)%animsCount; + if (IsKeyPressed(KEY_Y)) animIndex1 = (animIndex1 + 1)%animsCount; + else if (IsKeyPressed(KEY_H)) animIndex1 = (animIndex1 + animsCount - 1)%animsCount; + + // Select blend factor + if (IsKeyPressed(KEY_U)) blendFactor = clamp(blendFactor - 0.1, 0.0f, 1.0f); + else if (IsKeyPressed(KEY_J)) blendFactor = clamp(blendFactor + 0.1, 0.0f, 1.0f); + + // Update animation + animCurrentFrame++; + + // Update bones + // Note: Same animation frame index is used below. By default it loops both animations + UpdateModelAnimationBonesLerp(characterModel, modelAnimations[animIndex0], animCurrentFrame, modelAnimations[animIndex1], animCurrentFrame, blendFactor); + +// INFO: Comment the following line to use GPU skinning + UpdateModelVertsToCurrentBones(characterModel); + //---------------------------------------------------------------------------------- + + // Draw + //---------------------------------------------------------------------------------- + BeginDrawing(); + + ClearBackground(RAYWHITE); + + BeginMode3D(camera); + +/* INFO: Uncomment this to use GPU skinning + // Draw character mesh, pose calculation is done in shader (GPU skinning) + for (int i = 0; i < characterModel.meshCount; i++) + { + DrawMesh(characterModel.meshes[i], characterModel.materials[characterModel.meshMaterial[i]], characterModel.transform); + } +*/ + +// INFO: Comment the following line to use GPU skinning + DrawModel(characterModel, (Vector3){0.0f, 0.0f, 0.0f}, 1.0f, WHITE); + + + DrawGrid(10, 1.0f); + + EndMode3D(); + + DrawText("Use the U/J to adjust blend factor", 10, 10, 20, GRAY); + DrawText("Use the T/G to switch first animation", 10, 30, 20, GRAY); + DrawText("Use the Y/H to switch second animation", 10, 50, 20, GRAY); + DrawText(TextFormat("Animations: %s, %s", modelAnimations[animIndex0].name, modelAnimations[animIndex1].name), 10, 70, 20, BLACK); + DrawText(TextFormat("Blend Factor: %f", blendFactor), 10, 86, 20, BLACK); + + EndDrawing(); + //---------------------------------------------------------------------------------- + } + + // De-Initialization + //-------------------------------------------------------------------------------------- + UnloadModelAnimations(modelAnimations, animsCount); // Unload model animation + UnloadModel(characterModel); // Unload model and meshes/material + +// INFO: Uncomment the following line to use GPU skinning + // UnloadShader(skinningShader); // Unload GPU skinning shader + + CloseWindow(); // Close window and OpenGL context + //-------------------------------------------------------------------------------------- + + return 0; +} diff --git a/examples/models/models_animation_blending.png b/examples/models/models_animation_blending.png new file mode 100644 index 0000000000000000000000000000000000000000..0d70c1a88436a01b3689693035840c34133cd936 GIT binary patch literal 26143 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 + + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + Win32 + + + Release + x64 + + + + {AFDDE100-2D36-4749-817D-12E54C56312F} + Win32Proj + models_animation_blending + 10.0 + models_animation_blending + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 47e83ef4c..8483dc563 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -1,5670 +1,5670 @@ - -Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio Version 17 -VisualStudioVersion = 17.0.31912.275 -MinimumVisualStudioVersion = 10.0.40219.1 -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raylib", "raylib\raylib.vcxproj", "{E89D61AC-55DE-4482-AFD4-DF7242EBC859}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "core", "core", "{6C82BAAE-BDDF-457D-8FA8-7E2490B07035}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shapes", "shapes", "{278D8859-20B1-428F-8448-064F46E1F021}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "textures", "textures", "{DA049009-21FF-4AC0-84E4-830DD1BCD0CE}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "text", "text", "{8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "models", "models", "{AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shaders", "shaders", "{5317807F-61D4-4E0F-B6DC-2D9F12621ED9}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "audio", "audio", "{CC132A4D-D081-4C26-BFB9-AB11984054F8}" -EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "others", "others", "{E9D708A5-9C1F-4B84-A795-C5F191801762}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_window", "examples\core_basic_window.vcxproj", "{0981CA98-E4A5-4DF1-987F-A41D09131EFC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_animation", "examples\textures_sprite_animation.vcxproj", "{C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_srcrec_dstrec", "examples\textures_srcrec_dstrec.vcxproj", "{103B292B-049B-4B15-85A1-9F902840DB2C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_drawing", "examples\textures_image_drawing.vcxproj", "{0C2D2F82-AE67-400C-B19C-8C9B957B132A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_module_playing", "examples\audio_module_playing.vcxproj", "{E6784F91-4E4E-4956-A079-73FAB1AC7BE6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_music_stream", "examples\audio_music_stream.vcxproj", "{BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_raw_stream", "examples\audio_raw_stream.vcxproj", "{93A1F656-0D29-4C5E-B140-11F23FF5D6AB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_loading", "examples\audio_sound_loading.vcxproj", "{F81C5819-85B6-4D2E-B6DC-104A7634461B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera", "examples\core_2d_camera.vcxproj", "{66CC5B13-881A-412F-8C51-746622A91C5A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera_platformer", "examples\core_2d_camera_platformer.vcxproj", "{CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_first_person", "examples\core_3d_camera_first_person.vcxproj", "{557138B0-7BE2-4392-B2E2-B45734031A62}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_free", "examples\core_3d_camera_free.vcxproj", "{9EED87BB-527F-4D05-9384-6D16CFD627A8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_mode", "examples\core_3d_camera_mode.vcxproj", "{6D1CA2F1-7FCA-4249-9220-075C2DF4F965}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_split_screen", "examples\core_3d_camera_split_screen.vcxproj", "{946A1700-C7AA-46F0-AEF2-67C98B5722AC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_picking", "examples\core_3d_picking.vcxproj", "{FD193822-3D5C-4161-A147-884C2ABDE483}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_custom_logging", "examples\core_custom_logging.vcxproj", "{20AD0AC9-9159-4744-99CC-6AC5779D6B87}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_drop_files", "examples\core_drop_files.vcxproj", "{0199E349-0701-40BC-8A7F-06A54FFA3E7C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_highdpi_demo", "examples\core_highdpi_demo.vcxproj", "{BCB71111-8505-4B35-8CEF-EC6115DC9D4D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_gamepad", "examples\core_input_gamepad.vcxproj", "{8F19E3DA-8929-4000-87B5-3CA6929636CC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_gestures", "examples\core_input_gestures.vcxproj", "{51A00565-5787-4911-9CC0-28403AA4909D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_keys", "examples\core_input_keys.vcxproj", "{92B64AE7-D773-4F05-89F1-CE59BBF4F053}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_mouse", "examples\core_input_mouse.vcxproj", "{A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_multitouch", "examples\core_input_multitouch.vcxproj", "{A643BB06-735D-47F3-BFE7-B6D3C36F7097}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_random_sequence", "examples\core_random_sequence.vcxproj", "{6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_random_values", "examples\core_random_values.vcxproj", "{B332DCA8-3599-4A99-917A-82261BDC27AC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_scissor_test", "examples\core_scissor_test.vcxproj", "{59089B0C-AAB4-4532-B294-44DEAE7178B7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_storage_values", "examples\core_storage_values.vcxproj", "{C298876B-6C12-4EA4-903B-33450BCD9884}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_vr_simulator", "examples\core_vr_simulator.vcxproj", "{83F586FA-C801-4979-ACCA-006BD628CC88}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_flags", "examples\core_window_flags.vcxproj", "{86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_letterbox", "examples\core_window_letterbox.vcxproj", "{FF2970AE-E2E9-405F-B321-D523A1BD44A0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_world_screen", "examples\core_world_screen.vcxproj", "{79417CE2-FEEB-42F0-BC53-62D5267B19B1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_playing", "examples\models_animation_playing.vcxproj", "{AFDDE100-2D36-4749-817D-12E54C56312F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_billboard_rendering", "examples\models_billboard_rendering.vcxproj", "{B7812167-50FB-4934-996F-DF6FE4CBBFDF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_box_collisions", "examples\models_box_collisions.vcxproj", "{39DB56C7-05F8-492C-A8D4-F19E40FECB59}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_cubicmap_rendering", "examples\models_cubicmap_rendering.vcxproj", "{82F3D34B-8DB2-4C6A-98B1-132245DD9D99}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_first_person_maze", "examples\models_first_person_maze.vcxproj", "{CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_geometric_shapes", "examples\models_geometric_shapes.vcxproj", "{14BA7F98-02CC-4648-9236-676BFF9458AF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_heightmap_rendering", "examples\models_heightmap_rendering.vcxproj", "{0859A973-E4FE-4688-8D16-0253163FDE24}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading", "examples\models_loading.vcxproj", "{F3412853-2B6A-4334-8CF2-B796CDAE0850}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_mesh_generation", "examples\models_mesh_generation.vcxproj", "{BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_mesh_picking", "examples\models_mesh_picking.vcxproj", "{D03F2C82-9553-4AFA-8F49-9234009122B6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_orthographic_projection", "examples\models_orthographic_projection.vcxproj", "{FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_rlgl_solar_system", "examples\models_rlgl_solar_system.vcxproj", "{A53CCF42-A972-478F-9336-0F618B3EC06A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_skybox_rendering", "examples\models_skybox_rendering.vcxproj", "{0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_waving_cubes", "examples\models_waving_cubes.vcxproj", "{870723DD-945A-4136-B65B-4AF3BF85369C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_yaw_pitch_roll", "examples\models_yaw_pitch_roll.vcxproj", "{EA6488AD-445B-4835-87FB-EBC9E2EDAF97}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_to_image", "examples\textures_to_image.vcxproj", "{E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_explosion", "examples\textures_sprite_explosion.vcxproj", "{472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_button", "examples\textures_sprite_button.vcxproj", "{589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_raw_data", "examples\textures_raw_data.vcxproj", "{3AD868E6-8355-4F29-B5ED-7DE94AD786E7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_particles_blending", "examples\textures_particles_blending.vcxproj", "{2B78CF0A-5403-45E2-99BD-493F1679BCDB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_npatch_drawing", "examples\textures_npatch_drawing.vcxproj", "{0AB968E0-E993-45CE-8875-7453C96DF583}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_mouse_painting", "examples\textures_mouse_painting.vcxproj", "{25923141-9859-4AFE-8168-0DF78322FC63}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_logo_raylib", "examples\textures_logo_raylib.vcxproj", "{7E855020-7FA4-482D-B510-2E709354FE8B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_text", "examples\textures_image_text.vcxproj", "{9782E0C8-2BD3-4F67-B420-21CF19CA2435}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_processing", "examples\textures_image_processing.vcxproj", "{9F4135E3-9814-452C-9B35-0EFBCD792B49}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_loading", "examples\textures_image_loading.vcxproj", "{C45343E6-DAB6-4F3A-A00A-8BED71A098BE}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_generation", "examples\textures_image_generation.vcxproj", "{B19DD336-538E-4091-A559-EAA717FEC899}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_tiled_drawing", "examples\textures_tiled_drawing.vcxproj", "{0BF60202-43F7-48E9-8717-D31E56FA5BE0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_bunnymark", "examples\textures_bunnymark.vcxproj", "{4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_blend_modes", "examples\textures_blend_modes.vcxproj", "{6D75CD88-1A03-4955-B8C7-ACFC3742154F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_background_scrolling", "examples\textures_background_scrolling.vcxproj", "{8DD0EB7E-668E-452D-91D7-906C64A9C8AC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_writing_anim", "examples\text_writing_anim.vcxproj", "{F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_unicode_emojis", "examples\text_unicode_emojis.vcxproj", "{1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_rectangle_bounds", "examples\text_rectangle_bounds.vcxproj", "{25BCB876-B60A-499B-9046-E9801CFD7780}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_sprite_fonts", "examples\text_sprite_fonts.vcxproj", "{56FB0A45-145F-4EAE-B2C8-E5833E682D8F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_input_box", "examples\text_input_box.vcxproj", "{2BB0C1D4-9298-45AC-B244-67A99769A292}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_format_text", "examples\text_format_text.vcxproj", "{99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_font_spritefont", "examples\text_font_spritefont.vcxproj", "{81064BCE-EEC1-43B0-9912-F05F2B54B11A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_font_sdf", "examples\text_font_sdf.vcxproj", "{31B41997-3890-45E3-93FE-C57B363E9C0D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_font_loading", "examples\text_font_loading.vcxproj", "{D550AB93-DF31-4B76-873F-F075018352F4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_font_filters", "examples\text_font_filters.vcxproj", "{8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rectangle_scaling", "examples\shapes_rectangle_scaling.vcxproj", "{F90FCDC5-EE14-4B89-96DB-4392E28F34AF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_logo_raylib_anim", "examples\shapes_logo_raylib_anim.vcxproj", "{93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_logo_raylib", "examples\shapes_logo_raylib.vcxproj", "{56E68E37-B3FC-4799-91AF-0CA10B6D55A5}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_lines_bezier", "examples\shapes_lines_bezier.vcxproj", "{03E7018C-44A2-4C46-9CE7-F2A135A2692B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_following_eyes", "examples\shapes_following_eyes.vcxproj", "{F3F6FE4D-9D9E-451A-B0BA-81456104B672}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_basic_shapes", "examples\shapes_basic_shapes.vcxproj", "{C27794B5-1293-4EA7-BC0E-0F18E6325539}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_bouncing_ball", "examples\shapes_bouncing_ball.vcxproj", "{02F41059-12A2-4A96-8D77-07EFE4B108FD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_collision_area", "examples\shapes_collision_area.vcxproj", "{B774E0B9-9514-4E88-975F-4EB6C3B8D519}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_colors_palette", "examples\shapes_colors_palette.vcxproj", "{D91367C2-2189-4859-A7FE-D2CAB84FA15C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_circle_sector_drawing", "examples\shapes_circle_sector_drawing.vcxproj", "{33459B4E-1839-4856-BF6B-22480D11FE31}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rounded_rectangle_drawing", "examples\shapes_rounded_rectangle_drawing.vcxproj", "{48871156-181A-475A-BD8D-200086A09675}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_ring_drawing", "examples\shapes_ring_drawing.vcxproj", "{C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_ball", "examples\shapes_easings_ball.vcxproj", "{1C49E35A-2838-49D9-9D5F-4B8134960EF6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_box", "examples\shapes_easings_box.vcxproj", "{F91142E2-A999-47F0-9E74-38C1E2930EBE}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_rectangles", "examples\shapes_easings_rectangles.vcxproj", "{1EDD4BCF-345C-4065-8CBD-7285224293C3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_basic_lighting", "examples\shaders_basic_lighting.vcxproj", "{A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_custom_uniform", "examples\shaders_custom_uniform.vcxproj", "{B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_eratosthenes_sieve", "examples\shaders_eratosthenes_sieve.vcxproj", "{D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_fog_rendering", "examples\shaders_fog_rendering.vcxproj", "{4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_hot_reloading", "examples\shaders_hot_reloading.vcxproj", "{CF3755C4-937D-4ABF-B7B3-95140808717F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_julia_set", "examples\shaders_julia_set.vcxproj", "{D34939FE-8873-4C53-8D6C-74DED78EA3C4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_model_shader", "examples\shaders_model_shader.vcxproj", "{D408A730-363A-4ABF-BCEF-5D63DCC66042}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_multi_sample2d", "examples\shaders_multi_sample2d.vcxproj", "{F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_palette_switch", "examples\shaders_palette_switch.vcxproj", "{52FB7463-C128-42AF-A02F-78F48473EA9A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_postprocessing", "examples\shaders_postprocessing.vcxproj", "{7381D91E-5C72-48F0-AAB4-95C9B10D7484}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_raymarching_rendering", "examples\shaders_raymarching_rendering.vcxproj", "{D36EC43E-B31F-4CF4-8285-93A7A9D90189}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_mesh_instancing", "examples\shaders_mesh_instancing.vcxproj", "{274C0319-7E1E-4188-936B-8DF3331230B3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_shapes_textures", "examples\shaders_shapes_textures.vcxproj", "{41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_simple_mask", "examples\shaders_simple_mask.vcxproj", "{600C3D4F-0670-4DB4-B30F-520A729053B5}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_spotlight_rendering", "examples\shaders_spotlight_rendering.vcxproj", "{11F33A39-74B7-4018-B5F9-CC285A673A8F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_rendering", "examples\shaders_texture_rendering.vcxproj", "{A6F5E35E-B4A7-41B3-853A-75558E6E0715}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_waves", "examples\shaders_texture_waves.vcxproj", "{291B4975-8EFF-4C7C-8AF3-44A77B8491B8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "embedded_files_loading", "examples\embedded_files_loading.vcxproj", "{FDE6080B-E203-4066-910D-AD0302566008}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "easings_testbed", "examples\easings_testbed.vcxproj", "{E1B6D565-9D7C-46B7-9202-ECF54974DE50}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rlgl_standalone", "examples\rlgl_standalone.vcxproj", "{C8765523-58F8-4C8E-9914-693396F6F0FF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading_vox", "examples\models_loading_vox.vcxproj", "{2F1B955B-275E-4D8E-8864-06FEC44D7912}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading_gltf", "examples\models_loading_gltf.vcxproj", "{F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_codepoints_loading", "examples\text_codepoints_loading.vcxproj", "{F2DB2E59-76BF-4D81-859A-AFC289C046C0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_should_close", "examples\core_window_should_close.vcxproj", "{3FE7E9B6-49AC-4246-A789-28DB4644567B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_fog_of_war", "examples\textures_fog_of_war.vcxproj", "{EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_gif_player", "examples\textures_gif_player.vcxproj", "{191A5289-BA65-4638-A215-C521F0187313}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera_mouse_zoom", "examples\core_2d_camera_mouse_zoom.vcxproj", "{3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_screen_manager", "examples\core_basic_screen_manager.vcxproj", "{8B1AF423-00F1-4924-AC54-F77D402D2AC9}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_custom_frame_control", "examples\core_custom_frame_control.vcxproj", "{658A1B85-554E-4A5D-973A-FFE592CDD5F2}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rlgl_compute_shader", "examples\rlgl_compute_shader.vcxproj", "{07CA51AD-72AE-46A2-AAED-DC3E3F807976}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_3d_drawing", "examples\text_3d_drawing.vcxproj", "{27B110CC-43C0-400A-89D9-245E681647D7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_polygon_drawing", "examples\textures_polygon_drawing.vcxproj", "{1DE84812-E143-4C4B-A61D-9267AAD55401}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_stream_effects", "examples\audio_stream_effects.vcxproj", "{4A87569C-4BD3-4113-B4B9-573D65B3D3F8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_textured_curve", "examples\textures_textured_curve.vcxproj", "{769FF0C1-4424-4FA3-BC44-D7A7DA312A06}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading_m3d", "examples\models_loading_m3d.vcxproj", "{6D9E00D8-2893-45E4-9363-3F7F61D416BD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_depth_writing", "examples\shaders_depth_writing.vcxproj", "{70B35F59-AFC2-4D8F-8833-5314D2047A81}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_depth_rendering", "examples\shaders_depth_rendering.vcxproj", "{DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_hybrid_rendering", "examples\shaders_hybrid_rendering.vcxproj", "{3755E9F4-CB48-4EC3-B561-3B85964EBDEF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_multi", "examples\audio_sound_multi.vcxproj", "{F81C5819-85B4-4D2E-B6DC-104A7634461B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera_split_screen", "examples\core_2d_camera_split_screen.vcxproj", "{CC62F7DB-D089-4677-8575-CAB7A7815C43}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_automation_events", "examples\core_automation_events.vcxproj", "{7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_mixed_processor", "examples\audio_mixed_processor.vcxproj", "{A4B0D971-3CD6-41C9-8AB2-055D25A33373}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_mouse_wheel", "examples\core_input_mouse_wheel.vcxproj", "{15CDD310-6980-42A6-8082-3A6B7730D13F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_smooth_pixelperfect", "examples\core_smooth_pixelperfect.vcxproj", "{71DB4284-5B1C-4E86-9AF5-B91542D44A6F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_textured_cube", "examples\models_textured_cube.vcxproj", "{4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_deferred_rendering", "examples\shaders_deferred_rendering.vcxproj", "{88DE5AD6-0074-4A5A-BE22-C840153E35D5}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_outline", "examples\shaders_texture_outline.vcxproj", "{A546E75A-5242-46E6-9A9E-6C91554EAB84}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_tiling", "examples\shaders_texture_tiling.vcxproj", "{EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_splines_drawing", "examples\shapes_splines_drawing.vcxproj", "{DF25E545-00FF-4E64-844C-7DF98991F901}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_top_down_lights", "examples\shapes_top_down_lights.vcxproj", "{703BE7BA-5B99-4F70-806D-3A259F6A991E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rectangle_advanced", "examples\shapes_rectangle_advanced.vcxproj", "{FAFEE2F9-24B0-4AF1-B512-433E9590033F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_gpu_skinning", "examples\models_animation_gpu_skinning.vcxproj", "{8245DAD9-D402-4D5C-8F45-32229CD3B263}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_shadowmap_rendering", "examples\shaders_shadowmap_rendering.vcxproj", "{41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_bone_socket", "examples\models_bone_socket.vcxproj", "{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_vertex_displacement", "examples\shaders_vertex_displacement.vcxproj", "{CCA63A76-D9FC-4130-9F67-4D97F9770D53}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_rounded_rectangle", "examples\shaders_rounded_rectangle.vcxproj", "{D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_digital_clock", "examples\shapes_digital_clock.vcxproj", "{3384C257-3CFE-4A8F-838C-19DAC5C955DA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_double_pendulum", "examples\shapes_double_pendulum.vcxproj", "{2B140378-125F-4DE9-AC37-2CC1B73D7254}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_kernel", "examples\textures_image_kernel.vcxproj", "{F4C55B99-E1C5-496A-8AC2-40188C38F4F6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_rotate", "examples\textures_image_rotate.vcxproj", "{2AA91EED-2D32-4B09-84A3-53D41EED1005}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_channel", "examples\textures_image_channel.vcxproj", "{EC0910F6-8D66-4509-BF57-A5EE7AE9485F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_point_rendering", "examples\models_point_rendering.vcxproj", "{921391C6-7626-4212-9928-BC82BC785461}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_tesseract_view", "examples\models_tesseract_view.vcxproj", "{6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_basic_pbr", "examples\shaders_basic_pbr.vcxproj", "{4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_lightmap_rendering", "examples\shaders_lightmap_rendering.vcxproj", "{C54703BF-D68A-480D-BE27-49B62E45D582}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_positioning", "examples\audio_sound_positioning.vcxproj", "{9CD8BCAD-F212-4BCC-BA98-899743CE3279}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_virtual_controls", "examples\core_input_virtual_controls.vcxproj", "{0981CA28-E4A5-4DF1-987F-A41D09131EFC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_fps", "examples\core_3d_camera_fps.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_normalmap_rendering", "examples\shaders_normalmap_rendering.vcxproj", "{6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_unicode_ranges", "examples\text_unicode_ranges.vcxproj", "{6777EC3C-077C-42FC-B4AD-B799CE55CCE4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_gestures_testbed", "examples\core_input_gestures_testbed.vcxproj", "{A61DAD9C-271C-4E95-81AA-DB4CD58564D4}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_render_texture", "examples\core_render_texture.vcxproj", "{49C67F03-1A56-4F96-B278-39B66EC93678}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_inline_styling", "examples\text_inline_styling.vcxproj", "{D496308F-3C3C-40B3-A3ED-EA327D244B3E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_undo_redo", "examples\core_undo_redo.vcxproj", "{3B27F358-2679-4F38-B297-17B536F580BB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_actions", "examples\core_input_actions.vcxproj", "{718FCBD0-591D-448C-B7D5-9F1CA8544E7B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_delta_time", "examples\core_delta_time.vcxproj", "{19CA0070-B4B2-4394-90B7-D0C259AA35BA}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_bullet_hell", "examples\shapes_bullet_hell.vcxproj", "{2CCCD9E4-9058-4291-BD89-39C979F0CA1E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_vector_angle", "examples\shapes_vector_angle.vcxproj", "{9DB1F875-6E65-4195-B23F-ED8095C0B99C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_basic_voxel", "examples\models_basic_voxel.vcxproj", "{52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_dashed_line", "examples\shapes_dashed_line.vcxproj", "{8E132D5A-2C00-48D0-8747-97E41356F26F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_rotating_cube", "examples\models_rotating_cube.vcxproj", "{A4662163-83E7-4309-8CAA-B0BF13655FE6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_ascii_rendering", "examples\shaders_ascii_rendering.vcxproj", "{5F4B766F-DD52-4B53-B6C3-BC7611E17F20}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_monitor_detector", "examples\core_monitor_detector.vcxproj", "{FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "web_basic_window", "examples\web_basic_window.vcxproj", "{A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_kaleidoscope", "examples\shapes_kaleidoscope.vcxproj", "{0C442799-B09C-4CD1-9538-711B6E85E9BF}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_recursive_tree", "examples\shapes_recursive_tree.vcxproj", "{DFB40A10-F8B7-412A-BCC3-5EE49294D816}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_triangle_strip", "examples\shapes_triangle_strip.vcxproj", "{BB58A5FB-1A35-4471-86D0-A5189EC541B3}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_pie_chart", "examples\shapes_pie_chart.vcxproj", "{61997220-5383-4AE5-ABD4-5F45AE1B0F2A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_directory_files", "examples\core_directory_files.vcxproj", "{7467E9AE-844F-444D-8A3F-17397544BA21}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_simple_particles", "examples\shapes_simple_particles.vcxproj", "{497FDF54-9762-4048-A833-61CC3980A0FB}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_words_alignment", "examples\text_words_alignment.vcxproj", "{29B00F47-BE91-4A1F-B87D-B1302F038316}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_clipboard_text", "examples\core_clipboard_text.vcxproj", "{124935CC-73BB-489E-92E8-4F922A85DB5D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_clock_of_clocks", "examples\shapes_clock_of_clocks.vcxproj", "{AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_mouse_trail", "examples\shapes_mouse_trail.vcxproj", "{0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_starfield_effect", "examples\shapes_starfield_effect.vcxproj", "{EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_highdpi_testbed", "examples\core_highdpi_testbed.vcxproj", "{1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_screen_recording", "examples\core_screen_recording.vcxproj", "{9DE2FC01-A839-4F89-8319-9071D4C54821}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_text_file_loading", "examples\core_text_file_loading.vcxproj", "{2F578155-D51F-4C03-AB7F-5C5122CA46CC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_mandelbrot_set", "examples\shaders_mandelbrot_set.vcxproj", "{1C829D1A-892C-451C-AF0B-AC65C85F5CC6}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_math_angle_rotation", "examples\shapes_math_angle_rotation.vcxproj", "{84DE22BB-C25F-425C-A7FE-0120CF107B83}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_color_correction", "examples\shaders_color_correction.vcxproj", "{98152EDD-7E28-4FA3-89D8-B636ED5D5F65}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_math_sine_cosine", "examples\shapes_math_sine_cosine.vcxproj", "{B7FDD40F-DDA4-468E-9C40-EEB175964A26}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_decals", "examples\models_decals.vcxproj", "{028F0967-B253-45DA-B1C4-FACCE45D0D8D}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_lines_drawing", "examples\shapes_lines_drawing.vcxproj", "{666346D7-C84B-498D-AE17-53B20C62DB1A}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_viewport_scaling", "examples\core_viewport_scaling.vcxproj", "{AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_compute_hash", "examples\core_compute_hash.vcxproj", "{6C897101-BE52-4387-8AA2-062123A76BA1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_screen_buffer", "examples\textures_screen_buffer.vcxproj", "{4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_spectrum_visualizer", "examples\audio_spectrum_visualizer.vcxproj", "{2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_directional_billboard", "examples\models_directional_billboard.vcxproj", "{30011884-25EE-42C9-BB15-888CAFB1AA6E}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rlgl_color_wheel", "examples\shapes_rlgl_color_wheel.vcxproj", "{32FE2658-1D70-442E-8672-0AC5C6F0BD7B}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rlgl_triangle", "examples\shapes_rlgl_triangle.vcxproj", "{842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_stacking", "examples\textures_sprite_stacking.vcxproj", "{FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_ball_physics", "examples\shapes_ball_physics.vcxproj", "{0653AFAF-5578-4C02-AF29-0C873E7634AE}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_game_of_life", "examples\shaders_game_of_life.vcxproj", "{071E64F3-1396-4A97-97CA-98CAC059B168}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_penrose_tile", "examples\shapes_penrose_tile.vcxproj", "{7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_strings_management", "examples\text_strings_management.vcxproj", "{1F4722E7-F78E-413F-A106-D3490211EA57}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_cellular_automata", "examples\textures_cellular_automata.vcxproj", "{0A0FC982-6E31-401F-BA77-3C5E8AB02C68}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_hilbert_curve", "examples\shapes_hilbert_curve.vcxproj", "{DC163251-16C3-4B72-B965-ACDBA0F02BD1}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_keyboard_testbed", "examples\core_keyboard_testbed.vcxproj", "{D35D2FDA-B53F-4F70-81CA-24D95812B89C}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_framebuffer_rendering", "examples\textures_framebuffer_rendering.vcxproj", "{F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}" -EndProject -Global - GlobalSection(SolutionConfigurationPlatforms) = preSolution - Debug.DLL|ARM64 = Debug.DLL|ARM64 - Debug.DLL|x64 = Debug.DLL|x64 - Debug.DLL|x86 = Debug.DLL|x86 - Debug|ARM64 = Debug|ARM64 - Debug|x64 = Debug|x64 - Debug|x86 = Debug|x86 - Release.DLL|ARM64 = Release.DLL|ARM64 - Release.DLL|x64 = Release.DLL|x64 - Release.DLL|x86 = Release.DLL|x86 - Release|ARM64 = Release|ARM64 - Release|x64 = Release|x64 - Release|x86 = Release|x86 - EndGlobalSection - GlobalSection(ProjectConfigurationPlatforms) = postSolution - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|ARM64.Build.0 = Debug|ARM64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.ActiveCfg = Debug|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.Build.0 = Debug|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.ActiveCfg = Debug|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.Build.0 = Debug|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|ARM64.ActiveCfg = Release|ARM64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|ARM64.Build.0 = Release|ARM64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.ActiveCfg = Release|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.Build.0 = Release|x64 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.ActiveCfg = Release|Win32 - {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.Build.0 = Release|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.Build.0 = Debug|ARM64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.ActiveCfg = Debug|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.Build.0 = Debug|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.ActiveCfg = Debug|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.Build.0 = Debug|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.ActiveCfg = Release|ARM64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.Build.0 = Release|ARM64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.ActiveCfg = Release|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32 - {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|ARM64.Build.0 = Debug|ARM64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|x64.ActiveCfg = Debug|x64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|x64.Build.0 = Debug|x64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|x86.ActiveCfg = Debug|Win32 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|x86.Build.0 = Debug|Win32 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|ARM64.ActiveCfg = Release|ARM64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|ARM64.Build.0 = Release|ARM64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|x64.ActiveCfg = Release|x64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|x64.Build.0 = Release|x64 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|x86.ActiveCfg = Release|Win32 - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|x86.Build.0 = Release|Win32 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|ARM64.Build.0 = Debug|ARM64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|x64.ActiveCfg = Debug|x64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|x64.Build.0 = Debug|x64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|x86.ActiveCfg = Debug|Win32 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|x86.Build.0 = Debug|Win32 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|ARM64.ActiveCfg = Release|ARM64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|ARM64.Build.0 = Release|ARM64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|x64.ActiveCfg = Release|x64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|x64.Build.0 = Release|x64 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|x86.ActiveCfg = Release|Win32 - {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|x86.Build.0 = Release|Win32 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|ARM64.Build.0 = Debug|ARM64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|x64.ActiveCfg = Debug|x64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|x64.Build.0 = Debug|x64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|x86.ActiveCfg = Debug|Win32 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|x86.Build.0 = Debug|Win32 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|ARM64.ActiveCfg = Release|ARM64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|ARM64.Build.0 = Release|ARM64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|x64.ActiveCfg = Release|x64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|x64.Build.0 = Release|x64 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|x86.ActiveCfg = Release|Win32 - {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|x86.Build.0 = Release|Win32 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|ARM64.Build.0 = Debug|ARM64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|x64.ActiveCfg = Debug|x64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|x64.Build.0 = Debug|x64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|x86.ActiveCfg = Debug|Win32 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|x86.Build.0 = Debug|Win32 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|ARM64.ActiveCfg = Release|ARM64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|ARM64.Build.0 = Release|ARM64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|x64.ActiveCfg = Release|x64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|x64.Build.0 = Release|x64 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|x86.ActiveCfg = Release|Win32 - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|x86.Build.0 = Release|Win32 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|ARM64.Build.0 = Debug|ARM64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|x64.ActiveCfg = Debug|x64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|x64.Build.0 = Debug|x64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|x86.ActiveCfg = Debug|Win32 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|x86.Build.0 = Debug|Win32 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|ARM64.ActiveCfg = Release|ARM64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|ARM64.Build.0 = Release|ARM64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|x64.ActiveCfg = Release|x64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|x64.Build.0 = Release|x64 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|x86.ActiveCfg = Release|Win32 - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|x86.Build.0 = Release|Win32 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|ARM64.Build.0 = Debug|ARM64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|x64.ActiveCfg = Debug|x64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|x64.Build.0 = Debug|x64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|x86.ActiveCfg = Debug|Win32 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|x86.Build.0 = Debug|Win32 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|ARM64.ActiveCfg = Release|ARM64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|ARM64.Build.0 = Release|ARM64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|x64.ActiveCfg = Release|x64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|x64.Build.0 = Release|x64 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|x86.ActiveCfg = Release|Win32 - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|x86.Build.0 = Release|Win32 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|ARM64.Build.0 = Debug|ARM64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|x64.ActiveCfg = Debug|x64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|x64.Build.0 = Debug|x64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|x86.ActiveCfg = Debug|Win32 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|x86.Build.0 = Debug|Win32 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|ARM64.ActiveCfg = Release|ARM64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|ARM64.Build.0 = Release|ARM64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|x64.ActiveCfg = Release|x64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|x64.Build.0 = Release|x64 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|x86.ActiveCfg = Release|Win32 - {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|x86.Build.0 = Release|Win32 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|ARM64.Build.0 = Debug|ARM64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|x64.ActiveCfg = Debug|x64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|x64.Build.0 = Debug|x64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|x86.ActiveCfg = Debug|Win32 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|x86.Build.0 = Debug|Win32 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|ARM64.ActiveCfg = Release|ARM64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|ARM64.Build.0 = Release|ARM64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|x64.ActiveCfg = Release|x64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|x64.Build.0 = Release|x64 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|x86.ActiveCfg = Release|Win32 - {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|x86.Build.0 = Release|Win32 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|ARM64.Build.0 = Debug|ARM64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|x64.ActiveCfg = Debug|x64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|x64.Build.0 = Debug|x64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|x86.ActiveCfg = Debug|Win32 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|x86.Build.0 = Debug|Win32 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|ARM64.ActiveCfg = Release|ARM64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|ARM64.Build.0 = Release|ARM64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|x64.ActiveCfg = Release|x64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|x64.Build.0 = Release|x64 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|x86.ActiveCfg = Release|Win32 - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|x86.Build.0 = Release|Win32 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|ARM64.Build.0 = Debug|ARM64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|x64.ActiveCfg = Debug|x64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|x64.Build.0 = Debug|x64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|x86.ActiveCfg = Debug|Win32 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|x86.Build.0 = Debug|Win32 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|ARM64.ActiveCfg = Release|ARM64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|ARM64.Build.0 = Release|ARM64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|x64.ActiveCfg = Release|x64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|x64.Build.0 = Release|x64 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|x86.ActiveCfg = Release|Win32 - {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|x86.Build.0 = Release|Win32 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|ARM64.Build.0 = Debug|ARM64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|x64.ActiveCfg = Debug|x64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|x64.Build.0 = Debug|x64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|x86.ActiveCfg = Debug|Win32 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|x86.Build.0 = Debug|Win32 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|ARM64.ActiveCfg = Release|ARM64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|ARM64.Build.0 = Release|ARM64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|x64.ActiveCfg = Release|x64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|x64.Build.0 = Release|x64 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|x86.ActiveCfg = Release|Win32 - {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|x86.Build.0 = Release|Win32 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|ARM64.Build.0 = Debug|ARM64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|x64.ActiveCfg = Debug|x64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|x64.Build.0 = Debug|x64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|x86.ActiveCfg = Debug|Win32 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|x86.Build.0 = Debug|Win32 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|ARM64.ActiveCfg = Release|ARM64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|ARM64.Build.0 = Release|ARM64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|x64.ActiveCfg = Release|x64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|x64.Build.0 = Release|x64 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|x86.ActiveCfg = Release|Win32 - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|x86.Build.0 = Release|Win32 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|ARM64.Build.0 = Debug|ARM64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x64.ActiveCfg = Debug|x64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x64.Build.0 = Debug|x64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x86.ActiveCfg = Debug|Win32 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x86.Build.0 = Debug|Win32 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|ARM64.ActiveCfg = Release|ARM64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|ARM64.Build.0 = Release|ARM64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x64.ActiveCfg = Release|x64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x64.Build.0 = Release|x64 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x86.ActiveCfg = Release|Win32 - {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x86.Build.0 = Release|Win32 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|ARM64.Build.0 = Debug|ARM64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|x64.ActiveCfg = Debug|x64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|x64.Build.0 = Debug|x64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|x86.ActiveCfg = Debug|Win32 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|x86.Build.0 = Debug|Win32 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|ARM64.ActiveCfg = Release|ARM64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|ARM64.Build.0 = Release|ARM64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|x64.ActiveCfg = Release|x64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|x64.Build.0 = Release|x64 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|x86.ActiveCfg = Release|Win32 - {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|x86.Build.0 = Release|Win32 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|ARM64.Build.0 = Debug|ARM64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|x64.ActiveCfg = Debug|x64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|x64.Build.0 = Debug|x64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|x86.ActiveCfg = Debug|Win32 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|x86.Build.0 = Debug|Win32 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|ARM64.ActiveCfg = Release|ARM64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|ARM64.Build.0 = Release|ARM64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|x64.ActiveCfg = Release|x64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|x64.Build.0 = Release|x64 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|x86.ActiveCfg = Release|Win32 - {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|x86.Build.0 = Release|Win32 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|ARM64.Build.0 = Debug|ARM64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|x64.ActiveCfg = Debug|x64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|x64.Build.0 = Debug|x64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|x86.ActiveCfg = Debug|Win32 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|x86.Build.0 = Debug|Win32 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|ARM64.ActiveCfg = Release|ARM64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|ARM64.Build.0 = Release|ARM64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|x64.ActiveCfg = Release|x64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|x64.Build.0 = Release|x64 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|x86.ActiveCfg = Release|Win32 - {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|x86.Build.0 = Release|Win32 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|ARM64.Build.0 = Debug|ARM64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|x64.ActiveCfg = Debug|x64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|x64.Build.0 = Debug|x64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|x86.ActiveCfg = Debug|Win32 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|x86.Build.0 = Debug|Win32 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|ARM64.ActiveCfg = Release|ARM64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|ARM64.Build.0 = Release|ARM64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|x64.ActiveCfg = Release|x64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|x64.Build.0 = Release|x64 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|x86.ActiveCfg = Release|Win32 - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|x86.Build.0 = Release|Win32 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|ARM64.Build.0 = Debug|ARM64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|x64.ActiveCfg = Debug|x64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|x64.Build.0 = Debug|x64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|x86.ActiveCfg = Debug|Win32 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|x86.Build.0 = Debug|Win32 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|ARM64.ActiveCfg = Release|ARM64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|ARM64.Build.0 = Release|ARM64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|x64.ActiveCfg = Release|x64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|x64.Build.0 = Release|x64 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|x86.ActiveCfg = Release|Win32 - {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|x86.Build.0 = Release|Win32 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|ARM64.Build.0 = Debug|ARM64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|x64.ActiveCfg = Debug|x64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|x64.Build.0 = Debug|x64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|x86.ActiveCfg = Debug|Win32 - {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|x86.Build.0 = Debug|Win32 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release|ARM64.ActiveCfg = Release|ARM64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release|ARM64.Build.0 = Release|ARM64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release|x64.ActiveCfg = Release|x64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release|x64.Build.0 = Release|x64 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release|x86.ActiveCfg = Release|Win32 - {51A00565-5787-4911-9CC0-28403AA4909D}.Release|x86.Build.0 = Release|Win32 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|ARM64.Build.0 = Debug|ARM64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|x64.ActiveCfg = Debug|x64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|x64.Build.0 = Debug|x64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|x86.ActiveCfg = Debug|Win32 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|x86.Build.0 = Debug|Win32 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|ARM64.ActiveCfg = Release|ARM64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|ARM64.Build.0 = Release|ARM64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|x64.ActiveCfg = Release|x64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|x64.Build.0 = Release|x64 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|x86.ActiveCfg = Release|Win32 - {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|x86.Build.0 = Release|Win32 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|ARM64.Build.0 = Debug|ARM64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|x64.ActiveCfg = Debug|x64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|x64.Build.0 = Debug|x64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|x86.ActiveCfg = Debug|Win32 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|x86.Build.0 = Debug|Win32 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|ARM64.ActiveCfg = Release|ARM64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|ARM64.Build.0 = Release|ARM64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|x64.ActiveCfg = Release|x64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|x64.Build.0 = Release|x64 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|x86.ActiveCfg = Release|Win32 - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|x86.Build.0 = Release|Win32 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|ARM64.Build.0 = Debug|ARM64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|x64.ActiveCfg = Debug|x64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|x64.Build.0 = Debug|x64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|x86.ActiveCfg = Debug|Win32 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|x86.Build.0 = Debug|Win32 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|ARM64.ActiveCfg = Release|ARM64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|ARM64.Build.0 = Release|ARM64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|x64.ActiveCfg = Release|x64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|x64.Build.0 = Release|x64 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|x86.ActiveCfg = Release|Win32 - {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|x86.Build.0 = Release|Win32 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|ARM64.Build.0 = Debug|ARM64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|x64.ActiveCfg = Debug|x64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|x64.Build.0 = Debug|x64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|x86.ActiveCfg = Debug|Win32 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|x86.Build.0 = Debug|Win32 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|ARM64.ActiveCfg = Release|ARM64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|ARM64.Build.0 = Release|ARM64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|x64.ActiveCfg = Release|x64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|x64.Build.0 = Release|x64 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|x86.ActiveCfg = Release|Win32 - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|x86.Build.0 = Release|Win32 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|ARM64.Build.0 = Debug|ARM64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|x64.ActiveCfg = Debug|x64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|x64.Build.0 = Debug|x64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|x86.ActiveCfg = Debug|Win32 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|x86.Build.0 = Debug|Win32 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|ARM64.ActiveCfg = Release|ARM64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|ARM64.Build.0 = Release|ARM64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|x64.ActiveCfg = Release|x64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|x64.Build.0 = Release|x64 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|x86.ActiveCfg = Release|Win32 - {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|x86.Build.0 = Release|Win32 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|ARM64.Build.0 = Debug|ARM64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|x64.ActiveCfg = Debug|x64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|x64.Build.0 = Debug|x64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|x86.ActiveCfg = Debug|Win32 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|x86.Build.0 = Debug|Win32 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|ARM64.ActiveCfg = Release|ARM64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|ARM64.Build.0 = Release|ARM64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|x64.ActiveCfg = Release|x64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|x64.Build.0 = Release|x64 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|x86.ActiveCfg = Release|Win32 - {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|x86.Build.0 = Release|Win32 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|ARM64.Build.0 = Debug|ARM64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|x64.ActiveCfg = Debug|x64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|x64.Build.0 = Debug|x64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|x86.ActiveCfg = Debug|Win32 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|x86.Build.0 = Debug|Win32 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|ARM64.ActiveCfg = Release|ARM64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|ARM64.Build.0 = Release|ARM64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|x64.ActiveCfg = Release|x64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|x64.Build.0 = Release|x64 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|x86.ActiveCfg = Release|Win32 - {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|x86.Build.0 = Release|Win32 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|ARM64.Build.0 = Debug|ARM64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|x64.ActiveCfg = Debug|x64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|x64.Build.0 = Debug|x64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|x86.ActiveCfg = Debug|Win32 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|x86.Build.0 = Debug|Win32 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|ARM64.ActiveCfg = Release|ARM64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|ARM64.Build.0 = Release|ARM64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|x64.ActiveCfg = Release|x64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|x64.Build.0 = Release|x64 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|x86.ActiveCfg = Release|Win32 - {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|x86.Build.0 = Release|Win32 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|ARM64.Build.0 = Debug|ARM64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|x64.ActiveCfg = Debug|x64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|x64.Build.0 = Debug|x64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|x86.ActiveCfg = Debug|Win32 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|x86.Build.0 = Debug|Win32 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|ARM64.ActiveCfg = Release|ARM64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|ARM64.Build.0 = Release|ARM64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|x64.ActiveCfg = Release|x64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|x64.Build.0 = Release|x64 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|x86.ActiveCfg = Release|Win32 - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|x86.Build.0 = Release|Win32 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|ARM64.Build.0 = Debug|ARM64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|x64.ActiveCfg = Debug|x64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|x64.Build.0 = Debug|x64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|x86.ActiveCfg = Debug|Win32 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|x86.Build.0 = Debug|Win32 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|ARM64.ActiveCfg = Release|ARM64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|ARM64.Build.0 = Release|ARM64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|x64.ActiveCfg = Release|x64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|x64.Build.0 = Release|x64 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|x86.ActiveCfg = Release|Win32 - {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|x86.Build.0 = Release|Win32 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|ARM64.Build.0 = Debug|ARM64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|x64.ActiveCfg = Debug|x64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|x64.Build.0 = Debug|x64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|x86.ActiveCfg = Debug|Win32 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|x86.Build.0 = Debug|Win32 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|ARM64.ActiveCfg = Release|ARM64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|ARM64.Build.0 = Release|ARM64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|x64.ActiveCfg = Release|x64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|x64.Build.0 = Release|x64 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|x86.ActiveCfg = Release|Win32 - {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|x86.Build.0 = Release|Win32 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|ARM64.Build.0 = Debug|ARM64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|x64.ActiveCfg = Debug|x64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|x64.Build.0 = Debug|x64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|x86.ActiveCfg = Debug|Win32 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|x86.Build.0 = Debug|Win32 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|ARM64.ActiveCfg = Release|ARM64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|ARM64.Build.0 = Release|ARM64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|x64.ActiveCfg = Release|x64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|x64.Build.0 = Release|x64 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|x86.ActiveCfg = Release|Win32 - {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|x86.Build.0 = Release|Win32 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|ARM64.Build.0 = Debug|ARM64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|x64.ActiveCfg = Debug|x64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|x64.Build.0 = Debug|x64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|x86.ActiveCfg = Debug|Win32 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|x86.Build.0 = Debug|Win32 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|ARM64.ActiveCfg = Release|ARM64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|ARM64.Build.0 = Release|ARM64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|x64.ActiveCfg = Release|x64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|x64.Build.0 = Release|x64 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|x86.ActiveCfg = Release|Win32 - {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|x86.Build.0 = Release|Win32 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|ARM64.Build.0 = Debug|ARM64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|x64.ActiveCfg = Debug|x64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|x64.Build.0 = Debug|x64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|x86.ActiveCfg = Debug|Win32 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|x86.Build.0 = Debug|Win32 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|ARM64.ActiveCfg = Release|ARM64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|ARM64.Build.0 = Release|ARM64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|x64.ActiveCfg = Release|x64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|x64.Build.0 = Release|x64 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|x86.ActiveCfg = Release|Win32 - {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|x86.Build.0 = Release|Win32 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|ARM64.Build.0 = Debug|ARM64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|x64.ActiveCfg = Debug|x64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|x64.Build.0 = Debug|x64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|x86.ActiveCfg = Debug|Win32 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|x86.Build.0 = Debug|Win32 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|ARM64.ActiveCfg = Release|ARM64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|ARM64.Build.0 = Release|ARM64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|x64.ActiveCfg = Release|x64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|x64.Build.0 = Release|x64 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|x86.ActiveCfg = Release|Win32 - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|x86.Build.0 = Release|Win32 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|ARM64.Build.0 = Debug|ARM64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|x64.ActiveCfg = Debug|x64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|x64.Build.0 = Debug|x64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|x86.ActiveCfg = Debug|Win32 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|x86.Build.0 = Debug|Win32 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|ARM64.ActiveCfg = Release|ARM64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|ARM64.Build.0 = Release|ARM64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|x64.ActiveCfg = Release|x64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|x64.Build.0 = Release|x64 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|x86.ActiveCfg = Release|Win32 - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|x86.Build.0 = Release|Win32 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|ARM64.Build.0 = Debug|ARM64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|x64.ActiveCfg = Debug|x64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|x64.Build.0 = Debug|x64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|x86.ActiveCfg = Debug|Win32 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|x86.Build.0 = Debug|Win32 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|ARM64.ActiveCfg = Release|ARM64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|ARM64.Build.0 = Release|ARM64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|x64.ActiveCfg = Release|x64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|x64.Build.0 = Release|x64 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|x86.ActiveCfg = Release|Win32 - {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|x86.Build.0 = Release|Win32 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|ARM64.Build.0 = Debug|ARM64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|x64.ActiveCfg = Debug|x64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|x64.Build.0 = Debug|x64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|x86.ActiveCfg = Debug|Win32 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|x86.Build.0 = Debug|Win32 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|ARM64.ActiveCfg = Release|ARM64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|ARM64.Build.0 = Release|ARM64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|x64.ActiveCfg = Release|x64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|x64.Build.0 = Release|x64 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|x86.ActiveCfg = Release|Win32 - {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|x86.Build.0 = Release|Win32 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|ARM64.Build.0 = Debug|ARM64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|x64.ActiveCfg = Debug|x64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|x64.Build.0 = Debug|x64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|x86.ActiveCfg = Debug|Win32 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|x86.Build.0 = Debug|Win32 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|ARM64.ActiveCfg = Release|ARM64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|ARM64.Build.0 = Release|ARM64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|x64.ActiveCfg = Release|x64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|x64.Build.0 = Release|x64 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|x86.ActiveCfg = Release|Win32 - {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|x86.Build.0 = Release|Win32 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|ARM64.Build.0 = Debug|ARM64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|x64.ActiveCfg = Debug|x64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|x64.Build.0 = Debug|x64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|x86.ActiveCfg = Debug|Win32 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|x86.Build.0 = Debug|Win32 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|ARM64.ActiveCfg = Release|ARM64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|ARM64.Build.0 = Release|ARM64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|x64.ActiveCfg = Release|x64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|x64.Build.0 = Release|x64 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|x86.ActiveCfg = Release|Win32 - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|x86.Build.0 = Release|Win32 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|ARM64.Build.0 = Debug|ARM64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|x64.ActiveCfg = Debug|x64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|x64.Build.0 = Debug|x64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|x86.ActiveCfg = Debug|Win32 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|x86.Build.0 = Debug|Win32 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|ARM64.ActiveCfg = Release|ARM64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|ARM64.Build.0 = Release|ARM64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|x64.ActiveCfg = Release|x64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|x64.Build.0 = Release|x64 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|x86.ActiveCfg = Release|Win32 - {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|x86.Build.0 = Release|Win32 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|ARM64.Build.0 = Debug|ARM64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|x64.ActiveCfg = Debug|x64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|x64.Build.0 = Debug|x64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|x86.ActiveCfg = Debug|Win32 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|x86.Build.0 = Debug|Win32 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|ARM64.ActiveCfg = Release|ARM64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|ARM64.Build.0 = Release|ARM64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|x64.ActiveCfg = Release|x64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|x64.Build.0 = Release|x64 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|x86.ActiveCfg = Release|Win32 - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|x86.Build.0 = Release|Win32 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|ARM64.Build.0 = Debug|ARM64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|x64.ActiveCfg = Debug|x64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|x64.Build.0 = Debug|x64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|x86.ActiveCfg = Debug|Win32 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|x86.Build.0 = Debug|Win32 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|ARM64.ActiveCfg = Release|ARM64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|ARM64.Build.0 = Release|ARM64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|x64.ActiveCfg = Release|x64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|x64.Build.0 = Release|x64 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|x86.ActiveCfg = Release|Win32 - {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|x86.Build.0 = Release|Win32 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|ARM64.Build.0 = Debug|ARM64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|x64.ActiveCfg = Debug|x64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|x64.Build.0 = Debug|x64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|x86.ActiveCfg = Debug|Win32 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|x86.Build.0 = Debug|Win32 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|ARM64.ActiveCfg = Release|ARM64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|ARM64.Build.0 = Release|ARM64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|x64.ActiveCfg = Release|x64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|x64.Build.0 = Release|x64 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|x86.ActiveCfg = Release|Win32 - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|x86.Build.0 = Release|Win32 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|ARM64.Build.0 = Debug|ARM64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|x64.ActiveCfg = Debug|x64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|x64.Build.0 = Debug|x64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|x86.ActiveCfg = Debug|Win32 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|x86.Build.0 = Debug|Win32 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|ARM64.ActiveCfg = Release|ARM64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|ARM64.Build.0 = Release|ARM64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|x64.ActiveCfg = Release|x64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|x64.Build.0 = Release|x64 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|x86.ActiveCfg = Release|Win32 - {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|x86.Build.0 = Release|Win32 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|ARM64.Build.0 = Debug|ARM64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|x64.ActiveCfg = Debug|x64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|x64.Build.0 = Debug|x64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|x86.ActiveCfg = Debug|Win32 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|x86.Build.0 = Debug|Win32 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|ARM64.ActiveCfg = Release|ARM64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|ARM64.Build.0 = Release|ARM64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|x64.ActiveCfg = Release|x64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|x64.Build.0 = Release|x64 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|x86.ActiveCfg = Release|Win32 - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|x86.Build.0 = Release|Win32 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|ARM64.Build.0 = Debug|ARM64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|x64.ActiveCfg = Debug|x64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|x64.Build.0 = Debug|x64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|x86.ActiveCfg = Debug|Win32 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|x86.Build.0 = Debug|Win32 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|ARM64.ActiveCfg = Release|ARM64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|ARM64.Build.0 = Release|ARM64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|x64.ActiveCfg = Release|x64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|x64.Build.0 = Release|x64 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|x86.ActiveCfg = Release|Win32 - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|x86.Build.0 = Release|Win32 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|ARM64.Build.0 = Debug|ARM64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|x64.ActiveCfg = Debug|x64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|x64.Build.0 = Debug|x64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|x86.ActiveCfg = Debug|Win32 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|x86.Build.0 = Debug|Win32 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|ARM64.ActiveCfg = Release|ARM64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|ARM64.Build.0 = Release|ARM64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|x64.ActiveCfg = Release|x64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|x64.Build.0 = Release|x64 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|x86.ActiveCfg = Release|Win32 - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|x86.Build.0 = Release|Win32 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|ARM64.Build.0 = Debug|ARM64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|x64.ActiveCfg = Debug|x64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|x64.Build.0 = Debug|x64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|x86.ActiveCfg = Debug|Win32 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|x86.Build.0 = Debug|Win32 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|ARM64.ActiveCfg = Release|ARM64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|ARM64.Build.0 = Release|ARM64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|x64.ActiveCfg = Release|x64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|x64.Build.0 = Release|x64 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|x86.ActiveCfg = Release|Win32 - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|x86.Build.0 = Release|Win32 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|ARM64.Build.0 = Debug|ARM64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|x64.ActiveCfg = Debug|x64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|x64.Build.0 = Debug|x64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|x86.ActiveCfg = Debug|Win32 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|x86.Build.0 = Debug|Win32 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|ARM64.ActiveCfg = Release|ARM64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|ARM64.Build.0 = Release|ARM64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|x64.ActiveCfg = Release|x64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|x64.Build.0 = Release|x64 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|x86.ActiveCfg = Release|Win32 - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|x86.Build.0 = Release|Win32 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|ARM64.Build.0 = Debug|ARM64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|x64.ActiveCfg = Debug|x64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|x64.Build.0 = Debug|x64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|x86.ActiveCfg = Debug|Win32 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|x86.Build.0 = Debug|Win32 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|ARM64.ActiveCfg = Release|ARM64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|ARM64.Build.0 = Release|ARM64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|x64.ActiveCfg = Release|x64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|x64.Build.0 = Release|x64 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|x86.ActiveCfg = Release|Win32 - {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|x86.Build.0 = Release|Win32 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|ARM64.Build.0 = Debug|ARM64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|x64.ActiveCfg = Debug|x64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|x64.Build.0 = Debug|x64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|x86.ActiveCfg = Debug|Win32 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|x86.Build.0 = Debug|Win32 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|ARM64.ActiveCfg = Release|ARM64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|ARM64.Build.0 = Release|ARM64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|x64.ActiveCfg = Release|x64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|x64.Build.0 = Release|x64 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|x86.ActiveCfg = Release|Win32 - {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|x86.Build.0 = Release|Win32 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|ARM64.Build.0 = Debug|ARM64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|x64.ActiveCfg = Debug|x64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|x64.Build.0 = Debug|x64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|x86.ActiveCfg = Debug|Win32 - {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|x86.Build.0 = Debug|Win32 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release|ARM64.ActiveCfg = Release|ARM64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release|ARM64.Build.0 = Release|ARM64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release|x64.ActiveCfg = Release|x64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release|x64.Build.0 = Release|x64 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release|x86.ActiveCfg = Release|Win32 - {25923141-9859-4AFE-8168-0DF78322FC63}.Release|x86.Build.0 = Release|Win32 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|ARM64.Build.0 = Debug|ARM64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|x64.ActiveCfg = Debug|x64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|x64.Build.0 = Debug|x64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|x86.ActiveCfg = Debug|Win32 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|x86.Build.0 = Debug|Win32 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|ARM64.ActiveCfg = Release|ARM64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|ARM64.Build.0 = Release|ARM64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|x64.ActiveCfg = Release|x64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|x64.Build.0 = Release|x64 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|x86.ActiveCfg = Release|Win32 - {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|x86.Build.0 = Release|Win32 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|ARM64.Build.0 = Debug|ARM64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|x64.ActiveCfg = Debug|x64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|x64.Build.0 = Debug|x64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|x86.ActiveCfg = Debug|Win32 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|x86.Build.0 = Debug|Win32 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|ARM64.ActiveCfg = Release|ARM64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|ARM64.Build.0 = Release|ARM64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|x64.ActiveCfg = Release|x64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|x64.Build.0 = Release|x64 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|x86.ActiveCfg = Release|Win32 - {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|x86.Build.0 = Release|Win32 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|ARM64.Build.0 = Debug|ARM64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|x64.ActiveCfg = Debug|x64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|x64.Build.0 = Debug|x64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|x86.ActiveCfg = Debug|Win32 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|x86.Build.0 = Debug|Win32 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|ARM64.ActiveCfg = Release|ARM64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|ARM64.Build.0 = Release|ARM64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|x64.ActiveCfg = Release|x64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|x64.Build.0 = Release|x64 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|x86.ActiveCfg = Release|Win32 - {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|x86.Build.0 = Release|Win32 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|ARM64.Build.0 = Debug|ARM64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|x64.ActiveCfg = Debug|x64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|x64.Build.0 = Debug|x64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|x86.ActiveCfg = Debug|Win32 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|x86.Build.0 = Debug|Win32 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|ARM64.ActiveCfg = Release|ARM64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|ARM64.Build.0 = Release|ARM64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|x64.ActiveCfg = Release|x64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|x64.Build.0 = Release|x64 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|x86.ActiveCfg = Release|Win32 - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|x86.Build.0 = Release|Win32 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|ARM64.Build.0 = Debug|ARM64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|x64.ActiveCfg = Debug|x64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|x64.Build.0 = Debug|x64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|x86.ActiveCfg = Debug|Win32 - {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|x86.Build.0 = Debug|Win32 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release|ARM64.ActiveCfg = Release|ARM64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release|ARM64.Build.0 = Release|ARM64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release|x64.ActiveCfg = Release|x64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release|x64.Build.0 = Release|x64 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release|x86.ActiveCfg = Release|Win32 - {B19DD336-538E-4091-A559-EAA717FEC899}.Release|x86.Build.0 = Release|Win32 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|ARM64.Build.0 = Debug|ARM64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|x64.ActiveCfg = Debug|x64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|x64.Build.0 = Debug|x64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|x86.ActiveCfg = Debug|Win32 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|x86.Build.0 = Debug|Win32 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|ARM64.ActiveCfg = Release|ARM64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|ARM64.Build.0 = Release|ARM64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|x64.ActiveCfg = Release|x64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|x64.Build.0 = Release|x64 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|x86.ActiveCfg = Release|Win32 - {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|x86.Build.0 = Release|Win32 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|ARM64.Build.0 = Debug|ARM64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|x64.ActiveCfg = Debug|x64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|x64.Build.0 = Debug|x64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|x86.ActiveCfg = Debug|Win32 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|x86.Build.0 = Debug|Win32 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|ARM64.ActiveCfg = Release|ARM64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|ARM64.Build.0 = Release|ARM64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|x64.ActiveCfg = Release|x64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|x64.Build.0 = Release|x64 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|x86.ActiveCfg = Release|Win32 - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|x86.Build.0 = Release|Win32 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|ARM64.Build.0 = Debug|ARM64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|x64.ActiveCfg = Debug|x64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|x64.Build.0 = Debug|x64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|x86.ActiveCfg = Debug|Win32 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|x86.Build.0 = Debug|Win32 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|ARM64.ActiveCfg = Release|ARM64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|ARM64.Build.0 = Release|ARM64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|x64.ActiveCfg = Release|x64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|x64.Build.0 = Release|x64 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|x86.ActiveCfg = Release|Win32 - {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|x86.Build.0 = Release|Win32 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|ARM64.Build.0 = Debug|ARM64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|x64.ActiveCfg = Debug|x64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|x64.Build.0 = Debug|x64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|x86.ActiveCfg = Debug|Win32 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|x86.Build.0 = Debug|Win32 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|ARM64.ActiveCfg = Release|ARM64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|ARM64.Build.0 = Release|ARM64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|x64.ActiveCfg = Release|x64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|x64.Build.0 = Release|x64 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|x86.ActiveCfg = Release|Win32 - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|x86.Build.0 = Release|Win32 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|ARM64.Build.0 = Debug|ARM64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|x64.ActiveCfg = Debug|x64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|x64.Build.0 = Debug|x64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|x86.ActiveCfg = Debug|Win32 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|x86.Build.0 = Debug|Win32 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|ARM64.ActiveCfg = Release|ARM64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|ARM64.Build.0 = Release|ARM64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|x64.ActiveCfg = Release|x64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|x64.Build.0 = Release|x64 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|x86.ActiveCfg = Release|Win32 - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|x86.Build.0 = Release|Win32 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|ARM64.Build.0 = Debug|ARM64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|x64.ActiveCfg = Debug|x64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|x64.Build.0 = Debug|x64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|x86.ActiveCfg = Debug|Win32 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|x86.Build.0 = Debug|Win32 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|ARM64.ActiveCfg = Release|ARM64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|ARM64.Build.0 = Release|ARM64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|x64.ActiveCfg = Release|x64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|x64.Build.0 = Release|x64 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|x86.ActiveCfg = Release|Win32 - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|x86.Build.0 = Release|Win32 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|ARM64.Build.0 = Debug|ARM64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|x64.ActiveCfg = Debug|x64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|x64.Build.0 = Debug|x64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|x86.ActiveCfg = Debug|Win32 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|x86.Build.0 = Debug|Win32 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|ARM64.ActiveCfg = Release|ARM64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|ARM64.Build.0 = Release|ARM64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|x64.ActiveCfg = Release|x64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|x64.Build.0 = Release|x64 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|x86.ActiveCfg = Release|Win32 - {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|x86.Build.0 = Release|Win32 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|ARM64.Build.0 = Debug|ARM64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|x64.ActiveCfg = Debug|x64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|x64.Build.0 = Debug|x64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|x86.ActiveCfg = Debug|Win32 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|x86.Build.0 = Debug|Win32 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|ARM64.ActiveCfg = Release|ARM64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|ARM64.Build.0 = Release|ARM64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|x64.ActiveCfg = Release|x64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|x64.Build.0 = Release|x64 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|x86.ActiveCfg = Release|Win32 - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|x86.Build.0 = Release|Win32 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|ARM64.Build.0 = Debug|ARM64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|x64.ActiveCfg = Debug|x64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|x64.Build.0 = Debug|x64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|x86.ActiveCfg = Debug|Win32 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|x86.Build.0 = Debug|Win32 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|ARM64.ActiveCfg = Release|ARM64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|ARM64.Build.0 = Release|ARM64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|x64.ActiveCfg = Release|x64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|x64.Build.0 = Release|x64 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|x86.ActiveCfg = Release|Win32 - {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|x86.Build.0 = Release|Win32 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|ARM64.Build.0 = Debug|ARM64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|x64.ActiveCfg = Debug|x64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|x64.Build.0 = Debug|x64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|x86.ActiveCfg = Debug|Win32 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|x86.Build.0 = Debug|Win32 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|ARM64.ActiveCfg = Release|ARM64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|ARM64.Build.0 = Release|ARM64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|x64.ActiveCfg = Release|x64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|x64.Build.0 = Release|x64 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|x86.ActiveCfg = Release|Win32 - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|x86.Build.0 = Release|Win32 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|ARM64.Build.0 = Debug|ARM64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|x64.ActiveCfg = Debug|x64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|x64.Build.0 = Debug|x64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|x86.ActiveCfg = Debug|Win32 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|x86.Build.0 = Debug|Win32 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|ARM64.ActiveCfg = Release|ARM64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|ARM64.Build.0 = Release|ARM64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|x64.ActiveCfg = Release|x64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|x64.Build.0 = Release|x64 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|x86.ActiveCfg = Release|Win32 - {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|x86.Build.0 = Release|Win32 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|ARM64.Build.0 = Debug|ARM64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|x64.ActiveCfg = Debug|x64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|x64.Build.0 = Debug|x64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|x86.ActiveCfg = Debug|Win32 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|x86.Build.0 = Debug|Win32 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|ARM64.ActiveCfg = Release|ARM64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|ARM64.Build.0 = Release|ARM64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|x64.ActiveCfg = Release|x64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|x64.Build.0 = Release|x64 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|x86.ActiveCfg = Release|Win32 - {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|x86.Build.0 = Release|Win32 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|ARM64.Build.0 = Debug|ARM64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|x64.ActiveCfg = Debug|x64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|x64.Build.0 = Debug|x64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|x86.ActiveCfg = Debug|Win32 - {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|x86.Build.0 = Debug|Win32 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release|ARM64.ActiveCfg = Release|ARM64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release|ARM64.Build.0 = Release|ARM64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release|x64.ActiveCfg = Release|x64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release|x64.Build.0 = Release|x64 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release|x86.ActiveCfg = Release|Win32 - {D550AB93-DF31-4B76-873F-F075018352F4}.Release|x86.Build.0 = Release|Win32 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|ARM64.Build.0 = Debug|ARM64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|x64.ActiveCfg = Debug|x64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|x64.Build.0 = Debug|x64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|x86.ActiveCfg = Debug|Win32 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|x86.Build.0 = Debug|Win32 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|ARM64.ActiveCfg = Release|ARM64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|ARM64.Build.0 = Release|ARM64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|x64.ActiveCfg = Release|x64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|x64.Build.0 = Release|x64 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|x86.ActiveCfg = Release|Win32 - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|x86.Build.0 = Release|Win32 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|ARM64.Build.0 = Debug|ARM64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|x64.ActiveCfg = Debug|x64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|x64.Build.0 = Debug|x64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|x86.ActiveCfg = Debug|Win32 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|x86.Build.0 = Debug|Win32 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|ARM64.ActiveCfg = Release|ARM64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|ARM64.Build.0 = Release|ARM64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|x64.ActiveCfg = Release|x64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|x64.Build.0 = Release|x64 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|x86.ActiveCfg = Release|Win32 - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|x86.Build.0 = Release|Win32 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|ARM64.Build.0 = Debug|ARM64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|x64.ActiveCfg = Debug|x64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|x64.Build.0 = Debug|x64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|x86.ActiveCfg = Debug|Win32 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|x86.Build.0 = Debug|Win32 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|ARM64.ActiveCfg = Release|ARM64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|ARM64.Build.0 = Release|ARM64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|x64.ActiveCfg = Release|x64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|x64.Build.0 = Release|x64 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|x86.ActiveCfg = Release|Win32 - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|x86.Build.0 = Release|Win32 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|ARM64.Build.0 = Debug|ARM64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|x64.ActiveCfg = Debug|x64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|x64.Build.0 = Debug|x64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|x86.ActiveCfg = Debug|Win32 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|x86.Build.0 = Debug|Win32 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|ARM64.ActiveCfg = Release|ARM64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|ARM64.Build.0 = Release|ARM64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|x64.ActiveCfg = Release|x64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|x64.Build.0 = Release|x64 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|x86.ActiveCfg = Release|Win32 - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|x86.Build.0 = Release|Win32 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|ARM64.Build.0 = Debug|ARM64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|x64.ActiveCfg = Debug|x64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|x64.Build.0 = Debug|x64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|x86.ActiveCfg = Debug|Win32 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|x86.Build.0 = Debug|Win32 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|ARM64.ActiveCfg = Release|ARM64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|ARM64.Build.0 = Release|ARM64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|x64.ActiveCfg = Release|x64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|x64.Build.0 = Release|x64 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|x86.ActiveCfg = Release|Win32 - {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|x86.Build.0 = Release|Win32 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|ARM64.Build.0 = Debug|ARM64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|x64.ActiveCfg = Debug|x64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|x64.Build.0 = Debug|x64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|x86.ActiveCfg = Debug|Win32 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|x86.Build.0 = Debug|Win32 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|ARM64.ActiveCfg = Release|ARM64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|ARM64.Build.0 = Release|ARM64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|x64.ActiveCfg = Release|x64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|x64.Build.0 = Release|x64 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|x86.ActiveCfg = Release|Win32 - {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|x86.Build.0 = Release|Win32 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|ARM64.Build.0 = Debug|ARM64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|x64.ActiveCfg = Debug|x64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|x64.Build.0 = Debug|x64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|x86.ActiveCfg = Debug|Win32 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|x86.Build.0 = Debug|Win32 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|ARM64.ActiveCfg = Release|ARM64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|ARM64.Build.0 = Release|ARM64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|x64.ActiveCfg = Release|x64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|x64.Build.0 = Release|x64 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|x86.ActiveCfg = Release|Win32 - {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|x86.Build.0 = Release|Win32 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|ARM64.Build.0 = Debug|ARM64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|x64.ActiveCfg = Debug|x64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|x64.Build.0 = Debug|x64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|x86.ActiveCfg = Debug|Win32 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|x86.Build.0 = Debug|Win32 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|ARM64.ActiveCfg = Release|ARM64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|ARM64.Build.0 = Release|ARM64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|x64.ActiveCfg = Release|x64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|x64.Build.0 = Release|x64 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|x86.ActiveCfg = Release|Win32 - {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|x86.Build.0 = Release|Win32 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|ARM64.Build.0 = Debug|ARM64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|x64.ActiveCfg = Debug|x64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|x64.Build.0 = Debug|x64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|x86.ActiveCfg = Debug|Win32 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|x86.Build.0 = Debug|Win32 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|ARM64.ActiveCfg = Release|ARM64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|ARM64.Build.0 = Release|ARM64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|x64.ActiveCfg = Release|x64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|x64.Build.0 = Release|x64 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|x86.ActiveCfg = Release|Win32 - {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|x86.Build.0 = Release|Win32 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|ARM64.Build.0 = Debug|ARM64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|x64.ActiveCfg = Debug|x64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|x64.Build.0 = Debug|x64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|x86.ActiveCfg = Debug|Win32 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|x86.Build.0 = Debug|Win32 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|ARM64.ActiveCfg = Release|ARM64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|ARM64.Build.0 = Release|ARM64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|x64.ActiveCfg = Release|x64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|x64.Build.0 = Release|x64 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|x86.ActiveCfg = Release|Win32 - {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|x86.Build.0 = Release|Win32 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|ARM64.Build.0 = Debug|ARM64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|x64.ActiveCfg = Debug|x64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|x64.Build.0 = Debug|x64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|x86.ActiveCfg = Debug|Win32 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|x86.Build.0 = Debug|Win32 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|ARM64.ActiveCfg = Release|ARM64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|ARM64.Build.0 = Release|ARM64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|x64.ActiveCfg = Release|x64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|x64.Build.0 = Release|x64 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|x86.ActiveCfg = Release|Win32 - {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|x86.Build.0 = Release|Win32 - {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {48871156-181A-475A-BD8D-200086A09675}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {48871156-181A-475A-BD8D-200086A09675}.Debug|ARM64.Build.0 = Debug|ARM64 - {48871156-181A-475A-BD8D-200086A09675}.Debug|x64.ActiveCfg = Debug|x64 - {48871156-181A-475A-BD8D-200086A09675}.Debug|x64.Build.0 = Debug|x64 - {48871156-181A-475A-BD8D-200086A09675}.Debug|x86.ActiveCfg = Debug|Win32 - {48871156-181A-475A-BD8D-200086A09675}.Debug|x86.Build.0 = Debug|Win32 - {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {48871156-181A-475A-BD8D-200086A09675}.Release|ARM64.ActiveCfg = Release|ARM64 - {48871156-181A-475A-BD8D-200086A09675}.Release|ARM64.Build.0 = Release|ARM64 - {48871156-181A-475A-BD8D-200086A09675}.Release|x64.ActiveCfg = Release|x64 - {48871156-181A-475A-BD8D-200086A09675}.Release|x64.Build.0 = Release|x64 - {48871156-181A-475A-BD8D-200086A09675}.Release|x86.ActiveCfg = Release|Win32 - {48871156-181A-475A-BD8D-200086A09675}.Release|x86.Build.0 = Release|Win32 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|ARM64.Build.0 = Debug|ARM64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|x64.ActiveCfg = Debug|x64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|x64.Build.0 = Debug|x64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|x86.ActiveCfg = Debug|Win32 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|x86.Build.0 = Debug|Win32 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|ARM64.ActiveCfg = Release|ARM64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|ARM64.Build.0 = Release|ARM64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|x64.ActiveCfg = Release|x64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|x64.Build.0 = Release|x64 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|x86.ActiveCfg = Release|Win32 - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|x86.Build.0 = Release|Win32 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|ARM64.Build.0 = Debug|ARM64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|x64.ActiveCfg = Debug|x64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|x64.Build.0 = Debug|x64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|x86.ActiveCfg = Debug|Win32 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|x86.Build.0 = Debug|Win32 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|ARM64.ActiveCfg = Release|ARM64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|ARM64.Build.0 = Release|ARM64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|x64.ActiveCfg = Release|x64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|x64.Build.0 = Release|x64 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|x86.ActiveCfg = Release|Win32 - {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|x86.Build.0 = Release|Win32 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|ARM64.Build.0 = Debug|ARM64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|x64.ActiveCfg = Debug|x64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|x64.Build.0 = Debug|x64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|x86.ActiveCfg = Debug|Win32 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|x86.Build.0 = Debug|Win32 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|ARM64.ActiveCfg = Release|ARM64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|ARM64.Build.0 = Release|ARM64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|x64.ActiveCfg = Release|x64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|x64.Build.0 = Release|x64 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|x86.ActiveCfg = Release|Win32 - {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|x86.Build.0 = Release|Win32 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|ARM64.Build.0 = Debug|ARM64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|x64.ActiveCfg = Debug|x64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|x64.Build.0 = Debug|x64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|x86.ActiveCfg = Debug|Win32 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|x86.Build.0 = Debug|Win32 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|ARM64.ActiveCfg = Release|ARM64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|ARM64.Build.0 = Release|ARM64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|x64.ActiveCfg = Release|x64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|x64.Build.0 = Release|x64 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|x86.ActiveCfg = Release|Win32 - {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|x86.Build.0 = Release|Win32 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|ARM64.Build.0 = Debug|ARM64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|x64.ActiveCfg = Debug|x64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|x64.Build.0 = Debug|x64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|x86.ActiveCfg = Debug|Win32 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|x86.Build.0 = Debug|Win32 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|ARM64.ActiveCfg = Release|ARM64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|ARM64.Build.0 = Release|ARM64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|x64.ActiveCfg = Release|x64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|x64.Build.0 = Release|x64 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|x86.ActiveCfg = Release|Win32 - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|x86.Build.0 = Release|Win32 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|ARM64.Build.0 = Debug|ARM64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|x64.ActiveCfg = Debug|x64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|x64.Build.0 = Debug|x64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|x86.ActiveCfg = Debug|Win32 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|x86.Build.0 = Debug|Win32 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|ARM64.ActiveCfg = Release|ARM64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|ARM64.Build.0 = Release|ARM64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|x64.ActiveCfg = Release|x64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|x64.Build.0 = Release|x64 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|x86.ActiveCfg = Release|Win32 - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|x86.Build.0 = Release|Win32 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|ARM64.Build.0 = Debug|ARM64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|x64.ActiveCfg = Debug|x64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|x64.Build.0 = Debug|x64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|x86.ActiveCfg = Debug|Win32 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|x86.Build.0 = Debug|Win32 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|ARM64.ActiveCfg = Release|ARM64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|ARM64.Build.0 = Release|ARM64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|x64.ActiveCfg = Release|x64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|x64.Build.0 = Release|x64 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|x86.ActiveCfg = Release|Win32 - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|x86.Build.0 = Release|Win32 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|ARM64.Build.0 = Debug|ARM64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|x64.ActiveCfg = Debug|x64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|x64.Build.0 = Debug|x64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|x86.ActiveCfg = Debug|Win32 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|x86.Build.0 = Debug|Win32 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|ARM64.ActiveCfg = Release|ARM64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|ARM64.Build.0 = Release|ARM64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|x64.ActiveCfg = Release|x64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|x64.Build.0 = Release|x64 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|x86.ActiveCfg = Release|Win32 - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|x86.Build.0 = Release|Win32 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|ARM64.Build.0 = Debug|ARM64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|x64.ActiveCfg = Debug|x64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|x64.Build.0 = Debug|x64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|x86.ActiveCfg = Debug|Win32 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|x86.Build.0 = Debug|Win32 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|ARM64.ActiveCfg = Release|ARM64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|ARM64.Build.0 = Release|ARM64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|x64.ActiveCfg = Release|x64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|x64.Build.0 = Release|x64 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|x86.ActiveCfg = Release|Win32 - {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|x86.Build.0 = Release|Win32 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|ARM64.Build.0 = Debug|ARM64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|x64.ActiveCfg = Debug|x64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|x64.Build.0 = Debug|x64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|x86.ActiveCfg = Debug|Win32 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|x86.Build.0 = Debug|Win32 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|ARM64.ActiveCfg = Release|ARM64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|ARM64.Build.0 = Release|ARM64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|x64.ActiveCfg = Release|x64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|x64.Build.0 = Release|x64 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|x86.ActiveCfg = Release|Win32 - {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|x86.Build.0 = Release|Win32 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|ARM64.Build.0 = Debug|ARM64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|x64.ActiveCfg = Debug|x64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|x64.Build.0 = Debug|x64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|x86.ActiveCfg = Debug|Win32 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|x86.Build.0 = Debug|Win32 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|ARM64.ActiveCfg = Release|ARM64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|ARM64.Build.0 = Release|ARM64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|x64.ActiveCfg = Release|x64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|x64.Build.0 = Release|x64 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|x86.ActiveCfg = Release|Win32 - {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|x86.Build.0 = Release|Win32 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|ARM64.Build.0 = Debug|ARM64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|x64.ActiveCfg = Debug|x64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|x64.Build.0 = Debug|x64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|x86.ActiveCfg = Debug|Win32 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|x86.Build.0 = Debug|Win32 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|ARM64.ActiveCfg = Release|ARM64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|ARM64.Build.0 = Release|ARM64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|x64.ActiveCfg = Release|x64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|x64.Build.0 = Release|x64 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|x86.ActiveCfg = Release|Win32 - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|x86.Build.0 = Release|Win32 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|ARM64.Build.0 = Debug|ARM64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|x64.ActiveCfg = Debug|x64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|x64.Build.0 = Debug|x64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|x86.ActiveCfg = Debug|Win32 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|x86.Build.0 = Debug|Win32 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|ARM64.ActiveCfg = Release|ARM64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|ARM64.Build.0 = Release|ARM64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|x64.ActiveCfg = Release|x64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|x64.Build.0 = Release|x64 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|x86.ActiveCfg = Release|Win32 - {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|x86.Build.0 = Release|Win32 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|ARM64.Build.0 = Debug|ARM64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|x64.ActiveCfg = Debug|x64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|x64.Build.0 = Debug|x64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|x86.ActiveCfg = Debug|Win32 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|x86.Build.0 = Debug|Win32 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|ARM64.ActiveCfg = Release|ARM64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|ARM64.Build.0 = Release|ARM64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|x64.ActiveCfg = Release|x64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|x64.Build.0 = Release|x64 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|x86.ActiveCfg = Release|Win32 - {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|x86.Build.0 = Release|Win32 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|ARM64.Build.0 = Debug|ARM64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|x64.ActiveCfg = Debug|x64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|x64.Build.0 = Debug|x64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|x86.ActiveCfg = Debug|Win32 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|x86.Build.0 = Debug|Win32 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|ARM64.ActiveCfg = Release|ARM64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|ARM64.Build.0 = Release|ARM64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|x64.ActiveCfg = Release|x64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|x64.Build.0 = Release|x64 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|x86.ActiveCfg = Release|Win32 - {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|x86.Build.0 = Release|Win32 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|ARM64.Build.0 = Debug|ARM64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|x64.ActiveCfg = Debug|x64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|x64.Build.0 = Debug|x64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|x86.ActiveCfg = Debug|Win32 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|x86.Build.0 = Debug|Win32 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|ARM64.ActiveCfg = Release|ARM64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|ARM64.Build.0 = Release|ARM64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|x64.ActiveCfg = Release|x64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|x64.Build.0 = Release|x64 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|x86.ActiveCfg = Release|Win32 - {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|x86.Build.0 = Release|Win32 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|ARM64.Build.0 = Debug|ARM64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|x64.ActiveCfg = Debug|x64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|x64.Build.0 = Debug|x64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|x86.ActiveCfg = Debug|Win32 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|x86.Build.0 = Debug|Win32 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|ARM64.ActiveCfg = Release|ARM64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|ARM64.Build.0 = Release|ARM64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|x64.ActiveCfg = Release|x64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|x64.Build.0 = Release|x64 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|x86.ActiveCfg = Release|Win32 - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|x86.Build.0 = Release|Win32 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|ARM64.Build.0 = Debug|ARM64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|x64.ActiveCfg = Debug|x64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|x64.Build.0 = Debug|x64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|x86.ActiveCfg = Debug|Win32 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|x86.Build.0 = Debug|Win32 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|ARM64.ActiveCfg = Release|ARM64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|ARM64.Build.0 = Release|ARM64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|x64.ActiveCfg = Release|x64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|x64.Build.0 = Release|x64 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|x86.ActiveCfg = Release|Win32 - {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|x86.Build.0 = Release|Win32 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|ARM64.Build.0 = Debug|ARM64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|x64.ActiveCfg = Debug|x64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|x64.Build.0 = Debug|x64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|x86.ActiveCfg = Debug|Win32 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|x86.Build.0 = Debug|Win32 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|ARM64.ActiveCfg = Release|ARM64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|ARM64.Build.0 = Release|ARM64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|x64.ActiveCfg = Release|x64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|x64.Build.0 = Release|x64 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|x86.ActiveCfg = Release|Win32 - {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|x86.Build.0 = Release|Win32 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|ARM64.Build.0 = Debug|ARM64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|x64.ActiveCfg = Debug|x64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|x64.Build.0 = Debug|x64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|x86.ActiveCfg = Debug|Win32 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|x86.Build.0 = Debug|Win32 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|ARM64.ActiveCfg = Release|ARM64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|ARM64.Build.0 = Release|ARM64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|x64.ActiveCfg = Release|x64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|x64.Build.0 = Release|x64 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|x86.ActiveCfg = Release|Win32 - {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|x86.Build.0 = Release|Win32 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|ARM64.Build.0 = Debug|ARM64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|x64.ActiveCfg = Debug|x64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|x64.Build.0 = Debug|x64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|x86.ActiveCfg = Debug|Win32 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|x86.Build.0 = Debug|Win32 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|ARM64.ActiveCfg = Release|ARM64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|ARM64.Build.0 = Release|ARM64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x64.ActiveCfg = Release|x64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x64.Build.0 = Release|x64 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x86.ActiveCfg = Release|Win32 - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x86.Build.0 = Release|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|ARM64.Build.0 = Debug|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x64.ActiveCfg = Debug|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x64.Build.0 = Debug|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x86.ActiveCfg = Debug|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x86.Build.0 = Debug|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|ARM64.ActiveCfg = Release|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|ARM64.Build.0 = Release|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|x64.ActiveCfg = Release|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|x64.Build.0 = Release|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|x86.ActiveCfg = Release|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|x86.Build.0 = Release|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|ARM64.Build.0 = Debug|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x64.ActiveCfg = Debug|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x64.Build.0 = Debug|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x86.ActiveCfg = Debug|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x86.Build.0 = Debug|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|ARM64.ActiveCfg = Release|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|ARM64.Build.0 = Release|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x64.ActiveCfg = Release|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x64.Build.0 = Release|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x86.ActiveCfg = Release|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x86.Build.0 = Release|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|ARM64.Build.0 = Debug|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x64.ActiveCfg = Debug|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x64.Build.0 = Debug|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x86.ActiveCfg = Debug|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x86.Build.0 = Debug|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|ARM64.ActiveCfg = Release|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|ARM64.Build.0 = Release|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x64.ActiveCfg = Release|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x64.Build.0 = Release|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x86.ActiveCfg = Release|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x86.Build.0 = Release|Win32 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|ARM64.Build.0 = Debug|ARM64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|x64.ActiveCfg = Debug|x64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|x64.Build.0 = Debug|x64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|x86.ActiveCfg = Debug|Win32 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|x86.Build.0 = Debug|Win32 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|ARM64.ActiveCfg = Release|ARM64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|ARM64.Build.0 = Release|ARM64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|x64.ActiveCfg = Release|x64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|x64.Build.0 = Release|x64 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|x86.ActiveCfg = Release|Win32 - {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|x86.Build.0 = Release|Win32 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|ARM64.Build.0 = Debug|ARM64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|x64.ActiveCfg = Debug|x64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|x64.Build.0 = Debug|x64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|x86.ActiveCfg = Debug|Win32 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|x86.Build.0 = Debug|Win32 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|ARM64.ActiveCfg = Release|ARM64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|ARM64.Build.0 = Release|ARM64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|x64.ActiveCfg = Release|x64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|x64.Build.0 = Release|x64 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|x86.ActiveCfg = Release|Win32 - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|x86.Build.0 = Release|Win32 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|ARM64.Build.0 = Debug|ARM64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|x64.ActiveCfg = Debug|x64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|x64.Build.0 = Debug|x64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|x86.ActiveCfg = Debug|Win32 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|x86.Build.0 = Debug|Win32 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|ARM64.ActiveCfg = Release|ARM64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|ARM64.Build.0 = Release|ARM64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|x64.ActiveCfg = Release|x64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|x64.Build.0 = Release|x64 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|x86.ActiveCfg = Release|Win32 - {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|x86.Build.0 = Release|Win32 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|ARM64.Build.0 = Debug|ARM64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|x64.ActiveCfg = Debug|x64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|x64.Build.0 = Debug|x64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|x86.ActiveCfg = Debug|Win32 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|x86.Build.0 = Debug|Win32 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|ARM64.ActiveCfg = Release|ARM64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|ARM64.Build.0 = Release|ARM64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|x64.ActiveCfg = Release|x64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|x64.Build.0 = Release|x64 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|x86.ActiveCfg = Release|Win32 - {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|x86.Build.0 = Release|Win32 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|ARM64.Build.0 = Debug|ARM64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|x64.ActiveCfg = Debug|x64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|x64.Build.0 = Debug|x64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|x86.ActiveCfg = Debug|Win32 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|x86.Build.0 = Debug|Win32 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|ARM64.ActiveCfg = Release|ARM64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|ARM64.Build.0 = Release|ARM64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|x64.ActiveCfg = Release|x64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|x64.Build.0 = Release|x64 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|x86.ActiveCfg = Release|Win32 - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|x86.Build.0 = Release|Win32 - {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {191A5289-BA65-4638-A215-C521F0187313}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {191A5289-BA65-4638-A215-C521F0187313}.Debug|ARM64.Build.0 = Debug|ARM64 - {191A5289-BA65-4638-A215-C521F0187313}.Debug|x64.ActiveCfg = Debug|x64 - {191A5289-BA65-4638-A215-C521F0187313}.Debug|x64.Build.0 = Debug|x64 - {191A5289-BA65-4638-A215-C521F0187313}.Debug|x86.ActiveCfg = Debug|Win32 - {191A5289-BA65-4638-A215-C521F0187313}.Debug|x86.Build.0 = Debug|Win32 - {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {191A5289-BA65-4638-A215-C521F0187313}.Release|ARM64.ActiveCfg = Release|ARM64 - {191A5289-BA65-4638-A215-C521F0187313}.Release|ARM64.Build.0 = Release|ARM64 - {191A5289-BA65-4638-A215-C521F0187313}.Release|x64.ActiveCfg = Release|x64 - {191A5289-BA65-4638-A215-C521F0187313}.Release|x64.Build.0 = Release|x64 - {191A5289-BA65-4638-A215-C521F0187313}.Release|x86.ActiveCfg = Release|Win32 - {191A5289-BA65-4638-A215-C521F0187313}.Release|x86.Build.0 = Release|Win32 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|ARM64.Build.0 = Debug|ARM64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x64.ActiveCfg = Debug|x64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x64.Build.0 = Debug|x64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x86.ActiveCfg = Debug|Win32 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x86.Build.0 = Debug|Win32 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|ARM64.ActiveCfg = Release|ARM64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|ARM64.Build.0 = Release|ARM64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x64.ActiveCfg = Release|x64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x64.Build.0 = Release|x64 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x86.ActiveCfg = Release|Win32 - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x86.Build.0 = Release|Win32 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|ARM64.Build.0 = Debug|ARM64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x64.ActiveCfg = Debug|x64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x64.Build.0 = Debug|x64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x86.ActiveCfg = Debug|Win32 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x86.Build.0 = Debug|Win32 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|ARM64.ActiveCfg = Release|ARM64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|ARM64.Build.0 = Release|ARM64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x64.ActiveCfg = Release|x64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x64.Build.0 = Release|x64 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x86.ActiveCfg = Release|Win32 - {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x86.Build.0 = Release|Win32 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|ARM64.Build.0 = Debug|ARM64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x64.ActiveCfg = Debug|x64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x64.Build.0 = Debug|x64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x86.ActiveCfg = Debug|Win32 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x86.Build.0 = Debug|Win32 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|ARM64.ActiveCfg = Release|ARM64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|ARM64.Build.0 = Release|ARM64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x64.ActiveCfg = Release|x64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x64.Build.0 = Release|x64 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x86.ActiveCfg = Release|Win32 - {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x86.Build.0 = Release|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|ARM64.Build.0 = Debug|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x64.ActiveCfg = Debug|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x64.Build.0 = Debug|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x86.ActiveCfg = Debug|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x86.Build.0 = Debug|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|ARM64.ActiveCfg = Release|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|ARM64.Build.0 = Release|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x64.ActiveCfg = Release|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x64.Build.0 = Release|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x86.ActiveCfg = Release|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x86.Build.0 = Release|Win32 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|ARM64.Build.0 = Debug|ARM64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x64.ActiveCfg = Debug|x64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x64.Build.0 = Debug|x64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x86.ActiveCfg = Debug|Win32 - {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x86.Build.0 = Debug|Win32 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release|ARM64.ActiveCfg = Release|ARM64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release|ARM64.Build.0 = Release|ARM64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x64.ActiveCfg = Release|x64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x64.Build.0 = Release|x64 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x86.ActiveCfg = Release|Win32 - {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x86.Build.0 = Release|Win32 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|ARM64.Build.0 = Debug|ARM64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x64.ActiveCfg = Debug|x64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x64.Build.0 = Debug|x64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x86.ActiveCfg = Debug|Win32 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x86.Build.0 = Debug|Win32 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|ARM64.ActiveCfg = Release|ARM64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|ARM64.Build.0 = Release|ARM64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x64.ActiveCfg = Release|x64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x64.Build.0 = Release|x64 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x86.ActiveCfg = Release|Win32 - {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x86.Build.0 = Release|Win32 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|ARM64.Build.0 = Debug|ARM64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|x64.ActiveCfg = Debug|x64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|x64.Build.0 = Debug|x64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|x86.ActiveCfg = Debug|Win32 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|x86.Build.0 = Debug|Win32 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|ARM64.ActiveCfg = Release|ARM64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|ARM64.Build.0 = Release|ARM64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|x64.ActiveCfg = Release|x64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|x64.Build.0 = Release|x64 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|x86.ActiveCfg = Release|Win32 - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|x86.Build.0 = Release|Win32 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|ARM64.Build.0 = Debug|ARM64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|x64.ActiveCfg = Debug|x64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|x64.Build.0 = Debug|x64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|x86.ActiveCfg = Debug|Win32 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|x86.Build.0 = Debug|Win32 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|ARM64.ActiveCfg = Release|ARM64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|ARM64.Build.0 = Release|ARM64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|x64.ActiveCfg = Release|x64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|x64.Build.0 = Release|x64 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|x86.ActiveCfg = Release|Win32 - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|x86.Build.0 = Release|Win32 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|ARM64.Build.0 = Debug|ARM64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|x64.ActiveCfg = Debug|x64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|x64.Build.0 = Debug|x64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|x86.ActiveCfg = Debug|Win32 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|x86.Build.0 = Debug|Win32 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|ARM64.ActiveCfg = Release|ARM64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|ARM64.Build.0 = Release|ARM64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|x64.ActiveCfg = Release|x64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|x64.Build.0 = Release|x64 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|x86.ActiveCfg = Release|Win32 - {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|x86.Build.0 = Release|Win32 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|ARM64.Build.0 = Debug|ARM64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|x64.ActiveCfg = Debug|x64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|x64.Build.0 = Debug|x64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|x86.ActiveCfg = Debug|Win32 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|x86.Build.0 = Debug|Win32 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|ARM64.ActiveCfg = Release|ARM64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|ARM64.Build.0 = Release|ARM64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|x64.ActiveCfg = Release|x64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|x64.Build.0 = Release|x64 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|x86.ActiveCfg = Release|Win32 - {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|x86.Build.0 = Release|Win32 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|ARM64.Build.0 = Debug|ARM64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|x64.ActiveCfg = Debug|x64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|x64.Build.0 = Debug|x64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|x86.ActiveCfg = Debug|Win32 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|x86.Build.0 = Debug|Win32 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|ARM64.ActiveCfg = Release|ARM64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|ARM64.Build.0 = Release|ARM64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|x64.ActiveCfg = Release|x64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|x64.Build.0 = Release|x64 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|x86.ActiveCfg = Release|Win32 - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|x86.Build.0 = Release|Win32 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|ARM64.Build.0 = Debug|ARM64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|x64.ActiveCfg = Debug|x64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|x64.Build.0 = Debug|x64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|x86.ActiveCfg = Debug|Win32 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|x86.Build.0 = Debug|Win32 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|ARM64.ActiveCfg = Release|ARM64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|ARM64.Build.0 = Release|ARM64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|x64.ActiveCfg = Release|x64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|x64.Build.0 = Release|x64 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|x86.ActiveCfg = Release|Win32 - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|x86.Build.0 = Release|Win32 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|ARM64.Build.0 = Debug|ARM64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|x64.ActiveCfg = Debug|x64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|x64.Build.0 = Debug|x64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|x86.ActiveCfg = Debug|Win32 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|x86.Build.0 = Debug|Win32 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|ARM64.ActiveCfg = Release|ARM64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|ARM64.Build.0 = Release|ARM64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|x64.ActiveCfg = Release|x64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|x64.Build.0 = Release|x64 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|x86.ActiveCfg = Release|Win32 - {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|x86.Build.0 = Release|Win32 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|ARM64.Build.0 = Debug|ARM64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|x64.ActiveCfg = Debug|x64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|x64.Build.0 = Debug|x64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|x86.ActiveCfg = Debug|Win32 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|x86.Build.0 = Debug|Win32 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|ARM64.ActiveCfg = Release|ARM64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|ARM64.Build.0 = Release|ARM64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|x64.ActiveCfg = Release|x64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|x64.Build.0 = Release|x64 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|x86.ActiveCfg = Release|Win32 - {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|x86.Build.0 = Release|Win32 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|ARM64.Build.0 = Debug|ARM64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|x64.ActiveCfg = Debug|x64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|x64.Build.0 = Debug|x64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|x86.ActiveCfg = Debug|Win32 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|x86.Build.0 = Debug|Win32 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|ARM64.ActiveCfg = Release|ARM64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|ARM64.Build.0 = Release|ARM64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|x64.ActiveCfg = Release|x64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|x64.Build.0 = Release|x64 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|x86.ActiveCfg = Release|Win32 - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|x86.Build.0 = Release|Win32 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|ARM64.Build.0 = Debug|ARM64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|x64.ActiveCfg = Debug|x64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|x64.Build.0 = Debug|x64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|x86.ActiveCfg = Debug|Win32 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|x86.Build.0 = Debug|Win32 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|ARM64.ActiveCfg = Release|ARM64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|ARM64.Build.0 = Release|ARM64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|x64.ActiveCfg = Release|x64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|x64.Build.0 = Release|x64 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|x86.ActiveCfg = Release|Win32 - {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|x86.Build.0 = Release|Win32 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|ARM64.Build.0 = Debug|ARM64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|x64.ActiveCfg = Debug|x64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|x64.Build.0 = Debug|x64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|x86.ActiveCfg = Debug|Win32 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|x86.Build.0 = Debug|Win32 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|ARM64.ActiveCfg = Release|ARM64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|ARM64.Build.0 = Release|ARM64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|x64.ActiveCfg = Release|x64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|x64.Build.0 = Release|x64 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|x86.ActiveCfg = Release|Win32 - {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|x86.Build.0 = Release|Win32 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|ARM64.Build.0 = Debug|ARM64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|x64.ActiveCfg = Debug|x64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|x64.Build.0 = Debug|x64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|x86.ActiveCfg = Debug|Win32 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|x86.Build.0 = Debug|Win32 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|ARM64.ActiveCfg = Release|ARM64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|ARM64.Build.0 = Release|ARM64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|x64.ActiveCfg = Release|x64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|x64.Build.0 = Release|x64 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|x86.ActiveCfg = Release|Win32 - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|x86.Build.0 = Release|Win32 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|ARM64.Build.0 = Debug|ARM64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|x64.ActiveCfg = Debug|x64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|x64.Build.0 = Debug|x64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|x86.ActiveCfg = Debug|Win32 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|x86.Build.0 = Debug|Win32 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|ARM64.ActiveCfg = Release|ARM64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|ARM64.Build.0 = Release|ARM64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|x64.ActiveCfg = Release|x64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|x64.Build.0 = Release|x64 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|x86.ActiveCfg = Release|Win32 - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|x86.Build.0 = Release|Win32 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|ARM64.Build.0 = Debug|ARM64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|x64.ActiveCfg = Debug|x64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|x64.Build.0 = Debug|x64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|x86.ActiveCfg = Debug|Win32 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|x86.Build.0 = Debug|Win32 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|ARM64.ActiveCfg = Release|ARM64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|ARM64.Build.0 = Release|ARM64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|x64.ActiveCfg = Release|x64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|x64.Build.0 = Release|x64 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|x86.ActiveCfg = Release|Win32 - {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|x86.Build.0 = Release|Win32 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|ARM64.Build.0 = Debug|ARM64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|x64.ActiveCfg = Debug|x64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|x64.Build.0 = Debug|x64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|x86.ActiveCfg = Debug|Win32 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|x86.Build.0 = Debug|Win32 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|ARM64.ActiveCfg = Release|ARM64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|ARM64.Build.0 = Release|ARM64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|x64.ActiveCfg = Release|x64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|x64.Build.0 = Release|x64 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|x86.ActiveCfg = Release|Win32 - {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|x86.Build.0 = Release|Win32 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|ARM64.Build.0 = Debug|ARM64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|x64.ActiveCfg = Debug|x64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|x64.Build.0 = Debug|x64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|x86.ActiveCfg = Debug|Win32 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|x86.Build.0 = Debug|Win32 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|ARM64.ActiveCfg = Release|ARM64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|ARM64.Build.0 = Release|ARM64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|x64.ActiveCfg = Release|x64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|x64.Build.0 = Release|x64 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|x86.ActiveCfg = Release|Win32 - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|x86.Build.0 = Release|Win32 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|ARM64.Build.0 = Debug|ARM64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|x64.ActiveCfg = Debug|x64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|x64.Build.0 = Debug|x64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|x86.ActiveCfg = Debug|Win32 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|x86.Build.0 = Debug|Win32 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|ARM64.ActiveCfg = Release|ARM64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|ARM64.Build.0 = Release|ARM64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|x64.ActiveCfg = Release|x64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|x64.Build.0 = Release|x64 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|x86.ActiveCfg = Release|Win32 - {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|x86.Build.0 = Release|Win32 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|ARM64.Build.0 = Debug|ARM64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|x64.ActiveCfg = Debug|x64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|x64.Build.0 = Debug|x64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|x86.ActiveCfg = Debug|Win32 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|x86.Build.0 = Debug|Win32 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|ARM64.ActiveCfg = Release|ARM64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|ARM64.Build.0 = Release|ARM64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|x64.ActiveCfg = Release|x64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|x64.Build.0 = Release|x64 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|x86.ActiveCfg = Release|Win32 - {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|x86.Build.0 = Release|Win32 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|ARM64.Build.0 = Debug|ARM64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|x64.ActiveCfg = Debug|x64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|x64.Build.0 = Debug|x64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|x86.ActiveCfg = Debug|Win32 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|x86.Build.0 = Debug|Win32 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|ARM64.ActiveCfg = Release|ARM64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|ARM64.Build.0 = Release|ARM64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|x64.ActiveCfg = Release|x64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|x64.Build.0 = Release|x64 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|x86.ActiveCfg = Release|Win32 - {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|x86.Build.0 = Release|Win32 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|ARM64.Build.0 = Debug|ARM64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|x64.ActiveCfg = Debug|x64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|x64.Build.0 = Debug|x64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|x86.ActiveCfg = Debug|Win32 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|x86.Build.0 = Debug|Win32 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|ARM64.ActiveCfg = Release|ARM64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|ARM64.Build.0 = Release|ARM64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|x64.ActiveCfg = Release|x64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|x64.Build.0 = Release|x64 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|x86.ActiveCfg = Release|Win32 - {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|x86.Build.0 = Release|Win32 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|ARM64.Build.0 = Debug|ARM64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|x64.ActiveCfg = Debug|x64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|x64.Build.0 = Debug|x64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|x86.ActiveCfg = Debug|Win32 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|x86.Build.0 = Debug|Win32 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|ARM64.ActiveCfg = Release|ARM64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|ARM64.Build.0 = Release|ARM64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x64.ActiveCfg = Release|x64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x64.Build.0 = Release|x64 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x86.ActiveCfg = Release|Win32 - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x86.Build.0 = Release|Win32 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|ARM64.Build.0 = Debug|ARM64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x64.ActiveCfg = Debug|x64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x64.Build.0 = Debug|x64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x86.ActiveCfg = Debug|Win32 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x86.Build.0 = Debug|Win32 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|ARM64.ActiveCfg = Release|ARM64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|ARM64.Build.0 = Release|ARM64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x64.ActiveCfg = Release|x64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x64.Build.0 = Release|x64 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x86.ActiveCfg = Release|Win32 - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x86.Build.0 = Release|Win32 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|ARM64.Build.0 = Debug|ARM64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x64.ActiveCfg = Debug|x64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x64.Build.0 = Debug|x64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x86.ActiveCfg = Debug|Win32 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x86.Build.0 = Debug|Win32 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|ARM64.ActiveCfg = Release|ARM64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|ARM64.Build.0 = Release|ARM64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x64.ActiveCfg = Release|x64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x64.Build.0 = Release|x64 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x86.ActiveCfg = Release|Win32 - {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x86.Build.0 = Release|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|ARM64.Build.0 = Debug|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x64.ActiveCfg = Debug|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x64.Build.0 = Debug|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x86.ActiveCfg = Debug|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x86.Build.0 = Debug|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|ARM64.ActiveCfg = Release|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|ARM64.Build.0 = Release|ARM64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x64.ActiveCfg = Release|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x64.Build.0 = Release|x64 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x86.ActiveCfg = Release|Win32 - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x86.Build.0 = Release|Win32 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|ARM64.Build.0 = Debug|ARM64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x64.ActiveCfg = Debug|x64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x64.Build.0 = Debug|x64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x86.ActiveCfg = Debug|Win32 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x86.Build.0 = Debug|Win32 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|ARM64.ActiveCfg = Release|ARM64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|ARM64.Build.0 = Release|ARM64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x64.ActiveCfg = Release|x64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x64.Build.0 = Release|x64 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x86.ActiveCfg = Release|Win32 - {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x86.Build.0 = Release|Win32 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|ARM64.Build.0 = Debug|ARM64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x64.ActiveCfg = Debug|x64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x64.Build.0 = Debug|x64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x86.ActiveCfg = Debug|Win32 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x86.Build.0 = Debug|Win32 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|ARM64.ActiveCfg = Release|ARM64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|ARM64.Build.0 = Release|ARM64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x64.ActiveCfg = Release|x64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x64.Build.0 = Release|x64 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x86.ActiveCfg = Release|Win32 - {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x86.Build.0 = Release|Win32 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|ARM64.Build.0 = Debug|ARM64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x64.ActiveCfg = Debug|x64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x64.Build.0 = Debug|x64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x86.ActiveCfg = Debug|Win32 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x86.Build.0 = Debug|Win32 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|ARM64.ActiveCfg = Release|ARM64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|ARM64.Build.0 = Release|ARM64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x64.ActiveCfg = Release|x64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x64.Build.0 = Release|x64 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x86.ActiveCfg = Release|Win32 - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x86.Build.0 = Release|Win32 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|ARM64.Build.0 = Debug|ARM64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x64.ActiveCfg = Debug|x64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x64.Build.0 = Debug|x64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x86.ActiveCfg = Debug|Win32 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x86.Build.0 = Debug|Win32 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|ARM64.ActiveCfg = Release|ARM64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|ARM64.Build.0 = Release|ARM64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x64.ActiveCfg = Release|x64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x64.Build.0 = Release|x64 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x86.ActiveCfg = Release|Win32 - {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x86.Build.0 = Release|Win32 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|ARM64.Build.0 = Debug|ARM64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x64.ActiveCfg = Debug|x64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x64.Build.0 = Debug|x64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x86.ActiveCfg = Debug|Win32 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x86.Build.0 = Debug|Win32 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|ARM64.ActiveCfg = Release|ARM64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|ARM64.Build.0 = Release|ARM64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x64.ActiveCfg = Release|x64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x64.Build.0 = Release|x64 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x86.ActiveCfg = Release|Win32 - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x86.Build.0 = Release|Win32 - {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {921391C6-7626-4212-9928-BC82BC785461}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {921391C6-7626-4212-9928-BC82BC785461}.Debug|ARM64.Build.0 = Debug|ARM64 - {921391C6-7626-4212-9928-BC82BC785461}.Debug|x64.ActiveCfg = Debug|x64 - {921391C6-7626-4212-9928-BC82BC785461}.Debug|x64.Build.0 = Debug|x64 - {921391C6-7626-4212-9928-BC82BC785461}.Debug|x86.ActiveCfg = Debug|Win32 - {921391C6-7626-4212-9928-BC82BC785461}.Debug|x86.Build.0 = Debug|Win32 - {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {921391C6-7626-4212-9928-BC82BC785461}.Release|ARM64.ActiveCfg = Release|ARM64 - {921391C6-7626-4212-9928-BC82BC785461}.Release|ARM64.Build.0 = Release|ARM64 - {921391C6-7626-4212-9928-BC82BC785461}.Release|x64.ActiveCfg = Release|x64 - {921391C6-7626-4212-9928-BC82BC785461}.Release|x64.Build.0 = Release|x64 - {921391C6-7626-4212-9928-BC82BC785461}.Release|x86.ActiveCfg = Release|Win32 - {921391C6-7626-4212-9928-BC82BC785461}.Release|x86.Build.0 = Release|Win32 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|ARM64.Build.0 = Debug|ARM64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x64.ActiveCfg = Debug|x64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x64.Build.0 = Debug|x64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x86.ActiveCfg = Debug|Win32 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x86.Build.0 = Debug|Win32 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|ARM64.ActiveCfg = Release|ARM64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|ARM64.Build.0 = Release|ARM64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x64.ActiveCfg = Release|x64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x64.Build.0 = Release|x64 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x86.ActiveCfg = Release|Win32 - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x86.Build.0 = Release|Win32 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|ARM64.Build.0 = Debug|ARM64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x64.ActiveCfg = Debug|x64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x64.Build.0 = Debug|x64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x86.ActiveCfg = Debug|Win32 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x86.Build.0 = Debug|Win32 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|ARM64.ActiveCfg = Release|ARM64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|ARM64.Build.0 = Release|ARM64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x64.ActiveCfg = Release|x64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x64.Build.0 = Release|x64 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x86.ActiveCfg = Release|Win32 - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x86.Build.0 = Release|Win32 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|ARM64.Build.0 = Debug|ARM64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x64.ActiveCfg = Debug|x64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x64.Build.0 = Debug|x64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x86.ActiveCfg = Debug|Win32 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x86.Build.0 = Debug|Win32 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|ARM64.ActiveCfg = Release|ARM64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|ARM64.Build.0 = Release|ARM64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x64.ActiveCfg = Release|x64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x64.Build.0 = Release|x64 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x86.ActiveCfg = Release|Win32 - {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x86.Build.0 = Release|Win32 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|ARM64.Build.0 = Debug|ARM64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x64.ActiveCfg = Debug|x64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x64.Build.0 = Debug|x64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x86.ActiveCfg = Debug|Win32 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x86.Build.0 = Debug|Win32 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|ARM64.ActiveCfg = Release|ARM64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|ARM64.Build.0 = Release|ARM64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x64.ActiveCfg = Release|x64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x64.Build.0 = Release|x64 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x86.ActiveCfg = Release|Win32 - {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x86.Build.0 = Release|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.Build.0 = Debug|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.ActiveCfg = Debug|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.Build.0 = Debug|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.ActiveCfg = Debug|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.Build.0 = Debug|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.ActiveCfg = Release|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.Build.0 = Release|ARM64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.ActiveCfg = Release|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32 - {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|ARM64.Build.0 = Debug|ARM64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x64.ActiveCfg = Debug|x64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x64.Build.0 = Debug|x64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x86.ActiveCfg = Debug|Win32 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x86.Build.0 = Debug|Win32 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|ARM64.ActiveCfg = Release|ARM64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|ARM64.Build.0 = Release|ARM64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x64.ActiveCfg = Release|x64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x64.Build.0 = Release|x64 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x86.ActiveCfg = Release|Win32 - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x86.Build.0 = Release|Win32 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|ARM64.Build.0 = Debug|ARM64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|x64.ActiveCfg = Debug|x64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|x64.Build.0 = Debug|x64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|x86.ActiveCfg = Debug|Win32 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|x86.Build.0 = Debug|Win32 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|ARM64.ActiveCfg = Release|ARM64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|ARM64.Build.0 = Release|ARM64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|x64.ActiveCfg = Release|x64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|x64.Build.0 = Release|x64 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|x86.ActiveCfg = Release|Win32 - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|x86.Build.0 = Release|Win32 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|ARM64.Build.0 = Debug|ARM64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|x64.ActiveCfg = Debug|x64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|x64.Build.0 = Debug|x64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|x86.ActiveCfg = Debug|Win32 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|x86.Build.0 = Debug|Win32 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|ARM64.ActiveCfg = Release|ARM64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|ARM64.Build.0 = Release|ARM64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|x64.ActiveCfg = Release|x64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|x64.Build.0 = Release|x64 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|x86.ActiveCfg = Release|Win32 - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|x86.Build.0 = Release|Win32 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|ARM64.Build.0 = Debug|ARM64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|x64.ActiveCfg = Debug|x64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|x64.Build.0 = Debug|x64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|x86.ActiveCfg = Debug|Win32 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|x86.Build.0 = Debug|Win32 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|ARM64.ActiveCfg = Release|ARM64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|ARM64.Build.0 = Release|ARM64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|x64.ActiveCfg = Release|x64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|x64.Build.0 = Release|x64 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|x86.ActiveCfg = Release|Win32 - {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|x86.Build.0 = Release|Win32 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|ARM64.Build.0 = Debug|ARM64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|x64.ActiveCfg = Debug|x64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|x64.Build.0 = Debug|x64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|x86.ActiveCfg = Debug|Win32 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|x86.Build.0 = Debug|Win32 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|ARM64.ActiveCfg = Release|ARM64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|ARM64.Build.0 = Release|ARM64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|x64.ActiveCfg = Release|x64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|x64.Build.0 = Release|x64 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|x86.ActiveCfg = Release|Win32 - {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|x86.Build.0 = Release|Win32 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|ARM64.Build.0 = Debug|ARM64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|x64.ActiveCfg = Debug|x64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|x64.Build.0 = Debug|x64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|x86.ActiveCfg = Debug|Win32 - {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|x86.Build.0 = Debug|Win32 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release|ARM64.ActiveCfg = Release|ARM64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release|ARM64.Build.0 = Release|ARM64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release|x64.ActiveCfg = Release|x64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release|x64.Build.0 = Release|x64 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release|x86.ActiveCfg = Release|Win32 - {3B27F358-2679-4F38-B297-17B536F580BB}.Release|x86.Build.0 = Release|Win32 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|ARM64.Build.0 = Debug|ARM64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|x64.ActiveCfg = Debug|x64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|x64.Build.0 = Debug|x64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|x86.ActiveCfg = Debug|Win32 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|x86.Build.0 = Debug|Win32 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|ARM64.ActiveCfg = Release|ARM64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|ARM64.Build.0 = Release|ARM64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|x64.ActiveCfg = Release|x64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|x64.Build.0 = Release|x64 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|x86.ActiveCfg = Release|Win32 - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|x86.Build.0 = Release|Win32 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|ARM64.Build.0 = Debug|ARM64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|x64.ActiveCfg = Debug|x64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|x64.Build.0 = Debug|x64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|x86.ActiveCfg = Debug|Win32 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|x86.Build.0 = Debug|Win32 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|ARM64.ActiveCfg = Release|ARM64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|ARM64.Build.0 = Release|ARM64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|x64.ActiveCfg = Release|x64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|x64.Build.0 = Release|x64 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|x86.ActiveCfg = Release|Win32 - {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|x86.Build.0 = Release|Win32 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|ARM64.Build.0 = Debug|ARM64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x64.ActiveCfg = Debug|x64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x64.Build.0 = Debug|x64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x86.ActiveCfg = Debug|Win32 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x86.Build.0 = Debug|Win32 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|ARM64.ActiveCfg = Release|ARM64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|ARM64.Build.0 = Release|ARM64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x64.ActiveCfg = Release|x64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x64.Build.0 = Release|x64 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x86.ActiveCfg = Release|Win32 - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x86.Build.0 = Release|Win32 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|ARM64.Build.0 = Debug|ARM64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|x64.ActiveCfg = Debug|x64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|x64.Build.0 = Debug|x64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|x86.ActiveCfg = Debug|Win32 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|x86.Build.0 = Debug|Win32 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|ARM64.ActiveCfg = Release|ARM64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|ARM64.Build.0 = Release|ARM64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|x64.ActiveCfg = Release|x64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|x64.Build.0 = Release|x64 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|x86.ActiveCfg = Release|Win32 - {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|x86.Build.0 = Release|Win32 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|ARM64.Build.0 = Debug|ARM64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|x64.ActiveCfg = Debug|x64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|x64.Build.0 = Debug|x64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|x86.ActiveCfg = Debug|Win32 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|x86.Build.0 = Debug|Win32 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|ARM64.ActiveCfg = Release|ARM64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|ARM64.Build.0 = Release|ARM64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|x64.ActiveCfg = Release|x64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|x64.Build.0 = Release|x64 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|x86.ActiveCfg = Release|Win32 - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|x86.Build.0 = Release|Win32 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|ARM64.Build.0 = Debug|ARM64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|x64.ActiveCfg = Debug|x64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|x64.Build.0 = Debug|x64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|x86.ActiveCfg = Debug|Win32 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|x86.Build.0 = Debug|Win32 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|ARM64.ActiveCfg = Release|ARM64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|ARM64.Build.0 = Release|ARM64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|x64.ActiveCfg = Release|x64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|x64.Build.0 = Release|x64 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|x86.ActiveCfg = Release|Win32 - {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|x86.Build.0 = Release|Win32 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|ARM64.Build.0 = Debug|ARM64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|x64.ActiveCfg = Debug|x64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|x64.Build.0 = Debug|x64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|x86.ActiveCfg = Debug|Win32 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|x86.Build.0 = Debug|Win32 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|ARM64.ActiveCfg = Release|ARM64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|ARM64.Build.0 = Release|ARM64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|x64.ActiveCfg = Release|x64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|x64.Build.0 = Release|x64 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|x86.ActiveCfg = Release|Win32 - {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|x86.Build.0 = Release|Win32 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|ARM64.Build.0 = Debug|ARM64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|x64.ActiveCfg = Debug|x64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|x64.Build.0 = Debug|x64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|x86.ActiveCfg = Debug|Win32 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|x86.Build.0 = Debug|Win32 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|ARM64.ActiveCfg = Release|ARM64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|ARM64.Build.0 = Release|ARM64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|x64.ActiveCfg = Release|x64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|x64.Build.0 = Release|x64 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|x86.ActiveCfg = Release|Win32 - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|x86.Build.0 = Release|Win32 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|ARM64.Build.0 = Debug|ARM64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|x64.ActiveCfg = Debug|x64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|x64.Build.0 = Debug|x64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|x86.ActiveCfg = Debug|Win32 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|x86.Build.0 = Debug|Win32 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|ARM64.ActiveCfg = Release|ARM64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|ARM64.Build.0 = Release|ARM64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x64.ActiveCfg = Release|x64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x64.Build.0 = Release|x64 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x86.ActiveCfg = Release|Win32 - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x86.Build.0 = Release|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|ARM64.Build.0 = Debug|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x64.ActiveCfg = Debug|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x64.Build.0 = Debug|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x86.ActiveCfg = Debug|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x86.Build.0 = Debug|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|ARM64.ActiveCfg = Release|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|ARM64.Build.0 = Release|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x64.ActiveCfg = Release|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x64.Build.0 = Release|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x86.ActiveCfg = Release|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x86.Build.0 = Release|Win32 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|ARM64.Build.0 = Debug|ARM64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|x64.ActiveCfg = Debug|x64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|x64.Build.0 = Debug|x64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|x86.ActiveCfg = Debug|Win32 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|x86.Build.0 = Debug|Win32 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|ARM64.ActiveCfg = Release|ARM64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|ARM64.Build.0 = Release|ARM64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|x64.ActiveCfg = Release|x64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|x64.Build.0 = Release|x64 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|x86.ActiveCfg = Release|Win32 - {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|x86.Build.0 = Release|Win32 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|ARM64.Build.0 = Debug|ARM64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|x64.ActiveCfg = Debug|x64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|x64.Build.0 = Debug|x64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|x86.ActiveCfg = Debug|Win32 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|x86.Build.0 = Debug|Win32 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|ARM64.ActiveCfg = Release|ARM64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|ARM64.Build.0 = Release|ARM64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|x64.ActiveCfg = Release|x64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|x64.Build.0 = Release|x64 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|x86.ActiveCfg = Release|Win32 - {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|x86.Build.0 = Release|Win32 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|ARM64.Build.0 = Debug|ARM64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|x64.ActiveCfg = Debug|x64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|x64.Build.0 = Debug|x64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|x86.ActiveCfg = Debug|Win32 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|x86.Build.0 = Debug|Win32 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|ARM64.ActiveCfg = Release|ARM64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|ARM64.Build.0 = Release|ARM64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|x64.ActiveCfg = Release|x64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|x64.Build.0 = Release|x64 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|x86.ActiveCfg = Release|Win32 - {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|x86.Build.0 = Release|Win32 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|ARM64.Build.0 = Debug|ARM64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|x64.ActiveCfg = Debug|x64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|x64.Build.0 = Debug|x64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|x86.ActiveCfg = Debug|Win32 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|x86.Build.0 = Debug|Win32 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|ARM64.ActiveCfg = Release|ARM64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|ARM64.Build.0 = Release|ARM64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|x64.ActiveCfg = Release|x64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|x64.Build.0 = Release|x64 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|x86.ActiveCfg = Release|Win32 - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|x86.Build.0 = Release|Win32 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|ARM64.Build.0 = Debug|ARM64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|x64.ActiveCfg = Debug|x64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|x64.Build.0 = Debug|x64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|x86.ActiveCfg = Debug|Win32 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|x86.Build.0 = Debug|Win32 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|ARM64.ActiveCfg = Release|ARM64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|ARM64.Build.0 = Release|ARM64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|x64.ActiveCfg = Release|x64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|x64.Build.0 = Release|x64 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|x86.ActiveCfg = Release|Win32 - {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|x86.Build.0 = Release|Win32 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|ARM64.Build.0 = Debug|ARM64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|x64.ActiveCfg = Debug|x64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|x64.Build.0 = Debug|x64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|x86.ActiveCfg = Debug|Win32 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|x86.Build.0 = Debug|Win32 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|ARM64.ActiveCfg = Release|ARM64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|ARM64.Build.0 = Release|ARM64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|x64.ActiveCfg = Release|x64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|x64.Build.0 = Release|x64 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|x86.ActiveCfg = Release|Win32 - {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|x86.Build.0 = Release|Win32 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|ARM64.Build.0 = Debug|ARM64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|x64.ActiveCfg = Debug|x64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|x64.Build.0 = Debug|x64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|x86.ActiveCfg = Debug|Win32 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|x86.Build.0 = Debug|Win32 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|ARM64.ActiveCfg = Release|ARM64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|ARM64.Build.0 = Release|ARM64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|x64.ActiveCfg = Release|x64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|x64.Build.0 = Release|x64 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|x86.ActiveCfg = Release|Win32 - {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|x86.Build.0 = Release|Win32 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|ARM64.Build.0 = Debug|ARM64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|x64.ActiveCfg = Debug|x64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|x64.Build.0 = Debug|x64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|x86.ActiveCfg = Debug|Win32 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|x86.Build.0 = Debug|Win32 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|ARM64.ActiveCfg = Release|ARM64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|ARM64.Build.0 = Release|ARM64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|x64.ActiveCfg = Release|x64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|x64.Build.0 = Release|x64 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|x86.ActiveCfg = Release|Win32 - {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|x86.Build.0 = Release|Win32 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|ARM64.Build.0 = Debug|ARM64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|x64.ActiveCfg = Debug|x64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|x64.Build.0 = Debug|x64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|x86.ActiveCfg = Debug|Win32 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|x86.Build.0 = Debug|Win32 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|ARM64.ActiveCfg = Release|ARM64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|ARM64.Build.0 = Release|ARM64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|x64.ActiveCfg = Release|x64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|x64.Build.0 = Release|x64 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|x86.ActiveCfg = Release|Win32 - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|x86.Build.0 = Release|Win32 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|ARM64.Build.0 = Debug|ARM64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|x64.ActiveCfg = Debug|x64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|x64.Build.0 = Debug|x64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|x86.ActiveCfg = Debug|Win32 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|x86.Build.0 = Debug|Win32 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|ARM64.ActiveCfg = Release|ARM64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|ARM64.Build.0 = Release|ARM64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|x64.ActiveCfg = Release|x64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|x64.Build.0 = Release|x64 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|x86.ActiveCfg = Release|Win32 - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|x86.Build.0 = Release|Win32 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|ARM64.Build.0 = Debug|ARM64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|x64.ActiveCfg = Debug|x64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|x64.Build.0 = Debug|x64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|x86.ActiveCfg = Debug|Win32 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|x86.Build.0 = Debug|Win32 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|ARM64.ActiveCfg = Release|ARM64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|ARM64.Build.0 = Release|ARM64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|x64.ActiveCfg = Release|x64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|x64.Build.0 = Release|x64 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|x86.ActiveCfg = Release|Win32 - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|x86.Build.0 = Release|Win32 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|ARM64.Build.0 = Debug|ARM64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|x64.ActiveCfg = Debug|x64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|x64.Build.0 = Debug|x64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|x86.ActiveCfg = Debug|Win32 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|x86.Build.0 = Debug|Win32 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|ARM64.ActiveCfg = Release|ARM64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|ARM64.Build.0 = Release|ARM64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|x64.ActiveCfg = Release|x64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|x64.Build.0 = Release|x64 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|x86.ActiveCfg = Release|Win32 - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|x86.Build.0 = Release|Win32 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|ARM64.Build.0 = Debug|ARM64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|x64.ActiveCfg = Debug|x64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|x64.Build.0 = Debug|x64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|x86.ActiveCfg = Debug|Win32 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|x86.Build.0 = Debug|Win32 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|ARM64.ActiveCfg = Release|ARM64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|ARM64.Build.0 = Release|ARM64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|x64.ActiveCfg = Release|x64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|x64.Build.0 = Release|x64 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|x86.ActiveCfg = Release|Win32 - {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|x86.Build.0 = Release|Win32 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|ARM64.Build.0 = Debug|ARM64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|x64.ActiveCfg = Debug|x64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|x64.Build.0 = Debug|x64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|x86.ActiveCfg = Debug|Win32 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|x86.Build.0 = Debug|Win32 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|ARM64.ActiveCfg = Release|ARM64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|ARM64.Build.0 = Release|ARM64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|x64.ActiveCfg = Release|x64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|x64.Build.0 = Release|x64 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|x86.ActiveCfg = Release|Win32 - {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|x86.Build.0 = Release|Win32 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|ARM64.Build.0 = Debug|ARM64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|x64.ActiveCfg = Debug|x64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|x64.Build.0 = Debug|x64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|x86.ActiveCfg = Debug|Win32 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|x86.Build.0 = Debug|Win32 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|ARM64.ActiveCfg = Release|ARM64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|ARM64.Build.0 = Release|ARM64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|x64.ActiveCfg = Release|x64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|x64.Build.0 = Release|x64 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|x86.ActiveCfg = Release|Win32 - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|x86.Build.0 = Release|Win32 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|ARM64.Build.0 = Debug|ARM64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|x64.ActiveCfg = Debug|x64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|x64.Build.0 = Debug|x64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|x86.ActiveCfg = Debug|Win32 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|x86.Build.0 = Debug|Win32 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|ARM64.ActiveCfg = Release|ARM64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|ARM64.Build.0 = Release|ARM64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|x64.ActiveCfg = Release|x64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|x64.Build.0 = Release|x64 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|x86.ActiveCfg = Release|Win32 - {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|x86.Build.0 = Release|Win32 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|ARM64.Build.0 = Debug|ARM64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|x64.ActiveCfg = Debug|x64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|x64.Build.0 = Debug|x64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|x86.ActiveCfg = Debug|Win32 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|x86.Build.0 = Debug|Win32 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|ARM64.ActiveCfg = Release|ARM64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|ARM64.Build.0 = Release|ARM64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|x64.ActiveCfg = Release|x64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|x64.Build.0 = Release|x64 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|x86.ActiveCfg = Release|Win32 - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|x86.Build.0 = Release|Win32 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|ARM64.Build.0 = Debug|ARM64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|x64.ActiveCfg = Debug|x64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|x64.Build.0 = Debug|x64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|x86.ActiveCfg = Debug|Win32 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|x86.Build.0 = Debug|Win32 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|ARM64.ActiveCfg = Release|ARM64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|ARM64.Build.0 = Release|ARM64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|x64.ActiveCfg = Release|x64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|x64.Build.0 = Release|x64 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|x86.ActiveCfg = Release|Win32 - {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|x86.Build.0 = Release|Win32 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|ARM64.Build.0 = Debug|ARM64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|x64.ActiveCfg = Debug|x64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|x64.Build.0 = Debug|x64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|x86.ActiveCfg = Debug|Win32 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|x86.Build.0 = Debug|Win32 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|ARM64.ActiveCfg = Release|ARM64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|ARM64.Build.0 = Release|ARM64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|x64.ActiveCfg = Release|x64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|x64.Build.0 = Release|x64 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|x86.ActiveCfg = Release|Win32 - {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|x86.Build.0 = Release|Win32 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|ARM64.Build.0 = Debug|ARM64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|x64.ActiveCfg = Debug|x64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|x64.Build.0 = Debug|x64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|x86.ActiveCfg = Debug|Win32 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|x86.Build.0 = Debug|Win32 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|ARM64.ActiveCfg = Release|ARM64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|ARM64.Build.0 = Release|ARM64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|x64.ActiveCfg = Release|x64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|x64.Build.0 = Release|x64 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|x86.ActiveCfg = Release|Win32 - {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|x86.Build.0 = Release|Win32 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|ARM64.Build.0 = Debug|ARM64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|x64.ActiveCfg = Debug|x64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|x64.Build.0 = Debug|x64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|x86.ActiveCfg = Debug|Win32 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|x86.Build.0 = Debug|Win32 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|ARM64.ActiveCfg = Release|ARM64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|ARM64.Build.0 = Release|ARM64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|x64.ActiveCfg = Release|x64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|x64.Build.0 = Release|x64 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|x86.ActiveCfg = Release|Win32 - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|x86.Build.0 = Release|Win32 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|ARM64.Build.0 = Debug|ARM64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|x64.ActiveCfg = Debug|x64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|x64.Build.0 = Debug|x64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|x86.ActiveCfg = Debug|Win32 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|x86.Build.0 = Debug|Win32 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|ARM64.ActiveCfg = Release|ARM64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|ARM64.Build.0 = Release|ARM64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|x64.ActiveCfg = Release|x64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|x64.Build.0 = Release|x64 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|x86.ActiveCfg = Release|Win32 - {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|x86.Build.0 = Release|Win32 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|ARM64.Build.0 = Debug|ARM64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|x64.ActiveCfg = Debug|x64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|x64.Build.0 = Debug|x64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|x86.ActiveCfg = Debug|Win32 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|x86.Build.0 = Debug|Win32 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|ARM64.ActiveCfg = Release|ARM64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|ARM64.Build.0 = Release|ARM64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|x64.ActiveCfg = Release|x64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|x64.Build.0 = Release|x64 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|x86.ActiveCfg = Release|Win32 - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|x86.Build.0 = Release|Win32 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|ARM64.Build.0 = Debug|ARM64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|x64.ActiveCfg = Debug|x64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|x64.Build.0 = Debug|x64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|x86.ActiveCfg = Debug|Win32 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|x86.Build.0 = Debug|Win32 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|ARM64.ActiveCfg = Release|ARM64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|ARM64.Build.0 = Release|ARM64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|x64.ActiveCfg = Release|x64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|x64.Build.0 = Release|x64 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|x86.ActiveCfg = Release|Win32 - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|x86.Build.0 = Release|Win32 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|ARM64.Build.0 = Debug|ARM64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|x64.ActiveCfg = Debug|x64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|x64.Build.0 = Debug|x64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|x86.ActiveCfg = Debug|Win32 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|x86.Build.0 = Debug|Win32 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|ARM64.ActiveCfg = Release|ARM64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|ARM64.Build.0 = Release|ARM64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|x64.ActiveCfg = Release|x64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|x64.Build.0 = Release|x64 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|x86.ActiveCfg = Release|Win32 - {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|x86.Build.0 = Release|Win32 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|ARM64.Build.0 = Debug|ARM64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|x64.ActiveCfg = Debug|x64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|x64.Build.0 = Debug|x64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|x86.ActiveCfg = Debug|Win32 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|x86.Build.0 = Debug|Win32 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|ARM64.ActiveCfg = Release|ARM64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|ARM64.Build.0 = Release|ARM64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|x64.ActiveCfg = Release|x64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|x64.Build.0 = Release|x64 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|x86.ActiveCfg = Release|Win32 - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|x86.Build.0 = Release|Win32 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|ARM64.Build.0 = Debug|ARM64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|x64.ActiveCfg = Debug|x64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|x64.Build.0 = Debug|x64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|x86.ActiveCfg = Debug|Win32 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|x86.Build.0 = Debug|Win32 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|ARM64.ActiveCfg = Release|ARM64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|ARM64.Build.0 = Release|ARM64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|x64.ActiveCfg = Release|x64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|x64.Build.0 = Release|x64 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|x86.ActiveCfg = Release|Win32 - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|x86.Build.0 = Release|Win32 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|ARM64.Build.0 = Debug|ARM64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|x64.ActiveCfg = Debug|x64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|x64.Build.0 = Debug|x64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|x86.ActiveCfg = Debug|Win32 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|x86.Build.0 = Debug|Win32 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|ARM64.ActiveCfg = Release|ARM64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|ARM64.Build.0 = Release|ARM64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x64.ActiveCfg = Release|x64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x64.Build.0 = Release|x64 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x86.ActiveCfg = Release|Win32 - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x86.Build.0 = Release|Win32 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|ARM64.Build.0 = Debug|ARM64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|x64.ActiveCfg = Debug|x64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|x64.Build.0 = Debug|x64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|x86.ActiveCfg = Debug|Win32 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|x86.Build.0 = Debug|Win32 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|ARM64.ActiveCfg = Release|ARM64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|ARM64.Build.0 = Release|ARM64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|x64.ActiveCfg = Release|x64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|x64.Build.0 = Release|x64 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|x86.ActiveCfg = Release|Win32 - {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|x86.Build.0 = Release|Win32 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|ARM64.Build.0 = Debug|ARM64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|x64.ActiveCfg = Debug|x64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|x64.Build.0 = Debug|x64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|x86.ActiveCfg = Debug|Win32 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|x86.Build.0 = Debug|Win32 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|ARM64.ActiveCfg = Release|ARM64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|ARM64.Build.0 = Release|ARM64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|x64.ActiveCfg = Release|x64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|x64.Build.0 = Release|x64 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|x86.ActiveCfg = Release|Win32 - {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|x86.Build.0 = Release|Win32 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|ARM64.Build.0 = Debug|ARM64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|x64.ActiveCfg = Debug|x64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|x64.Build.0 = Debug|x64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|x86.ActiveCfg = Debug|Win32 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|x86.Build.0 = Debug|Win32 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|ARM64.ActiveCfg = Release|ARM64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|ARM64.Build.0 = Release|ARM64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|x64.ActiveCfg = Release|x64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|x64.Build.0 = Release|x64 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|x86.ActiveCfg = Release|Win32 - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|x86.Build.0 = Release|Win32 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|ARM64.Build.0 = Debug|ARM64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|x64.ActiveCfg = Debug|x64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|x64.Build.0 = Debug|x64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|x86.ActiveCfg = Debug|Win32 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|x86.Build.0 = Debug|Win32 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|ARM64.ActiveCfg = Release|ARM64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|ARM64.Build.0 = Release|ARM64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|x64.ActiveCfg = Release|x64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|x64.Build.0 = Release|x64 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|x86.ActiveCfg = Release|Win32 - {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|x86.Build.0 = Release|Win32 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|ARM64.Build.0 = Debug|ARM64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|x64.ActiveCfg = Debug|x64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|x64.Build.0 = Debug|x64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|x86.ActiveCfg = Debug|Win32 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|x86.Build.0 = Debug|Win32 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|ARM64.ActiveCfg = Release|ARM64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|ARM64.Build.0 = Release|ARM64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|x64.ActiveCfg = Release|x64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|x64.Build.0 = Release|x64 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|x86.ActiveCfg = Release|Win32 - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|x86.Build.0 = Release|Win32 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|ARM64.Build.0 = Debug|ARM64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|x64.ActiveCfg = Debug|x64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|x64.Build.0 = Debug|x64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|x86.ActiveCfg = Debug|Win32 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|x86.Build.0 = Debug|Win32 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|ARM64.ActiveCfg = Release|ARM64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|ARM64.Build.0 = Release|ARM64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|x64.ActiveCfg = Release|x64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|x64.Build.0 = Release|x64 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|x86.ActiveCfg = Release|Win32 - {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|x86.Build.0 = Release|Win32 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|ARM64.Build.0 = Debug|ARM64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|x64.ActiveCfg = Debug|x64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|x64.Build.0 = Debug|x64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|x86.ActiveCfg = Debug|Win32 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|x86.Build.0 = Debug|Win32 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|ARM64.ActiveCfg = Release|ARM64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|ARM64.Build.0 = Release|ARM64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|x64.ActiveCfg = Release|x64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|x64.Build.0 = Release|x64 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|x86.ActiveCfg = Release|Win32 - {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|x86.Build.0 = Release|Win32 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|ARM64.Build.0 = Debug|ARM64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|x64.ActiveCfg = Debug|x64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|x64.Build.0 = Debug|x64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|x86.ActiveCfg = Debug|Win32 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|x86.Build.0 = Debug|Win32 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|ARM64.ActiveCfg = Release|ARM64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|ARM64.Build.0 = Release|ARM64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x64.ActiveCfg = Release|x64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x64.Build.0 = Release|x64 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x86.ActiveCfg = Release|Win32 - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x86.Build.0 = Release|Win32 - EndGlobalSection - GlobalSection(SolutionProperties) = preSolution - HideSolutionNode = FALSE - EndGlobalSection - GlobalSection(NestedProjects) = preSolution - {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {278D8859-20B1-428F-8448-064F46E1F021} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {CC132A4D-D081-4C26-BFB9-AB11984054F8} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {E9D708A5-9C1F-4B84-A795-C5F191801762} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {0981CA98-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {103B292B-049B-4B15-85A1-9F902840DB2C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {0C2D2F82-AE67-400C-B19C-8C9B957B132A} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {E6784F91-4E4E-4956-A079-73FAB1AC7BE6} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {93A1F656-0D29-4C5E-B140-11F23FF5D6AB} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {F81C5819-85B6-4D2E-B6DC-104A7634461B} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {66CC5B13-881A-412F-8C51-746622A91C5A} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {557138B0-7BE2-4392-B2E2-B45734031A62} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {9EED87BB-527F-4D05-9384-6D16CFD627A8} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {6D1CA2F1-7FCA-4249-9220-075C2DF4F965} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {946A1700-C7AA-46F0-AEF2-67C98B5722AC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {FD193822-3D5C-4161-A147-884C2ABDE483} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {20AD0AC9-9159-4744-99CC-6AC5779D6B87} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {0199E349-0701-40BC-8A7F-06A54FFA3E7C} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {BCB71111-8505-4B35-8CEF-EC6115DC9D4D} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {8F19E3DA-8929-4000-87B5-3CA6929636CC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {51A00565-5787-4911-9CC0-28403AA4909D} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {92B64AE7-D773-4F05-89F1-CE59BBF4F053} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {A643BB06-735D-47F3-BFE7-B6D3C36F7097} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {B332DCA8-3599-4A99-917A-82261BDC27AC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {59089B0C-AAB4-4532-B294-44DEAE7178B7} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {C298876B-6C12-4EA4-903B-33450BCD9884} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {83F586FA-C801-4979-ACCA-006BD628CC88} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {FF2970AE-E2E9-405F-B321-D523A1BD44A0} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {79417CE2-FEEB-42F0-BC53-62D5267B19B1} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {AFDDE100-2D36-4749-817D-12E54C56312F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {B7812167-50FB-4934-996F-DF6FE4CBBFDF} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {39DB56C7-05F8-492C-A8D4-F19E40FECB59} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {82F3D34B-8DB2-4C6A-98B1-132245DD9D99} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {14BA7F98-02CC-4648-9236-676BFF9458AF} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {0859A973-E4FE-4688-8D16-0253163FDE24} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {F3412853-2B6A-4334-8CF2-B796CDAE0850} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {D03F2C82-9553-4AFA-8F49-9234009122B6} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {A53CCF42-A972-478F-9336-0F618B3EC06A} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {870723DD-945A-4136-B65B-4AF3BF85369C} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {EA6488AD-445B-4835-87FB-EBC9E2EDAF97} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {3AD868E6-8355-4F29-B5ED-7DE94AD786E7} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {2B78CF0A-5403-45E2-99BD-493F1679BCDB} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {0AB968E0-E993-45CE-8875-7453C96DF583} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {25923141-9859-4AFE-8168-0DF78322FC63} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {7E855020-7FA4-482D-B510-2E709354FE8B} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {9782E0C8-2BD3-4F67-B420-21CF19CA2435} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {9F4135E3-9814-452C-9B35-0EFBCD792B49} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {C45343E6-DAB6-4F3A-A00A-8BED71A098BE} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {B19DD336-538E-4091-A559-EAA717FEC899} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {0BF60202-43F7-48E9-8717-D31E56FA5BE0} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {6D75CD88-1A03-4955-B8C7-ACFC3742154F} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {8DD0EB7E-668E-452D-91D7-906C64A9C8AC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {25BCB876-B60A-499B-9046-E9801CFD7780} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {56FB0A45-145F-4EAE-B2C8-E5833E682D8F} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {2BB0C1D4-9298-45AC-B244-67A99769A292} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {81064BCE-EEC1-43B0-9912-F05F2B54B11A} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {31B41997-3890-45E3-93FE-C57B363E9C0D} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {D550AB93-DF31-4B76-873F-F075018352F4} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {F90FCDC5-EE14-4B89-96DB-4392E28F34AF} = {278D8859-20B1-428F-8448-064F46E1F021} - {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79} = {278D8859-20B1-428F-8448-064F46E1F021} - {56E68E37-B3FC-4799-91AF-0CA10B6D55A5} = {278D8859-20B1-428F-8448-064F46E1F021} - {03E7018C-44A2-4C46-9CE7-F2A135A2692B} = {278D8859-20B1-428F-8448-064F46E1F021} - {F3F6FE4D-9D9E-451A-B0BA-81456104B672} = {278D8859-20B1-428F-8448-064F46E1F021} - {C27794B5-1293-4EA7-BC0E-0F18E6325539} = {278D8859-20B1-428F-8448-064F46E1F021} - {02F41059-12A2-4A96-8D77-07EFE4B108FD} = {278D8859-20B1-428F-8448-064F46E1F021} - {B774E0B9-9514-4E88-975F-4EB6C3B8D519} = {278D8859-20B1-428F-8448-064F46E1F021} - {D91367C2-2189-4859-A7FE-D2CAB84FA15C} = {278D8859-20B1-428F-8448-064F46E1F021} - {33459B4E-1839-4856-BF6B-22480D11FE31} = {278D8859-20B1-428F-8448-064F46E1F021} - {48871156-181A-475A-BD8D-200086A09675} = {278D8859-20B1-428F-8448-064F46E1F021} - {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1} = {278D8859-20B1-428F-8448-064F46E1F021} - {1C49E35A-2838-49D9-9D5F-4B8134960EF6} = {278D8859-20B1-428F-8448-064F46E1F021} - {F91142E2-A999-47F0-9E74-38C1E2930EBE} = {278D8859-20B1-428F-8448-064F46E1F021} - {1EDD4BCF-345C-4065-8CBD-7285224293C3} = {278D8859-20B1-428F-8448-064F46E1F021} - {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {CF3755C4-937D-4ABF-B7B3-95140808717F} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {D34939FE-8873-4C53-8D6C-74DED78EA3C4} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {D408A730-363A-4ABF-BCEF-5D63DCC66042} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {52FB7463-C128-42AF-A02F-78F48473EA9A} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {7381D91E-5C72-48F0-AAB4-95C9B10D7484} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {D36EC43E-B31F-4CF4-8285-93A7A9D90189} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {274C0319-7E1E-4188-936B-8DF3331230B3} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {600C3D4F-0670-4DB4-B30F-520A729053B5} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {11F33A39-74B7-4018-B5F9-CC285A673A8F} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {A6F5E35E-B4A7-41B3-853A-75558E6E0715} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {291B4975-8EFF-4C7C-8AF3-44A77B8491B8} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {FDE6080B-E203-4066-910D-AD0302566008} = {E9D708A5-9C1F-4B84-A795-C5F191801762} - {E1B6D565-9D7C-46B7-9202-ECF54974DE50} = {E9D708A5-9C1F-4B84-A795-C5F191801762} - {C8765523-58F8-4C8E-9914-693396F6F0FF} = {E9D708A5-9C1F-4B84-A795-C5F191801762} - {2F1B955B-275E-4D8E-8864-06FEC44D7912} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {F2DB2E59-76BF-4D81-859A-AFC289C046C0} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {3FE7E9B6-49AC-4246-A789-28DB4644567B} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {191A5289-BA65-4638-A215-C521F0187313} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {8B1AF423-00F1-4924-AC54-F77D402D2AC9} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {658A1B85-554E-4A5D-973A-FFE592CDD5F2} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {07CA51AD-72AE-46A2-AAED-DC3E3F807976} = {E9D708A5-9C1F-4B84-A795-C5F191801762} - {27B110CC-43C0-400A-89D9-245E681647D7} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {1DE84812-E143-4C4B-A61D-9267AAD55401} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {4A87569C-4BD3-4113-B4B9-573D65B3D3F8} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {769FF0C1-4424-4FA3-BC44-D7A7DA312A06} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {6D9E00D8-2893-45E4-9363-3F7F61D416BD} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {70B35F59-AFC2-4D8F-8833-5314D2047A81} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {3755E9F4-CB48-4EC3-B561-3B85964EBDEF} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {F81C5819-85B4-4D2E-B6DC-104A7634461B} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {CC62F7DB-D089-4677-8575-CAB7A7815C43} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {A4B0D971-3CD6-41C9-8AB2-055D25A33373} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {15CDD310-6980-42A6-8082-3A6B7730D13F} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {71DB4284-5B1C-4E86-9AF5-B91542D44A6F} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {88DE5AD6-0074-4A5A-BE22-C840153E35D5} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {A546E75A-5242-46E6-9A9E-6C91554EAB84} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {DF25E545-00FF-4E64-844C-7DF98991F901} = {278D8859-20B1-428F-8448-064F46E1F021} - {703BE7BA-5B99-4F70-806D-3A259F6A991E} = {278D8859-20B1-428F-8448-064F46E1F021} - {FAFEE2F9-24B0-4AF1-B512-433E9590033F} = {278D8859-20B1-428F-8448-064F46E1F021} - {8245DAD9-D402-4D5C-8F45-32229CD3B263} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {3A7FE53D-35F7-49DC-9C9A-A5204A53523F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {CCA63A76-D9FC-4130-9F67-4D97F9770D53} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {3384C257-3CFE-4A8F-838C-19DAC5C955DA} = {278D8859-20B1-428F-8448-064F46E1F021} - {2B140378-125F-4DE9-AC37-2CC1B73D7254} = {278D8859-20B1-428F-8448-064F46E1F021} - {F4C55B99-E1C5-496A-8AC2-40188C38F4F6} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {2AA91EED-2D32-4B09-84A3-53D41EED1005} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {EC0910F6-8D66-4509-BF57-A5EE7AE9485F} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {921391C6-7626-4212-9928-BC82BC785461} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {C54703BF-D68A-480D-BE27-49B62E45D582} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {9CD8BCAD-F212-4BCC-BA98-899743CE3279} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {0981CA28-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {6777EC3C-077C-42FC-B4AD-B799CE55CCE4} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {A61DAD9C-271C-4E95-81AA-DB4CD58564D4} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {49C67F03-1A56-4F96-B278-39B66EC93678} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {D496308F-3C3C-40B3-A3ED-EA327D244B3E} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {3B27F358-2679-4F38-B297-17B536F580BB} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {718FCBD0-591D-448C-B7D5-9F1CA8544E7B} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {19CA0070-B4B2-4394-90B7-D0C259AA35BA} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {9DB1F875-6E65-4195-B23F-ED8095C0B99C} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {8E132D5A-2C00-48D0-8747-97E41356F26F} = {278D8859-20B1-428F-8448-064F46E1F021} - {A4662163-83E7-4309-8CAA-B0BF13655FE6} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {5F4B766F-DD52-4B53-B6C3-BC7611E17F20} = {278D8859-20B1-428F-8448-064F46E1F021} - {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC} = {E9D708A5-9C1F-4B84-A795-C5F191801762} - {0C442799-B09C-4CD1-9538-711B6E85E9BF} = {278D8859-20B1-428F-8448-064F46E1F021} - {DFB40A10-F8B7-412A-BCC3-5EE49294D816} = {278D8859-20B1-428F-8448-064F46E1F021} - {BB58A5FB-1A35-4471-86D0-A5189EC541B3} = {278D8859-20B1-428F-8448-064F46E1F021} - {61997220-5383-4AE5-ABD4-5F45AE1B0F2A} = {278D8859-20B1-428F-8448-064F46E1F021} - {7467E9AE-844F-444D-8A3F-17397544BA21} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {497FDF54-9762-4048-A833-61CC3980A0FB} = {278D8859-20B1-428F-8448-064F46E1F021} - {29B00F47-BE91-4A1F-B87D-B1302F038316} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {124935CC-73BB-489E-92E8-4F922A85DB5D} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F} = {278D8859-20B1-428F-8448-064F46E1F021} - {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2} = {278D8859-20B1-428F-8448-064F46E1F021} - {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91} = {278D8859-20B1-428F-8448-064F46E1F021} - {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {9DE2FC01-A839-4F89-8319-9071D4C54821} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {2F578155-D51F-4C03-AB7F-5C5122CA46CC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {1C829D1A-892C-451C-AF0B-AC65C85F5CC6} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {84DE22BB-C25F-425C-A7FE-0120CF107B83} = {278D8859-20B1-428F-8448-064F46E1F021} - {98152EDD-7E28-4FA3-89D8-B636ED5D5F65} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {B7FDD40F-DDA4-468E-9C40-EEB175964A26} = {278D8859-20B1-428F-8448-064F46E1F021} - {028F0967-B253-45DA-B1C4-FACCE45D0D8D} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {666346D7-C84B-498D-AE17-53B20C62DB1A} = {278D8859-20B1-428F-8448-064F46E1F021} - {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {6C897101-BE52-4387-8AA2-062123A76BA1} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} - {30011884-25EE-42C9-BB15-888CAFB1AA6E} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {32FE2658-1D70-442E-8672-0AC5C6F0BD7B} = {278D8859-20B1-428F-8448-064F46E1F021} - {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F} = {278D8859-20B1-428F-8448-064F46E1F021} - {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {0653AFAF-5578-4C02-AF29-0C873E7634AE} = {278D8859-20B1-428F-8448-064F46E1F021} - {071E64F3-1396-4A97-97CA-98CAC059B168} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC} = {278D8859-20B1-428F-8448-064F46E1F021} - {1F4722E7-F78E-413F-A106-D3490211EA57} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} - {0A0FC982-6E31-401F-BA77-3C5E8AB02C68} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {DC163251-16C3-4B72-B965-ACDBA0F02BD1} = {278D8859-20B1-428F-8448-064F46E1F021} - {D35D2FDA-B53F-4F70-81CA-24D95812B89C} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - EndGlobalSection - GlobalSection(ExtensibilityGlobals) = postSolution - SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} - EndGlobalSection -EndGlobal + +Microsoft Visual Studio Solution File, Format Version 12.00 +# Visual Studio Version 17 +VisualStudioVersion = 17.0.31912.275 +MinimumVisualStudioVersion = 10.0.40219.1 +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "raylib", "raylib\raylib.vcxproj", "{E89D61AC-55DE-4482-AFD4-DF7242EBC859}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "examples", "examples", "{8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "core", "core", "{6C82BAAE-BDDF-457D-8FA8-7E2490B07035}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shapes", "shapes", "{278D8859-20B1-428F-8448-064F46E1F021}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "textures", "textures", "{DA049009-21FF-4AC0-84E4-830DD1BCD0CE}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "text", "text", "{8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "models", "models", "{AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shaders", "shaders", "{5317807F-61D4-4E0F-B6DC-2D9F12621ED9}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "audio", "audio", "{CC132A4D-D081-4C26-BFB9-AB11984054F8}" +EndProject +Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "others", "others", "{E9D708A5-9C1F-4B84-A795-C5F191801762}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_window", "examples\core_basic_window.vcxproj", "{0981CA98-E4A5-4DF1-987F-A41D09131EFC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_animation", "examples\textures_sprite_animation.vcxproj", "{C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_srcrec_dstrec", "examples\textures_srcrec_dstrec.vcxproj", "{103B292B-049B-4B15-85A1-9F902840DB2C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_drawing", "examples\textures_image_drawing.vcxproj", "{0C2D2F82-AE67-400C-B19C-8C9B957B132A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_module_playing", "examples\audio_module_playing.vcxproj", "{E6784F91-4E4E-4956-A079-73FAB1AC7BE6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_music_stream", "examples\audio_music_stream.vcxproj", "{BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_raw_stream", "examples\audio_raw_stream.vcxproj", "{93A1F656-0D29-4C5E-B140-11F23FF5D6AB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_loading", "examples\audio_sound_loading.vcxproj", "{F81C5819-85B6-4D2E-B6DC-104A7634461B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera", "examples\core_2d_camera.vcxproj", "{66CC5B13-881A-412F-8C51-746622A91C5A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera_platformer", "examples\core_2d_camera_platformer.vcxproj", "{CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_first_person", "examples\core_3d_camera_first_person.vcxproj", "{557138B0-7BE2-4392-B2E2-B45734031A62}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_free", "examples\core_3d_camera_free.vcxproj", "{9EED87BB-527F-4D05-9384-6D16CFD627A8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_mode", "examples\core_3d_camera_mode.vcxproj", "{6D1CA2F1-7FCA-4249-9220-075C2DF4F965}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_split_screen", "examples\core_3d_camera_split_screen.vcxproj", "{946A1700-C7AA-46F0-AEF2-67C98B5722AC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_picking", "examples\core_3d_picking.vcxproj", "{FD193822-3D5C-4161-A147-884C2ABDE483}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_custom_logging", "examples\core_custom_logging.vcxproj", "{20AD0AC9-9159-4744-99CC-6AC5779D6B87}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_drop_files", "examples\core_drop_files.vcxproj", "{0199E349-0701-40BC-8A7F-06A54FFA3E7C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_highdpi_demo", "examples\core_highdpi_demo.vcxproj", "{BCB71111-8505-4B35-8CEF-EC6115DC9D4D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_gamepad", "examples\core_input_gamepad.vcxproj", "{8F19E3DA-8929-4000-87B5-3CA6929636CC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_gestures", "examples\core_input_gestures.vcxproj", "{51A00565-5787-4911-9CC0-28403AA4909D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_keys", "examples\core_input_keys.vcxproj", "{92B64AE7-D773-4F05-89F1-CE59BBF4F053}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_mouse", "examples\core_input_mouse.vcxproj", "{A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_multitouch", "examples\core_input_multitouch.vcxproj", "{A643BB06-735D-47F3-BFE7-B6D3C36F7097}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_random_sequence", "examples\core_random_sequence.vcxproj", "{6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_random_values", "examples\core_random_values.vcxproj", "{B332DCA8-3599-4A99-917A-82261BDC27AC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_scissor_test", "examples\core_scissor_test.vcxproj", "{59089B0C-AAB4-4532-B294-44DEAE7178B7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_storage_values", "examples\core_storage_values.vcxproj", "{C298876B-6C12-4EA4-903B-33450BCD9884}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_vr_simulator", "examples\core_vr_simulator.vcxproj", "{83F586FA-C801-4979-ACCA-006BD628CC88}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_flags", "examples\core_window_flags.vcxproj", "{86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_letterbox", "examples\core_window_letterbox.vcxproj", "{FF2970AE-E2E9-405F-B321-D523A1BD44A0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_world_screen", "examples\core_world_screen.vcxproj", "{79417CE2-FEEB-42F0-BC53-62D5267B19B1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_playing", "examples\models_animation_playing.vcxproj", "{AFDDE100-2D36-4749-817D-12E54C56312F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_billboard_rendering", "examples\models_billboard_rendering.vcxproj", "{B7812167-50FB-4934-996F-DF6FE4CBBFDF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_box_collisions", "examples\models_box_collisions.vcxproj", "{39DB56C7-05F8-492C-A8D4-F19E40FECB59}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_cubicmap_rendering", "examples\models_cubicmap_rendering.vcxproj", "{82F3D34B-8DB2-4C6A-98B1-132245DD9D99}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_first_person_maze", "examples\models_first_person_maze.vcxproj", "{CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_geometric_shapes", "examples\models_geometric_shapes.vcxproj", "{14BA7F98-02CC-4648-9236-676BFF9458AF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_heightmap_rendering", "examples\models_heightmap_rendering.vcxproj", "{0859A973-E4FE-4688-8D16-0253163FDE24}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading", "examples\models_loading.vcxproj", "{F3412853-2B6A-4334-8CF2-B796CDAE0850}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_mesh_generation", "examples\models_mesh_generation.vcxproj", "{BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_mesh_picking", "examples\models_mesh_picking.vcxproj", "{D03F2C82-9553-4AFA-8F49-9234009122B6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_orthographic_projection", "examples\models_orthographic_projection.vcxproj", "{FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_rlgl_solar_system", "examples\models_rlgl_solar_system.vcxproj", "{A53CCF42-A972-478F-9336-0F618B3EC06A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_skybox_rendering", "examples\models_skybox_rendering.vcxproj", "{0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_waving_cubes", "examples\models_waving_cubes.vcxproj", "{870723DD-945A-4136-B65B-4AF3BF85369C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_yaw_pitch_roll", "examples\models_yaw_pitch_roll.vcxproj", "{EA6488AD-445B-4835-87FB-EBC9E2EDAF97}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_to_image", "examples\textures_to_image.vcxproj", "{E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_explosion", "examples\textures_sprite_explosion.vcxproj", "{472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_button", "examples\textures_sprite_button.vcxproj", "{589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_raw_data", "examples\textures_raw_data.vcxproj", "{3AD868E6-8355-4F29-B5ED-7DE94AD786E7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_particles_blending", "examples\textures_particles_blending.vcxproj", "{2B78CF0A-5403-45E2-99BD-493F1679BCDB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_npatch_drawing", "examples\textures_npatch_drawing.vcxproj", "{0AB968E0-E993-45CE-8875-7453C96DF583}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_mouse_painting", "examples\textures_mouse_painting.vcxproj", "{25923141-9859-4AFE-8168-0DF78322FC63}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_logo_raylib", "examples\textures_logo_raylib.vcxproj", "{7E855020-7FA4-482D-B510-2E709354FE8B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_text", "examples\textures_image_text.vcxproj", "{9782E0C8-2BD3-4F67-B420-21CF19CA2435}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_processing", "examples\textures_image_processing.vcxproj", "{9F4135E3-9814-452C-9B35-0EFBCD792B49}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_loading", "examples\textures_image_loading.vcxproj", "{C45343E6-DAB6-4F3A-A00A-8BED71A098BE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_generation", "examples\textures_image_generation.vcxproj", "{B19DD336-538E-4091-A559-EAA717FEC899}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_tiled_drawing", "examples\textures_tiled_drawing.vcxproj", "{0BF60202-43F7-48E9-8717-D31E56FA5BE0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_bunnymark", "examples\textures_bunnymark.vcxproj", "{4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_blend_modes", "examples\textures_blend_modes.vcxproj", "{6D75CD88-1A03-4955-B8C7-ACFC3742154F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_background_scrolling", "examples\textures_background_scrolling.vcxproj", "{8DD0EB7E-668E-452D-91D7-906C64A9C8AC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_writing_anim", "examples\text_writing_anim.vcxproj", "{F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_unicode_emojis", "examples\text_unicode_emojis.vcxproj", "{1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_rectangle_bounds", "examples\text_rectangle_bounds.vcxproj", "{25BCB876-B60A-499B-9046-E9801CFD7780}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_sprite_fonts", "examples\text_sprite_fonts.vcxproj", "{56FB0A45-145F-4EAE-B2C8-E5833E682D8F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_input_box", "examples\text_input_box.vcxproj", "{2BB0C1D4-9298-45AC-B244-67A99769A292}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_format_text", "examples\text_format_text.vcxproj", "{99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_font_spritefont", "examples\text_font_spritefont.vcxproj", "{81064BCE-EEC1-43B0-9912-F05F2B54B11A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_font_sdf", "examples\text_font_sdf.vcxproj", "{31B41997-3890-45E3-93FE-C57B363E9C0D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_font_loading", "examples\text_font_loading.vcxproj", "{D550AB93-DF31-4B76-873F-F075018352F4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_font_filters", "examples\text_font_filters.vcxproj", "{8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rectangle_scaling", "examples\shapes_rectangle_scaling.vcxproj", "{F90FCDC5-EE14-4B89-96DB-4392E28F34AF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_logo_raylib_anim", "examples\shapes_logo_raylib_anim.vcxproj", "{93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_logo_raylib", "examples\shapes_logo_raylib.vcxproj", "{56E68E37-B3FC-4799-91AF-0CA10B6D55A5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_lines_bezier", "examples\shapes_lines_bezier.vcxproj", "{03E7018C-44A2-4C46-9CE7-F2A135A2692B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_following_eyes", "examples\shapes_following_eyes.vcxproj", "{F3F6FE4D-9D9E-451A-B0BA-81456104B672}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_basic_shapes", "examples\shapes_basic_shapes.vcxproj", "{C27794B5-1293-4EA7-BC0E-0F18E6325539}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_bouncing_ball", "examples\shapes_bouncing_ball.vcxproj", "{02F41059-12A2-4A96-8D77-07EFE4B108FD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_collision_area", "examples\shapes_collision_area.vcxproj", "{B774E0B9-9514-4E88-975F-4EB6C3B8D519}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_colors_palette", "examples\shapes_colors_palette.vcxproj", "{D91367C2-2189-4859-A7FE-D2CAB84FA15C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_circle_sector_drawing", "examples\shapes_circle_sector_drawing.vcxproj", "{33459B4E-1839-4856-BF6B-22480D11FE31}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rounded_rectangle_drawing", "examples\shapes_rounded_rectangle_drawing.vcxproj", "{48871156-181A-475A-BD8D-200086A09675}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_ring_drawing", "examples\shapes_ring_drawing.vcxproj", "{C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_ball", "examples\shapes_easings_ball.vcxproj", "{1C49E35A-2838-49D9-9D5F-4B8134960EF6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_box", "examples\shapes_easings_box.vcxproj", "{F91142E2-A999-47F0-9E74-38C1E2930EBE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_rectangles", "examples\shapes_easings_rectangles.vcxproj", "{1EDD4BCF-345C-4065-8CBD-7285224293C3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_basic_lighting", "examples\shaders_basic_lighting.vcxproj", "{A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_custom_uniform", "examples\shaders_custom_uniform.vcxproj", "{B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_eratosthenes_sieve", "examples\shaders_eratosthenes_sieve.vcxproj", "{D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_fog_rendering", "examples\shaders_fog_rendering.vcxproj", "{4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_hot_reloading", "examples\shaders_hot_reloading.vcxproj", "{CF3755C4-937D-4ABF-B7B3-95140808717F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_julia_set", "examples\shaders_julia_set.vcxproj", "{D34939FE-8873-4C53-8D6C-74DED78EA3C4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_model_shader", "examples\shaders_model_shader.vcxproj", "{D408A730-363A-4ABF-BCEF-5D63DCC66042}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_multi_sample2d", "examples\shaders_multi_sample2d.vcxproj", "{F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_palette_switch", "examples\shaders_palette_switch.vcxproj", "{52FB7463-C128-42AF-A02F-78F48473EA9A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_postprocessing", "examples\shaders_postprocessing.vcxproj", "{7381D91E-5C72-48F0-AAB4-95C9B10D7484}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_raymarching_rendering", "examples\shaders_raymarching_rendering.vcxproj", "{D36EC43E-B31F-4CF4-8285-93A7A9D90189}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_mesh_instancing", "examples\shaders_mesh_instancing.vcxproj", "{274C0319-7E1E-4188-936B-8DF3331230B3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_shapes_textures", "examples\shaders_shapes_textures.vcxproj", "{41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_simple_mask", "examples\shaders_simple_mask.vcxproj", "{600C3D4F-0670-4DB4-B30F-520A729053B5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_spotlight_rendering", "examples\shaders_spotlight_rendering.vcxproj", "{11F33A39-74B7-4018-B5F9-CC285A673A8F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_rendering", "examples\shaders_texture_rendering.vcxproj", "{A6F5E35E-B4A7-41B3-853A-75558E6E0715}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_waves", "examples\shaders_texture_waves.vcxproj", "{291B4975-8EFF-4C7C-8AF3-44A77B8491B8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "embedded_files_loading", "examples\embedded_files_loading.vcxproj", "{FDE6080B-E203-4066-910D-AD0302566008}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "easings_testbed", "examples\easings_testbed.vcxproj", "{E1B6D565-9D7C-46B7-9202-ECF54974DE50}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rlgl_standalone", "examples\rlgl_standalone.vcxproj", "{C8765523-58F8-4C8E-9914-693396F6F0FF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading_vox", "examples\models_loading_vox.vcxproj", "{2F1B955B-275E-4D8E-8864-06FEC44D7912}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading_gltf", "examples\models_loading_gltf.vcxproj", "{F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_codepoints_loading", "examples\text_codepoints_loading.vcxproj", "{F2DB2E59-76BF-4D81-859A-AFC289C046C0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_should_close", "examples\core_window_should_close.vcxproj", "{3FE7E9B6-49AC-4246-A789-28DB4644567B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_fog_of_war", "examples\textures_fog_of_war.vcxproj", "{EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_gif_player", "examples\textures_gif_player.vcxproj", "{191A5289-BA65-4638-A215-C521F0187313}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera_mouse_zoom", "examples\core_2d_camera_mouse_zoom.vcxproj", "{3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_screen_manager", "examples\core_basic_screen_manager.vcxproj", "{8B1AF423-00F1-4924-AC54-F77D402D2AC9}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_custom_frame_control", "examples\core_custom_frame_control.vcxproj", "{658A1B85-554E-4A5D-973A-FFE592CDD5F2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rlgl_compute_shader", "examples\rlgl_compute_shader.vcxproj", "{07CA51AD-72AE-46A2-AAED-DC3E3F807976}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_3d_drawing", "examples\text_3d_drawing.vcxproj", "{27B110CC-43C0-400A-89D9-245E681647D7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_polygon_drawing", "examples\textures_polygon_drawing.vcxproj", "{1DE84812-E143-4C4B-A61D-9267AAD55401}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_stream_effects", "examples\audio_stream_effects.vcxproj", "{4A87569C-4BD3-4113-B4B9-573D65B3D3F8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_textured_curve", "examples\textures_textured_curve.vcxproj", "{769FF0C1-4424-4FA3-BC44-D7A7DA312A06}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading_m3d", "examples\models_loading_m3d.vcxproj", "{6D9E00D8-2893-45E4-9363-3F7F61D416BD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_depth_writing", "examples\shaders_depth_writing.vcxproj", "{70B35F59-AFC2-4D8F-8833-5314D2047A81}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_depth_rendering", "examples\shaders_depth_rendering.vcxproj", "{DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_hybrid_rendering", "examples\shaders_hybrid_rendering.vcxproj", "{3755E9F4-CB48-4EC3-B561-3B85964EBDEF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_multi", "examples\audio_sound_multi.vcxproj", "{F81C5819-85B4-4D2E-B6DC-104A7634461B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_2d_camera_split_screen", "examples\core_2d_camera_split_screen.vcxproj", "{CC62F7DB-D089-4677-8575-CAB7A7815C43}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_automation_events", "examples\core_automation_events.vcxproj", "{7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_mixed_processor", "examples\audio_mixed_processor.vcxproj", "{A4B0D971-3CD6-41C9-8AB2-055D25A33373}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_mouse_wheel", "examples\core_input_mouse_wheel.vcxproj", "{15CDD310-6980-42A6-8082-3A6B7730D13F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_smooth_pixelperfect", "examples\core_smooth_pixelperfect.vcxproj", "{71DB4284-5B1C-4E86-9AF5-B91542D44A6F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_textured_cube", "examples\models_textured_cube.vcxproj", "{4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_deferred_rendering", "examples\shaders_deferred_rendering.vcxproj", "{88DE5AD6-0074-4A5A-BE22-C840153E35D5}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_outline", "examples\shaders_texture_outline.vcxproj", "{A546E75A-5242-46E6-9A9E-6C91554EAB84}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_tiling", "examples\shaders_texture_tiling.vcxproj", "{EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_splines_drawing", "examples\shapes_splines_drawing.vcxproj", "{DF25E545-00FF-4E64-844C-7DF98991F901}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_top_down_lights", "examples\shapes_top_down_lights.vcxproj", "{703BE7BA-5B99-4F70-806D-3A259F6A991E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rectangle_advanced", "examples\shapes_rectangle_advanced.vcxproj", "{FAFEE2F9-24B0-4AF1-B512-433E9590033F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_gpu_skinning", "examples\models_animation_gpu_skinning.vcxproj", "{8245DAD9-D402-4D5C-8F45-32229CD3B263}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_shadowmap_rendering", "examples\shaders_shadowmap_rendering.vcxproj", "{41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_bone_socket", "examples\models_bone_socket.vcxproj", "{3A7FE53D-35F7-49DC-9C9A-A5204A53523F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_vertex_displacement", "examples\shaders_vertex_displacement.vcxproj", "{CCA63A76-D9FC-4130-9F67-4D97F9770D53}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_rounded_rectangle", "examples\shaders_rounded_rectangle.vcxproj", "{D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_digital_clock", "examples\shapes_digital_clock.vcxproj", "{3384C257-3CFE-4A8F-838C-19DAC5C955DA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_double_pendulum", "examples\shapes_double_pendulum.vcxproj", "{2B140378-125F-4DE9-AC37-2CC1B73D7254}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_kernel", "examples\textures_image_kernel.vcxproj", "{F4C55B99-E1C5-496A-8AC2-40188C38F4F6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_rotate", "examples\textures_image_rotate.vcxproj", "{2AA91EED-2D32-4B09-84A3-53D41EED1005}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_image_channel", "examples\textures_image_channel.vcxproj", "{EC0910F6-8D66-4509-BF57-A5EE7AE9485F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_point_rendering", "examples\models_point_rendering.vcxproj", "{921391C6-7626-4212-9928-BC82BC785461}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_tesseract_view", "examples\models_tesseract_view.vcxproj", "{6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_basic_pbr", "examples\shaders_basic_pbr.vcxproj", "{4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_lightmap_rendering", "examples\shaders_lightmap_rendering.vcxproj", "{C54703BF-D68A-480D-BE27-49B62E45D582}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_sound_positioning", "examples\audio_sound_positioning.vcxproj", "{9CD8BCAD-F212-4BCC-BA98-899743CE3279}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_virtual_controls", "examples\core_input_virtual_controls.vcxproj", "{0981CA28-E4A5-4DF1-987F-A41D09131EFC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_3d_camera_fps", "examples\core_3d_camera_fps.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_normalmap_rendering", "examples\shaders_normalmap_rendering.vcxproj", "{6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_unicode_ranges", "examples\text_unicode_ranges.vcxproj", "{6777EC3C-077C-42FC-B4AD-B799CE55CCE4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_gestures_testbed", "examples\core_input_gestures_testbed.vcxproj", "{A61DAD9C-271C-4E95-81AA-DB4CD58564D4}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_render_texture", "examples\core_render_texture.vcxproj", "{49C67F03-1A56-4F96-B278-39B66EC93678}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_inline_styling", "examples\text_inline_styling.vcxproj", "{D496308F-3C3C-40B3-A3ED-EA327D244B3E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_undo_redo", "examples\core_undo_redo.vcxproj", "{3B27F358-2679-4F38-B297-17B536F580BB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_input_actions", "examples\core_input_actions.vcxproj", "{718FCBD0-591D-448C-B7D5-9F1CA8544E7B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_delta_time", "examples\core_delta_time.vcxproj", "{19CA0070-B4B2-4394-90B7-D0C259AA35BA}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_bullet_hell", "examples\shapes_bullet_hell.vcxproj", "{2CCCD9E4-9058-4291-BD89-39C979F0CA1E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_vector_angle", "examples\shapes_vector_angle.vcxproj", "{9DB1F875-6E65-4195-B23F-ED8095C0B99C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_basic_voxel", "examples\models_basic_voxel.vcxproj", "{52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_dashed_line", "examples\shapes_dashed_line.vcxproj", "{8E132D5A-2C00-48D0-8747-97E41356F26F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_rotating_cube", "examples\models_rotating_cube.vcxproj", "{A4662163-83E7-4309-8CAA-B0BF13655FE6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_ascii_rendering", "examples\shaders_ascii_rendering.vcxproj", "{5F4B766F-DD52-4B53-B6C3-BC7611E17F20}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_monitor_detector", "examples\core_monitor_detector.vcxproj", "{FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "web_basic_window", "examples\web_basic_window.vcxproj", "{A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_kaleidoscope", "examples\shapes_kaleidoscope.vcxproj", "{0C442799-B09C-4CD1-9538-711B6E85E9BF}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_recursive_tree", "examples\shapes_recursive_tree.vcxproj", "{DFB40A10-F8B7-412A-BCC3-5EE49294D816}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_triangle_strip", "examples\shapes_triangle_strip.vcxproj", "{BB58A5FB-1A35-4471-86D0-A5189EC541B3}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_pie_chart", "examples\shapes_pie_chart.vcxproj", "{61997220-5383-4AE5-ABD4-5F45AE1B0F2A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_directory_files", "examples\core_directory_files.vcxproj", "{7467E9AE-844F-444D-8A3F-17397544BA21}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_simple_particles", "examples\shapes_simple_particles.vcxproj", "{497FDF54-9762-4048-A833-61CC3980A0FB}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_words_alignment", "examples\text_words_alignment.vcxproj", "{29B00F47-BE91-4A1F-B87D-B1302F038316}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_clipboard_text", "examples\core_clipboard_text.vcxproj", "{124935CC-73BB-489E-92E8-4F922A85DB5D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_clock_of_clocks", "examples\shapes_clock_of_clocks.vcxproj", "{AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_mouse_trail", "examples\shapes_mouse_trail.vcxproj", "{0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_starfield_effect", "examples\shapes_starfield_effect.vcxproj", "{EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_highdpi_testbed", "examples\core_highdpi_testbed.vcxproj", "{1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_screen_recording", "examples\core_screen_recording.vcxproj", "{9DE2FC01-A839-4F89-8319-9071D4C54821}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_text_file_loading", "examples\core_text_file_loading.vcxproj", "{2F578155-D51F-4C03-AB7F-5C5122CA46CC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_mandelbrot_set", "examples\shaders_mandelbrot_set.vcxproj", "{1C829D1A-892C-451C-AF0B-AC65C85F5CC6}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_math_angle_rotation", "examples\shapes_math_angle_rotation.vcxproj", "{84DE22BB-C25F-425C-A7FE-0120CF107B83}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_color_correction", "examples\shaders_color_correction.vcxproj", "{98152EDD-7E28-4FA3-89D8-B636ED5D5F65}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_math_sine_cosine", "examples\shapes_math_sine_cosine.vcxproj", "{B7FDD40F-DDA4-468E-9C40-EEB175964A26}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_decals", "examples\models_decals.vcxproj", "{028F0967-B253-45DA-B1C4-FACCE45D0D8D}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_lines_drawing", "examples\shapes_lines_drawing.vcxproj", "{666346D7-C84B-498D-AE17-53B20C62DB1A}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_viewport_scaling", "examples\core_viewport_scaling.vcxproj", "{AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_compute_hash", "examples\core_compute_hash.vcxproj", "{6C897101-BE52-4387-8AA2-062123A76BA1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_screen_buffer", "examples\textures_screen_buffer.vcxproj", "{4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "audio_spectrum_visualizer", "examples\audio_spectrum_visualizer.vcxproj", "{2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_directional_billboard", "examples\models_directional_billboard.vcxproj", "{30011884-25EE-42C9-BB15-888CAFB1AA6E}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rlgl_color_wheel", "examples\shapes_rlgl_color_wheel.vcxproj", "{32FE2658-1D70-442E-8672-0AC5C6F0BD7B}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_rlgl_triangle", "examples\shapes_rlgl_triangle.vcxproj", "{842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_stacking", "examples\textures_sprite_stacking.vcxproj", "{FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_ball_physics", "examples\shapes_ball_physics.vcxproj", "{0653AFAF-5578-4C02-AF29-0C873E7634AE}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_game_of_life", "examples\shaders_game_of_life.vcxproj", "{071E64F3-1396-4A97-97CA-98CAC059B168}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_penrose_tile", "examples\shapes_penrose_tile.vcxproj", "{7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_strings_management", "examples\text_strings_management.vcxproj", "{1F4722E7-F78E-413F-A106-D3490211EA57}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_cellular_automata", "examples\textures_cellular_automata.vcxproj", "{0A0FC982-6E31-401F-BA77-3C5E8AB02C68}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_hilbert_curve", "examples\shapes_hilbert_curve.vcxproj", "{DC163251-16C3-4B72-B965-ACDBA0F02BD1}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_keyboard_testbed", "examples\core_keyboard_testbed.vcxproj", "{D35D2FDA-B53F-4F70-81CA-24D95812B89C}" +EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_framebuffer_rendering", "examples\textures_framebuffer_rendering.vcxproj", "{F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}" +EndProject +Global + GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug.DLL|ARM64 = Debug.DLL|ARM64 + Debug.DLL|x64 = Debug.DLL|x64 + Debug.DLL|x86 = Debug.DLL|x86 + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 + Debug|x86 = Debug|x86 + Release.DLL|ARM64 = Release.DLL|ARM64 + Release.DLL|x64 = Release.DLL|x64 + Release.DLL|x86 = Release.DLL|x86 + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 + Release|x86 = Release|x86 + EndGlobalSection + GlobalSection(ProjectConfigurationPlatforms) = postSolution + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|ARM64.Build.0 = Debug|ARM64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.ActiveCfg = Debug|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x64.Build.0 = Debug|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.ActiveCfg = Debug|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Debug|x86.Build.0 = Debug|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|ARM64.ActiveCfg = Release|ARM64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|ARM64.Build.0 = Release|ARM64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.ActiveCfg = Release|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x64.Build.0 = Release|x64 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.ActiveCfg = Release|Win32 + {E89D61AC-55DE-4482-AFD4-DF7242EBC859}.Release|x86.Build.0 = Release|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.Build.0 = Debug|ARM64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.ActiveCfg = Debug|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.Build.0 = Debug|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.ActiveCfg = Debug|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.Build.0 = Debug|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.ActiveCfg = Release|ARM64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.Build.0 = Release|ARM64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.ActiveCfg = Release|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32 + {0981CA98-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|ARM64.Build.0 = Debug|ARM64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|x64.ActiveCfg = Debug|x64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|x64.Build.0 = Debug|x64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|x86.ActiveCfg = Debug|Win32 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Debug|x86.Build.0 = Debug|Win32 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|ARM64.ActiveCfg = Release|ARM64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|ARM64.Build.0 = Release|ARM64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|x64.ActiveCfg = Release|x64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|x64.Build.0 = Release|x64 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|x86.ActiveCfg = Release|Win32 + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}.Release|x86.Build.0 = Release|Win32 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|ARM64.Build.0 = Debug|ARM64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|x64.ActiveCfg = Debug|x64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|x64.Build.0 = Debug|x64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|x86.ActiveCfg = Debug|Win32 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Debug|x86.Build.0 = Debug|Win32 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|ARM64.ActiveCfg = Release|ARM64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|ARM64.Build.0 = Release|ARM64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|x64.ActiveCfg = Release|x64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|x64.Build.0 = Release|x64 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|x86.ActiveCfg = Release|Win32 + {103B292B-049B-4B15-85A1-9F902840DB2C}.Release|x86.Build.0 = Release|Win32 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|ARM64.Build.0 = Debug|ARM64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|x64.ActiveCfg = Debug|x64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|x64.Build.0 = Debug|x64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|x86.ActiveCfg = Debug|Win32 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Debug|x86.Build.0 = Debug|Win32 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|ARM64.ActiveCfg = Release|ARM64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|ARM64.Build.0 = Release|ARM64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|x64.ActiveCfg = Release|x64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|x64.Build.0 = Release|x64 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|x86.ActiveCfg = Release|Win32 + {0C2D2F82-AE67-400C-B19C-8C9B957B132A}.Release|x86.Build.0 = Release|Win32 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|ARM64.Build.0 = Debug|ARM64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|x64.ActiveCfg = Debug|x64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|x64.Build.0 = Debug|x64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|x86.ActiveCfg = Debug|Win32 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Debug|x86.Build.0 = Debug|Win32 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|ARM64.ActiveCfg = Release|ARM64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|ARM64.Build.0 = Release|ARM64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|x64.ActiveCfg = Release|x64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|x64.Build.0 = Release|x64 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|x86.ActiveCfg = Release|Win32 + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6}.Release|x86.Build.0 = Release|Win32 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|ARM64.Build.0 = Debug|ARM64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|x64.ActiveCfg = Debug|x64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|x64.Build.0 = Debug|x64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|x86.ActiveCfg = Debug|Win32 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Debug|x86.Build.0 = Debug|Win32 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|ARM64.ActiveCfg = Release|ARM64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|ARM64.Build.0 = Release|ARM64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|x64.ActiveCfg = Release|x64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|x64.Build.0 = Release|x64 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|x86.ActiveCfg = Release|Win32 + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9}.Release|x86.Build.0 = Release|Win32 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|ARM64.Build.0 = Debug|ARM64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|x64.ActiveCfg = Debug|x64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|x64.Build.0 = Debug|x64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|x86.ActiveCfg = Debug|Win32 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Debug|x86.Build.0 = Debug|Win32 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|ARM64.ActiveCfg = Release|ARM64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|ARM64.Build.0 = Release|ARM64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|x64.ActiveCfg = Release|x64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|x64.Build.0 = Release|x64 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|x86.ActiveCfg = Release|Win32 + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB}.Release|x86.Build.0 = Release|Win32 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|ARM64.Build.0 = Debug|ARM64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|x64.ActiveCfg = Debug|x64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|x64.Build.0 = Debug|x64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|x86.ActiveCfg = Debug|Win32 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Debug|x86.Build.0 = Debug|Win32 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|ARM64.ActiveCfg = Release|ARM64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|ARM64.Build.0 = Release|ARM64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|x64.ActiveCfg = Release|x64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|x64.Build.0 = Release|x64 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|x86.ActiveCfg = Release|Win32 + {F81C5819-85B6-4D2E-B6DC-104A7634461B}.Release|x86.Build.0 = Release|Win32 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|ARM64.Build.0 = Debug|ARM64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|x64.ActiveCfg = Debug|x64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|x64.Build.0 = Debug|x64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|x86.ActiveCfg = Debug|Win32 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Debug|x86.Build.0 = Debug|Win32 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|ARM64.ActiveCfg = Release|ARM64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|ARM64.Build.0 = Release|ARM64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|x64.ActiveCfg = Release|x64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|x64.Build.0 = Release|x64 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|x86.ActiveCfg = Release|Win32 + {66CC5B13-881A-412F-8C51-746622A91C5A}.Release|x86.Build.0 = Release|Win32 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|ARM64.Build.0 = Debug|ARM64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|x64.ActiveCfg = Debug|x64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|x64.Build.0 = Debug|x64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|x86.ActiveCfg = Debug|Win32 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Debug|x86.Build.0 = Debug|Win32 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|ARM64.ActiveCfg = Release|ARM64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|ARM64.Build.0 = Release|ARM64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|x64.ActiveCfg = Release|x64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|x64.Build.0 = Release|x64 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|x86.ActiveCfg = Release|Win32 + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B}.Release|x86.Build.0 = Release|Win32 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|ARM64.Build.0 = Debug|ARM64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|x64.ActiveCfg = Debug|x64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|x64.Build.0 = Debug|x64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|x86.ActiveCfg = Debug|Win32 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Debug|x86.Build.0 = Debug|Win32 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|ARM64.ActiveCfg = Release|ARM64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|ARM64.Build.0 = Release|ARM64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|x64.ActiveCfg = Release|x64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|x64.Build.0 = Release|x64 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|x86.ActiveCfg = Release|Win32 + {557138B0-7BE2-4392-B2E2-B45734031A62}.Release|x86.Build.0 = Release|Win32 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|ARM64.Build.0 = Debug|ARM64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|x64.ActiveCfg = Debug|x64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|x64.Build.0 = Debug|x64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|x86.ActiveCfg = Debug|Win32 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Debug|x86.Build.0 = Debug|Win32 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|ARM64.ActiveCfg = Release|ARM64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|ARM64.Build.0 = Release|ARM64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|x64.ActiveCfg = Release|x64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|x64.Build.0 = Release|x64 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|x86.ActiveCfg = Release|Win32 + {9EED87BB-527F-4D05-9384-6D16CFD627A8}.Release|x86.Build.0 = Release|Win32 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|ARM64.Build.0 = Debug|ARM64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|x64.ActiveCfg = Debug|x64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|x64.Build.0 = Debug|x64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|x86.ActiveCfg = Debug|Win32 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Debug|x86.Build.0 = Debug|Win32 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|ARM64.ActiveCfg = Release|ARM64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|ARM64.Build.0 = Release|ARM64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|x64.ActiveCfg = Release|x64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|x64.Build.0 = Release|x64 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|x86.ActiveCfg = Release|Win32 + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965}.Release|x86.Build.0 = Release|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|ARM64.Build.0 = Debug|ARM64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x64.ActiveCfg = Debug|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x64.Build.0 = Debug|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x86.ActiveCfg = Debug|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Debug|x86.Build.0 = Debug|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|ARM64.ActiveCfg = Release|ARM64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|ARM64.Build.0 = Release|ARM64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x64.ActiveCfg = Release|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x64.Build.0 = Release|x64 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x86.ActiveCfg = Release|Win32 + {946A1700-C7AA-46F0-AEF2-67C98B5722AC}.Release|x86.Build.0 = Release|Win32 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|ARM64.Build.0 = Debug|ARM64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|x64.ActiveCfg = Debug|x64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|x64.Build.0 = Debug|x64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|x86.ActiveCfg = Debug|Win32 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Debug|x86.Build.0 = Debug|Win32 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|ARM64.ActiveCfg = Release|ARM64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|ARM64.Build.0 = Release|ARM64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|x64.ActiveCfg = Release|x64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|x64.Build.0 = Release|x64 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|x86.ActiveCfg = Release|Win32 + {FD193822-3D5C-4161-A147-884C2ABDE483}.Release|x86.Build.0 = Release|Win32 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|ARM64.Build.0 = Debug|ARM64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|x64.ActiveCfg = Debug|x64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|x64.Build.0 = Debug|x64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|x86.ActiveCfg = Debug|Win32 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Debug|x86.Build.0 = Debug|Win32 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|ARM64.ActiveCfg = Release|ARM64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|ARM64.Build.0 = Release|ARM64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|x64.ActiveCfg = Release|x64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|x64.Build.0 = Release|x64 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|x86.ActiveCfg = Release|Win32 + {20AD0AC9-9159-4744-99CC-6AC5779D6B87}.Release|x86.Build.0 = Release|Win32 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|ARM64.Build.0 = Debug|ARM64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|x64.ActiveCfg = Debug|x64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|x64.Build.0 = Debug|x64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|x86.ActiveCfg = Debug|Win32 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Debug|x86.Build.0 = Debug|Win32 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|ARM64.ActiveCfg = Release|ARM64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|ARM64.Build.0 = Release|ARM64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|x64.ActiveCfg = Release|x64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|x64.Build.0 = Release|x64 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|x86.ActiveCfg = Release|Win32 + {0199E349-0701-40BC-8A7F-06A54FFA3E7C}.Release|x86.Build.0 = Release|Win32 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|ARM64.Build.0 = Debug|ARM64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|x64.ActiveCfg = Debug|x64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|x64.Build.0 = Debug|x64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|x86.ActiveCfg = Debug|Win32 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Debug|x86.Build.0 = Debug|Win32 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|ARM64.ActiveCfg = Release|ARM64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|ARM64.Build.0 = Release|ARM64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|x64.ActiveCfg = Release|x64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|x64.Build.0 = Release|x64 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|x86.ActiveCfg = Release|Win32 + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D}.Release|x86.Build.0 = Release|Win32 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|ARM64.Build.0 = Debug|ARM64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|x64.ActiveCfg = Debug|x64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|x64.Build.0 = Debug|x64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|x86.ActiveCfg = Debug|Win32 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Debug|x86.Build.0 = Debug|Win32 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|ARM64.ActiveCfg = Release|ARM64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|ARM64.Build.0 = Release|ARM64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|x64.ActiveCfg = Release|x64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|x64.Build.0 = Release|x64 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|x86.ActiveCfg = Release|Win32 + {8F19E3DA-8929-4000-87B5-3CA6929636CC}.Release|x86.Build.0 = Release|Win32 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|ARM64.Build.0 = Debug|ARM64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|x64.ActiveCfg = Debug|x64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|x64.Build.0 = Debug|x64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|x86.ActiveCfg = Debug|Win32 + {51A00565-5787-4911-9CC0-28403AA4909D}.Debug|x86.Build.0 = Debug|Win32 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release|ARM64.ActiveCfg = Release|ARM64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release|ARM64.Build.0 = Release|ARM64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release|x64.ActiveCfg = Release|x64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release|x64.Build.0 = Release|x64 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release|x86.ActiveCfg = Release|Win32 + {51A00565-5787-4911-9CC0-28403AA4909D}.Release|x86.Build.0 = Release|Win32 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|ARM64.Build.0 = Debug|ARM64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|x64.ActiveCfg = Debug|x64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|x64.Build.0 = Debug|x64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|x86.ActiveCfg = Debug|Win32 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Debug|x86.Build.0 = Debug|Win32 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|ARM64.ActiveCfg = Release|ARM64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|ARM64.Build.0 = Release|ARM64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|x64.ActiveCfg = Release|x64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|x64.Build.0 = Release|x64 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|x86.ActiveCfg = Release|Win32 + {92B64AE7-D773-4F05-89F1-CE59BBF4F053}.Release|x86.Build.0 = Release|Win32 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|ARM64.Build.0 = Debug|ARM64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|x64.ActiveCfg = Debug|x64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|x64.Build.0 = Debug|x64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|x86.ActiveCfg = Debug|Win32 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Debug|x86.Build.0 = Debug|Win32 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|ARM64.ActiveCfg = Release|ARM64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|ARM64.Build.0 = Release|ARM64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|x64.ActiveCfg = Release|x64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|x64.Build.0 = Release|x64 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|x86.ActiveCfg = Release|Win32 + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3}.Release|x86.Build.0 = Release|Win32 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|ARM64.Build.0 = Debug|ARM64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|x64.ActiveCfg = Debug|x64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|x64.Build.0 = Debug|x64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|x86.ActiveCfg = Debug|Win32 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Debug|x86.Build.0 = Debug|Win32 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|ARM64.ActiveCfg = Release|ARM64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|ARM64.Build.0 = Release|ARM64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|x64.ActiveCfg = Release|x64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|x64.Build.0 = Release|x64 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|x86.ActiveCfg = Release|Win32 + {A643BB06-735D-47F3-BFE7-B6D3C36F7097}.Release|x86.Build.0 = Release|Win32 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|x64.ActiveCfg = Debug|x64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|x64.Build.0 = Debug|x64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|x86.ActiveCfg = Debug|Win32 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Debug|x86.Build.0 = Debug|Win32 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|ARM64.Build.0 = Release|ARM64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|x64.ActiveCfg = Release|x64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|x64.Build.0 = Release|x64 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|x86.ActiveCfg = Release|Win32 + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A}.Release|x86.Build.0 = Release|Win32 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|ARM64.Build.0 = Debug|ARM64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|x64.ActiveCfg = Debug|x64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|x64.Build.0 = Debug|x64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|x86.ActiveCfg = Debug|Win32 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Debug|x86.Build.0 = Debug|Win32 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|ARM64.ActiveCfg = Release|ARM64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|ARM64.Build.0 = Release|ARM64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|x64.ActiveCfg = Release|x64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|x64.Build.0 = Release|x64 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|x86.ActiveCfg = Release|Win32 + {B332DCA8-3599-4A99-917A-82261BDC27AC}.Release|x86.Build.0 = Release|Win32 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|ARM64.Build.0 = Debug|ARM64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|x64.ActiveCfg = Debug|x64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|x64.Build.0 = Debug|x64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|x86.ActiveCfg = Debug|Win32 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Debug|x86.Build.0 = Debug|Win32 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|ARM64.ActiveCfg = Release|ARM64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|ARM64.Build.0 = Release|ARM64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|x64.ActiveCfg = Release|x64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|x64.Build.0 = Release|x64 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|x86.ActiveCfg = Release|Win32 + {59089B0C-AAB4-4532-B294-44DEAE7178B7}.Release|x86.Build.0 = Release|Win32 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|ARM64.Build.0 = Debug|ARM64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|x64.ActiveCfg = Debug|x64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|x64.Build.0 = Debug|x64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|x86.ActiveCfg = Debug|Win32 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Debug|x86.Build.0 = Debug|Win32 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|ARM64.ActiveCfg = Release|ARM64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|ARM64.Build.0 = Release|ARM64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|x64.ActiveCfg = Release|x64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|x64.Build.0 = Release|x64 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|x86.ActiveCfg = Release|Win32 + {C298876B-6C12-4EA4-903B-33450BCD9884}.Release|x86.Build.0 = Release|Win32 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|ARM64.Build.0 = Debug|ARM64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|x64.ActiveCfg = Debug|x64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|x64.Build.0 = Debug|x64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|x86.ActiveCfg = Debug|Win32 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Debug|x86.Build.0 = Debug|Win32 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|ARM64.ActiveCfg = Release|ARM64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|ARM64.Build.0 = Release|ARM64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|x64.ActiveCfg = Release|x64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|x64.Build.0 = Release|x64 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|x86.ActiveCfg = Release|Win32 + {83F586FA-C801-4979-ACCA-006BD628CC88}.Release|x86.Build.0 = Release|Win32 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|ARM64.Build.0 = Debug|ARM64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|x64.ActiveCfg = Debug|x64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|x64.Build.0 = Debug|x64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|x86.ActiveCfg = Debug|Win32 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Debug|x86.Build.0 = Debug|Win32 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|ARM64.ActiveCfg = Release|ARM64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|ARM64.Build.0 = Release|ARM64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|x64.ActiveCfg = Release|x64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|x64.Build.0 = Release|x64 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|x86.ActiveCfg = Release|Win32 + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22}.Release|x86.Build.0 = Release|Win32 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|ARM64.Build.0 = Debug|ARM64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|x64.ActiveCfg = Debug|x64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|x64.Build.0 = Debug|x64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|x86.ActiveCfg = Debug|Win32 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Debug|x86.Build.0 = Debug|Win32 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|ARM64.ActiveCfg = Release|ARM64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|ARM64.Build.0 = Release|ARM64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|x64.ActiveCfg = Release|x64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|x64.Build.0 = Release|x64 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|x86.ActiveCfg = Release|Win32 + {FF2970AE-E2E9-405F-B321-D523A1BD44A0}.Release|x86.Build.0 = Release|Win32 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|ARM64.Build.0 = Debug|ARM64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|x64.ActiveCfg = Debug|x64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|x64.Build.0 = Debug|x64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|x86.ActiveCfg = Debug|Win32 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Debug|x86.Build.0 = Debug|Win32 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|ARM64.ActiveCfg = Release|ARM64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|ARM64.Build.0 = Release|ARM64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|x64.ActiveCfg = Release|x64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|x64.Build.0 = Release|x64 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|x86.ActiveCfg = Release|Win32 + {79417CE2-FEEB-42F0-BC53-62D5267B19B1}.Release|x86.Build.0 = Release|Win32 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|ARM64.Build.0 = Debug|ARM64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|x64.ActiveCfg = Debug|x64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|x64.Build.0 = Debug|x64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|x86.ActiveCfg = Debug|Win32 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Debug|x86.Build.0 = Debug|Win32 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|ARM64.ActiveCfg = Release|ARM64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|ARM64.Build.0 = Release|ARM64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|x64.ActiveCfg = Release|x64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|x64.Build.0 = Release|x64 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|x86.ActiveCfg = Release|Win32 + {AFDDE100-2D36-4749-817D-12E54C56312F}.Release|x86.Build.0 = Release|Win32 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|ARM64.Build.0 = Debug|ARM64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|x64.ActiveCfg = Debug|x64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|x64.Build.0 = Debug|x64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|x86.ActiveCfg = Debug|Win32 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Debug|x86.Build.0 = Debug|Win32 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|ARM64.ActiveCfg = Release|ARM64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|ARM64.Build.0 = Release|ARM64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|x64.ActiveCfg = Release|x64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|x64.Build.0 = Release|x64 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|x86.ActiveCfg = Release|Win32 + {B7812167-50FB-4934-996F-DF6FE4CBBFDF}.Release|x86.Build.0 = Release|Win32 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|ARM64.Build.0 = Debug|ARM64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|x64.ActiveCfg = Debug|x64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|x64.Build.0 = Debug|x64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|x86.ActiveCfg = Debug|Win32 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Debug|x86.Build.0 = Debug|Win32 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|ARM64.ActiveCfg = Release|ARM64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|ARM64.Build.0 = Release|ARM64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|x64.ActiveCfg = Release|x64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|x64.Build.0 = Release|x64 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|x86.ActiveCfg = Release|Win32 + {39DB56C7-05F8-492C-A8D4-F19E40FECB59}.Release|x86.Build.0 = Release|Win32 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|ARM64.Build.0 = Debug|ARM64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|x64.ActiveCfg = Debug|x64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|x64.Build.0 = Debug|x64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|x86.ActiveCfg = Debug|Win32 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Debug|x86.Build.0 = Debug|Win32 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|ARM64.ActiveCfg = Release|ARM64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|ARM64.Build.0 = Release|ARM64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|x64.ActiveCfg = Release|x64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|x64.Build.0 = Release|x64 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|x86.ActiveCfg = Release|Win32 + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99}.Release|x86.Build.0 = Release|Win32 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|ARM64.Build.0 = Debug|ARM64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|x64.ActiveCfg = Debug|x64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|x64.Build.0 = Debug|x64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|x86.ActiveCfg = Debug|Win32 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Debug|x86.Build.0 = Debug|Win32 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|ARM64.ActiveCfg = Release|ARM64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|ARM64.Build.0 = Release|ARM64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|x64.ActiveCfg = Release|x64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|x64.Build.0 = Release|x64 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|x86.ActiveCfg = Release|Win32 + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62}.Release|x86.Build.0 = Release|Win32 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|ARM64.Build.0 = Debug|ARM64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|x64.ActiveCfg = Debug|x64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|x64.Build.0 = Debug|x64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|x86.ActiveCfg = Debug|Win32 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Debug|x86.Build.0 = Debug|Win32 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|ARM64.ActiveCfg = Release|ARM64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|ARM64.Build.0 = Release|ARM64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|x64.ActiveCfg = Release|x64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|x64.Build.0 = Release|x64 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|x86.ActiveCfg = Release|Win32 + {14BA7F98-02CC-4648-9236-676BFF9458AF}.Release|x86.Build.0 = Release|Win32 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|ARM64.Build.0 = Debug|ARM64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|x64.ActiveCfg = Debug|x64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|x64.Build.0 = Debug|x64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|x86.ActiveCfg = Debug|Win32 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Debug|x86.Build.0 = Debug|Win32 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|ARM64.ActiveCfg = Release|ARM64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|ARM64.Build.0 = Release|ARM64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|x64.ActiveCfg = Release|x64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|x64.Build.0 = Release|x64 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|x86.ActiveCfg = Release|Win32 + {0859A973-E4FE-4688-8D16-0253163FDE24}.Release|x86.Build.0 = Release|Win32 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|ARM64.Build.0 = Debug|ARM64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|x64.ActiveCfg = Debug|x64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|x64.Build.0 = Debug|x64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|x86.ActiveCfg = Debug|Win32 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Debug|x86.Build.0 = Debug|Win32 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|ARM64.ActiveCfg = Release|ARM64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|ARM64.Build.0 = Release|ARM64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|x64.ActiveCfg = Release|x64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|x64.Build.0 = Release|x64 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|x86.ActiveCfg = Release|Win32 + {F3412853-2B6A-4334-8CF2-B796CDAE0850}.Release|x86.Build.0 = Release|Win32 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|ARM64.Build.0 = Debug|ARM64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|x64.ActiveCfg = Debug|x64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|x64.Build.0 = Debug|x64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|x86.ActiveCfg = Debug|Win32 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Debug|x86.Build.0 = Debug|Win32 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|ARM64.ActiveCfg = Release|ARM64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|ARM64.Build.0 = Release|ARM64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|x64.ActiveCfg = Release|x64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|x64.Build.0 = Release|x64 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|x86.ActiveCfg = Release|Win32 + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912}.Release|x86.Build.0 = Release|Win32 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|ARM64.Build.0 = Debug|ARM64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|x64.ActiveCfg = Debug|x64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|x64.Build.0 = Debug|x64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|x86.ActiveCfg = Debug|Win32 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Debug|x86.Build.0 = Debug|Win32 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|ARM64.ActiveCfg = Release|ARM64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|ARM64.Build.0 = Release|ARM64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|x64.ActiveCfg = Release|x64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|x64.Build.0 = Release|x64 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|x86.ActiveCfg = Release|Win32 + {D03F2C82-9553-4AFA-8F49-9234009122B6}.Release|x86.Build.0 = Release|Win32 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|ARM64.Build.0 = Debug|ARM64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|x64.ActiveCfg = Debug|x64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|x64.Build.0 = Debug|x64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|x86.ActiveCfg = Debug|Win32 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Debug|x86.Build.0 = Debug|Win32 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|ARM64.ActiveCfg = Release|ARM64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|ARM64.Build.0 = Release|ARM64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|x64.ActiveCfg = Release|x64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|x64.Build.0 = Release|x64 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|x86.ActiveCfg = Release|Win32 + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3}.Release|x86.Build.0 = Release|Win32 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|ARM64.Build.0 = Debug|ARM64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|x64.ActiveCfg = Debug|x64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|x64.Build.0 = Debug|x64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|x86.ActiveCfg = Debug|Win32 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Debug|x86.Build.0 = Debug|Win32 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|ARM64.ActiveCfg = Release|ARM64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|ARM64.Build.0 = Release|ARM64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|x64.ActiveCfg = Release|x64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|x64.Build.0 = Release|x64 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|x86.ActiveCfg = Release|Win32 + {A53CCF42-A972-478F-9336-0F618B3EC06A}.Release|x86.Build.0 = Release|Win32 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|ARM64.Build.0 = Debug|ARM64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|x64.ActiveCfg = Debug|x64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|x64.Build.0 = Debug|x64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|x86.ActiveCfg = Debug|Win32 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Debug|x86.Build.0 = Debug|Win32 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|ARM64.ActiveCfg = Release|ARM64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|ARM64.Build.0 = Release|ARM64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|x64.ActiveCfg = Release|x64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|x64.Build.0 = Release|x64 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|x86.ActiveCfg = Release|Win32 + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA}.Release|x86.Build.0 = Release|Win32 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|ARM64.Build.0 = Debug|ARM64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|x64.ActiveCfg = Debug|x64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|x64.Build.0 = Debug|x64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|x86.ActiveCfg = Debug|Win32 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Debug|x86.Build.0 = Debug|Win32 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|ARM64.ActiveCfg = Release|ARM64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|ARM64.Build.0 = Release|ARM64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|x64.ActiveCfg = Release|x64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|x64.Build.0 = Release|x64 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|x86.ActiveCfg = Release|Win32 + {870723DD-945A-4136-B65B-4AF3BF85369C}.Release|x86.Build.0 = Release|Win32 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|ARM64.Build.0 = Debug|ARM64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|x64.ActiveCfg = Debug|x64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|x64.Build.0 = Debug|x64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|x86.ActiveCfg = Debug|Win32 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Debug|x86.Build.0 = Debug|Win32 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|ARM64.ActiveCfg = Release|ARM64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|ARM64.Build.0 = Release|ARM64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|x64.ActiveCfg = Release|x64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|x64.Build.0 = Release|x64 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|x86.ActiveCfg = Release|Win32 + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97}.Release|x86.Build.0 = Release|Win32 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|ARM64.Build.0 = Debug|ARM64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|x64.ActiveCfg = Debug|x64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|x64.Build.0 = Debug|x64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|x86.ActiveCfg = Debug|Win32 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Debug|x86.Build.0 = Debug|Win32 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|ARM64.ActiveCfg = Release|ARM64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|ARM64.Build.0 = Release|ARM64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|x64.ActiveCfg = Release|x64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|x64.Build.0 = Release|x64 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|x86.ActiveCfg = Release|Win32 + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0}.Release|x86.Build.0 = Release|Win32 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|ARM64.Build.0 = Debug|ARM64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|x64.ActiveCfg = Debug|x64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|x64.Build.0 = Debug|x64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|x86.ActiveCfg = Debug|Win32 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Debug|x86.Build.0 = Debug|Win32 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|ARM64.ActiveCfg = Release|ARM64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|ARM64.Build.0 = Release|ARM64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|x64.ActiveCfg = Release|x64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|x64.Build.0 = Release|x64 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|x86.ActiveCfg = Release|Win32 + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4}.Release|x86.Build.0 = Release|Win32 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|ARM64.Build.0 = Debug|ARM64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|x64.ActiveCfg = Debug|x64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|x64.Build.0 = Debug|x64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|x86.ActiveCfg = Debug|Win32 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Debug|x86.Build.0 = Debug|Win32 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|ARM64.ActiveCfg = Release|ARM64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|ARM64.Build.0 = Release|ARM64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|x64.ActiveCfg = Release|x64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|x64.Build.0 = Release|x64 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|x86.ActiveCfg = Release|Win32 + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E}.Release|x86.Build.0 = Release|Win32 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|ARM64.Build.0 = Debug|ARM64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|x64.ActiveCfg = Debug|x64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|x64.Build.0 = Debug|x64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|x86.ActiveCfg = Debug|Win32 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Debug|x86.Build.0 = Debug|Win32 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|ARM64.ActiveCfg = Release|ARM64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|ARM64.Build.0 = Release|ARM64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|x64.ActiveCfg = Release|x64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|x64.Build.0 = Release|x64 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|x86.ActiveCfg = Release|Win32 + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7}.Release|x86.Build.0 = Release|Win32 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|ARM64.Build.0 = Debug|ARM64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|x64.ActiveCfg = Debug|x64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|x64.Build.0 = Debug|x64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|x86.ActiveCfg = Debug|Win32 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Debug|x86.Build.0 = Debug|Win32 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|ARM64.ActiveCfg = Release|ARM64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|ARM64.Build.0 = Release|ARM64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|x64.ActiveCfg = Release|x64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|x64.Build.0 = Release|x64 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|x86.ActiveCfg = Release|Win32 + {2B78CF0A-5403-45E2-99BD-493F1679BCDB}.Release|x86.Build.0 = Release|Win32 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|ARM64.Build.0 = Debug|ARM64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|x64.ActiveCfg = Debug|x64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|x64.Build.0 = Debug|x64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|x86.ActiveCfg = Debug|Win32 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Debug|x86.Build.0 = Debug|Win32 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|ARM64.ActiveCfg = Release|ARM64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|ARM64.Build.0 = Release|ARM64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|x64.ActiveCfg = Release|x64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|x64.Build.0 = Release|x64 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|x86.ActiveCfg = Release|Win32 + {0AB968E0-E993-45CE-8875-7453C96DF583}.Release|x86.Build.0 = Release|Win32 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|ARM64.Build.0 = Debug|ARM64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|x64.ActiveCfg = Debug|x64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|x64.Build.0 = Debug|x64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|x86.ActiveCfg = Debug|Win32 + {25923141-9859-4AFE-8168-0DF78322FC63}.Debug|x86.Build.0 = Debug|Win32 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release|ARM64.ActiveCfg = Release|ARM64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release|ARM64.Build.0 = Release|ARM64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release|x64.ActiveCfg = Release|x64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release|x64.Build.0 = Release|x64 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release|x86.ActiveCfg = Release|Win32 + {25923141-9859-4AFE-8168-0DF78322FC63}.Release|x86.Build.0 = Release|Win32 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|ARM64.Build.0 = Debug|ARM64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|x64.ActiveCfg = Debug|x64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|x64.Build.0 = Debug|x64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|x86.ActiveCfg = Debug|Win32 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Debug|x86.Build.0 = Debug|Win32 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|ARM64.ActiveCfg = Release|ARM64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|ARM64.Build.0 = Release|ARM64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|x64.ActiveCfg = Release|x64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|x64.Build.0 = Release|x64 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|x86.ActiveCfg = Release|Win32 + {7E855020-7FA4-482D-B510-2E709354FE8B}.Release|x86.Build.0 = Release|Win32 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|ARM64.Build.0 = Debug|ARM64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|x64.ActiveCfg = Debug|x64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|x64.Build.0 = Debug|x64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|x86.ActiveCfg = Debug|Win32 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Debug|x86.Build.0 = Debug|Win32 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|ARM64.ActiveCfg = Release|ARM64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|ARM64.Build.0 = Release|ARM64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|x64.ActiveCfg = Release|x64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|x64.Build.0 = Release|x64 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|x86.ActiveCfg = Release|Win32 + {9782E0C8-2BD3-4F67-B420-21CF19CA2435}.Release|x86.Build.0 = Release|Win32 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|ARM64.Build.0 = Debug|ARM64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|x64.ActiveCfg = Debug|x64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|x64.Build.0 = Debug|x64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|x86.ActiveCfg = Debug|Win32 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Debug|x86.Build.0 = Debug|Win32 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|ARM64.ActiveCfg = Release|ARM64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|ARM64.Build.0 = Release|ARM64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|x64.ActiveCfg = Release|x64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|x64.Build.0 = Release|x64 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|x86.ActiveCfg = Release|Win32 + {9F4135E3-9814-452C-9B35-0EFBCD792B49}.Release|x86.Build.0 = Release|Win32 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|ARM64.Build.0 = Debug|ARM64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|x64.ActiveCfg = Debug|x64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|x64.Build.0 = Debug|x64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|x86.ActiveCfg = Debug|Win32 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Debug|x86.Build.0 = Debug|Win32 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|ARM64.ActiveCfg = Release|ARM64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|ARM64.Build.0 = Release|ARM64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|x64.ActiveCfg = Release|x64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|x64.Build.0 = Release|x64 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|x86.ActiveCfg = Release|Win32 + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE}.Release|x86.Build.0 = Release|Win32 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|ARM64.Build.0 = Debug|ARM64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|x64.ActiveCfg = Debug|x64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|x64.Build.0 = Debug|x64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|x86.ActiveCfg = Debug|Win32 + {B19DD336-538E-4091-A559-EAA717FEC899}.Debug|x86.Build.0 = Debug|Win32 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release|ARM64.ActiveCfg = Release|ARM64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release|ARM64.Build.0 = Release|ARM64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release|x64.ActiveCfg = Release|x64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release|x64.Build.0 = Release|x64 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release|x86.ActiveCfg = Release|Win32 + {B19DD336-538E-4091-A559-EAA717FEC899}.Release|x86.Build.0 = Release|Win32 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|ARM64.Build.0 = Debug|ARM64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|x64.ActiveCfg = Debug|x64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|x64.Build.0 = Debug|x64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|x86.ActiveCfg = Debug|Win32 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Debug|x86.Build.0 = Debug|Win32 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|ARM64.ActiveCfg = Release|ARM64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|ARM64.Build.0 = Release|ARM64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|x64.ActiveCfg = Release|x64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|x64.Build.0 = Release|x64 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|x86.ActiveCfg = Release|Win32 + {0BF60202-43F7-48E9-8717-D31E56FA5BE0}.Release|x86.Build.0 = Release|Win32 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|ARM64.Build.0 = Debug|ARM64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|x64.ActiveCfg = Debug|x64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|x64.Build.0 = Debug|x64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|x86.ActiveCfg = Debug|Win32 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Debug|x86.Build.0 = Debug|Win32 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|ARM64.ActiveCfg = Release|ARM64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|ARM64.Build.0 = Release|ARM64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|x64.ActiveCfg = Release|x64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|x64.Build.0 = Release|x64 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|x86.ActiveCfg = Release|Win32 + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC}.Release|x86.Build.0 = Release|Win32 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|ARM64.Build.0 = Debug|ARM64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|x64.ActiveCfg = Debug|x64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|x64.Build.0 = Debug|x64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|x86.ActiveCfg = Debug|Win32 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Debug|x86.Build.0 = Debug|Win32 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|ARM64.ActiveCfg = Release|ARM64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|ARM64.Build.0 = Release|ARM64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|x64.ActiveCfg = Release|x64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|x64.Build.0 = Release|x64 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|x86.ActiveCfg = Release|Win32 + {6D75CD88-1A03-4955-B8C7-ACFC3742154F}.Release|x86.Build.0 = Release|Win32 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|ARM64.Build.0 = Debug|ARM64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|x64.ActiveCfg = Debug|x64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|x64.Build.0 = Debug|x64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|x86.ActiveCfg = Debug|Win32 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Debug|x86.Build.0 = Debug|Win32 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|ARM64.ActiveCfg = Release|ARM64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|ARM64.Build.0 = Release|ARM64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|x64.ActiveCfg = Release|x64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|x64.Build.0 = Release|x64 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|x86.ActiveCfg = Release|Win32 + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC}.Release|x86.Build.0 = Release|Win32 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|ARM64.Build.0 = Debug|ARM64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|x64.ActiveCfg = Debug|x64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|x64.Build.0 = Debug|x64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|x86.ActiveCfg = Debug|Win32 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Debug|x86.Build.0 = Debug|Win32 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|ARM64.ActiveCfg = Release|ARM64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|ARM64.Build.0 = Release|ARM64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|x64.ActiveCfg = Release|x64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|x64.Build.0 = Release|x64 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|x86.ActiveCfg = Release|Win32 + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E}.Release|x86.Build.0 = Release|Win32 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|ARM64.Build.0 = Debug|ARM64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|x64.ActiveCfg = Debug|x64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|x64.Build.0 = Debug|x64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|x86.ActiveCfg = Debug|Win32 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Debug|x86.Build.0 = Debug|Win32 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|ARM64.ActiveCfg = Release|ARM64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|ARM64.Build.0 = Release|ARM64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|x64.ActiveCfg = Release|x64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|x64.Build.0 = Release|x64 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|x86.ActiveCfg = Release|Win32 + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D}.Release|x86.Build.0 = Release|Win32 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|ARM64.Build.0 = Debug|ARM64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|x64.ActiveCfg = Debug|x64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|x64.Build.0 = Debug|x64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|x86.ActiveCfg = Debug|Win32 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Debug|x86.Build.0 = Debug|Win32 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|ARM64.ActiveCfg = Release|ARM64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|ARM64.Build.0 = Release|ARM64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|x64.ActiveCfg = Release|x64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|x64.Build.0 = Release|x64 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|x86.ActiveCfg = Release|Win32 + {25BCB876-B60A-499B-9046-E9801CFD7780}.Release|x86.Build.0 = Release|Win32 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|ARM64.Build.0 = Debug|ARM64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|x64.ActiveCfg = Debug|x64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|x64.Build.0 = Debug|x64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|x86.ActiveCfg = Debug|Win32 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Debug|x86.Build.0 = Debug|Win32 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|ARM64.ActiveCfg = Release|ARM64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|ARM64.Build.0 = Release|ARM64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|x64.ActiveCfg = Release|x64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|x64.Build.0 = Release|x64 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|x86.ActiveCfg = Release|Win32 + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F}.Release|x86.Build.0 = Release|Win32 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|ARM64.Build.0 = Debug|ARM64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|x64.ActiveCfg = Debug|x64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|x64.Build.0 = Debug|x64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|x86.ActiveCfg = Debug|Win32 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Debug|x86.Build.0 = Debug|Win32 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|ARM64.ActiveCfg = Release|ARM64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|ARM64.Build.0 = Release|ARM64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|x64.ActiveCfg = Release|x64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|x64.Build.0 = Release|x64 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|x86.ActiveCfg = Release|Win32 + {2BB0C1D4-9298-45AC-B244-67A99769A292}.Release|x86.Build.0 = Release|Win32 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|ARM64.Build.0 = Debug|ARM64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|x64.ActiveCfg = Debug|x64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|x64.Build.0 = Debug|x64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|x86.ActiveCfg = Debug|Win32 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Debug|x86.Build.0 = Debug|Win32 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|ARM64.ActiveCfg = Release|ARM64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|ARM64.Build.0 = Release|ARM64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|x64.ActiveCfg = Release|x64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|x64.Build.0 = Release|x64 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|x86.ActiveCfg = Release|Win32 + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB}.Release|x86.Build.0 = Release|Win32 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|ARM64.Build.0 = Debug|ARM64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|x64.ActiveCfg = Debug|x64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|x64.Build.0 = Debug|x64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|x86.ActiveCfg = Debug|Win32 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Debug|x86.Build.0 = Debug|Win32 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|ARM64.ActiveCfg = Release|ARM64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|ARM64.Build.0 = Release|ARM64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|x64.ActiveCfg = Release|x64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|x64.Build.0 = Release|x64 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|x86.ActiveCfg = Release|Win32 + {81064BCE-EEC1-43B0-9912-F05F2B54B11A}.Release|x86.Build.0 = Release|Win32 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|ARM64.Build.0 = Debug|ARM64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|x64.ActiveCfg = Debug|x64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|x64.Build.0 = Debug|x64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|x86.ActiveCfg = Debug|Win32 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Debug|x86.Build.0 = Debug|Win32 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|ARM64.ActiveCfg = Release|ARM64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|ARM64.Build.0 = Release|ARM64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|x64.ActiveCfg = Release|x64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|x64.Build.0 = Release|x64 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|x86.ActiveCfg = Release|Win32 + {31B41997-3890-45E3-93FE-C57B363E9C0D}.Release|x86.Build.0 = Release|Win32 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|ARM64.Build.0 = Debug|ARM64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|x64.ActiveCfg = Debug|x64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|x64.Build.0 = Debug|x64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|x86.ActiveCfg = Debug|Win32 + {D550AB93-DF31-4B76-873F-F075018352F4}.Debug|x86.Build.0 = Debug|Win32 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release|ARM64.ActiveCfg = Release|ARM64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release|ARM64.Build.0 = Release|ARM64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release|x64.ActiveCfg = Release|x64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release|x64.Build.0 = Release|x64 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release|x86.ActiveCfg = Release|Win32 + {D550AB93-DF31-4B76-873F-F075018352F4}.Release|x86.Build.0 = Release|Win32 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|ARM64.Build.0 = Debug|ARM64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|x64.ActiveCfg = Debug|x64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|x64.Build.0 = Debug|x64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|x86.ActiveCfg = Debug|Win32 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Debug|x86.Build.0 = Debug|Win32 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|ARM64.ActiveCfg = Release|ARM64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|ARM64.Build.0 = Release|ARM64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|x64.ActiveCfg = Release|x64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|x64.Build.0 = Release|x64 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|x86.ActiveCfg = Release|Win32 + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A}.Release|x86.Build.0 = Release|Win32 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|ARM64.Build.0 = Debug|ARM64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|x64.ActiveCfg = Debug|x64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|x64.Build.0 = Debug|x64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|x86.ActiveCfg = Debug|Win32 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Debug|x86.Build.0 = Debug|Win32 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|ARM64.ActiveCfg = Release|ARM64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|ARM64.Build.0 = Release|ARM64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|x64.ActiveCfg = Release|x64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|x64.Build.0 = Release|x64 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|x86.ActiveCfg = Release|Win32 + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF}.Release|x86.Build.0 = Release|Win32 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|ARM64.Build.0 = Debug|ARM64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|x64.ActiveCfg = Debug|x64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|x64.Build.0 = Debug|x64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|x86.ActiveCfg = Debug|Win32 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Debug|x86.Build.0 = Debug|Win32 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|ARM64.ActiveCfg = Release|ARM64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|ARM64.Build.0 = Release|ARM64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|x64.ActiveCfg = Release|x64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|x64.Build.0 = Release|x64 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|x86.ActiveCfg = Release|Win32 + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79}.Release|x86.Build.0 = Release|Win32 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|ARM64.Build.0 = Debug|ARM64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|x64.ActiveCfg = Debug|x64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|x64.Build.0 = Debug|x64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|x86.ActiveCfg = Debug|Win32 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Debug|x86.Build.0 = Debug|Win32 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|ARM64.ActiveCfg = Release|ARM64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|ARM64.Build.0 = Release|ARM64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|x64.ActiveCfg = Release|x64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|x64.Build.0 = Release|x64 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|x86.ActiveCfg = Release|Win32 + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5}.Release|x86.Build.0 = Release|Win32 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|ARM64.Build.0 = Debug|ARM64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|x64.ActiveCfg = Debug|x64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|x64.Build.0 = Debug|x64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|x86.ActiveCfg = Debug|Win32 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Debug|x86.Build.0 = Debug|Win32 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|ARM64.ActiveCfg = Release|ARM64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|ARM64.Build.0 = Release|ARM64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|x64.ActiveCfg = Release|x64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|x64.Build.0 = Release|x64 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|x86.ActiveCfg = Release|Win32 + {03E7018C-44A2-4C46-9CE7-F2A135A2692B}.Release|x86.Build.0 = Release|Win32 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|ARM64.Build.0 = Debug|ARM64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|x64.ActiveCfg = Debug|x64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|x64.Build.0 = Debug|x64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|x86.ActiveCfg = Debug|Win32 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Debug|x86.Build.0 = Debug|Win32 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|ARM64.ActiveCfg = Release|ARM64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|ARM64.Build.0 = Release|ARM64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|x64.ActiveCfg = Release|x64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|x64.Build.0 = Release|x64 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|x86.ActiveCfg = Release|Win32 + {F3F6FE4D-9D9E-451A-B0BA-81456104B672}.Release|x86.Build.0 = Release|Win32 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|ARM64.Build.0 = Debug|ARM64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|x64.ActiveCfg = Debug|x64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|x64.Build.0 = Debug|x64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|x86.ActiveCfg = Debug|Win32 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Debug|x86.Build.0 = Debug|Win32 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|ARM64.ActiveCfg = Release|ARM64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|ARM64.Build.0 = Release|ARM64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|x64.ActiveCfg = Release|x64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|x64.Build.0 = Release|x64 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|x86.ActiveCfg = Release|Win32 + {C27794B5-1293-4EA7-BC0E-0F18E6325539}.Release|x86.Build.0 = Release|Win32 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|ARM64.Build.0 = Debug|ARM64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|x64.ActiveCfg = Debug|x64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|x64.Build.0 = Debug|x64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|x86.ActiveCfg = Debug|Win32 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Debug|x86.Build.0 = Debug|Win32 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|ARM64.ActiveCfg = Release|ARM64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|ARM64.Build.0 = Release|ARM64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|x64.ActiveCfg = Release|x64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|x64.Build.0 = Release|x64 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|x86.ActiveCfg = Release|Win32 + {02F41059-12A2-4A96-8D77-07EFE4B108FD}.Release|x86.Build.0 = Release|Win32 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|ARM64.Build.0 = Debug|ARM64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|x64.ActiveCfg = Debug|x64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|x64.Build.0 = Debug|x64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|x86.ActiveCfg = Debug|Win32 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Debug|x86.Build.0 = Debug|Win32 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|ARM64.ActiveCfg = Release|ARM64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|ARM64.Build.0 = Release|ARM64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|x64.ActiveCfg = Release|x64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|x64.Build.0 = Release|x64 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|x86.ActiveCfg = Release|Win32 + {B774E0B9-9514-4E88-975F-4EB6C3B8D519}.Release|x86.Build.0 = Release|Win32 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|ARM64.Build.0 = Debug|ARM64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|x64.ActiveCfg = Debug|x64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|x64.Build.0 = Debug|x64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|x86.ActiveCfg = Debug|Win32 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Debug|x86.Build.0 = Debug|Win32 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|ARM64.ActiveCfg = Release|ARM64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|ARM64.Build.0 = Release|ARM64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|x64.ActiveCfg = Release|x64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|x64.Build.0 = Release|x64 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|x86.ActiveCfg = Release|Win32 + {D91367C2-2189-4859-A7FE-D2CAB84FA15C}.Release|x86.Build.0 = Release|Win32 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|ARM64.Build.0 = Debug|ARM64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|x64.ActiveCfg = Debug|x64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|x64.Build.0 = Debug|x64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|x86.ActiveCfg = Debug|Win32 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Debug|x86.Build.0 = Debug|Win32 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|ARM64.ActiveCfg = Release|ARM64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|ARM64.Build.0 = Release|ARM64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|x64.ActiveCfg = Release|x64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|x64.Build.0 = Release|x64 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|x86.ActiveCfg = Release|Win32 + {33459B4E-1839-4856-BF6B-22480D11FE31}.Release|x86.Build.0 = Release|Win32 + {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {48871156-181A-475A-BD8D-200086A09675}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {48871156-181A-475A-BD8D-200086A09675}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {48871156-181A-475A-BD8D-200086A09675}.Debug|ARM64.Build.0 = Debug|ARM64 + {48871156-181A-475A-BD8D-200086A09675}.Debug|x64.ActiveCfg = Debug|x64 + {48871156-181A-475A-BD8D-200086A09675}.Debug|x64.Build.0 = Debug|x64 + {48871156-181A-475A-BD8D-200086A09675}.Debug|x86.ActiveCfg = Debug|Win32 + {48871156-181A-475A-BD8D-200086A09675}.Debug|x86.Build.0 = Debug|Win32 + {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {48871156-181A-475A-BD8D-200086A09675}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {48871156-181A-475A-BD8D-200086A09675}.Release|ARM64.ActiveCfg = Release|ARM64 + {48871156-181A-475A-BD8D-200086A09675}.Release|ARM64.Build.0 = Release|ARM64 + {48871156-181A-475A-BD8D-200086A09675}.Release|x64.ActiveCfg = Release|x64 + {48871156-181A-475A-BD8D-200086A09675}.Release|x64.Build.0 = Release|x64 + {48871156-181A-475A-BD8D-200086A09675}.Release|x86.ActiveCfg = Release|Win32 + {48871156-181A-475A-BD8D-200086A09675}.Release|x86.Build.0 = Release|Win32 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|ARM64.Build.0 = Debug|ARM64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|x64.ActiveCfg = Debug|x64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|x64.Build.0 = Debug|x64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|x86.ActiveCfg = Debug|Win32 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Debug|x86.Build.0 = Debug|Win32 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|ARM64.ActiveCfg = Release|ARM64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|ARM64.Build.0 = Release|ARM64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|x64.ActiveCfg = Release|x64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|x64.Build.0 = Release|x64 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|x86.ActiveCfg = Release|Win32 + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1}.Release|x86.Build.0 = Release|Win32 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|ARM64.Build.0 = Debug|ARM64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|x64.ActiveCfg = Debug|x64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|x64.Build.0 = Debug|x64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|x86.ActiveCfg = Debug|Win32 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Debug|x86.Build.0 = Debug|Win32 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|ARM64.ActiveCfg = Release|ARM64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|ARM64.Build.0 = Release|ARM64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|x64.ActiveCfg = Release|x64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|x64.Build.0 = Release|x64 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|x86.ActiveCfg = Release|Win32 + {1C49E35A-2838-49D9-9D5F-4B8134960EF6}.Release|x86.Build.0 = Release|Win32 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|ARM64.Build.0 = Debug|ARM64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|x64.ActiveCfg = Debug|x64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|x64.Build.0 = Debug|x64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|x86.ActiveCfg = Debug|Win32 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Debug|x86.Build.0 = Debug|Win32 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|ARM64.ActiveCfg = Release|ARM64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|ARM64.Build.0 = Release|ARM64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|x64.ActiveCfg = Release|x64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|x64.Build.0 = Release|x64 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|x86.ActiveCfg = Release|Win32 + {F91142E2-A999-47F0-9E74-38C1E2930EBE}.Release|x86.Build.0 = Release|Win32 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|ARM64.Build.0 = Debug|ARM64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|x64.ActiveCfg = Debug|x64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|x64.Build.0 = Debug|x64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|x86.ActiveCfg = Debug|Win32 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Debug|x86.Build.0 = Debug|Win32 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|ARM64.ActiveCfg = Release|ARM64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|ARM64.Build.0 = Release|ARM64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|x64.ActiveCfg = Release|x64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|x64.Build.0 = Release|x64 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|x86.ActiveCfg = Release|Win32 + {1EDD4BCF-345C-4065-8CBD-7285224293C3}.Release|x86.Build.0 = Release|Win32 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|ARM64.Build.0 = Debug|ARM64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|x64.ActiveCfg = Debug|x64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|x64.Build.0 = Debug|x64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|x86.ActiveCfg = Debug|Win32 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Debug|x86.Build.0 = Debug|Win32 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|ARM64.ActiveCfg = Release|ARM64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|ARM64.Build.0 = Release|ARM64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|x64.ActiveCfg = Release|x64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|x64.Build.0 = Release|x64 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|x86.ActiveCfg = Release|Win32 + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA}.Release|x86.Build.0 = Release|Win32 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|ARM64.Build.0 = Debug|ARM64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|x64.ActiveCfg = Debug|x64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|x64.Build.0 = Debug|x64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|x86.ActiveCfg = Debug|Win32 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Debug|x86.Build.0 = Debug|Win32 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|ARM64.ActiveCfg = Release|ARM64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|ARM64.Build.0 = Release|ARM64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|x64.ActiveCfg = Release|x64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|x64.Build.0 = Release|x64 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|x86.ActiveCfg = Release|Win32 + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870}.Release|x86.Build.0 = Release|Win32 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|ARM64.Build.0 = Debug|ARM64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|x64.ActiveCfg = Debug|x64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|x64.Build.0 = Debug|x64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|x86.ActiveCfg = Debug|Win32 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Debug|x86.Build.0 = Debug|Win32 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|ARM64.ActiveCfg = Release|ARM64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|ARM64.Build.0 = Release|ARM64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|x64.ActiveCfg = Release|x64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|x64.Build.0 = Release|x64 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|x86.ActiveCfg = Release|Win32 + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1}.Release|x86.Build.0 = Release|Win32 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|ARM64.Build.0 = Debug|ARM64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|x64.ActiveCfg = Debug|x64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|x64.Build.0 = Debug|x64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|x86.ActiveCfg = Debug|Win32 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Debug|x86.Build.0 = Debug|Win32 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|ARM64.ActiveCfg = Release|ARM64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|ARM64.Build.0 = Release|ARM64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|x64.ActiveCfg = Release|x64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|x64.Build.0 = Release|x64 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|x86.ActiveCfg = Release|Win32 + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF}.Release|x86.Build.0 = Release|Win32 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|ARM64.Build.0 = Debug|ARM64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|x64.ActiveCfg = Debug|x64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|x64.Build.0 = Debug|x64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|x86.ActiveCfg = Debug|Win32 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Debug|x86.Build.0 = Debug|Win32 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|ARM64.ActiveCfg = Release|ARM64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|ARM64.Build.0 = Release|ARM64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|x64.ActiveCfg = Release|x64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|x64.Build.0 = Release|x64 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|x86.ActiveCfg = Release|Win32 + {CF3755C4-937D-4ABF-B7B3-95140808717F}.Release|x86.Build.0 = Release|Win32 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|ARM64.Build.0 = Debug|ARM64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|x64.ActiveCfg = Debug|x64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|x64.Build.0 = Debug|x64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|x86.ActiveCfg = Debug|Win32 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Debug|x86.Build.0 = Debug|Win32 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|ARM64.ActiveCfg = Release|ARM64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|ARM64.Build.0 = Release|ARM64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|x64.ActiveCfg = Release|x64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|x64.Build.0 = Release|x64 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|x86.ActiveCfg = Release|Win32 + {D34939FE-8873-4C53-8D6C-74DED78EA3C4}.Release|x86.Build.0 = Release|Win32 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|ARM64.Build.0 = Debug|ARM64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|x64.ActiveCfg = Debug|x64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|x64.Build.0 = Debug|x64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|x86.ActiveCfg = Debug|Win32 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Debug|x86.Build.0 = Debug|Win32 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|ARM64.ActiveCfg = Release|ARM64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|ARM64.Build.0 = Release|ARM64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|x64.ActiveCfg = Release|x64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|x64.Build.0 = Release|x64 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|x86.ActiveCfg = Release|Win32 + {D408A730-363A-4ABF-BCEF-5D63DCC66042}.Release|x86.Build.0 = Release|Win32 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|ARM64.Build.0 = Debug|ARM64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|x64.ActiveCfg = Debug|x64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|x64.Build.0 = Debug|x64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|x86.ActiveCfg = Debug|Win32 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Debug|x86.Build.0 = Debug|Win32 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|ARM64.ActiveCfg = Release|ARM64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|ARM64.Build.0 = Release|ARM64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|x64.ActiveCfg = Release|x64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|x64.Build.0 = Release|x64 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|x86.ActiveCfg = Release|Win32 + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED}.Release|x86.Build.0 = Release|Win32 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|ARM64.Build.0 = Debug|ARM64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|x64.ActiveCfg = Debug|x64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|x64.Build.0 = Debug|x64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|x86.ActiveCfg = Debug|Win32 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Debug|x86.Build.0 = Debug|Win32 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|ARM64.ActiveCfg = Release|ARM64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|ARM64.Build.0 = Release|ARM64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|x64.ActiveCfg = Release|x64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|x64.Build.0 = Release|x64 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|x86.ActiveCfg = Release|Win32 + {52FB7463-C128-42AF-A02F-78F48473EA9A}.Release|x86.Build.0 = Release|Win32 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|ARM64.Build.0 = Debug|ARM64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|x64.ActiveCfg = Debug|x64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|x64.Build.0 = Debug|x64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|x86.ActiveCfg = Debug|Win32 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Debug|x86.Build.0 = Debug|Win32 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|ARM64.ActiveCfg = Release|ARM64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|ARM64.Build.0 = Release|ARM64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|x64.ActiveCfg = Release|x64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|x64.Build.0 = Release|x64 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|x86.ActiveCfg = Release|Win32 + {7381D91E-5C72-48F0-AAB4-95C9B10D7484}.Release|x86.Build.0 = Release|Win32 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|ARM64.Build.0 = Debug|ARM64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|x64.ActiveCfg = Debug|x64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|x64.Build.0 = Debug|x64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|x86.ActiveCfg = Debug|Win32 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Debug|x86.Build.0 = Debug|Win32 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|ARM64.ActiveCfg = Release|ARM64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|ARM64.Build.0 = Release|ARM64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|x64.ActiveCfg = Release|x64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|x64.Build.0 = Release|x64 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|x86.ActiveCfg = Release|Win32 + {D36EC43E-B31F-4CF4-8285-93A7A9D90189}.Release|x86.Build.0 = Release|Win32 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|ARM64.Build.0 = Debug|ARM64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|x64.ActiveCfg = Debug|x64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|x64.Build.0 = Debug|x64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|x86.ActiveCfg = Debug|Win32 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Debug|x86.Build.0 = Debug|Win32 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|ARM64.ActiveCfg = Release|ARM64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|ARM64.Build.0 = Release|ARM64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|x64.ActiveCfg = Release|x64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|x64.Build.0 = Release|x64 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|x86.ActiveCfg = Release|Win32 + {274C0319-7E1E-4188-936B-8DF3331230B3}.Release|x86.Build.0 = Release|Win32 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|ARM64.Build.0 = Debug|ARM64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|x64.ActiveCfg = Debug|x64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|x64.Build.0 = Debug|x64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|x86.ActiveCfg = Debug|Win32 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Debug|x86.Build.0 = Debug|Win32 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|ARM64.ActiveCfg = Release|ARM64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|ARM64.Build.0 = Release|ARM64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|x64.ActiveCfg = Release|x64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|x64.Build.0 = Release|x64 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|x86.ActiveCfg = Release|Win32 + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629}.Release|x86.Build.0 = Release|Win32 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|ARM64.Build.0 = Debug|ARM64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|x64.ActiveCfg = Debug|x64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|x64.Build.0 = Debug|x64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|x86.ActiveCfg = Debug|Win32 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Debug|x86.Build.0 = Debug|Win32 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|ARM64.ActiveCfg = Release|ARM64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|ARM64.Build.0 = Release|ARM64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|x64.ActiveCfg = Release|x64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|x64.Build.0 = Release|x64 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|x86.ActiveCfg = Release|Win32 + {600C3D4F-0670-4DB4-B30F-520A729053B5}.Release|x86.Build.0 = Release|Win32 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|ARM64.Build.0 = Debug|ARM64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|x64.ActiveCfg = Debug|x64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|x64.Build.0 = Debug|x64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|x86.ActiveCfg = Debug|Win32 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Debug|x86.Build.0 = Debug|Win32 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|ARM64.ActiveCfg = Release|ARM64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|ARM64.Build.0 = Release|ARM64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|x64.ActiveCfg = Release|x64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|x64.Build.0 = Release|x64 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|x86.ActiveCfg = Release|Win32 + {11F33A39-74B7-4018-B5F9-CC285A673A8F}.Release|x86.Build.0 = Release|Win32 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|ARM64.Build.0 = Debug|ARM64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|x64.ActiveCfg = Debug|x64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|x64.Build.0 = Debug|x64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|x86.ActiveCfg = Debug|Win32 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Debug|x86.Build.0 = Debug|Win32 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|ARM64.ActiveCfg = Release|ARM64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|ARM64.Build.0 = Release|ARM64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|x64.ActiveCfg = Release|x64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|x64.Build.0 = Release|x64 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|x86.ActiveCfg = Release|Win32 + {A6F5E35E-B4A7-41B3-853A-75558E6E0715}.Release|x86.Build.0 = Release|Win32 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|ARM64.Build.0 = Debug|ARM64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|x64.ActiveCfg = Debug|x64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|x64.Build.0 = Debug|x64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|x86.ActiveCfg = Debug|Win32 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Debug|x86.Build.0 = Debug|Win32 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|ARM64.ActiveCfg = Release|ARM64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|ARM64.Build.0 = Release|ARM64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x64.ActiveCfg = Release|x64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x64.Build.0 = Release|x64 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x86.ActiveCfg = Release|Win32 + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x86.Build.0 = Release|Win32 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug|ARM64.Build.0 = Debug|ARM64 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x64.ActiveCfg = Debug|x64 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x64.Build.0 = Debug|x64 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x86.ActiveCfg = Debug|Win32 + {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x86.Build.0 = Debug|Win32 + {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {FDE6080B-E203-4066-910D-AD0302566008}.Release|ARM64.ActiveCfg = Release|ARM64 + {FDE6080B-E203-4066-910D-AD0302566008}.Release|ARM64.Build.0 = Release|ARM64 + {FDE6080B-E203-4066-910D-AD0302566008}.Release|x64.ActiveCfg = Release|x64 + {FDE6080B-E203-4066-910D-AD0302566008}.Release|x64.Build.0 = Release|x64 + {FDE6080B-E203-4066-910D-AD0302566008}.Release|x86.ActiveCfg = Release|Win32 + {FDE6080B-E203-4066-910D-AD0302566008}.Release|x86.Build.0 = Release|Win32 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|ARM64.Build.0 = Debug|ARM64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x64.ActiveCfg = Debug|x64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x64.Build.0 = Debug|x64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x86.ActiveCfg = Debug|Win32 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x86.Build.0 = Debug|Win32 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|ARM64.ActiveCfg = Release|ARM64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|ARM64.Build.0 = Release|ARM64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x64.ActiveCfg = Release|x64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x64.Build.0 = Release|x64 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x86.ActiveCfg = Release|Win32 + {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x86.Build.0 = Release|Win32 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|ARM64.Build.0 = Debug|ARM64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x64.ActiveCfg = Debug|x64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x64.Build.0 = Debug|x64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x86.ActiveCfg = Debug|Win32 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x86.Build.0 = Debug|Win32 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|ARM64.ActiveCfg = Release|ARM64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|ARM64.Build.0 = Release|ARM64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x64.ActiveCfg = Release|x64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x64.Build.0 = Release|x64 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x86.ActiveCfg = Release|Win32 + {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x86.Build.0 = Release|Win32 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|ARM64.Build.0 = Debug|ARM64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|x64.ActiveCfg = Debug|x64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|x64.Build.0 = Debug|x64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|x86.ActiveCfg = Debug|Win32 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug|x86.Build.0 = Debug|Win32 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|ARM64.ActiveCfg = Release|ARM64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|ARM64.Build.0 = Release|ARM64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|x64.ActiveCfg = Release|x64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|x64.Build.0 = Release|x64 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|x86.ActiveCfg = Release|Win32 + {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Release|x86.Build.0 = Release|Win32 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|ARM64.Build.0 = Debug|ARM64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|x64.ActiveCfg = Debug|x64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|x64.Build.0 = Debug|x64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|x86.ActiveCfg = Debug|Win32 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Debug|x86.Build.0 = Debug|Win32 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|ARM64.ActiveCfg = Release|ARM64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|ARM64.Build.0 = Release|ARM64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|x64.ActiveCfg = Release|x64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|x64.Build.0 = Release|x64 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|x86.ActiveCfg = Release|Win32 + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}.Release|x86.Build.0 = Release|Win32 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|ARM64.Build.0 = Debug|ARM64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|x64.ActiveCfg = Debug|x64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|x64.Build.0 = Debug|x64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|x86.ActiveCfg = Debug|Win32 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Debug|x86.Build.0 = Debug|Win32 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|ARM64.ActiveCfg = Release|ARM64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|ARM64.Build.0 = Release|ARM64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|x64.ActiveCfg = Release|x64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|x64.Build.0 = Release|x64 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|x86.ActiveCfg = Release|Win32 + {F2DB2E59-76BF-4D81-859A-AFC289C046C0}.Release|x86.Build.0 = Release|Win32 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|ARM64.Build.0 = Debug|ARM64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|x64.ActiveCfg = Debug|x64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|x64.Build.0 = Debug|x64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|x86.ActiveCfg = Debug|Win32 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Debug|x86.Build.0 = Debug|Win32 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|ARM64.ActiveCfg = Release|ARM64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|ARM64.Build.0 = Release|ARM64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|x64.ActiveCfg = Release|x64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|x64.Build.0 = Release|x64 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|x86.ActiveCfg = Release|Win32 + {3FE7E9B6-49AC-4246-A789-28DB4644567B}.Release|x86.Build.0 = Release|Win32 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|ARM64.Build.0 = Debug|ARM64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|x64.ActiveCfg = Debug|x64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|x64.Build.0 = Debug|x64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|x86.ActiveCfg = Debug|Win32 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Debug|x86.Build.0 = Debug|Win32 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|ARM64.ActiveCfg = Release|ARM64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|ARM64.Build.0 = Release|ARM64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|x64.ActiveCfg = Release|x64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|x64.Build.0 = Release|x64 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|x86.ActiveCfg = Release|Win32 + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0}.Release|x86.Build.0 = Release|Win32 + {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {191A5289-BA65-4638-A215-C521F0187313}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {191A5289-BA65-4638-A215-C521F0187313}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {191A5289-BA65-4638-A215-C521F0187313}.Debug|ARM64.Build.0 = Debug|ARM64 + {191A5289-BA65-4638-A215-C521F0187313}.Debug|x64.ActiveCfg = Debug|x64 + {191A5289-BA65-4638-A215-C521F0187313}.Debug|x64.Build.0 = Debug|x64 + {191A5289-BA65-4638-A215-C521F0187313}.Debug|x86.ActiveCfg = Debug|Win32 + {191A5289-BA65-4638-A215-C521F0187313}.Debug|x86.Build.0 = Debug|Win32 + {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {191A5289-BA65-4638-A215-C521F0187313}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {191A5289-BA65-4638-A215-C521F0187313}.Release|ARM64.ActiveCfg = Release|ARM64 + {191A5289-BA65-4638-A215-C521F0187313}.Release|ARM64.Build.0 = Release|ARM64 + {191A5289-BA65-4638-A215-C521F0187313}.Release|x64.ActiveCfg = Release|x64 + {191A5289-BA65-4638-A215-C521F0187313}.Release|x64.Build.0 = Release|x64 + {191A5289-BA65-4638-A215-C521F0187313}.Release|x86.ActiveCfg = Release|Win32 + {191A5289-BA65-4638-A215-C521F0187313}.Release|x86.Build.0 = Release|Win32 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|ARM64.Build.0 = Debug|ARM64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x64.ActiveCfg = Debug|x64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x64.Build.0 = Debug|x64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x86.ActiveCfg = Debug|Win32 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Debug|x86.Build.0 = Debug|Win32 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|ARM64.ActiveCfg = Release|ARM64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|ARM64.Build.0 = Release|ARM64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x64.ActiveCfg = Release|x64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x64.Build.0 = Release|x64 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x86.ActiveCfg = Release|Win32 + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359}.Release|x86.Build.0 = Release|Win32 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|ARM64.Build.0 = Debug|ARM64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x64.ActiveCfg = Debug|x64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x64.Build.0 = Debug|x64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x86.ActiveCfg = Debug|Win32 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Debug|x86.Build.0 = Debug|Win32 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|ARM64.ActiveCfg = Release|ARM64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|ARM64.Build.0 = Release|ARM64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x64.ActiveCfg = Release|x64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x64.Build.0 = Release|x64 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x86.ActiveCfg = Release|Win32 + {8B1AF423-00F1-4924-AC54-F77D402D2AC9}.Release|x86.Build.0 = Release|Win32 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|ARM64.Build.0 = Debug|ARM64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x64.ActiveCfg = Debug|x64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x64.Build.0 = Debug|x64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x86.ActiveCfg = Debug|Win32 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Debug|x86.Build.0 = Debug|Win32 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|ARM64.ActiveCfg = Release|ARM64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|ARM64.Build.0 = Release|ARM64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x64.ActiveCfg = Release|x64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x64.Build.0 = Release|x64 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x86.ActiveCfg = Release|Win32 + {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x86.Build.0 = Release|Win32 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|ARM64.Build.0 = Debug|ARM64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x64.ActiveCfg = Debug|x64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x64.Build.0 = Debug|x64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x86.ActiveCfg = Debug|Win32 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x86.Build.0 = Debug|Win32 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|ARM64.ActiveCfg = Release|ARM64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|ARM64.Build.0 = Release|ARM64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x64.ActiveCfg = Release|x64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x64.Build.0 = Release|x64 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x86.ActiveCfg = Release|Win32 + {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x86.Build.0 = Release|Win32 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|ARM64.Build.0 = Debug|ARM64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x64.ActiveCfg = Debug|x64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x64.Build.0 = Debug|x64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x86.ActiveCfg = Debug|Win32 + {27B110CC-43C0-400A-89D9-245E681647D7}.Debug|x86.Build.0 = Debug|Win32 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release|ARM64.ActiveCfg = Release|ARM64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release|ARM64.Build.0 = Release|ARM64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x64.ActiveCfg = Release|x64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x64.Build.0 = Release|x64 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x86.ActiveCfg = Release|Win32 + {27B110CC-43C0-400A-89D9-245E681647D7}.Release|x86.Build.0 = Release|Win32 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|ARM64.Build.0 = Debug|ARM64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x64.ActiveCfg = Debug|x64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x64.Build.0 = Debug|x64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x86.ActiveCfg = Debug|Win32 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Debug|x86.Build.0 = Debug|Win32 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|ARM64.ActiveCfg = Release|ARM64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|ARM64.Build.0 = Release|ARM64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x64.ActiveCfg = Release|x64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x64.Build.0 = Release|x64 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x86.ActiveCfg = Release|Win32 + {1DE84812-E143-4C4B-A61D-9267AAD55401}.Release|x86.Build.0 = Release|Win32 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|ARM64.Build.0 = Debug|ARM64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|x64.ActiveCfg = Debug|x64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|x64.Build.0 = Debug|x64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|x86.ActiveCfg = Debug|Win32 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Debug|x86.Build.0 = Debug|Win32 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|ARM64.ActiveCfg = Release|ARM64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|ARM64.Build.0 = Release|ARM64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|x64.ActiveCfg = Release|x64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|x64.Build.0 = Release|x64 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|x86.ActiveCfg = Release|Win32 + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8}.Release|x86.Build.0 = Release|Win32 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|ARM64.Build.0 = Debug|ARM64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|x64.ActiveCfg = Debug|x64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|x64.Build.0 = Debug|x64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|x86.ActiveCfg = Debug|Win32 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Debug|x86.Build.0 = Debug|Win32 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|ARM64.ActiveCfg = Release|ARM64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|ARM64.Build.0 = Release|ARM64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|x64.ActiveCfg = Release|x64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|x64.Build.0 = Release|x64 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|x86.ActiveCfg = Release|Win32 + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06}.Release|x86.Build.0 = Release|Win32 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|ARM64.Build.0 = Debug|ARM64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|x64.ActiveCfg = Debug|x64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|x64.Build.0 = Debug|x64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|x86.ActiveCfg = Debug|Win32 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Debug|x86.Build.0 = Debug|Win32 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|ARM64.ActiveCfg = Release|ARM64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|ARM64.Build.0 = Release|ARM64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|x64.ActiveCfg = Release|x64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|x64.Build.0 = Release|x64 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|x86.ActiveCfg = Release|Win32 + {6D9E00D8-2893-45E4-9363-3F7F61D416BD}.Release|x86.Build.0 = Release|Win32 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|ARM64.Build.0 = Debug|ARM64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|x64.ActiveCfg = Debug|x64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|x64.Build.0 = Debug|x64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|x86.ActiveCfg = Debug|Win32 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Debug|x86.Build.0 = Debug|Win32 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|ARM64.ActiveCfg = Release|ARM64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|ARM64.Build.0 = Release|ARM64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|x64.ActiveCfg = Release|x64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|x64.Build.0 = Release|x64 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|x86.ActiveCfg = Release|Win32 + {70B35F59-AFC2-4D8F-8833-5314D2047A81}.Release|x86.Build.0 = Release|Win32 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|ARM64.Build.0 = Debug|ARM64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|x64.ActiveCfg = Debug|x64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|x64.Build.0 = Debug|x64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|x86.ActiveCfg = Debug|Win32 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Debug|x86.Build.0 = Debug|Win32 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|ARM64.ActiveCfg = Release|ARM64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|ARM64.Build.0 = Release|ARM64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|x64.ActiveCfg = Release|x64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|x64.Build.0 = Release|x64 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|x86.ActiveCfg = Release|Win32 + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7}.Release|x86.Build.0 = Release|Win32 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|ARM64.Build.0 = Debug|ARM64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|x64.ActiveCfg = Debug|x64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|x64.Build.0 = Debug|x64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|x86.ActiveCfg = Debug|Win32 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Debug|x86.Build.0 = Debug|Win32 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|ARM64.ActiveCfg = Release|ARM64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|ARM64.Build.0 = Release|ARM64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|x64.ActiveCfg = Release|x64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|x64.Build.0 = Release|x64 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|x86.ActiveCfg = Release|Win32 + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF}.Release|x86.Build.0 = Release|Win32 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|ARM64.Build.0 = Debug|ARM64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|x64.ActiveCfg = Debug|x64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|x64.Build.0 = Debug|x64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|x86.ActiveCfg = Debug|Win32 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Debug|x86.Build.0 = Debug|Win32 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|ARM64.ActiveCfg = Release|ARM64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|ARM64.Build.0 = Release|ARM64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|x64.ActiveCfg = Release|x64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|x64.Build.0 = Release|x64 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|x86.ActiveCfg = Release|Win32 + {F81C5819-85B4-4D2E-B6DC-104A7634461B}.Release|x86.Build.0 = Release|Win32 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|ARM64.Build.0 = Debug|ARM64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|x64.ActiveCfg = Debug|x64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|x64.Build.0 = Debug|x64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|x86.ActiveCfg = Debug|Win32 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Debug|x86.Build.0 = Debug|Win32 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|ARM64.ActiveCfg = Release|ARM64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|ARM64.Build.0 = Release|ARM64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|x64.ActiveCfg = Release|x64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|x64.Build.0 = Release|x64 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|x86.ActiveCfg = Release|Win32 + {CC62F7DB-D089-4677-8575-CAB7A7815C43}.Release|x86.Build.0 = Release|Win32 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|ARM64.Build.0 = Debug|ARM64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|x64.ActiveCfg = Debug|x64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|x64.Build.0 = Debug|x64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|x86.ActiveCfg = Debug|Win32 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Debug|x86.Build.0 = Debug|Win32 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|ARM64.ActiveCfg = Release|ARM64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|ARM64.Build.0 = Release|ARM64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|x64.ActiveCfg = Release|x64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|x64.Build.0 = Release|x64 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|x86.ActiveCfg = Release|Win32 + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26}.Release|x86.Build.0 = Release|Win32 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|ARM64.Build.0 = Debug|ARM64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|x64.ActiveCfg = Debug|x64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|x64.Build.0 = Debug|x64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|x86.ActiveCfg = Debug|Win32 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Debug|x86.Build.0 = Debug|Win32 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|ARM64.ActiveCfg = Release|ARM64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|ARM64.Build.0 = Release|ARM64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|x64.ActiveCfg = Release|x64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|x64.Build.0 = Release|x64 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|x86.ActiveCfg = Release|Win32 + {A4B0D971-3CD6-41C9-8AB2-055D25A33373}.Release|x86.Build.0 = Release|Win32 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|ARM64.Build.0 = Debug|ARM64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|x64.ActiveCfg = Debug|x64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|x64.Build.0 = Debug|x64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|x86.ActiveCfg = Debug|Win32 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Debug|x86.Build.0 = Debug|Win32 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|ARM64.ActiveCfg = Release|ARM64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|ARM64.Build.0 = Release|ARM64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|x64.ActiveCfg = Release|x64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|x64.Build.0 = Release|x64 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|x86.ActiveCfg = Release|Win32 + {15CDD310-6980-42A6-8082-3A6B7730D13F}.Release|x86.Build.0 = Release|Win32 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|ARM64.Build.0 = Debug|ARM64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|x64.ActiveCfg = Debug|x64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|x64.Build.0 = Debug|x64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|x86.ActiveCfg = Debug|Win32 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Debug|x86.Build.0 = Debug|Win32 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|ARM64.ActiveCfg = Release|ARM64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|ARM64.Build.0 = Release|ARM64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|x64.ActiveCfg = Release|x64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|x64.Build.0 = Release|x64 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|x86.ActiveCfg = Release|Win32 + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F}.Release|x86.Build.0 = Release|Win32 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|ARM64.Build.0 = Debug|ARM64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|x64.ActiveCfg = Debug|x64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|x64.Build.0 = Debug|x64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|x86.ActiveCfg = Debug|Win32 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Debug|x86.Build.0 = Debug|Win32 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|ARM64.ActiveCfg = Release|ARM64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|ARM64.Build.0 = Release|ARM64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|x64.ActiveCfg = Release|x64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|x64.Build.0 = Release|x64 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|x86.ActiveCfg = Release|Win32 + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7}.Release|x86.Build.0 = Release|Win32 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|ARM64.Build.0 = Debug|ARM64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|x64.ActiveCfg = Debug|x64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|x64.Build.0 = Debug|x64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|x86.ActiveCfg = Debug|Win32 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Debug|x86.Build.0 = Debug|Win32 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|ARM64.ActiveCfg = Release|ARM64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|ARM64.Build.0 = Release|ARM64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|x64.ActiveCfg = Release|x64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|x64.Build.0 = Release|x64 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|x86.ActiveCfg = Release|Win32 + {88DE5AD6-0074-4A5A-BE22-C840153E35D5}.Release|x86.Build.0 = Release|Win32 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|ARM64.Build.0 = Debug|ARM64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|x64.ActiveCfg = Debug|x64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|x64.Build.0 = Debug|x64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|x86.ActiveCfg = Debug|Win32 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Debug|x86.Build.0 = Debug|Win32 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|ARM64.ActiveCfg = Release|ARM64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|ARM64.Build.0 = Release|ARM64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|x64.ActiveCfg = Release|x64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|x64.Build.0 = Release|x64 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|x86.ActiveCfg = Release|Win32 + {A546E75A-5242-46E6-9A9E-6C91554EAB84}.Release|x86.Build.0 = Release|Win32 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|ARM64.Build.0 = Debug|ARM64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|x64.ActiveCfg = Debug|x64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|x64.Build.0 = Debug|x64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|x86.ActiveCfg = Debug|Win32 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Debug|x86.Build.0 = Debug|Win32 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|ARM64.ActiveCfg = Release|ARM64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|ARM64.Build.0 = Release|ARM64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|x64.ActiveCfg = Release|x64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|x64.Build.0 = Release|x64 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|x86.ActiveCfg = Release|Win32 + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD}.Release|x86.Build.0 = Release|Win32 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|ARM64.Build.0 = Debug|ARM64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|x64.ActiveCfg = Debug|x64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|x64.Build.0 = Debug|x64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|x86.ActiveCfg = Debug|Win32 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Debug|x86.Build.0 = Debug|Win32 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|ARM64.ActiveCfg = Release|ARM64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|ARM64.Build.0 = Release|ARM64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|x64.ActiveCfg = Release|x64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|x64.Build.0 = Release|x64 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|x86.ActiveCfg = Release|Win32 + {DF25E545-00FF-4E64-844C-7DF98991F901}.Release|x86.Build.0 = Release|Win32 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|ARM64.Build.0 = Debug|ARM64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|x64.ActiveCfg = Debug|x64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|x64.Build.0 = Debug|x64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|x86.ActiveCfg = Debug|Win32 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Debug|x86.Build.0 = Debug|Win32 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|ARM64.ActiveCfg = Release|ARM64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|ARM64.Build.0 = Release|ARM64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|x64.ActiveCfg = Release|x64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|x64.Build.0 = Release|x64 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|x86.ActiveCfg = Release|Win32 + {703BE7BA-5B99-4F70-806D-3A259F6A991E}.Release|x86.Build.0 = Release|Win32 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|ARM64.Build.0 = Debug|ARM64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|x64.ActiveCfg = Debug|x64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|x64.Build.0 = Debug|x64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|x86.ActiveCfg = Debug|Win32 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Debug|x86.Build.0 = Debug|Win32 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|ARM64.ActiveCfg = Release|ARM64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|ARM64.Build.0 = Release|ARM64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|x64.ActiveCfg = Release|x64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|x64.Build.0 = Release|x64 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|x86.ActiveCfg = Release|Win32 + {FAFEE2F9-24B0-4AF1-B512-433E9590033F}.Release|x86.Build.0 = Release|Win32 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|ARM64.Build.0 = Debug|ARM64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|x64.ActiveCfg = Debug|x64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|x64.Build.0 = Debug|x64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|x86.ActiveCfg = Debug|Win32 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Debug|x86.Build.0 = Debug|Win32 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|ARM64.ActiveCfg = Release|ARM64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|ARM64.Build.0 = Release|ARM64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|x64.ActiveCfg = Release|x64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|x64.Build.0 = Release|x64 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|x86.ActiveCfg = Release|Win32 + {8245DAD9-D402-4D5C-8F45-32229CD3B263}.Release|x86.Build.0 = Release|Win32 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|ARM64.Build.0 = Debug|ARM64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|x64.ActiveCfg = Debug|x64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|x64.Build.0 = Debug|x64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|x86.ActiveCfg = Debug|Win32 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Debug|x86.Build.0 = Debug|Win32 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|ARM64.ActiveCfg = Release|ARM64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|ARM64.Build.0 = Release|ARM64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x64.ActiveCfg = Release|x64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x64.Build.0 = Release|x64 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x86.ActiveCfg = Release|Win32 + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629}.Release|x86.Build.0 = Release|Win32 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|ARM64.Build.0 = Debug|ARM64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x64.ActiveCfg = Debug|x64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x64.Build.0 = Debug|x64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x86.ActiveCfg = Debug|Win32 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Debug|x86.Build.0 = Debug|Win32 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|ARM64.ActiveCfg = Release|ARM64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|ARM64.Build.0 = Release|ARM64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x64.ActiveCfg = Release|x64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x64.Build.0 = Release|x64 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x86.ActiveCfg = Release|Win32 + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F}.Release|x86.Build.0 = Release|Win32 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|ARM64.Build.0 = Debug|ARM64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x64.ActiveCfg = Debug|x64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x64.Build.0 = Debug|x64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x86.ActiveCfg = Debug|Win32 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Debug|x86.Build.0 = Debug|Win32 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|ARM64.ActiveCfg = Release|ARM64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|ARM64.Build.0 = Release|ARM64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x64.ActiveCfg = Release|x64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x64.Build.0 = Release|x64 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x86.ActiveCfg = Release|Win32 + {CCA63A76-D9FC-4130-9F67-4D97F9770D53}.Release|x86.Build.0 = Release|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|ARM64.Build.0 = Debug|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x64.ActiveCfg = Debug|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x64.Build.0 = Debug|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x86.ActiveCfg = Debug|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Debug|x86.Build.0 = Debug|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|ARM64.ActiveCfg = Release|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|ARM64.Build.0 = Release|ARM64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x64.ActiveCfg = Release|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x64.Build.0 = Release|x64 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x86.ActiveCfg = Release|Win32 + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4}.Release|x86.Build.0 = Release|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|ARM64.Build.0 = Debug|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x64.ActiveCfg = Debug|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x64.Build.0 = Debug|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x86.ActiveCfg = Debug|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Debug|x86.Build.0 = Debug|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|ARM64.ActiveCfg = Release|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|ARM64.Build.0 = Release|ARM64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x64.ActiveCfg = Release|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x64.Build.0 = Release|x64 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x86.ActiveCfg = Release|Win32 + {3384C257-3CFE-4A8F-838C-19DAC5C955DA}.Release|x86.Build.0 = Release|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|ARM64.Build.0 = Debug|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x64.ActiveCfg = Debug|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x64.Build.0 = Debug|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x86.ActiveCfg = Debug|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Debug|x86.Build.0 = Debug|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|ARM64.ActiveCfg = Release|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|ARM64.Build.0 = Release|ARM64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x64.ActiveCfg = Release|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x64.Build.0 = Release|x64 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x86.ActiveCfg = Release|Win32 + {2B140378-125F-4DE9-AC37-2CC1B73D7254}.Release|x86.Build.0 = Release|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|ARM64.Build.0 = Debug|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x64.ActiveCfg = Debug|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x64.Build.0 = Debug|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x86.ActiveCfg = Debug|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Debug|x86.Build.0 = Debug|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|ARM64.ActiveCfg = Release|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|ARM64.Build.0 = Release|ARM64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x64.ActiveCfg = Release|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x64.Build.0 = Release|x64 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x86.ActiveCfg = Release|Win32 + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6}.Release|x86.Build.0 = Release|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|ARM64.Build.0 = Debug|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x64.ActiveCfg = Debug|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x64.Build.0 = Debug|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x86.ActiveCfg = Debug|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Debug|x86.Build.0 = Debug|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|ARM64.ActiveCfg = Release|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|ARM64.Build.0 = Release|ARM64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x64.ActiveCfg = Release|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x64.Build.0 = Release|x64 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x86.ActiveCfg = Release|Win32 + {2AA91EED-2D32-4B09-84A3-53D41EED1005}.Release|x86.Build.0 = Release|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|ARM64.Build.0 = Debug|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x64.ActiveCfg = Debug|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x64.Build.0 = Debug|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x86.ActiveCfg = Debug|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Debug|x86.Build.0 = Debug|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|ARM64.ActiveCfg = Release|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|ARM64.Build.0 = Release|ARM64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x64.ActiveCfg = Release|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x64.Build.0 = Release|x64 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x86.ActiveCfg = Release|Win32 + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F}.Release|x86.Build.0 = Release|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|ARM64.Build.0 = Debug|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|x64.ActiveCfg = Debug|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|x64.Build.0 = Debug|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|x86.ActiveCfg = Debug|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Debug|x86.Build.0 = Debug|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Release|ARM64.ActiveCfg = Release|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Release|ARM64.Build.0 = Release|ARM64 + {921391C6-7626-4212-9928-BC82BC785461}.Release|x64.ActiveCfg = Release|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Release|x64.Build.0 = Release|x64 + {921391C6-7626-4212-9928-BC82BC785461}.Release|x86.ActiveCfg = Release|Win32 + {921391C6-7626-4212-9928-BC82BC785461}.Release|x86.Build.0 = Release|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x64.ActiveCfg = Debug|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x64.Build.0 = Debug|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x86.ActiveCfg = Debug|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Debug|x86.Build.0 = Debug|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|ARM64.Build.0 = Release|ARM64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x64.ActiveCfg = Release|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x64.Build.0 = Release|x64 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x86.ActiveCfg = Release|Win32 + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F}.Release|x86.Build.0 = Release|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|ARM64.Build.0 = Debug|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x64.ActiveCfg = Debug|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x64.Build.0 = Debug|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x86.ActiveCfg = Debug|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Debug|x86.Build.0 = Debug|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|ARM64.ActiveCfg = Release|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|ARM64.Build.0 = Release|ARM64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x64.ActiveCfg = Release|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x64.Build.0 = Release|x64 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x86.ActiveCfg = Release|Win32 + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8}.Release|x86.Build.0 = Release|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|ARM64.Build.0 = Debug|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x64.ActiveCfg = Debug|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x64.Build.0 = Debug|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x86.ActiveCfg = Debug|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Debug|x86.Build.0 = Debug|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|ARM64.ActiveCfg = Release|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|ARM64.Build.0 = Release|ARM64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x64.ActiveCfg = Release|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x64.Build.0 = Release|x64 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x86.ActiveCfg = Release|Win32 + {C54703BF-D68A-480D-BE27-49B62E45D582}.Release|x86.Build.0 = Release|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|ARM64.Build.0 = Debug|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x64.ActiveCfg = Debug|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x64.Build.0 = Debug|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x86.ActiveCfg = Debug|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Debug|x86.Build.0 = Debug|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|ARM64.ActiveCfg = Release|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|ARM64.Build.0 = Release|ARM64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x64.ActiveCfg = Release|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x64.Build.0 = Release|x64 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x86.ActiveCfg = Release|Win32 + {9CD8BCAD-F212-4BCC-BA98-899743CE3279}.Release|x86.Build.0 = Release|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|ARM64.Build.0 = Debug|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.ActiveCfg = Debug|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x64.Build.0 = Debug|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.ActiveCfg = Debug|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Debug|x86.Build.0 = Debug|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.ActiveCfg = Release|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|ARM64.Build.0 = Release|ARM64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.ActiveCfg = Release|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x64.Build.0 = Release|x64 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.ActiveCfg = Release|Win32 + {0981CA28-E4A5-4DF1-987F-A41D09131EFC}.Release|x86.Build.0 = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|ARM64.Build.0 = Debug|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x64.ActiveCfg = Debug|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x64.Build.0 = Debug|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x86.ActiveCfg = Debug|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Debug|x86.Build.0 = Debug|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|ARM64.ActiveCfg = Release|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|ARM64.Build.0 = Release|ARM64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x64.ActiveCfg = Release|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x64.Build.0 = Release|x64 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x86.ActiveCfg = Release|Win32 + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3}.Release|x86.Build.0 = Release|Win32 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|ARM64.Build.0 = Debug|ARM64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|x64.ActiveCfg = Debug|x64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|x64.Build.0 = Debug|x64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|x86.ActiveCfg = Debug|Win32 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Debug|x86.Build.0 = Debug|Win32 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|ARM64.ActiveCfg = Release|ARM64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|ARM64.Build.0 = Release|ARM64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|x64.ActiveCfg = Release|x64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|x64.Build.0 = Release|x64 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|x86.ActiveCfg = Release|Win32 + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4}.Release|x86.Build.0 = Release|Win32 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|ARM64.Build.0 = Debug|ARM64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|x64.ActiveCfg = Debug|x64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|x64.Build.0 = Debug|x64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|x86.ActiveCfg = Debug|Win32 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Debug|x86.Build.0 = Debug|Win32 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|ARM64.ActiveCfg = Release|ARM64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|ARM64.Build.0 = Release|ARM64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|x64.ActiveCfg = Release|x64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|x64.Build.0 = Release|x64 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|x86.ActiveCfg = Release|Win32 + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4}.Release|x86.Build.0 = Release|Win32 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|ARM64.Build.0 = Debug|ARM64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|x64.ActiveCfg = Debug|x64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|x64.Build.0 = Debug|x64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|x86.ActiveCfg = Debug|Win32 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Debug|x86.Build.0 = Debug|Win32 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|ARM64.ActiveCfg = Release|ARM64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|ARM64.Build.0 = Release|ARM64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|x64.ActiveCfg = Release|x64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|x64.Build.0 = Release|x64 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|x86.ActiveCfg = Release|Win32 + {49C67F03-1A56-4F96-B278-39B66EC93678}.Release|x86.Build.0 = Release|Win32 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|ARM64.Build.0 = Debug|ARM64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|x64.ActiveCfg = Debug|x64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|x64.Build.0 = Debug|x64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|x86.ActiveCfg = Debug|Win32 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Debug|x86.Build.0 = Debug|Win32 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|ARM64.ActiveCfg = Release|ARM64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|ARM64.Build.0 = Release|ARM64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|x64.ActiveCfg = Release|x64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|x64.Build.0 = Release|x64 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|x86.ActiveCfg = Release|Win32 + {D496308F-3C3C-40B3-A3ED-EA327D244B3E}.Release|x86.Build.0 = Release|Win32 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|ARM64.Build.0 = Debug|ARM64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|x64.ActiveCfg = Debug|x64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|x64.Build.0 = Debug|x64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|x86.ActiveCfg = Debug|Win32 + {3B27F358-2679-4F38-B297-17B536F580BB}.Debug|x86.Build.0 = Debug|Win32 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release|ARM64.ActiveCfg = Release|ARM64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release|ARM64.Build.0 = Release|ARM64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release|x64.ActiveCfg = Release|x64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release|x64.Build.0 = Release|x64 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release|x86.ActiveCfg = Release|Win32 + {3B27F358-2679-4F38-B297-17B536F580BB}.Release|x86.Build.0 = Release|Win32 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|ARM64.Build.0 = Debug|ARM64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|x64.ActiveCfg = Debug|x64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|x64.Build.0 = Debug|x64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|x86.ActiveCfg = Debug|Win32 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Debug|x86.Build.0 = Debug|Win32 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|ARM64.ActiveCfg = Release|ARM64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|ARM64.Build.0 = Release|ARM64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|x64.ActiveCfg = Release|x64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|x64.Build.0 = Release|x64 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|x86.ActiveCfg = Release|Win32 + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B}.Release|x86.Build.0 = Release|Win32 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|ARM64.Build.0 = Debug|ARM64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|x64.ActiveCfg = Debug|x64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|x64.Build.0 = Debug|x64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|x86.ActiveCfg = Debug|Win32 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Debug|x86.Build.0 = Debug|Win32 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|ARM64.ActiveCfg = Release|ARM64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|ARM64.Build.0 = Release|ARM64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|x64.ActiveCfg = Release|x64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|x64.Build.0 = Release|x64 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|x86.ActiveCfg = Release|Win32 + {19CA0070-B4B2-4394-90B7-D0C259AA35BA}.Release|x86.Build.0 = Release|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|ARM64.Build.0 = Debug|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x64.ActiveCfg = Debug|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x64.Build.0 = Debug|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x86.ActiveCfg = Debug|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Debug|x86.Build.0 = Debug|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|ARM64.ActiveCfg = Release|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|ARM64.Build.0 = Release|ARM64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x64.ActiveCfg = Release|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x64.Build.0 = Release|x64 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x86.ActiveCfg = Release|Win32 + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E}.Release|x86.Build.0 = Release|Win32 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|ARM64.Build.0 = Debug|ARM64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|x64.ActiveCfg = Debug|x64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|x64.Build.0 = Debug|x64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|x86.ActiveCfg = Debug|Win32 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Debug|x86.Build.0 = Debug|Win32 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|ARM64.ActiveCfg = Release|ARM64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|ARM64.Build.0 = Release|ARM64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|x64.ActiveCfg = Release|x64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|x64.Build.0 = Release|x64 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|x86.ActiveCfg = Release|Win32 + {9DB1F875-6E65-4195-B23F-ED8095C0B99C}.Release|x86.Build.0 = Release|Win32 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|ARM64.Build.0 = Debug|ARM64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|x64.ActiveCfg = Debug|x64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|x64.Build.0 = Debug|x64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|x86.ActiveCfg = Debug|Win32 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Debug|x86.Build.0 = Debug|Win32 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|ARM64.ActiveCfg = Release|ARM64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|ARM64.Build.0 = Release|ARM64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|x64.ActiveCfg = Release|x64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|x64.Build.0 = Release|x64 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|x86.ActiveCfg = Release|Win32 + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F}.Release|x86.Build.0 = Release|Win32 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|ARM64.Build.0 = Debug|ARM64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|x64.ActiveCfg = Debug|x64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|x64.Build.0 = Debug|x64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|x86.ActiveCfg = Debug|Win32 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Debug|x86.Build.0 = Debug|Win32 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|ARM64.ActiveCfg = Release|ARM64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|ARM64.Build.0 = Release|ARM64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|x64.ActiveCfg = Release|x64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|x64.Build.0 = Release|x64 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|x86.ActiveCfg = Release|Win32 + {8E132D5A-2C00-48D0-8747-97E41356F26F}.Release|x86.Build.0 = Release|Win32 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|ARM64.Build.0 = Debug|ARM64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|x64.ActiveCfg = Debug|x64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|x64.Build.0 = Debug|x64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|x86.ActiveCfg = Debug|Win32 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Debug|x86.Build.0 = Debug|Win32 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|ARM64.ActiveCfg = Release|ARM64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|ARM64.Build.0 = Release|ARM64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|x64.ActiveCfg = Release|x64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|x64.Build.0 = Release|x64 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|x86.ActiveCfg = Release|Win32 + {A4662163-83E7-4309-8CAA-B0BF13655FE6}.Release|x86.Build.0 = Release|Win32 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|ARM64.Build.0 = Debug|ARM64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|x64.ActiveCfg = Debug|x64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|x64.Build.0 = Debug|x64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|x86.ActiveCfg = Debug|Win32 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Debug|x86.Build.0 = Debug|Win32 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|ARM64.ActiveCfg = Release|ARM64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|ARM64.Build.0 = Release|ARM64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|x64.ActiveCfg = Release|x64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|x64.Build.0 = Release|x64 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|x86.ActiveCfg = Release|Win32 + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20}.Release|x86.Build.0 = Release|Win32 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|ARM64.Build.0 = Debug|ARM64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|x64.ActiveCfg = Debug|x64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|x64.Build.0 = Debug|x64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|x86.ActiveCfg = Debug|Win32 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Debug|x86.Build.0 = Debug|Win32 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|ARM64.ActiveCfg = Release|ARM64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|ARM64.Build.0 = Release|ARM64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x64.ActiveCfg = Release|x64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x64.Build.0 = Release|x64 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x86.ActiveCfg = Release|Win32 + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x86.Build.0 = Release|Win32 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|ARM64.Build.0 = Debug|ARM64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x64.ActiveCfg = Debug|x64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x64.Build.0 = Debug|x64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x86.ActiveCfg = Debug|Win32 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x86.Build.0 = Debug|Win32 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|ARM64.ActiveCfg = Release|ARM64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|ARM64.Build.0 = Release|ARM64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x64.ActiveCfg = Release|x64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x64.Build.0 = Release|x64 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x86.ActiveCfg = Release|Win32 + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x86.Build.0 = Release|Win32 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|ARM64.Build.0 = Debug|ARM64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|x64.ActiveCfg = Debug|x64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|x64.Build.0 = Debug|x64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|x86.ActiveCfg = Debug|Win32 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug|x86.Build.0 = Debug|Win32 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|ARM64.ActiveCfg = Release|ARM64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|ARM64.Build.0 = Release|ARM64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|x64.ActiveCfg = Release|x64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|x64.Build.0 = Release|x64 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|x86.ActiveCfg = Release|Win32 + {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Release|x86.Build.0 = Release|Win32 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|ARM64.Build.0 = Debug|ARM64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|x64.ActiveCfg = Debug|x64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|x64.Build.0 = Debug|x64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|x86.ActiveCfg = Debug|Win32 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Debug|x86.Build.0 = Debug|Win32 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|ARM64.ActiveCfg = Release|ARM64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|ARM64.Build.0 = Release|ARM64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|x64.ActiveCfg = Release|x64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|x64.Build.0 = Release|x64 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|x86.ActiveCfg = Release|Win32 + {DFB40A10-F8B7-412A-BCC3-5EE49294D816}.Release|x86.Build.0 = Release|Win32 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|ARM64.Build.0 = Debug|ARM64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|x64.ActiveCfg = Debug|x64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|x64.Build.0 = Debug|x64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|x86.ActiveCfg = Debug|Win32 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Debug|x86.Build.0 = Debug|Win32 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|ARM64.ActiveCfg = Release|ARM64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|ARM64.Build.0 = Release|ARM64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|x64.ActiveCfg = Release|x64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|x64.Build.0 = Release|x64 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|x86.ActiveCfg = Release|Win32 + {BB58A5FB-1A35-4471-86D0-A5189EC541B3}.Release|x86.Build.0 = Release|Win32 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|ARM64.Build.0 = Debug|ARM64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|x64.ActiveCfg = Debug|x64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|x64.Build.0 = Debug|x64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|x86.ActiveCfg = Debug|Win32 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Debug|x86.Build.0 = Debug|Win32 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|ARM64.ActiveCfg = Release|ARM64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|ARM64.Build.0 = Release|ARM64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|x64.ActiveCfg = Release|x64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|x64.Build.0 = Release|x64 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|x86.ActiveCfg = Release|Win32 + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A}.Release|x86.Build.0 = Release|Win32 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|ARM64.Build.0 = Debug|ARM64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|x64.ActiveCfg = Debug|x64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|x64.Build.0 = Debug|x64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|x86.ActiveCfg = Debug|Win32 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Debug|x86.Build.0 = Debug|Win32 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|ARM64.ActiveCfg = Release|ARM64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|ARM64.Build.0 = Release|ARM64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|x64.ActiveCfg = Release|x64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|x64.Build.0 = Release|x64 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|x86.ActiveCfg = Release|Win32 + {7467E9AE-844F-444D-8A3F-17397544BA21}.Release|x86.Build.0 = Release|Win32 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|ARM64.Build.0 = Debug|ARM64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|x64.ActiveCfg = Debug|x64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|x64.Build.0 = Debug|x64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|x86.ActiveCfg = Debug|Win32 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Debug|x86.Build.0 = Debug|Win32 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|ARM64.ActiveCfg = Release|ARM64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|ARM64.Build.0 = Release|ARM64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|x64.ActiveCfg = Release|x64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|x64.Build.0 = Release|x64 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|x86.ActiveCfg = Release|Win32 + {497FDF54-9762-4048-A833-61CC3980A0FB}.Release|x86.Build.0 = Release|Win32 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|ARM64.Build.0 = Debug|ARM64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|x64.ActiveCfg = Debug|x64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|x64.Build.0 = Debug|x64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|x86.ActiveCfg = Debug|Win32 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Debug|x86.Build.0 = Debug|Win32 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|ARM64.ActiveCfg = Release|ARM64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|ARM64.Build.0 = Release|ARM64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|x64.ActiveCfg = Release|x64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|x64.Build.0 = Release|x64 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|x86.ActiveCfg = Release|Win32 + {29B00F47-BE91-4A1F-B87D-B1302F038316}.Release|x86.Build.0 = Release|Win32 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|ARM64.Build.0 = Debug|ARM64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|x64.ActiveCfg = Debug|x64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|x64.Build.0 = Debug|x64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|x86.ActiveCfg = Debug|Win32 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Debug|x86.Build.0 = Debug|Win32 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|ARM64.ActiveCfg = Release|ARM64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|ARM64.Build.0 = Release|ARM64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|x64.ActiveCfg = Release|x64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|x64.Build.0 = Release|x64 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|x86.ActiveCfg = Release|Win32 + {124935CC-73BB-489E-92E8-4F922A85DB5D}.Release|x86.Build.0 = Release|Win32 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|ARM64.Build.0 = Debug|ARM64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|x64.ActiveCfg = Debug|x64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|x64.Build.0 = Debug|x64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|x86.ActiveCfg = Debug|Win32 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Debug|x86.Build.0 = Debug|Win32 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|ARM64.ActiveCfg = Release|ARM64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|ARM64.Build.0 = Release|ARM64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|x64.ActiveCfg = Release|x64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|x64.Build.0 = Release|x64 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|x86.ActiveCfg = Release|Win32 + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F}.Release|x86.Build.0 = Release|Win32 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|ARM64.Build.0 = Debug|ARM64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|x64.ActiveCfg = Debug|x64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|x64.Build.0 = Debug|x64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|x86.ActiveCfg = Debug|Win32 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Debug|x86.Build.0 = Debug|Win32 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|ARM64.ActiveCfg = Release|ARM64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|ARM64.Build.0 = Release|ARM64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|x64.ActiveCfg = Release|x64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|x64.Build.0 = Release|x64 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|x86.ActiveCfg = Release|Win32 + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2}.Release|x86.Build.0 = Release|Win32 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|ARM64.Build.0 = Debug|ARM64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|x64.ActiveCfg = Debug|x64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|x64.Build.0 = Debug|x64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|x86.ActiveCfg = Debug|Win32 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Debug|x86.Build.0 = Debug|Win32 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|ARM64.ActiveCfg = Release|ARM64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|ARM64.Build.0 = Release|ARM64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|x64.ActiveCfg = Release|x64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|x64.Build.0 = Release|x64 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|x86.ActiveCfg = Release|Win32 + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91}.Release|x86.Build.0 = Release|Win32 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|ARM64.Build.0 = Debug|ARM64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|x64.ActiveCfg = Debug|x64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|x64.Build.0 = Debug|x64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|x86.ActiveCfg = Debug|Win32 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Debug|x86.Build.0 = Debug|Win32 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|ARM64.ActiveCfg = Release|ARM64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|ARM64.Build.0 = Release|ARM64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|x64.ActiveCfg = Release|x64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|x64.Build.0 = Release|x64 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|x86.ActiveCfg = Release|Win32 + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F}.Release|x86.Build.0 = Release|Win32 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|ARM64.Build.0 = Debug|ARM64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|x64.ActiveCfg = Debug|x64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|x64.Build.0 = Debug|x64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|x86.ActiveCfg = Debug|Win32 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Debug|x86.Build.0 = Debug|Win32 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|ARM64.ActiveCfg = Release|ARM64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|ARM64.Build.0 = Release|ARM64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|x64.ActiveCfg = Release|x64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|x64.Build.0 = Release|x64 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|x86.ActiveCfg = Release|Win32 + {9DE2FC01-A839-4F89-8319-9071D4C54821}.Release|x86.Build.0 = Release|Win32 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|ARM64.Build.0 = Debug|ARM64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|x64.ActiveCfg = Debug|x64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|x64.Build.0 = Debug|x64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|x86.ActiveCfg = Debug|Win32 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Debug|x86.Build.0 = Debug|Win32 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|ARM64.ActiveCfg = Release|ARM64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|ARM64.Build.0 = Release|ARM64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|x64.ActiveCfg = Release|x64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|x64.Build.0 = Release|x64 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|x86.ActiveCfg = Release|Win32 + {2F578155-D51F-4C03-AB7F-5C5122CA46CC}.Release|x86.Build.0 = Release|Win32 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|ARM64.Build.0 = Debug|ARM64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|x64.ActiveCfg = Debug|x64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|x64.Build.0 = Debug|x64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|x86.ActiveCfg = Debug|Win32 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Debug|x86.Build.0 = Debug|Win32 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|ARM64.ActiveCfg = Release|ARM64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|ARM64.Build.0 = Release|ARM64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|x64.ActiveCfg = Release|x64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|x64.Build.0 = Release|x64 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|x86.ActiveCfg = Release|Win32 + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6}.Release|x86.Build.0 = Release|Win32 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|ARM64.Build.0 = Debug|ARM64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|x64.ActiveCfg = Debug|x64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|x64.Build.0 = Debug|x64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|x86.ActiveCfg = Debug|Win32 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Debug|x86.Build.0 = Debug|Win32 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|ARM64.ActiveCfg = Release|ARM64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|ARM64.Build.0 = Release|ARM64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|x64.ActiveCfg = Release|x64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|x64.Build.0 = Release|x64 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|x86.ActiveCfg = Release|Win32 + {84DE22BB-C25F-425C-A7FE-0120CF107B83}.Release|x86.Build.0 = Release|Win32 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|ARM64.Build.0 = Debug|ARM64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|x64.ActiveCfg = Debug|x64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|x64.Build.0 = Debug|x64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|x86.ActiveCfg = Debug|Win32 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Debug|x86.Build.0 = Debug|Win32 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|ARM64.ActiveCfg = Release|ARM64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|ARM64.Build.0 = Release|ARM64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|x64.ActiveCfg = Release|x64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|x64.Build.0 = Release|x64 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|x86.ActiveCfg = Release|Win32 + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65}.Release|x86.Build.0 = Release|Win32 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|ARM64.Build.0 = Debug|ARM64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|x64.ActiveCfg = Debug|x64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|x64.Build.0 = Debug|x64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|x86.ActiveCfg = Debug|Win32 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Debug|x86.Build.0 = Debug|Win32 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|ARM64.ActiveCfg = Release|ARM64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|ARM64.Build.0 = Release|ARM64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|x64.ActiveCfg = Release|x64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|x64.Build.0 = Release|x64 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|x86.ActiveCfg = Release|Win32 + {B7FDD40F-DDA4-468E-9C40-EEB175964A26}.Release|x86.Build.0 = Release|Win32 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|ARM64.Build.0 = Debug|ARM64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|x64.ActiveCfg = Debug|x64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|x64.Build.0 = Debug|x64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|x86.ActiveCfg = Debug|Win32 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Debug|x86.Build.0 = Debug|Win32 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|ARM64.ActiveCfg = Release|ARM64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|ARM64.Build.0 = Release|ARM64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|x64.ActiveCfg = Release|x64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|x64.Build.0 = Release|x64 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|x86.ActiveCfg = Release|Win32 + {028F0967-B253-45DA-B1C4-FACCE45D0D8D}.Release|x86.Build.0 = Release|Win32 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|ARM64.Build.0 = Debug|ARM64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|x64.ActiveCfg = Debug|x64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|x64.Build.0 = Debug|x64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|x86.ActiveCfg = Debug|Win32 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Debug|x86.Build.0 = Debug|Win32 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|ARM64.ActiveCfg = Release|ARM64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|ARM64.Build.0 = Release|ARM64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|x64.ActiveCfg = Release|x64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|x64.Build.0 = Release|x64 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|x86.ActiveCfg = Release|Win32 + {666346D7-C84B-498D-AE17-53B20C62DB1A}.Release|x86.Build.0 = Release|Win32 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|ARM64.Build.0 = Debug|ARM64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|x64.ActiveCfg = Debug|x64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|x64.Build.0 = Debug|x64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|x86.ActiveCfg = Debug|Win32 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Debug|x86.Build.0 = Debug|Win32 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|ARM64.ActiveCfg = Release|ARM64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|ARM64.Build.0 = Release|ARM64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|x64.ActiveCfg = Release|x64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|x64.Build.0 = Release|x64 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|x86.ActiveCfg = Release|Win32 + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91}.Release|x86.Build.0 = Release|Win32 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|ARM64.Build.0 = Debug|ARM64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|x64.ActiveCfg = Debug|x64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|x64.Build.0 = Debug|x64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|x86.ActiveCfg = Debug|Win32 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Debug|x86.Build.0 = Debug|Win32 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|ARM64.ActiveCfg = Release|ARM64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|ARM64.Build.0 = Release|ARM64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|x64.ActiveCfg = Release|x64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|x64.Build.0 = Release|x64 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|x86.ActiveCfg = Release|Win32 + {6C897101-BE52-4387-8AA2-062123A76BA1}.Release|x86.Build.0 = Release|Win32 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|ARM64.Build.0 = Debug|ARM64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|x64.ActiveCfg = Debug|x64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|x64.Build.0 = Debug|x64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|x86.ActiveCfg = Debug|Win32 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Debug|x86.Build.0 = Debug|Win32 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|ARM64.ActiveCfg = Release|ARM64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|ARM64.Build.0 = Release|ARM64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|x64.ActiveCfg = Release|x64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|x64.Build.0 = Release|x64 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|x86.ActiveCfg = Release|Win32 + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD}.Release|x86.Build.0 = Release|Win32 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|ARM64.Build.0 = Debug|ARM64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|x64.ActiveCfg = Debug|x64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|x64.Build.0 = Debug|x64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|x86.ActiveCfg = Debug|Win32 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Debug|x86.Build.0 = Debug|Win32 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|ARM64.ActiveCfg = Release|ARM64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|ARM64.Build.0 = Release|ARM64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|x64.ActiveCfg = Release|x64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|x64.Build.0 = Release|x64 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|x86.ActiveCfg = Release|Win32 + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68}.Release|x86.Build.0 = Release|Win32 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|ARM64.Build.0 = Debug|ARM64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|x64.ActiveCfg = Debug|x64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|x64.Build.0 = Debug|x64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|x86.ActiveCfg = Debug|Win32 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Debug|x86.Build.0 = Debug|Win32 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|ARM64.ActiveCfg = Release|ARM64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|ARM64.Build.0 = Release|ARM64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|x64.ActiveCfg = Release|x64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|x64.Build.0 = Release|x64 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|x86.ActiveCfg = Release|Win32 + {30011884-25EE-42C9-BB15-888CAFB1AA6E}.Release|x86.Build.0 = Release|Win32 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|ARM64.Build.0 = Debug|ARM64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|x64.ActiveCfg = Debug|x64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|x64.Build.0 = Debug|x64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|x86.ActiveCfg = Debug|Win32 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Debug|x86.Build.0 = Debug|Win32 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|ARM64.ActiveCfg = Release|ARM64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|ARM64.Build.0 = Release|ARM64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|x64.ActiveCfg = Release|x64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|x64.Build.0 = Release|x64 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|x86.ActiveCfg = Release|Win32 + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B}.Release|x86.Build.0 = Release|Win32 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|ARM64.Build.0 = Debug|ARM64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|x64.ActiveCfg = Debug|x64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|x64.Build.0 = Debug|x64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|x86.ActiveCfg = Debug|Win32 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Debug|x86.Build.0 = Debug|Win32 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|ARM64.ActiveCfg = Release|ARM64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|ARM64.Build.0 = Release|ARM64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|x64.ActiveCfg = Release|x64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|x64.Build.0 = Release|x64 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|x86.ActiveCfg = Release|Win32 + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F}.Release|x86.Build.0 = Release|Win32 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|ARM64.Build.0 = Debug|ARM64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|x64.ActiveCfg = Debug|x64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|x64.Build.0 = Debug|x64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|x86.ActiveCfg = Debug|Win32 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Debug|x86.Build.0 = Debug|Win32 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|ARM64.ActiveCfg = Release|ARM64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|ARM64.Build.0 = Release|ARM64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x64.ActiveCfg = Release|x64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x64.Build.0 = Release|x64 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x86.ActiveCfg = Release|Win32 + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F}.Release|x86.Build.0 = Release|Win32 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|ARM64.Build.0 = Debug|ARM64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|x64.ActiveCfg = Debug|x64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|x64.Build.0 = Debug|x64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|x86.ActiveCfg = Debug|Win32 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Debug|x86.Build.0 = Debug|Win32 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|ARM64.ActiveCfg = Release|ARM64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|ARM64.Build.0 = Release|ARM64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|x64.ActiveCfg = Release|x64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|x64.Build.0 = Release|x64 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|x86.ActiveCfg = Release|Win32 + {0653AFAF-5578-4C02-AF29-0C873E7634AE}.Release|x86.Build.0 = Release|Win32 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|ARM64.Build.0 = Debug|ARM64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|x64.ActiveCfg = Debug|x64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|x64.Build.0 = Debug|x64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|x86.ActiveCfg = Debug|Win32 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Debug|x86.Build.0 = Debug|Win32 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|ARM64.ActiveCfg = Release|ARM64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|ARM64.Build.0 = Release|ARM64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|x64.ActiveCfg = Release|x64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|x64.Build.0 = Release|x64 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|x86.ActiveCfg = Release|Win32 + {071E64F3-1396-4A97-97CA-98CAC059B168}.Release|x86.Build.0 = Release|Win32 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|ARM64.Build.0 = Debug|ARM64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|x64.ActiveCfg = Debug|x64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|x64.Build.0 = Debug|x64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|x86.ActiveCfg = Debug|Win32 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Debug|x86.Build.0 = Debug|Win32 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|ARM64.ActiveCfg = Release|ARM64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|ARM64.Build.0 = Release|ARM64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|x64.ActiveCfg = Release|x64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|x64.Build.0 = Release|x64 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|x86.ActiveCfg = Release|Win32 + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC}.Release|x86.Build.0 = Release|Win32 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|ARM64.Build.0 = Debug|ARM64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|x64.ActiveCfg = Debug|x64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|x64.Build.0 = Debug|x64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|x86.ActiveCfg = Debug|Win32 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Debug|x86.Build.0 = Debug|Win32 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|ARM64.ActiveCfg = Release|ARM64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|ARM64.Build.0 = Release|ARM64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|x64.ActiveCfg = Release|x64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|x64.Build.0 = Release|x64 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|x86.ActiveCfg = Release|Win32 + {1F4722E7-F78E-413F-A106-D3490211EA57}.Release|x86.Build.0 = Release|Win32 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|ARM64.Build.0 = Debug|ARM64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|x64.ActiveCfg = Debug|x64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|x64.Build.0 = Debug|x64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|x86.ActiveCfg = Debug|Win32 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Debug|x86.Build.0 = Debug|Win32 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|ARM64.ActiveCfg = Release|ARM64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|ARM64.Build.0 = Release|ARM64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|x64.ActiveCfg = Release|x64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|x64.Build.0 = Release|x64 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|x86.ActiveCfg = Release|Win32 + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68}.Release|x86.Build.0 = Release|Win32 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|ARM64.Build.0 = Debug|ARM64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|x64.ActiveCfg = Debug|x64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|x64.Build.0 = Debug|x64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|x86.ActiveCfg = Debug|Win32 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Debug|x86.Build.0 = Debug|Win32 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|ARM64.ActiveCfg = Release|ARM64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|ARM64.Build.0 = Release|ARM64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|x64.ActiveCfg = Release|x64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|x64.Build.0 = Release|x64 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|x86.ActiveCfg = Release|Win32 + {DC163251-16C3-4B72-B965-ACDBA0F02BD1}.Release|x86.Build.0 = Release|Win32 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|ARM64.Build.0 = Debug|ARM64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|x64.ActiveCfg = Debug|x64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|x64.Build.0 = Debug|x64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|x86.ActiveCfg = Debug|Win32 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Debug|x86.Build.0 = Debug|Win32 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|ARM64.ActiveCfg = Release|ARM64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|ARM64.Build.0 = Release|ARM64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|x64.ActiveCfg = Release|x64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|x64.Build.0 = Release|x64 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|x86.ActiveCfg = Release|Win32 + {D35D2FDA-B53F-4F70-81CA-24D95812B89C}.Release|x86.Build.0 = Release|Win32 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|ARM64.Build.0 = Debug|ARM64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|x64.ActiveCfg = Debug|x64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|x64.Build.0 = Debug|x64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|x86.ActiveCfg = Debug|Win32 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Debug|x86.Build.0 = Debug|Win32 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|ARM64.ActiveCfg = Release|ARM64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|ARM64.Build.0 = Release|ARM64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x64.ActiveCfg = Release|x64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x64.Build.0 = Release|x64 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x86.ActiveCfg = Release|Win32 + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x86.Build.0 = Release|Win32 + EndGlobalSection + GlobalSection(SolutionProperties) = preSolution + HideSolutionNode = FALSE + EndGlobalSection + GlobalSection(NestedProjects) = preSolution + {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {278D8859-20B1-428F-8448-064F46E1F021} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {CC132A4D-D081-4C26-BFB9-AB11984054F8} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {E9D708A5-9C1F-4B84-A795-C5F191801762} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} + {0981CA98-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {103B292B-049B-4B15-85A1-9F902840DB2C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {0C2D2F82-AE67-400C-B19C-8C9B957B132A} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {E6784F91-4E4E-4956-A079-73FAB1AC7BE6} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {BFB22AB2-041B-4A1B-80C0-1D4BE410C8A9} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {93A1F656-0D29-4C5E-B140-11F23FF5D6AB} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {F81C5819-85B6-4D2E-B6DC-104A7634461B} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {66CC5B13-881A-412F-8C51-746622A91C5A} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {CB75B7C9-4E00-43B8-B2A9-9ACB4FC40F9B} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {557138B0-7BE2-4392-B2E2-B45734031A62} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {9EED87BB-527F-4D05-9384-6D16CFD627A8} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {6D1CA2F1-7FCA-4249-9220-075C2DF4F965} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {946A1700-C7AA-46F0-AEF2-67C98B5722AC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {FD193822-3D5C-4161-A147-884C2ABDE483} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {20AD0AC9-9159-4744-99CC-6AC5779D6B87} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {0199E349-0701-40BC-8A7F-06A54FFA3E7C} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {BCB71111-8505-4B35-8CEF-EC6115DC9D4D} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {8F19E3DA-8929-4000-87B5-3CA6929636CC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {51A00565-5787-4911-9CC0-28403AA4909D} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {92B64AE7-D773-4F05-89F1-CE59BBF4F053} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {A2BA5E5C-FDB9-4939-B0B5-2B753A5E33D3} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {A643BB06-735D-47F3-BFE7-B6D3C36F7097} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {6B8BAAF1-75C7-4C68-80B8-0E2A9EABBD9A} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {B332DCA8-3599-4A99-917A-82261BDC27AC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {59089B0C-AAB4-4532-B294-44DEAE7178B7} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {C298876B-6C12-4EA4-903B-33450BCD9884} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {83F586FA-C801-4979-ACCA-006BD628CC88} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {86CBE96B-F5FE-483C-BA4A-DC9B1D43AF22} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {FF2970AE-E2E9-405F-B321-D523A1BD44A0} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {79417CE2-FEEB-42F0-BC53-62D5267B19B1} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {AFDDE100-2D36-4749-817D-12E54C56312F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {B7812167-50FB-4934-996F-DF6FE4CBBFDF} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {39DB56C7-05F8-492C-A8D4-F19E40FECB59} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {82F3D34B-8DB2-4C6A-98B1-132245DD9D99} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {CBD6C0F8-8200-4E9A-9D7C-6505A2AA4A62} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {14BA7F98-02CC-4648-9236-676BFF9458AF} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {0859A973-E4FE-4688-8D16-0253163FDE24} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {F3412853-2B6A-4334-8CF2-B796CDAE0850} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {BE097E8F-B6F3-45DC-8A27-E0EBC31AB912} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {D03F2C82-9553-4AFA-8F49-9234009122B6} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {FE232CA5-6C0D-4ADF-9A21-775D4DC048D3} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {A53CCF42-A972-478F-9336-0F618B3EC06A} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {0037A3CD-4F50-48B2-9AC3-5A0D1D16D2CA} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {870723DD-945A-4136-B65B-4AF3BF85369C} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {EA6488AD-445B-4835-87FB-EBC9E2EDAF97} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {E07B6DBE-3358-4BA0-AABF-CDD8F96AECF0} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {472BCBDC-62E0-441D-B2FD-0EE0FC6CEEB4} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {589C8E9B-0BB3-4D6D-A70C-0A28E469F20E} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {3AD868E6-8355-4F29-B5ED-7DE94AD786E7} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {2B78CF0A-5403-45E2-99BD-493F1679BCDB} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {0AB968E0-E993-45CE-8875-7453C96DF583} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {25923141-9859-4AFE-8168-0DF78322FC63} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {7E855020-7FA4-482D-B510-2E709354FE8B} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {9782E0C8-2BD3-4F67-B420-21CF19CA2435} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {9F4135E3-9814-452C-9B35-0EFBCD792B49} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {C45343E6-DAB6-4F3A-A00A-8BED71A098BE} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {B19DD336-538E-4091-A559-EAA717FEC899} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {0BF60202-43F7-48E9-8717-D31E56FA5BE0} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {4E863E5B-0B95-43BE-8D4F-B9EB6C394FEC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {6D75CD88-1A03-4955-B8C7-ACFC3742154F} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {8DD0EB7E-668E-452D-91D7-906C64A9C8AC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {F6FD9C75-AAA7-48C9-B19D-FD37C8FB9B7E} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {1FE8758D-7E8A-41F3-9B6D-FD50E9A2A03D} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {25BCB876-B60A-499B-9046-E9801CFD7780} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {56FB0A45-145F-4EAE-B2C8-E5833E682D8F} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {2BB0C1D4-9298-45AC-B244-67A99769A292} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {99A40FC5-9DB0-4B80-8D97-867EF00FA2CB} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {81064BCE-EEC1-43B0-9912-F05F2B54B11A} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {31B41997-3890-45E3-93FE-C57B363E9C0D} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {D550AB93-DF31-4B76-873F-F075018352F4} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {8CF3F7BA-4C99-43EB-B4F1-7CA346817D0A} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {F90FCDC5-EE14-4B89-96DB-4392E28F34AF} = {278D8859-20B1-428F-8448-064F46E1F021} + {93A864C9-93B7-4E5C-ACE7-E8FC5F9EFF79} = {278D8859-20B1-428F-8448-064F46E1F021} + {56E68E37-B3FC-4799-91AF-0CA10B6D55A5} = {278D8859-20B1-428F-8448-064F46E1F021} + {03E7018C-44A2-4C46-9CE7-F2A135A2692B} = {278D8859-20B1-428F-8448-064F46E1F021} + {F3F6FE4D-9D9E-451A-B0BA-81456104B672} = {278D8859-20B1-428F-8448-064F46E1F021} + {C27794B5-1293-4EA7-BC0E-0F18E6325539} = {278D8859-20B1-428F-8448-064F46E1F021} + {02F41059-12A2-4A96-8D77-07EFE4B108FD} = {278D8859-20B1-428F-8448-064F46E1F021} + {B774E0B9-9514-4E88-975F-4EB6C3B8D519} = {278D8859-20B1-428F-8448-064F46E1F021} + {D91367C2-2189-4859-A7FE-D2CAB84FA15C} = {278D8859-20B1-428F-8448-064F46E1F021} + {33459B4E-1839-4856-BF6B-22480D11FE31} = {278D8859-20B1-428F-8448-064F46E1F021} + {48871156-181A-475A-BD8D-200086A09675} = {278D8859-20B1-428F-8448-064F46E1F021} + {C4416DA1-9E62-46BA-9CD3-F8963C79E1A1} = {278D8859-20B1-428F-8448-064F46E1F021} + {1C49E35A-2838-49D9-9D5F-4B8134960EF6} = {278D8859-20B1-428F-8448-064F46E1F021} + {F91142E2-A999-47F0-9E74-38C1E2930EBE} = {278D8859-20B1-428F-8448-064F46E1F021} + {1EDD4BCF-345C-4065-8CBD-7285224293C3} = {278D8859-20B1-428F-8448-064F46E1F021} + {A6B2A11B-0669-4AF5-A025-8DD02DBBE5EA} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {B176BB4A-CA31-4E2A-B790-3EA0ED2EE870} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {D08AA2A0-2F94-4BF5-B42D-E92450F03FD1} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {4A7D0ECA-D7CC-4E66-B741-C92E9C1B42FF} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {CF3755C4-937D-4ABF-B7B3-95140808717F} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {D34939FE-8873-4C53-8D6C-74DED78EA3C4} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {D408A730-363A-4ABF-BCEF-5D63DCC66042} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {F532AFBC-9E62-4A89-BB99-1044E4B2D8ED} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {52FB7463-C128-42AF-A02F-78F48473EA9A} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {7381D91E-5C72-48F0-AAB4-95C9B10D7484} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {D36EC43E-B31F-4CF4-8285-93A7A9D90189} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {274C0319-7E1E-4188-936B-8DF3331230B3} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {41BBCC10-CFDE-48A1-B2E0-A0EC6A668629} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {600C3D4F-0670-4DB4-B30F-520A729053B5} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {11F33A39-74B7-4018-B5F9-CC285A673A8F} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {A6F5E35E-B4A7-41B3-853A-75558E6E0715} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {291B4975-8EFF-4C7C-8AF3-44A77B8491B8} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {FDE6080B-E203-4066-910D-AD0302566008} = {E9D708A5-9C1F-4B84-A795-C5F191801762} + {E1B6D565-9D7C-46B7-9202-ECF54974DE50} = {E9D708A5-9C1F-4B84-A795-C5F191801762} + {C8765523-58F8-4C8E-9914-693396F6F0FF} = {E9D708A5-9C1F-4B84-A795-C5F191801762} + {2F1B955B-275E-4D8E-8864-06FEC44D7912} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {F2DB2E59-76BF-4D81-859A-AFC289C046C0} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {3FE7E9B6-49AC-4246-A789-28DB4644567B} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {EBBBF4A0-2DA2-4DE6-B4FE-C6654A2417A0} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {191A5289-BA65-4638-A215-C521F0187313} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {8B1AF423-00F1-4924-AC54-F77D402D2AC9} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {658A1B85-554E-4A5D-973A-FFE592CDD5F2} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {07CA51AD-72AE-46A2-AAED-DC3E3F807976} = {E9D708A5-9C1F-4B84-A795-C5F191801762} + {27B110CC-43C0-400A-89D9-245E681647D7} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {1DE84812-E143-4C4B-A61D-9267AAD55401} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {4A87569C-4BD3-4113-B4B9-573D65B3D3F8} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {769FF0C1-4424-4FA3-BC44-D7A7DA312A06} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {6D9E00D8-2893-45E4-9363-3F7F61D416BD} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {70B35F59-AFC2-4D8F-8833-5314D2047A81} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {DFDE29A7-4F54-455D-B20B-D2BF79D3B3F7} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {3755E9F4-CB48-4EC3-B561-3B85964EBDEF} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {F81C5819-85B4-4D2E-B6DC-104A7634461B} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {CC62F7DB-D089-4677-8575-CAB7A7815C43} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {7AF97D44-707E-48DC-81CB-C9D8D7C9ED26} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {A4B0D971-3CD6-41C9-8AB2-055D25A33373} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {15CDD310-6980-42A6-8082-3A6B7730D13F} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {71DB4284-5B1C-4E86-9AF5-B91542D44A6F} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {4B39E5FC-0A96-4057-9AA5-8D5A52880DA7} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {88DE5AD6-0074-4A5A-BE22-C840153E35D5} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {A546E75A-5242-46E6-9A9E-6C91554EAB84} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {EFA150D4-F93B-4D7D-A69C-9E8B4663BECD} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {DF25E545-00FF-4E64-844C-7DF98991F901} = {278D8859-20B1-428F-8448-064F46E1F021} + {703BE7BA-5B99-4F70-806D-3A259F6A991E} = {278D8859-20B1-428F-8448-064F46E1F021} + {FAFEE2F9-24B0-4AF1-B512-433E9590033F} = {278D8859-20B1-428F-8448-064F46E1F021} + {8245DAD9-D402-4D5C-8F45-32229CD3B263} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {41BBCC10-6FDE-48A1-B2E0-A0EC6A668629} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {3A7FE53D-35F7-49DC-9C9A-A5204A53523F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {CCA63A76-D9FC-4130-9F67-4D97F9770D53} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {D3493FFE-8873-4C53-8F6C-74DEF78EA3C4} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {3384C257-3CFE-4A8F-838C-19DAC5C955DA} = {278D8859-20B1-428F-8448-064F46E1F021} + {2B140378-125F-4DE9-AC37-2CC1B73D7254} = {278D8859-20B1-428F-8448-064F46E1F021} + {F4C55B99-E1C5-496A-8AC2-40188C38F4F6} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {2AA91EED-2D32-4B09-84A3-53D41EED1005} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {EC0910F6-8D66-4509-BF57-A5EE7AE9485F} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {921391C6-7626-4212-9928-BC82BC785461} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {6B8C5711-6AB4-4023-9FDD-E9D976E8D18F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {4DF6D5E4-6796-4257-B466-BCD62DEBBCF8} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {C54703BF-D68A-480D-BE27-49B62E45D582} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {9CD8BCAD-F212-4BCC-BA98-899743CE3279} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {0981CA28-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {6777EC3C-077C-42FC-B4AD-B799CE55CCE4} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {A61DAD9C-271C-4E95-81AA-DB4CD58564D4} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {49C67F03-1A56-4F96-B278-39B66EC93678} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {D496308F-3C3C-40B3-A3ED-EA327D244B3E} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {3B27F358-2679-4F38-B297-17B536F580BB} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {718FCBD0-591D-448C-B7D5-9F1CA8544E7B} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {19CA0070-B4B2-4394-90B7-D0C259AA35BA} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {9DB1F875-6E65-4195-B23F-ED8095C0B99C} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {8E132D5A-2C00-48D0-8747-97E41356F26F} = {278D8859-20B1-428F-8448-064F46E1F021} + {A4662163-83E7-4309-8CAA-B0BF13655FE6} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {5F4B766F-DD52-4B53-B6C3-BC7611E17F20} = {278D8859-20B1-428F-8448-064F46E1F021} + {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC} = {E9D708A5-9C1F-4B84-A795-C5F191801762} + {0C442799-B09C-4CD1-9538-711B6E85E9BF} = {278D8859-20B1-428F-8448-064F46E1F021} + {DFB40A10-F8B7-412A-BCC3-5EE49294D816} = {278D8859-20B1-428F-8448-064F46E1F021} + {BB58A5FB-1A35-4471-86D0-A5189EC541B3} = {278D8859-20B1-428F-8448-064F46E1F021} + {61997220-5383-4AE5-ABD4-5F45AE1B0F2A} = {278D8859-20B1-428F-8448-064F46E1F021} + {7467E9AE-844F-444D-8A3F-17397544BA21} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {497FDF54-9762-4048-A833-61CC3980A0FB} = {278D8859-20B1-428F-8448-064F46E1F021} + {29B00F47-BE91-4A1F-B87D-B1302F038316} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {124935CC-73BB-489E-92E8-4F922A85DB5D} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {AC215730-2B5F-4498-B7F5-5DB80AEFCA5F} = {278D8859-20B1-428F-8448-064F46E1F021} + {0835E6BF-0170-4E99-A55C-E06E1EF4C3B2} = {278D8859-20B1-428F-8448-064F46E1F021} + {EA4AD5A7-DB95-43C0-9A67-2D94146BCF91} = {278D8859-20B1-428F-8448-064F46E1F021} + {1ACC8236-EF4E-44B0-BD0C-AB1D95D5890F} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {9DE2FC01-A839-4F89-8319-9071D4C54821} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {2F578155-D51F-4C03-AB7F-5C5122CA46CC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {1C829D1A-892C-451C-AF0B-AC65C85F5CC6} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {84DE22BB-C25F-425C-A7FE-0120CF107B83} = {278D8859-20B1-428F-8448-064F46E1F021} + {98152EDD-7E28-4FA3-89D8-B636ED5D5F65} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {B7FDD40F-DDA4-468E-9C40-EEB175964A26} = {278D8859-20B1-428F-8448-064F46E1F021} + {028F0967-B253-45DA-B1C4-FACCE45D0D8D} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {666346D7-C84B-498D-AE17-53B20C62DB1A} = {278D8859-20B1-428F-8448-064F46E1F021} + {AD66AA6A-1E36-4FF0-8670-4F9834BCDB91} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {6C897101-BE52-4387-8AA2-062123A76BA1} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {4E9D2828-EE83-40C8-97E0-137EEDFBAAAD} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {2B3CED91-973F-4936-9DD4-CC8B1C8ACC68} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} + {30011884-25EE-42C9-BB15-888CAFB1AA6E} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {32FE2658-1D70-442E-8672-0AC5C6F0BD7B} = {278D8859-20B1-428F-8448-064F46E1F021} + {842B6472-4AA6-4C2B-A5E5-A62F80DE2C4F} = {278D8859-20B1-428F-8448-064F46E1F021} + {FC4DEBD2-4B17-4534-8EEA-BB24A2DBEB5F} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {0653AFAF-5578-4C02-AF29-0C873E7634AE} = {278D8859-20B1-428F-8448-064F46E1F021} + {071E64F3-1396-4A97-97CA-98CAC059B168} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {7883D076-CA8F-4FF7-8B5D-0DFF41CEF8FC} = {278D8859-20B1-428F-8448-064F46E1F021} + {1F4722E7-F78E-413F-A106-D3490211EA57} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {0A0FC982-6E31-401F-BA77-3C5E8AB02C68} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {DC163251-16C3-4B72-B965-ACDBA0F02BD1} = {278D8859-20B1-428F-8448-064F46E1F021} + {D35D2FDA-B53F-4F70-81CA-24D95812B89C} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} + EndGlobalSection +EndGlobal diff --git a/src/raylib.h b/src/raylib.h index f9c504680..06138ceca 100644 --- a/src/raylib.h +++ b/src/raylib.h @@ -1621,6 +1621,8 @@ RLAPI void SetModelMeshMaterial(Model *model, int meshId, int materialId); RLAPI ModelAnimation *LoadModelAnimations(const char *fileName, int *animCount); // Load model animations from file RLAPI void UpdateModelAnimation(Model model, ModelAnimation anim, int frame); // Update model animation pose (CPU) RLAPI void UpdateModelAnimationBones(Model model, ModelAnimation anim, int frame); // Update model animation mesh bone matrices (GPU skinning) +RLAPI void UpdateModelAnimationBonesLerp(Model model, ModelAnimation animA, int frameA, ModelAnimation animB, int frameB, float value); // Update model animation mesh bone matrices with interpolation between two poses(GPU skinning) +RLAPI void UpdateModelVertsToCurrentBones(Model model); // Update model vertices according to mesh bone matrices (CPU) RLAPI void UnloadModelAnimation(ModelAnimation anim); // Unload animation data RLAPI void UnloadModelAnimations(ModelAnimation *animations, int animCount); // Unload animation array data RLAPI bool IsModelAnimationValid(Model model, ModelAnimation anim); // Check model animation skeleton match diff --git a/src/rmodels.c b/src/rmodels.c index 0ee103212..b90b6a53f 100644 --- a/src/rmodels.c +++ b/src/rmodels.c @@ -2346,12 +2346,70 @@ void UpdateModelAnimationBones(Model model, ModelAnimation anim, int frame) } } -// at least 2x speed up vs the old method -// Update model animated vertex data (positions and normals) for a given frame -// NOTE: Updated data is uploaded to GPU -void UpdateModelAnimation(Model model, ModelAnimation anim, int frame) +// Update model animated bones transform matrices by interpolating between two different given frames of different ModelAnimation(could be same too) +// NOTE: Updated data is not uploaded to GPU but kept at model.meshes[i].boneMatrices[boneId], +// to be uploaded to shader at drawing, in case GPU skinning is enabled +void UpdateModelAnimationBonesLerp(Model model, ModelAnimation animA, int frameA, ModelAnimation animB, int frameB, float value) { - UpdateModelAnimationBones(model,anim,frame); + if ((animA.frameCount > 0) && (animA.bones != NULL) && (animA.framePoses != NULL) && + (animB.frameCount > 0) && (animB.bones != NULL) && (animB.framePoses != NULL) && + (value >= 0.0f) && (value <= 1.0f)) + { + frameA = frameA % animA.frameCount; + frameB = frameB % animB.frameCount; + + for (int i = 0; i < model.meshCount; i++) + { + if (model.meshes[i].boneMatrices) + { + assert(model.meshes[i].boneCount == animA.boneCount); + assert(model.meshes[i].boneCount == animB.boneCount); + + for (int boneId = 0; boneId < model.meshes[i].boneCount; boneId++) + { + Vector3 inTranslation = model.bindPose[boneId].translation; + Quaternion inRotation = model.bindPose[boneId].rotation; + Vector3 inScale = model.bindPose[boneId].scale; + + Vector3 outATranslation = animA.framePoses[frameA][boneId].translation; + Quaternion outARotation = animA.framePoses[frameA][boneId].rotation; + Vector3 outAScale = animA.framePoses[frameA][boneId].scale; + + Vector3 outBTranslation = animB.framePoses[frameB][boneId].translation; + Quaternion outBRotation = animB.framePoses[frameB][boneId].rotation; + Vector3 outBScale = animB.framePoses[frameB][boneId].scale; + + Vector3 outTranslation = Vector3Lerp(outATranslation, outBTranslation, value); + Quaternion outRotation = QuaternionSlerp(outARotation, outBRotation, value); + Vector3 outScale = Vector3Lerp(outAScale, outBScale, value); + + Vector3 invTranslation = Vector3RotateByQuaternion(Vector3Negate(inTranslation), QuaternionInvert(inRotation)); + Quaternion invRotation = QuaternionInvert(inRotation); + Vector3 invScale = Vector3Divide((Vector3){ 1.0f, 1.0f, 1.0f }, inScale); + + Vector3 boneTranslation = Vector3Add( + Vector3RotateByQuaternion(Vector3Multiply(outScale, invTranslation), + outRotation), outTranslation); + Quaternion boneRotation = QuaternionMultiply(outRotation, invRotation); + Vector3 boneScale = Vector3Multiply(outScale, invScale); + + Matrix boneMatrix = MatrixMultiply(MatrixMultiply( + QuaternionToMatrix(boneRotation), + MatrixTranslate(boneTranslation.x, boneTranslation.y, boneTranslation.z)), + MatrixScale(boneScale.x, boneScale.y, boneScale.z)); + + model.meshes[i].boneMatrices[boneId] = boneMatrix; + } + } + } + } +} + +// Update model vertex data (positions and normals) from mesh bone data +// NOTE: Updated data is uploaded to GPU +void UpdateModelVertsToCurrentBones(Model model) +{ + //UpdateModelAnimationBones(model, anim, frame); // TODO: Review for (int m = 0; m < model.meshCount; m++) { @@ -2416,6 +2474,15 @@ void UpdateModelAnimation(Model model, ModelAnimation anim, int frame) } } +// at least 2x speed up vs the old method +// Update model animated vertex data (positions and normals) for a given frame +// NOTE: Updated data is uploaded to GPU +void UpdateModelAnimation(Model model, ModelAnimation anim, int frame) +{ + UpdateModelAnimationBones(model,anim,frame); + UpdateModelVertsToCurrentBones(model); +} + // Unload animation array data void UnloadModelAnimations(ModelAnimation *animations, int animCount) { diff --git a/tools/rlparser/output/raylib_api.json b/tools/rlparser/output/raylib_api.json index 96875fe87..f102abb1d 100644 --- a/tools/rlparser/output/raylib_api.json +++ b/tools/rlparser/output/raylib_api.json @@ -11436,6 +11436,48 @@ } ] }, + { + "name": "UpdateModelAnimationBonesLerp", + "description": "Update model animation mesh bone matrices with interpolation between two poses(GPU skinning)", + "returnType": "void", + "params": [ + { + "type": "Model", + "name": "model" + }, + { + "type": "ModelAnimation", + "name": "animA" + }, + { + "type": "int", + "name": "frameA" + }, + { + "type": "ModelAnimation", + "name": "animB" + }, + { + "type": "int", + "name": "frameB" + }, + { + "type": "float", + "name": "value" + } + ] + }, + { + "name": "UpdateModelVertsToCurrentBones", + "description": "Update model vertices according to mesh bone matrices (CPU)", + "returnType": "void", + "params": [ + { + "type": "Model", + "name": "model" + } + ] + }, { "name": "UnloadModelAnimation", "description": "Unload animation data", diff --git a/tools/rlparser/output/raylib_api.lua b/tools/rlparser/output/raylib_api.lua index a1f79cbe6..3707896bb 100644 --- a/tools/rlparser/output/raylib_api.lua +++ b/tools/rlparser/output/raylib_api.lua @@ -7812,6 +7812,27 @@ return { {type = "int", name = "frame"} } }, + { + name = "UpdateModelAnimationBonesLerp", + description = "Update model animation mesh bone matrices with interpolation between two poses(GPU skinning)", + returnType = "void", + params = { + {type = "Model", name = "model"}, + {type = "ModelAnimation", name = "animA"}, + {type = "int", name = "frameA"}, + {type = "ModelAnimation", name = "animB"}, + {type = "int", name = "frameB"}, + {type = "float", name = "value"} + } + }, + { + name = "UpdateModelVertsToCurrentBones", + description = "Update model vertices according to mesh bone matrices (CPU)", + returnType = "void", + params = { + {type = "Model", name = "model"} + } + }, { name = "UnloadModelAnimation", description = "Unload animation data", diff --git a/tools/rlparser/output/raylib_api.txt b/tools/rlparser/output/raylib_api.txt index e7ff4c98b..9c25843f5 100644 --- a/tools/rlparser/output/raylib_api.txt +++ b/tools/rlparser/output/raylib_api.txt @@ -992,7 +992,7 @@ Callback 006: AudioCallback() (2 input parameters) Param[1]: bufferData (type: void *) Param[2]: frames (type: unsigned int) -Functions found: 599 +Functions found: 601 Function 001: InitWindow() (3 input parameters) Name: InitWindow @@ -4354,24 +4354,39 @@ Function 522: UpdateModelAnimationBones() (3 input parameters) Param[1]: model (type: Model) Param[2]: anim (type: ModelAnimation) Param[3]: frame (type: int) -Function 523: UnloadModelAnimation() (1 input parameters) +Function 523: UpdateModelAnimationBonesLerp() (6 input parameters) + Name: UpdateModelAnimationBonesLerp + Return type: void + Description: Update model animation mesh bone matrices with interpolation between two poses(GPU skinning) + Param[1]: model (type: Model) + Param[2]: animA (type: ModelAnimation) + Param[3]: frameA (type: int) + Param[4]: animB (type: ModelAnimation) + Param[5]: frameB (type: int) + Param[6]: value (type: float) +Function 524: UpdateModelVertsToCurrentBones() (1 input parameters) + Name: UpdateModelVertsToCurrentBones + Return type: void + Description: Update model vertices according to mesh bone matrices (CPU) + Param[1]: model (type: Model) +Function 525: UnloadModelAnimation() (1 input parameters) Name: UnloadModelAnimation Return type: void Description: Unload animation data Param[1]: anim (type: ModelAnimation) -Function 524: UnloadModelAnimations() (2 input parameters) +Function 526: UnloadModelAnimations() (2 input parameters) Name: UnloadModelAnimations Return type: void Description: Unload animation array data Param[1]: animations (type: ModelAnimation *) Param[2]: animCount (type: int) -Function 525: IsModelAnimationValid() (2 input parameters) +Function 527: IsModelAnimationValid() (2 input parameters) Name: IsModelAnimationValid Return type: bool Description: Check model animation skeleton match Param[1]: model (type: Model) Param[2]: anim (type: ModelAnimation) -Function 526: CheckCollisionSpheres() (4 input parameters) +Function 528: CheckCollisionSpheres() (4 input parameters) Name: CheckCollisionSpheres Return type: bool Description: Check collision between two spheres @@ -4379,40 +4394,40 @@ Function 526: CheckCollisionSpheres() (4 input parameters) Param[2]: radius1 (type: float) Param[3]: center2 (type: Vector3) Param[4]: radius2 (type: float) -Function 527: CheckCollisionBoxes() (2 input parameters) +Function 529: CheckCollisionBoxes() (2 input parameters) Name: CheckCollisionBoxes Return type: bool Description: Check collision between two bounding boxes Param[1]: box1 (type: BoundingBox) Param[2]: box2 (type: BoundingBox) -Function 528: CheckCollisionBoxSphere() (3 input parameters) +Function 530: CheckCollisionBoxSphere() (3 input parameters) Name: CheckCollisionBoxSphere Return type: bool Description: Check collision between box and sphere Param[1]: box (type: BoundingBox) Param[2]: center (type: Vector3) Param[3]: radius (type: float) -Function 529: GetRayCollisionSphere() (3 input parameters) +Function 531: GetRayCollisionSphere() (3 input parameters) Name: GetRayCollisionSphere Return type: RayCollision Description: Get collision info between ray and sphere Param[1]: ray (type: Ray) Param[2]: center (type: Vector3) Param[3]: radius (type: float) -Function 530: GetRayCollisionBox() (2 input parameters) +Function 532: GetRayCollisionBox() (2 input parameters) Name: GetRayCollisionBox Return type: RayCollision Description: Get collision info between ray and box Param[1]: ray (type: Ray) Param[2]: box (type: BoundingBox) -Function 531: GetRayCollisionMesh() (3 input parameters) +Function 533: GetRayCollisionMesh() (3 input parameters) Name: GetRayCollisionMesh Return type: RayCollision Description: Get collision info between ray and mesh Param[1]: ray (type: Ray) Param[2]: mesh (type: Mesh) Param[3]: transform (type: Matrix) -Function 532: GetRayCollisionTriangle() (4 input parameters) +Function 534: GetRayCollisionTriangle() (4 input parameters) Name: GetRayCollisionTriangle Return type: RayCollision Description: Get collision info between ray and triangle @@ -4420,7 +4435,7 @@ Function 532: GetRayCollisionTriangle() (4 input parameters) Param[2]: p1 (type: Vector3) Param[3]: p2 (type: Vector3) Param[4]: p3 (type: Vector3) -Function 533: GetRayCollisionQuad() (5 input parameters) +Function 535: GetRayCollisionQuad() (5 input parameters) Name: GetRayCollisionQuad Return type: RayCollision Description: Get collision info between ray and quad @@ -4429,158 +4444,158 @@ Function 533: GetRayCollisionQuad() (5 input parameters) Param[3]: p2 (type: Vector3) Param[4]: p3 (type: Vector3) Param[5]: p4 (type: Vector3) -Function 534: InitAudioDevice() (0 input parameters) +Function 536: InitAudioDevice() (0 input parameters) Name: InitAudioDevice Return type: void Description: Initialize audio device and context No input parameters -Function 535: CloseAudioDevice() (0 input parameters) +Function 537: CloseAudioDevice() (0 input parameters) Name: CloseAudioDevice Return type: void Description: Close the audio device and context No input parameters -Function 536: IsAudioDeviceReady() (0 input parameters) +Function 538: IsAudioDeviceReady() (0 input parameters) Name: IsAudioDeviceReady Return type: bool Description: Check if audio device has been initialized successfully No input parameters -Function 537: SetMasterVolume() (1 input parameters) +Function 539: SetMasterVolume() (1 input parameters) Name: SetMasterVolume Return type: void Description: Set master volume (listener) Param[1]: volume (type: float) -Function 538: GetMasterVolume() (0 input parameters) +Function 540: GetMasterVolume() (0 input parameters) Name: GetMasterVolume Return type: float Description: Get master volume (listener) No input parameters -Function 539: LoadWave() (1 input parameters) +Function 541: LoadWave() (1 input parameters) Name: LoadWave Return type: Wave Description: Load wave data from file Param[1]: fileName (type: const char *) -Function 540: LoadWaveFromMemory() (3 input parameters) +Function 542: LoadWaveFromMemory() (3 input parameters) Name: LoadWaveFromMemory Return type: Wave Description: Load wave from memory buffer, fileType refers to extension: i.e. '.wav' Param[1]: fileType (type: const char *) Param[2]: fileData (type: const unsigned char *) Param[3]: dataSize (type: int) -Function 541: IsWaveValid() (1 input parameters) +Function 543: IsWaveValid() (1 input parameters) Name: IsWaveValid Return type: bool Description: Checks if wave data is valid (data loaded and parameters) Param[1]: wave (type: Wave) -Function 542: LoadSound() (1 input parameters) +Function 544: LoadSound() (1 input parameters) Name: LoadSound Return type: Sound Description: Load sound from file Param[1]: fileName (type: const char *) -Function 543: LoadSoundFromWave() (1 input parameters) +Function 545: LoadSoundFromWave() (1 input parameters) Name: LoadSoundFromWave Return type: Sound Description: Load sound from wave data Param[1]: wave (type: Wave) -Function 544: LoadSoundAlias() (1 input parameters) +Function 546: LoadSoundAlias() (1 input parameters) Name: LoadSoundAlias Return type: Sound Description: Create a new sound that shares the same sample data as the source sound, does not own the sound data Param[1]: source (type: Sound) -Function 545: IsSoundValid() (1 input parameters) +Function 547: IsSoundValid() (1 input parameters) Name: IsSoundValid Return type: bool Description: Checks if a sound is valid (data loaded and buffers initialized) Param[1]: sound (type: Sound) -Function 546: UpdateSound() (3 input parameters) +Function 548: UpdateSound() (3 input parameters) Name: UpdateSound Return type: void Description: Update sound buffer with new data (default data format: 32 bit float, stereo) Param[1]: sound (type: Sound) Param[2]: data (type: const void *) Param[3]: sampleCount (type: int) -Function 547: UnloadWave() (1 input parameters) +Function 549: UnloadWave() (1 input parameters) Name: UnloadWave Return type: void Description: Unload wave data Param[1]: wave (type: Wave) -Function 548: UnloadSound() (1 input parameters) +Function 550: UnloadSound() (1 input parameters) Name: UnloadSound Return type: void Description: Unload sound Param[1]: sound (type: Sound) -Function 549: UnloadSoundAlias() (1 input parameters) +Function 551: UnloadSoundAlias() (1 input parameters) Name: UnloadSoundAlias Return type: void Description: Unload a sound alias (does not deallocate sample data) Param[1]: alias (type: Sound) -Function 550: ExportWave() (2 input parameters) +Function 552: ExportWave() (2 input parameters) Name: ExportWave Return type: bool Description: Export wave data to file, returns true on success Param[1]: wave (type: Wave) Param[2]: fileName (type: const char *) -Function 551: ExportWaveAsCode() (2 input parameters) +Function 553: ExportWaveAsCode() (2 input parameters) Name: ExportWaveAsCode Return type: bool Description: Export wave sample data to code (.h), returns true on success Param[1]: wave (type: Wave) Param[2]: fileName (type: const char *) -Function 552: PlaySound() (1 input parameters) +Function 554: PlaySound() (1 input parameters) Name: PlaySound Return type: void Description: Play a sound Param[1]: sound (type: Sound) -Function 553: StopSound() (1 input parameters) +Function 555: StopSound() (1 input parameters) Name: StopSound Return type: void Description: Stop playing a sound Param[1]: sound (type: Sound) -Function 554: PauseSound() (1 input parameters) +Function 556: PauseSound() (1 input parameters) Name: PauseSound Return type: void Description: Pause a sound Param[1]: sound (type: Sound) -Function 555: ResumeSound() (1 input parameters) +Function 557: ResumeSound() (1 input parameters) Name: ResumeSound Return type: void Description: Resume a paused sound Param[1]: sound (type: Sound) -Function 556: IsSoundPlaying() (1 input parameters) +Function 558: IsSoundPlaying() (1 input parameters) Name: IsSoundPlaying Return type: bool Description: Check if a sound is currently playing Param[1]: sound (type: Sound) -Function 557: SetSoundVolume() (2 input parameters) +Function 559: SetSoundVolume() (2 input parameters) Name: SetSoundVolume Return type: void Description: Set volume for a sound (1.0 is max level) Param[1]: sound (type: Sound) Param[2]: volume (type: float) -Function 558: SetSoundPitch() (2 input parameters) +Function 560: SetSoundPitch() (2 input parameters) Name: SetSoundPitch Return type: void Description: Set pitch for a sound (1.0 is base level) Param[1]: sound (type: Sound) Param[2]: pitch (type: float) -Function 559: SetSoundPan() (2 input parameters) +Function 561: SetSoundPan() (2 input parameters) Name: SetSoundPan Return type: void Description: Set pan for a sound (-1.0 left, 0.0 center, 1.0 right) Param[1]: sound (type: Sound) Param[2]: pan (type: float) -Function 560: WaveCopy() (1 input parameters) +Function 562: WaveCopy() (1 input parameters) Name: WaveCopy Return type: Wave Description: Copy a wave to a new wave Param[1]: wave (type: Wave) -Function 561: WaveCrop() (3 input parameters) +Function 563: WaveCrop() (3 input parameters) Name: WaveCrop Return type: void Description: Crop a wave to defined frames range Param[1]: wave (type: Wave *) Param[2]: initFrame (type: int) Param[3]: finalFrame (type: int) -Function 562: WaveFormat() (4 input parameters) +Function 564: WaveFormat() (4 input parameters) Name: WaveFormat Return type: void Description: Convert wave data to desired format @@ -4588,203 +4603,203 @@ Function 562: WaveFormat() (4 input parameters) Param[2]: sampleRate (type: int) Param[3]: sampleSize (type: int) Param[4]: channels (type: int) -Function 563: LoadWaveSamples() (1 input parameters) +Function 565: LoadWaveSamples() (1 input parameters) Name: LoadWaveSamples Return type: float * Description: Load samples data from wave as a 32bit float data array Param[1]: wave (type: Wave) -Function 564: UnloadWaveSamples() (1 input parameters) +Function 566: UnloadWaveSamples() (1 input parameters) Name: UnloadWaveSamples Return type: void Description: Unload samples data loaded with LoadWaveSamples() Param[1]: samples (type: float *) -Function 565: LoadMusicStream() (1 input parameters) +Function 567: LoadMusicStream() (1 input parameters) Name: LoadMusicStream Return type: Music Description: Load music stream from file Param[1]: fileName (type: const char *) -Function 566: LoadMusicStreamFromMemory() (3 input parameters) +Function 568: LoadMusicStreamFromMemory() (3 input parameters) Name: LoadMusicStreamFromMemory Return type: Music Description: Load music stream from data Param[1]: fileType (type: const char *) Param[2]: data (type: const unsigned char *) Param[3]: dataSize (type: int) -Function 567: IsMusicValid() (1 input parameters) +Function 569: IsMusicValid() (1 input parameters) Name: IsMusicValid Return type: bool Description: Checks if a music stream is valid (context and buffers initialized) Param[1]: music (type: Music) -Function 568: UnloadMusicStream() (1 input parameters) +Function 570: UnloadMusicStream() (1 input parameters) Name: UnloadMusicStream Return type: void Description: Unload music stream Param[1]: music (type: Music) -Function 569: PlayMusicStream() (1 input parameters) +Function 571: PlayMusicStream() (1 input parameters) Name: PlayMusicStream Return type: void Description: Start music playing Param[1]: music (type: Music) -Function 570: IsMusicStreamPlaying() (1 input parameters) +Function 572: IsMusicStreamPlaying() (1 input parameters) Name: IsMusicStreamPlaying Return type: bool Description: Check if music is playing Param[1]: music (type: Music) -Function 571: UpdateMusicStream() (1 input parameters) +Function 573: UpdateMusicStream() (1 input parameters) Name: UpdateMusicStream Return type: void Description: Updates buffers for music streaming Param[1]: music (type: Music) -Function 572: StopMusicStream() (1 input parameters) +Function 574: StopMusicStream() (1 input parameters) Name: StopMusicStream Return type: void Description: Stop music playing Param[1]: music (type: Music) -Function 573: PauseMusicStream() (1 input parameters) +Function 575: PauseMusicStream() (1 input parameters) Name: PauseMusicStream Return type: void Description: Pause music playing Param[1]: music (type: Music) -Function 574: ResumeMusicStream() (1 input parameters) +Function 576: ResumeMusicStream() (1 input parameters) Name: ResumeMusicStream Return type: void Description: Resume playing paused music Param[1]: music (type: Music) -Function 575: SeekMusicStream() (2 input parameters) +Function 577: SeekMusicStream() (2 input parameters) Name: SeekMusicStream Return type: void Description: Seek music to a position (in seconds) Param[1]: music (type: Music) Param[2]: position (type: float) -Function 576: SetMusicVolume() (2 input parameters) +Function 578: SetMusicVolume() (2 input parameters) Name: SetMusicVolume Return type: void Description: Set volume for music (1.0 is max level) Param[1]: music (type: Music) Param[2]: volume (type: float) -Function 577: SetMusicPitch() (2 input parameters) +Function 579: SetMusicPitch() (2 input parameters) Name: SetMusicPitch Return type: void Description: Set pitch for a music (1.0 is base level) Param[1]: music (type: Music) Param[2]: pitch (type: float) -Function 578: SetMusicPan() (2 input parameters) +Function 580: SetMusicPan() (2 input parameters) Name: SetMusicPan Return type: void Description: Set pan for a music (-1.0 left, 0.0 center, 1.0 right) Param[1]: music (type: Music) Param[2]: pan (type: float) -Function 579: GetMusicTimeLength() (1 input parameters) +Function 581: GetMusicTimeLength() (1 input parameters) Name: GetMusicTimeLength Return type: float Description: Get music time length (in seconds) Param[1]: music (type: Music) -Function 580: GetMusicTimePlayed() (1 input parameters) +Function 582: GetMusicTimePlayed() (1 input parameters) Name: GetMusicTimePlayed Return type: float Description: Get current music time played (in seconds) Param[1]: music (type: Music) -Function 581: LoadAudioStream() (3 input parameters) +Function 583: LoadAudioStream() (3 input parameters) Name: LoadAudioStream Return type: AudioStream Description: Load audio stream (to stream raw audio pcm data) Param[1]: sampleRate (type: unsigned int) Param[2]: sampleSize (type: unsigned int) Param[3]: channels (type: unsigned int) -Function 582: IsAudioStreamValid() (1 input parameters) +Function 584: IsAudioStreamValid() (1 input parameters) Name: IsAudioStreamValid Return type: bool Description: Checks if an audio stream is valid (buffers initialized) Param[1]: stream (type: AudioStream) -Function 583: UnloadAudioStream() (1 input parameters) +Function 585: UnloadAudioStream() (1 input parameters) Name: UnloadAudioStream Return type: void Description: Unload audio stream and free memory Param[1]: stream (type: AudioStream) -Function 584: UpdateAudioStream() (3 input parameters) +Function 586: UpdateAudioStream() (3 input parameters) Name: UpdateAudioStream Return type: void Description: Update audio stream buffers with data Param[1]: stream (type: AudioStream) Param[2]: data (type: const void *) Param[3]: frameCount (type: int) -Function 585: IsAudioStreamProcessed() (1 input parameters) +Function 587: IsAudioStreamProcessed() (1 input parameters) Name: IsAudioStreamProcessed Return type: bool Description: Check if any audio stream buffers requires refill Param[1]: stream (type: AudioStream) -Function 586: PlayAudioStream() (1 input parameters) +Function 588: PlayAudioStream() (1 input parameters) Name: PlayAudioStream Return type: void Description: Play audio stream Param[1]: stream (type: AudioStream) -Function 587: PauseAudioStream() (1 input parameters) +Function 589: PauseAudioStream() (1 input parameters) Name: PauseAudioStream Return type: void Description: Pause audio stream Param[1]: stream (type: AudioStream) -Function 588: ResumeAudioStream() (1 input parameters) +Function 590: ResumeAudioStream() (1 input parameters) Name: ResumeAudioStream Return type: void Description: Resume audio stream Param[1]: stream (type: AudioStream) -Function 589: IsAudioStreamPlaying() (1 input parameters) +Function 591: IsAudioStreamPlaying() (1 input parameters) Name: IsAudioStreamPlaying Return type: bool Description: Check if audio stream is playing Param[1]: stream (type: AudioStream) -Function 590: StopAudioStream() (1 input parameters) +Function 592: StopAudioStream() (1 input parameters) Name: StopAudioStream Return type: void Description: Stop audio stream Param[1]: stream (type: AudioStream) -Function 591: SetAudioStreamVolume() (2 input parameters) +Function 593: SetAudioStreamVolume() (2 input parameters) Name: SetAudioStreamVolume Return type: void Description: Set volume for audio stream (1.0 is max level) Param[1]: stream (type: AudioStream) Param[2]: volume (type: float) -Function 592: SetAudioStreamPitch() (2 input parameters) +Function 594: SetAudioStreamPitch() (2 input parameters) Name: SetAudioStreamPitch Return type: void Description: Set pitch for audio stream (1.0 is base level) Param[1]: stream (type: AudioStream) Param[2]: pitch (type: float) -Function 593: SetAudioStreamPan() (2 input parameters) +Function 595: SetAudioStreamPan() (2 input parameters) Name: SetAudioStreamPan Return type: void Description: Set pan for audio stream (0.5 is centered) Param[1]: stream (type: AudioStream) Param[2]: pan (type: float) -Function 594: SetAudioStreamBufferSizeDefault() (1 input parameters) +Function 596: SetAudioStreamBufferSizeDefault() (1 input parameters) Name: SetAudioStreamBufferSizeDefault Return type: void Description: Default size for new audio streams Param[1]: size (type: int) -Function 595: SetAudioStreamCallback() (2 input parameters) +Function 597: SetAudioStreamCallback() (2 input parameters) Name: SetAudioStreamCallback Return type: void Description: Audio thread callback to request new data Param[1]: stream (type: AudioStream) Param[2]: callback (type: AudioCallback) -Function 596: AttachAudioStreamProcessor() (2 input parameters) +Function 598: AttachAudioStreamProcessor() (2 input parameters) Name: AttachAudioStreamProcessor Return type: void Description: Attach audio stream processor to stream, receives frames x 2 samples as 'float' (stereo) Param[1]: stream (type: AudioStream) Param[2]: processor (type: AudioCallback) -Function 597: DetachAudioStreamProcessor() (2 input parameters) +Function 599: DetachAudioStreamProcessor() (2 input parameters) Name: DetachAudioStreamProcessor Return type: void Description: Detach audio stream processor from stream Param[1]: stream (type: AudioStream) Param[2]: processor (type: AudioCallback) -Function 598: AttachAudioMixedProcessor() (1 input parameters) +Function 600: AttachAudioMixedProcessor() (1 input parameters) Name: AttachAudioMixedProcessor Return type: void Description: Attach audio stream processor to the entire audio pipeline, receives frames x 2 samples as 'float' (stereo) Param[1]: processor (type: AudioCallback) -Function 599: DetachAudioMixedProcessor() (1 input parameters) +Function 601: DetachAudioMixedProcessor() (1 input parameters) Name: DetachAudioMixedProcessor Return type: void Description: Detach audio stream processor from the entire audio pipeline diff --git a/tools/rlparser/output/raylib_api.xml b/tools/rlparser/output/raylib_api.xml index 8734f405d..d3314a5d1 100644 --- a/tools/rlparser/output/raylib_api.xml +++ b/tools/rlparser/output/raylib_api.xml @@ -678,7 +678,7 @@ - + @@ -2918,6 +2918,17 @@ + + + + + + + + + + + From 71607db6672ae843e2f9c541f4fd0f260d80ea0a Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 16:46:30 +0100 Subject: [PATCH 31/42] Moved easings example to shapes --- examples/others/reasings.h | 263 ------------------ .../shapes_easings_testbed.c} | 39 ++- .../shapes_easings_testbed.png} | Bin projects/VS2022/raylib.sln | 4 +- 4 files changed, 27 insertions(+), 279 deletions(-) delete mode 100644 examples/others/reasings.h rename examples/{others/easings_testbed.c => shapes/shapes_easings_testbed.c} (87%) rename examples/{others/easings_testbed.png => shapes/shapes_easings_testbed.png} (100%) diff --git a/examples/others/reasings.h b/examples/others/reasings.h deleted file mode 100644 index c3ee1169f..000000000 --- a/examples/others/reasings.h +++ /dev/null @@ -1,263 +0,0 @@ -/******************************************************************************************* -* -* reasings - raylib easings library, based on Robert Penner library -* -* Useful easing functions for values animation -* -* This header uses: -* #define REASINGS_STATIC_INLINE // Inlines all functions code, so it runs faster. -* // This requires lots of memory on system. -* How to use: -* The four inputs t,b,c,d are defined as follows: -* t = current time (in any unit measure, but same unit as duration) -* b = starting value to interpolate -* c = the total change in value of b that needs to occur -* d = total time it should take to complete (duration) -* -* Example: -* -* int currentTime = 0; -* int duration = 100; -* float startPositionX = 0.0f; -* float finalPositionX = 30.0f; -* float currentPositionX = startPositionX; -* -* while (currentPositionX < finalPositionX) -* { -* currentPositionX = EaseSineIn(currentTime, startPositionX, finalPositionX - startPositionX, duration); -* currentTime++; -* } -* -* A port of Robert Penner's easing equations to C (http://robertpenner.com/easing/) -* -* Robert Penner License -* --------------------------------------------------------------------------------- -* Open source under the BSD License. -* -* Copyright (c) 2001 Robert Penner. All rights reserved. -* -* Redistribution and use in source and binary forms, with or without modification, -* are permitted provided that the following conditions are met: -* -* - Redistributions of source code must retain the above copyright notice, -* this list of conditions and the following disclaimer. -* - Redistributions in binary form must reproduce the above copyright notice, -* this list of conditions and the following disclaimer in the documentation -* and/or other materials provided with the distribution. -* - Neither the name of the author nor the names of contributors may be used -* to endorse or promote products derived from this software without specific -* prior written permission. -* -* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND -* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED -* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. -* IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, -* INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, -* BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF -* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE -* OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED -* OF THE POSSIBILITY OF SUCH DAMAGE. -* --------------------------------------------------------------------------------- -* -* Copyright (c) 2015-2024 Ramon Santamaria (@raysan5) -* -* This software is provided "as-is", without any express or implied warranty. In no event -* will the authors be held liable for any damages arising from the use of this software. -* -* Permission is granted to anyone to use this software for any purpose, including commercial -* applications, and to alter it and redistribute it freely, subject to the following restrictions: -* -* 1. The origin of this software must not be misrepresented; you must not claim that you -* wrote the original software. If you use this software in a product, an acknowledgment -* in the product documentation would be appreciated but is not required. -* -* 2. Altered source versions must be plainly marked as such, and must not be misrepresented -* as being the original software. -* -* 3. This notice may not be removed or altered from any source distribution. -* -**********************************************************************************************/ - -#ifndef REASINGS_H -#define REASINGS_H - -#define REASINGS_STATIC_INLINE // NOTE: By default, compile functions as static inline - -#if defined(REASINGS_STATIC_INLINE) - #define EASEDEF static inline -#else - #define EASEDEF extern -#endif - -#include // Required for: sinf(), cosf(), sqrtf(), powf() - -#ifndef PI - #define PI 3.14159265358979323846f //Required as PI is not always defined in math.h -#endif - -#if defined(__cplusplus) -extern "C" { // Prevents name mangling of functions -#endif - -// Linear Easing functions -EASEDEF float EaseLinearNone(float t, float b, float c, float d) { return (c*t/d + b); } // Ease: Linear -EASEDEF float EaseLinearIn(float t, float b, float c, float d) { return (c*t/d + b); } // Ease: Linear In -EASEDEF float EaseLinearOut(float t, float b, float c, float d) { return (c*t/d + b); } // Ease: Linear Out -EASEDEF float EaseLinearInOut(float t, float b, float c, float d) { return (c*t/d + b); } // Ease: Linear In Out - -// Sine Easing functions -EASEDEF float EaseSineIn(float t, float b, float c, float d) { return (-c*cosf(t/d*(PI/2.0f)) + c + b); } // Ease: Sine In -EASEDEF float EaseSineOut(float t, float b, float c, float d) { return (c*sinf(t/d*(PI/2.0f)) + b); } // Ease: Sine Out -EASEDEF float EaseSineInOut(float t, float b, float c, float d) { return (-c/2.0f*(cosf(PI*t/d) - 1.0f) + b); } // Ease: Sine In Out - -// Circular Easing functions -EASEDEF float EaseCircIn(float t, float b, float c, float d) { t /= d; return (-c*(sqrtf(1.0f - t*t) - 1.0f) + b); } // Ease: Circular In -EASEDEF float EaseCircOut(float t, float b, float c, float d) { t = t/d - 1.0f; return (c*sqrtf(1.0f - t*t) + b); } // Ease: Circular Out -EASEDEF float EaseCircInOut(float t, float b, float c, float d) // Ease: Circular In Out -{ - if ((t/=d/2.0f) < 1.0f) return (-c/2.0f*(sqrtf(1.0f - t*t) - 1.0f) + b); - t -= 2.0f; return (c/2.0f*(sqrtf(1.0f - t*t) + 1.0f) + b); -} - -// Cubic Easing functions -EASEDEF float EaseCubicIn(float t, float b, float c, float d) { t /= d; return (c*t*t*t + b); } // Ease: Cubic In -EASEDEF float EaseCubicOut(float t, float b, float c, float d) { t = t/d - 1.0f; return (c*(t*t*t + 1.0f) + b); } // Ease: Cubic Out -EASEDEF float EaseCubicInOut(float t, float b, float c, float d) // Ease: Cubic In Out -{ - if ((t/=d/2.0f) < 1.0f) return (c/2.0f*t*t*t + b); - t -= 2.0f; return (c/2.0f*(t*t*t + 2.0f) + b); -} - -// Quadratic Easing functions -EASEDEF float EaseQuadIn(float t, float b, float c, float d) { t /= d; return (c*t*t + b); } // Ease: Quadratic In -EASEDEF float EaseQuadOut(float t, float b, float c, float d) { t /= d; return (-c*t*(t - 2.0f) + b); } // Ease: Quadratic Out -EASEDEF float EaseQuadInOut(float t, float b, float c, float d) // Ease: Quadratic In Out -{ - if ((t/=d/2) < 1) return (((c/2)*(t*t)) + b); - return (-c/2.0f*(((t - 1.0f)*(t - 3.0f)) - 1.0f) + b); -} - -// Exponential Easing functions -EASEDEF float EaseExpoIn(float t, float b, float c, float d) { return (t == 0.0f) ? b : (c*powf(2.0f, 10.0f*(t/d - 1.0f)) + b); } // Ease: Exponential In -EASEDEF float EaseExpoOut(float t, float b, float c, float d) { return (t == d) ? (b + c) : (c*(-powf(2.0f, -10.0f*t/d) + 1.0f) + b); } // Ease: Exponential Out -EASEDEF float EaseExpoInOut(float t, float b, float c, float d) // Ease: Exponential In Out -{ - if (t == 0.0f) return b; - if (t == d) return (b + c); - if ((t/=d/2.0f) < 1.0f) return (c/2.0f*powf(2.0f, 10.0f*(t - 1.0f)) + b); - - return (c/2.0f*(-powf(2.0f, -10.0f*(t - 1.0f)) + 2.0f) + b); -} - -// Back Easing functions -EASEDEF float EaseBackIn(float t, float b, float c, float d) // Ease: Back In -{ - float s = 1.70158f; - float postFix = t/=d; - return (c*(postFix)*t*((s + 1.0f)*t - s) + b); -} - -EASEDEF float EaseBackOut(float t, float b, float c, float d) // Ease: Back Out -{ - float s = 1.70158f; - t = t/d - 1.0f; - return (c*(t*t*((s + 1.0f)*t + s) + 1.0f) + b); -} - -EASEDEF float EaseBackInOut(float t, float b, float c, float d) // Ease: Back In Out -{ - float s = 1.70158f; - if ((t/=d/2.0f) < 1.0f) - { - s *= 1.525f; - return (c/2.0f*(t*t*((s + 1.0f)*t - s)) + b); - } - - float postFix = t-=2.0f; - s *= 1.525f; - return (c/2.0f*((postFix)*t*((s + 1.0f)*t + s) + 2.0f) + b); -} - -// Bounce Easing functions -EASEDEF float EaseBounceOut(float t, float b, float c, float d) // Ease: Bounce Out -{ - if ((t/=d) < (1.0f/2.75f)) - { - return (c*(7.5625f*t*t) + b); - } - else if (t < (2.0f/2.75f)) - { - float postFix = t-=(1.5f/2.75f); - return (c*(7.5625f*(postFix)*t + 0.75f) + b); - } - else if (t < (2.5/2.75)) - { - float postFix = t-=(2.25f/2.75f); - return (c*(7.5625f*(postFix)*t + 0.9375f) + b); - } - else - { - float postFix = t-=(2.625f/2.75f); - return (c*(7.5625f*(postFix)*t + 0.984375f) + b); - } -} - -EASEDEF float EaseBounceIn(float t, float b, float c, float d) { return (c - EaseBounceOut(d - t, 0.0f, c, d) + b); } // Ease: Bounce In -EASEDEF float EaseBounceInOut(float t, float b, float c, float d) // Ease: Bounce In Out -{ - if (t < d/2.0f) return (EaseBounceIn(t*2.0f, 0.0f, c, d)*0.5f + b); - else return (EaseBounceOut(t*2.0f - d, 0.0f, c, d)*0.5f + c*0.5f + b); -} - -// Elastic Easing functions -EASEDEF float EaseElasticIn(float t, float b, float c, float d) // Ease: Elastic In -{ - if (t == 0.0f) return b; - if ((t/=d) == 1.0f) return (b + c); - - float p = d*0.3f; - float a = c; - float s = p/4.0f; - float postFix = a*powf(2.0f, 10.0f*(t-=1.0f)); - - return (-(postFix*sinf((t*d-s)*(2.0f*PI)/p )) + b); -} - -EASEDEF float EaseElasticOut(float t, float b, float c, float d) // Ease: Elastic Out -{ - if (t == 0.0f) return b; - if ((t/=d) == 1.0f) return (b + c); - - float p = d*0.3f; - float a = c; - float s = p/4.0f; - - return (a*powf(2.0f,-10.0f*t)*sinf((t*d-s)*(2.0f*PI)/p) + c + b); -} - -EASEDEF float EaseElasticInOut(float t, float b, float c, float d) // Ease: Elastic In Out -{ - if (t == 0.0f) return b; - if ((t/=d/2.0f) == 2.0f) return (b + c); - - float p = d*(0.3f*1.5f); - float a = c; - float s = p/4.0f; - - if (t < 1.0f) - { - float postFix = a*powf(2.0f, 10.0f*(t-=1.0f)); - return -0.5f*(postFix*sinf((t*d-s)*(2.0f*PI)/p)) + b; - } - - float postFix = a*powf(2.0f, -10.0f*(t-=1.0f)); - - return (postFix*sinf((t*d-s)*(2.0f*PI)/p)*0.5f + c + b); -} - -#if defined(__cplusplus) -} -#endif - -#endif // REASINGS_H diff --git a/examples/others/easings_testbed.c b/examples/shapes/shapes_easings_testbed.c similarity index 87% rename from examples/others/easings_testbed.c rename to examples/shapes/shapes_easings_testbed.c index fa4a599ee..a3ff23a7c 100644 --- a/examples/others/easings_testbed.c +++ b/examples/shapes/shapes_easings_testbed.c @@ -1,11 +1,11 @@ /******************************************************************************************* * -* raylib [others] example - easings testbed -* -* Example originally created with raylib 2.5, last time updated with raylib 2.5 +* raylib [shapes] example - easings testbed * * Example complexity rating: [★★★☆] 3/4 * +* Example originally created with raylib 2.5, last time updated with raylib 2.5 +* * Example contributed by Juan Miguel López (@flashback-fx) and reviewed by Ramon Santamaria (@raysan5) * * Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, @@ -26,6 +26,9 @@ #define D_MIN 1.0f #define D_MAX 10000.0f +//---------------------------------------------------------------------------------- +// Types and Structures Definition +//---------------------------------------------------------------------------------- // Easing types enum EasingTypes { EASE_LINEAR_NONE = 0, @@ -60,13 +63,13 @@ enum EasingTypes { EASING_NONE = NUM_EASING_TYPES }; -static float NoEase(float t, float b, float c, float d); // NoEase function declaration, function used when "no easing" is selected for any axis - -// Easing functions reference data -static const struct { +typedef struct EasingFuncs { const char *name; float (*func)(float, float, float, float); -} Easings[] = { +} EasingFuncs; + +// Easing functions reference data +static const EasingFuncs easings[] = { [EASE_LINEAR_NONE] = { .name = "EaseLinearNone", .func = EaseLinearNone }, [EASE_LINEAR_IN] = { .name = "EaseLinearIn", .func = EaseLinearIn }, [EASE_LINEAR_OUT] = { .name = "EaseLinearOut", .func = EaseLinearOut }, @@ -98,6 +101,12 @@ static const struct { [EASING_NONE] = { .name = "None", .func = NoEase }, }; +//------------------------------------------------------------------------------------ +// Module Functions Declaration +//------------------------------------------------------------------------------------ +// Function used when "no easing" is selected for any axis +static float NoEase(float t, float b, float c, float d); + //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ @@ -108,7 +117,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [others] example - easings testbed"); + InitWindow(screenWidth, screenHeight, "raylib [shapes] example - easings testbed"); Vector2 ballPosition = { 100.0f, 100.0f }; @@ -157,11 +166,11 @@ int main(void) } // Change d (duration) value - if (IsKeyPressed(KEY_W) && d < D_MAX - D_STEP) d += D_STEP; - else if (IsKeyPressed(KEY_Q) && d > D_MIN + D_STEP) d -= D_STEP; + if (IsKeyPressed(KEY_W) && (d < D_MAX - D_STEP)) d += D_STEP; + else if (IsKeyPressed(KEY_Q) && (d > D_MIN + D_STEP)) d -= D_STEP; - if (IsKeyDown(KEY_S) && d < D_MAX - D_STEP_FINE) d += D_STEP_FINE; - else if (IsKeyDown(KEY_A) && d > D_MIN + D_STEP_FINE) d -= D_STEP_FINE; + if (IsKeyDown(KEY_S) && (d < D_MAX - D_STEP_FINE)) d += D_STEP_FINE; + else if (IsKeyDown(KEY_A) && (d > D_MIN + D_STEP_FINE)) d -= D_STEP_FINE; // Play, pause and restart controls if (IsKeyPressed(KEY_SPACE) || IsKeyPressed(KEY_T) || @@ -220,7 +229,9 @@ int main(void) return 0; } - +//------------------------------------------------------------------------------------ +// Module Functions Declaration +//------------------------------------------------------------------------------------ // NoEase function, used when "no easing" is selected for any axis // It just ignores all parameters besides b static float NoEase(float t, float b, float c, float d) diff --git a/examples/others/easings_testbed.png b/examples/shapes/shapes_easings_testbed.png similarity index 100% rename from examples/others/easings_testbed.png rename to examples/shapes/shapes_easings_testbed.png diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 8483dc563..740d1bcbe 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -5619,8 +5619,8 @@ Global {3B27F358-2679-4F38-B297-17B536F580BB} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {718FCBD0-591D-448C-B7D5-9F1CA8544E7B} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {19CA0070-B4B2-4394-90B7-D0C259AA35BA} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {2CCCD9E4-9058-4291-BD89-39C979F0CA1E} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} - {9DB1F875-6E65-4195-B23F-ED8095C0B99C} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} + {2CCCD9E4-9058-4291-BD89-39C979F0CA1E} = {278D8859-20B1-428F-8448-064F46E1F021} + {9DB1F875-6E65-4195-B23F-ED8095C0B99C} = {278D8859-20B1-428F-8448-064F46E1F021} {52BA9067-A5FC-4CE8-82AD-7204ECFDEF9F} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {8E132D5A-2C00-48D0-8747-97E41356F26F} = {278D8859-20B1-428F-8448-064F46E1F021} {A4662163-83E7-4309-8CAA-B0BF13655FE6} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} From 98c773491179984e3de53a929fd31b467589a738 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 16:46:48 +0100 Subject: [PATCH 32/42] REVIEWED: `models_basic_voxel` example --- examples/models/models_basic_voxel.c | 13 +++++++++---- examples/models/models_basic_voxel.png | Bin 349583 -> 29035 bytes 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/examples/models/models_basic_voxel.c b/examples/models/models_basic_voxel.c index a70da1822..61313ecef 100644 --- a/examples/models/models_basic_voxel.c +++ b/examples/models/models_basic_voxel.c @@ -16,6 +16,7 @@ ********************************************************************************************/ #include "raylib.h" + #include "raymath.h" #define WORLD_SIZE 8 // Size of our voxel world (8x8x8 cubes) @@ -32,7 +33,7 @@ int main(void) InitWindow(screenWidth, screenHeight, "raylib [models] example - basic voxel"); - DisableCursor(); // Lock mouse to window center + DisableCursor(); // Lock mouse to window center // Define the camera to look into our 3d world (first person) Camera3D camera = { 0 }; @@ -59,7 +60,7 @@ int main(void) } } } - + SetTargetFPS(60); //-------------------------------------------------------------------------------------- @@ -74,7 +75,7 @@ int main(void) if (IsMouseButtonPressed(MOUSE_LEFT_BUTTON)) { // Cast a ray from the screen center (where crosshair would be) - Vector2 screenCenter = { screenWidth/2.0f, screenHeight/2.0f }; + Vector2 screenCenter = { GetScreenWidth()/2.0f, GetScreenHeight()/2.0f }; Ray ray = GetMouseRay(screenCenter, camera); // Check ray collision with all voxels @@ -132,8 +133,11 @@ int main(void) } } } - + EndMode3D(); + + // Draw reference point for raycasting to delete blocks + DrawCircle(GetRenderWidth()/2, GetScreenHeight()/2, 4, RED); DrawText("Left-click a voxel to remove it!", 10, 10, 20, DARKGRAY); DrawText("WASD to move, mouse to look around", 10, 35, 10, GRAY); @@ -145,6 +149,7 @@ int main(void) // De-Initialization //-------------------------------------------------------------------------------------- UnloadModel(cubeModel); + CloseWindow(); //-------------------------------------------------------------------------------------- diff --git a/examples/models/models_basic_voxel.png b/examples/models/models_basic_voxel.png index 8bbcaf8dae98aa01624392f07822e36f2f44a53d..0666ec8c8dd1b5c043ecfe6afffcb6fe5d4494ae 100644 GIT binary patch literal 29035 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%0A^Vr^v4`8hs~>J7}}@qJobzeWh`LrrU%B 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 literal 349583 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

D)bQt8=^%55 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¯=oYv~c#@#(mswRYT? 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

5=3z&^$j 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 s$8SCT%`DKW|Nr6t& Date: Thu, 19 Feb 2026 17:01:27 +0100 Subject: [PATCH 33/42] REVIEWED: examples: moved some examples out of others --- examples/Makefile | 7 ------- .../core_window_web.c} | 12 ++++++------ examples/core/core_window_web.png | Bin 0 -> 15094 bytes examples/examples_list.txt | 6 ------ examples/others/web_basic_window.png | Bin 10297 -> 0 bytes .../resources/shaders/glsl430/gol.glsl | 0 .../resources/shaders/glsl430/gol_render.glsl | 0 .../shaders/glsl430/gol_transfert.glsl | 0 .../shaders_rlgl_compute.c} | 7 ++++--- .../shaders_rlgl_compute.png} | Bin 10 files changed, 10 insertions(+), 22 deletions(-) rename examples/{others/web_basic_window.c => core/core_window_web.c} (93%) create mode 100644 examples/core/core_window_web.png delete mode 100644 examples/others/web_basic_window.png rename examples/{others => shaders}/resources/shaders/glsl430/gol.glsl (100%) rename examples/{others => shaders}/resources/shaders/glsl430/gol_render.glsl (100%) rename examples/{others => shaders}/resources/shaders/glsl430/gol_transfert.glsl (100%) rename examples/{others/rlgl_compute_shader.c => shaders/shaders_rlgl_compute.c} (97%) rename examples/{others/rlgl_compute_shader.png => shaders/shaders_rlgl_compute.png} (100%) diff --git a/examples/Makefile b/examples/Makefile index 4f86ad5c0..2db2d8453 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -729,13 +729,6 @@ AUDIO = \ audio/audio_spectrum_visualizer \ audio/audio_stream_effects -OTHERS = \ - others/easings_testbed \ - others/embedded_files_loading \ - others/raylib_opengl_interop \ - others/rlgl_compute_shader \ - others/rlgl_standalone \ - others/web_basic_window #EXAMPLES_LIST_END # Define processes to execute diff --git a/examples/others/web_basic_window.c b/examples/core/core_window_web.c similarity index 93% rename from examples/others/web_basic_window.c rename to examples/core/core_window_web.c index 217c47fbc..3b1b50748 100644 --- a/examples/others/web_basic_window.c +++ b/examples/core/core_window_web.c @@ -1,14 +1,14 @@ /******************************************************************************************* * -* raylib [others] example - basic window -* -* This example has been adapted to compile for PLATFORM_WEB and PLATFORM_DESKTOP -* As you will notice, code structure is slightly different to the other examples +* raylib [core] example - window web * * Example complexity rating: [★☆☆☆] 1/4 * * Example originally created with raylib 1.3, last time updated with raylib 5.5 * +* This example has been adapted to compile for PLATFORM_WEB and PLATFORM_DESKTOP +* As you will notice, code structure is slightly different to the other examples +* * Example licensed under an unmodified zlib/libpng license, which is an OSI-certified, * BSD-like license that allows static linking with closed source software * @@ -40,7 +40,7 @@ int main(void) { // Initialization //-------------------------------------------------------------------------------------- - InitWindow(screenWidth, screenHeight, "raylib [others] example - web basic window"); + InitWindow(screenWidth, screenHeight, "raylib [core] example - window web"); #if defined(PLATFORM_WEB) emscripten_set_main_loop(UpdateDrawFrame, 0, 1); @@ -79,7 +79,7 @@ void UpdateDrawFrame(void) ClearBackground(RAYWHITE); - DrawText("Congrats! You created your first window!", 190, 200, 20, LIGHTGRAY); + DrawText("Welcome to raylib web structure!", 220, 200, 20, SKYBLUE); EndDrawing(); //---------------------------------------------------------------------------------- diff --git a/examples/core/core_window_web.png b/examples/core/core_window_web.png new file mode 100644 index 0000000000000000000000000000000000000000..32886d665c07f38031ab8ce00696ae2a718d8d95 GIT binary patch literal 15094 zcmeAS@N?(olHy`uVBq!ia0y~yU{+vYU_8XZ1{4ubUVDOp!D_Fki(^PdT=Jh^Utia^ z1sX^(Emp)qlyEREyBHwH+jvnx0xQ8-)p{U5u-U`G)Ii)2=qSoXt^+2 zE{v87qvgVAxqxl_bF_3EEgeTo$I;S}*wQh>dBFz}ab}Kww~LUGInKt5d?zxpaL&&x zh~@y#zTD2>xM0ZQA$xLh$&>sgeKLK0Gn|A>*A+O3%V#|_z3@(U)yr&?_@1zG@I+9v zDvO)7!s5(A6Bak;1S~{Dp5g%`scT@x%<@bdzMlP?cHeDrvI$Fu9Mj^LIVKYkGci0V z96je6dY0|SH+%Df=R`)5G;gD#2-A^yEY2A%vqOs6W>+OG=DB%9rSe{vuRF9#>y-=7K9@1~oxAo*u!RrB znHC!>EM8fK#T#I+0sUfN#cVX|2GFYa#HGapT{3So92UtnH_^{yGyh#_GrtT1s@cqA7GZko39wbEn z5f!2mOn(o5**D>zU==^t+HY|@TbI}deDptY@8ZO&TT4`u9`COIQn%z{6)=3-V!`IB zy&}e3Mh?ap6he8?Sk`ToEiQx_Y^KiTvHU zEq81KUQWF7p=Bw1(q-|LFWYauY`pQs?|qG9PR(Pj{chUp!FDc`h6GnRp5Qw0xy(X=p{7Dn3(=zX2ha$&Sw7%dk@%Z1T$ z0ox$ZXz4gwI*yi(qow0$={Q=OV literal 0 HcmV?d00001 diff --git a/examples/examples_list.txt b/examples/examples_list.txt index eda62ee13..196fd15a7 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -211,9 +211,3 @@ audio;audio_stream_effects;★★★★;4.2;5.0;2022;2025;"Ramon Santamaria";@ra audio;audio_sound_multi;★★☆☆;5.0;5.0;2023;2025;"Jeffery Myers";@JeffM2501 audio;audio_sound_positioning;★★☆☆;5.5;5.5;2025;2025;"Le Juez Victor";@Bigfoot71 audio;audio_spectrum_visualizer;★★★☆;6.0;5.6-dev;2025;2025;"IANN";@meisei4 -others;rlgl_standalone;★★★★;1.6;4.0;2014;2025;"Ramon Santamaria";@raysan5 -others;rlgl_compute_shader;★★★★;4.0;4.0;2021;2025;"Teddy Astie";@tsnake41 -others;easings_testbed;★★★☆;2.5;3.0;2019;2025;"Juan Miguel López";@flashback-fx -others;raylib_opengl_interop;★★★★;3.8;4.0;2021;2025;"Stephan Soller";@arkanis -others;embedded_files_loading;★★☆☆;3.0;3.5;2020;2025;"Kristian Holmgren";@defutura -others;web_basic_window;★☆☆☆;5.6-dev;5.6-dev;2014;2025;"Ramon Santamaria";@raysan5 diff --git a/examples/others/web_basic_window.png b/examples/others/web_basic_window.png deleted file mode 100644 index 346184417a436343a769ba38a9ad9cfda0195181..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10297 zcmeHNdr(tX8ovPwtb*t`tzf8RsjKd8D-SDCgd{K^I$MIZ(%@J~s0vjWd4vcALV~zH zhS9L&w2Oko9cN)Tx8$nWqC65rEUZd04virSi8M&a4JJUiggozF5Nvk_{@Xuq=FUmZ zx#xV}m*4r$_qzAu0eX`Es*S4v0Px?xFX12nc#;5s(CzDujchpD+=qP;*aws10f{`= zfOWjG^0JDGGYgLc2Qp8bD%ws@JVZLZWBbnS5fMq2crpNN{oDS8xI-lwZ-$;- zCibqQeXd9OpHWA%eJ<;O5AKLh6qcwbVhLwrK7KTENc4x&zr?!{hgpVB)uFY5-~G=; zi>Rb}_VD`!1n)rBQnSia_Wp(f|JtB;BY~_}RMfu8YwfR-0$DdANi^sBPf;)7uZt_6 z3V_N_9)6kngK_Xxco*R5H{Uomt|fUS2;TMm!fS%ol5QOz%nh9#PS{1vez-XCTLK}J z=H>f#)xy%N1cJwrbIszDs@o4Tmjs;MNuqgO0N(WjS)?5#8tcg|b;3mZ#r!DwxkZWo zi_pC&1;&_`MH6&=m)UZ0uz3AQZoU7a zM2EaFw(Cd>lD%z?d3*Wh2K^`&r}uiFU&3KfCBSBRoL%a(1dF(2t-o#F(yiV_T$Jcv zei++O+HX+p!$t-pb5m2>FZ-`q!r>OQ0xtbqzSbt6Z7GOal;{8k>#{(L#iu_c1~1{j zVy=KoU2>1K&No|^yC~887B35QYU-Qls9j4qbV*mhC93WMkGxL)lX`LMX~$Op8Wg|a z+EkMKqJ zpKnFg3|_c|VpjGtc|%)8`)x0@I~B$0t@UsIEJ;-~OEuaZWeA7qa#BS+UMFMFQXhI! zxnSQ%WoYm?BjS#|n)6u4L>}C;cQ8WuNI_G*0yOK=E#)c>GgiT%@?%@=T#uf=4>8a+ zrEYmGmWF7fX^rH%VqO;=0_`@?#79aYiW}C6Z9F?iGta+RWx3{VoK1%uKeNSVP^xL~ zxOd9>+PyyOllk=1_SZ_Y`@y8x!Q^Q`q0D|SrG%{+*(uFwFt?f3>_GWYoZv2V=p-LO zPIFA0ALQEDym@Eccc#)%-K7ZG+(dDM{D(2a=9}o*Utph^bPEb!vcbkV8-=02B1ChBx6snl50FuP*bUaZv?NrY`_or)yLGH!O=6sLq6RYbwsBp^@OVb7!oW$U zisZ%7!gdj=*00qYSeTI{_{u@N1?ul`>0m{S zyWYHg>-B$PJMZ>B_MmGf?zTN~R4GK^)j!Q7Rv=hg4q9#FbrUeBf#;lw-WpcSBh-(f zmQo3(7Ca5oQLK2QW;bLgU`vXn!(O(>b~VGQG&;*ApgCZ`MYkMr*;?3FC9QVnfTg)% z;L{Z9hF}qkCiuAA<~-|(Y=k)2V;JHt@ zJ&wK64pEI?BSRsv`u`|kV{LG={CFD##b>q2XDr$JLaQZ3(aNPW^l*Vn8c;h>Hnthl zN*UqsoNVMeWm{vwHG5S-n`XvhsDPveS|nxwfo+hqVHiVImP8)8a^9f7^3tFmut4%m zWa>(l0pTNhqbj0*3g*$FGDJV%Y*fXj=OH$R$P5p~m|~gr{jP@ltLJM&UVW%v2V7NX z?~)n)c?d#v%o#Y4#@dci4zv=qTPr>UGeZ2E4AMqbgv+M9k;Zev2-G%t zuT1J&rz;!VhLLJrQzN4WHli+Dbr-B-P)p2QH$>US5TRhN?BsT#)C5t+&23skwfrU~ zSoK&7Tb8p)X{?o!KC^z&p2jIe++T*Y+M`Vkx*4trVI$VDbUn4-0vlz~Ny0M4h7)Xl zt_jm*-`>8aU}Z zHz<6`kr(%mD2XQU_fr$b+OgZ*%h2g^WVI7ER;YB4{E2RpqdVtRS${IdAuos|vhOWI zs{5KWB2}l#r{|CQDT9nGa@$i1MkyWChEE~4 zn~sLQzQh-j-2?KG87-0Ui*@X-_OSKgT|hnlq=~stRR~qsW`o5YqL=}e#_T{aecw{Wxhm;pAY +#include // Required for: NULL // IMPORTANT: This must match gol*.glsl GOL_WIDTH constant // This must be a multiple of 16 (check golLogic compute dispatch) diff --git a/examples/others/rlgl_compute_shader.png b/examples/shaders/shaders_rlgl_compute.png similarity index 100% rename from examples/others/rlgl_compute_shader.png rename to examples/shaders/shaders_rlgl_compute.png From 781c37972a56e977b01e0a540ba7a96688eecdb4 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:11:02 +0100 Subject: [PATCH 34/42] Updated examples, removed others category processing --- examples/Makefile | 1 + examples/Makefile.Web | 4 + examples/README.md | 13 +- examples/examples_list.txt | 7 + examples/shapes/shapes_easings_testbed.c | 23 +- .../examples/shapes_easings_testbed.vcxproj | 569 ++++++++++++++++++ projects/VS2022/raylib.sln | 165 +---- tools/rexm/reports/examples_issues.md | 7 - tools/rexm/reports/examples_validation.md | 9 +- tools/rexm/rexm.c | 30 +- 10 files changed, 638 insertions(+), 190 deletions(-) create mode 100644 projects/VS2022/examples/shapes_easings_testbed.vcxproj diff --git a/examples/Makefile b/examples/Makefile index 2db2d8453..a6b2d6941 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -578,6 +578,7 @@ SHAPES = \ shapes/shapes_easings_ball \ shapes/shapes_easings_box \ shapes/shapes_easings_rectangles \ + shapes/shapes_easings_testbed \ shapes/shapes_following_eyes \ shapes/shapes_hilbert_curve \ shapes/shapes_kaleidoscope \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 3841dff29..0e9515382 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -563,6 +563,7 @@ SHAPES = \ shapes/shapes_easings_ball \ shapes/shapes_easings_box \ shapes/shapes_easings_rectangles \ + shapes/shapes_easings_testbed \ shapes/shapes_following_eyes \ shapes/shapes_hilbert_curve \ shapes/shapes_kaleidoscope \ @@ -917,6 +918,9 @@ shapes/shapes_easings_box: shapes/shapes_easings_box.c shapes/shapes_easings_rectangles: shapes/shapes_easings_rectangles.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) +shapes/shapes_easings_testbed: shapes/shapes_easings_testbed.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + shapes/shapes_following_eyes: shapes/shapes_following_eyes.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) diff --git a/examples/README.md b/examples/README.md index 6b2c1950b..d96ca5c10 100644 --- a/examples/README.md +++ b/examples/README.md @@ -17,7 +17,7 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 208] +## EXAMPLES COLLECTION [TOTAL: 203] ### category: core [48] @@ -74,7 +74,7 @@ Examples using raylib [core](../src/rcore.c) module platform functionality: wind | [core_compute_hash](core/core_compute_hash.c) | core_compute_hash | ⭐⭐☆☆ | 5.6-dev | 5.6-dev | [Ramon Santamaria](https://github.com/raysan5) | | [core_keyboard_testbed](core/core_keyboard_testbed.c) | core_keyboard_testbed | ⭐⭐☆☆ | 5.6 | 5.6 | [Ramon Santamaria](https://github.com/raysan5) | -### category: shapes [39] +### category: shapes [40] Examples using raylib shapes drawing functionality, provided by raylib [shapes](../src/rshapes.c) module. @@ -119,6 +119,7 @@ Examples using raylib shapes drawing functionality, provided by raylib [shapes]( | [shapes_ball_physics](shapes/shapes_ball_physics.c) | shapes_ball_physics | ⭐⭐☆☆ | 5.6-dev | 5.6-dev | [David Buzatto](https://github.com/davidbuzatto) | | [shapes_penrose_tile](shapes/shapes_penrose_tile.c) | shapes_penrose_tile | ⭐⭐⭐⭐️ | 5.5 | 5.6-dev | [David Buzatto](https://github.com/davidbuzatto) | | [shapes_hilbert_curve](shapes/shapes_hilbert_curve.c) | shapes_hilbert_curve | ⭐⭐⭐☆ | 5.6 | 5.6 | [Hamza RAHAL](https://github.com/hmz-rhl) | +| [shapes_easings_testbed](shapes/shapes_easings_testbed.c) | shapes_easings_testbed | ⭐⭐⭐☆ | 2.5 | 2.5 | [Juan Miguel López](https://github.com/flashback-fx) | ### category: textures [30] @@ -270,18 +271,12 @@ Examples using raylib audio functionality, including sound/music loading and pla | [audio_sound_positioning](audio/audio_sound_positioning.c) | audio_sound_positioning | ⭐⭐☆☆ | 5.5 | 5.5 | [Le Juez Victor](https://github.com/Bigfoot71) | | [audio_spectrum_visualizer](audio/audio_spectrum_visualizer.c) | audio_spectrum_visualizer | ⭐⭐⭐☆ | 6.0 | 5.6-dev | [IANN](https://github.com/meisei4) | -### category: others [6] +### category: others [0] Examples showing raylib misc functionality that does not fit in other categories, like standalone modules usage or examples integrating external libraries. | example | image | difficulty
level | version
created | last version
updated | original
developer | |-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| -| [rlgl_standalone](others/rlgl_standalone.c) | rlgl_standalone | ⭐⭐⭐⭐️ | 1.6 | 4.0 | [Ramon Santamaria](https://github.com/raysan5) | -| [rlgl_compute_shader](others/rlgl_compute_shader.c) | rlgl_compute_shader | ⭐⭐⭐⭐️ | 4.0 | 4.0 | [Teddy Astie](https://github.com/tsnake41) | -| [easings_testbed](others/easings_testbed.c) | easings_testbed | ⭐⭐⭐☆ | 2.5 | 3.0 | [Juan Miguel López](https://github.com/flashback-fx) | -| [raylib_opengl_interop](others/raylib_opengl_interop.c) | raylib_opengl_interop | ⭐⭐⭐⭐️ | 3.8 | 4.0 | [Stephan Soller](https://github.com/arkanis) | -| [embedded_files_loading](others/embedded_files_loading.c) | embedded_files_loading | ⭐⭐☆☆ | 3.0 | 3.5 | [Kristian Holmgren](https://github.com/defutura) | -| [web_basic_window](others/web_basic_window.c) | web_basic_window | ⭐☆☆☆ | 5.6-dev | 5.6-dev | [Ramon Santamaria](https://github.com/raysan5) | Some example missing? As always, contributions are welcome, feel free to send new examples! Here is an [examples template](examples_template.c) with instructions to start with! diff --git a/examples/examples_list.txt b/examples/examples_list.txt index 196fd15a7..0ad7a763a 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -96,6 +96,7 @@ shapes;shapes_rlgl_triangle;★★☆☆;5.6-dev;5.6-dev;2025;2025;"Robin";@Robi shapes;shapes_ball_physics;★★☆☆;5.6-dev;5.6-dev;2025;2025;"David Buzatto";@davidbuzatto shapes;shapes_penrose_tile;★★★★;5.5;5.6-dev;2025;2025;"David Buzatto";@davidbuzatto shapes;shapes_hilbert_curve;★★★☆;5.6;5.6;2025;2025;"Hamza RAHAL";@hmz-rhl +shapes;shapes_easings_testbed;★★★☆;2.5;2.5;2019;2025;"Juan Miguel López";@flashback-fx textures;textures_logo_raylib;★☆☆☆;1.0;1.0;2014;2025;"Ramon Santamaria";@raysan5 textures;textures_srcrec_dstrec;★★★☆;1.3;1.3;2015;2025;"Ramon Santamaria";@raysan5 textures;textures_image_drawing;★★☆☆;1.4;1.4;2016;2025;"Ramon Santamaria";@raysan5 @@ -211,3 +212,9 @@ audio;audio_stream_effects;★★★★;4.2;5.0;2022;2025;"Ramon Santamaria";@ra audio;audio_sound_multi;★★☆☆;5.0;5.0;2023;2025;"Jeffery Myers";@JeffM2501 audio;audio_sound_positioning;★★☆☆;5.5;5.5;2025;2025;"Le Juez Victor";@Bigfoot71 audio;audio_spectrum_visualizer;★★★☆;6.0;5.6-dev;2025;2025;"IANN";@meisei4 +ei4 +ei4 +meisei4 +ei4 +ei4 +ei4 diff --git a/examples/shapes/shapes_easings_testbed.c b/examples/shapes/shapes_easings_testbed.c index a3ff23a7c..3f4f2528a 100644 --- a/examples/shapes/shapes_easings_testbed.c +++ b/examples/shapes/shapes_easings_testbed.c @@ -68,6 +68,15 @@ typedef struct EasingFuncs { float (*func)(float, float, float, float); } EasingFuncs; +//------------------------------------------------------------------------------------ +// Module Functions Declaration +//------------------------------------------------------------------------------------ +// Function used when "no easing" is selected for any axis +static float NoEase(float t, float b, float c, float d); + +//------------------------------------------------------------------------------------ +// Global Variables Definition +//------------------------------------------------------------------------------------ // Easing functions reference data static const EasingFuncs easings[] = { [EASE_LINEAR_NONE] = { .name = "EaseLinearNone", .func = EaseLinearNone }, @@ -101,11 +110,7 @@ static const EasingFuncs easings[] = { [EASING_NONE] = { .name = "None", .func = NoEase }, }; -//------------------------------------------------------------------------------------ -// Module Functions Declaration -//------------------------------------------------------------------------------------ -// Function used when "no easing" is selected for any axis -static float NoEase(float t, float b, float c, float d); + //------------------------------------------------------------------------------------ // Program main entry point @@ -191,8 +196,8 @@ int main(void) // Movement computation if (!paused && ((boundedT && t < d) || !boundedT)) { - ballPosition.x = Easings[easingX].func(t, 100.0f, 700.0f - 170.0f, d); - ballPosition.y = Easings[easingY].func(t, 100.0f, 400.0f - 170.0f, d); + ballPosition.x = easings[easingX].func(t, 100.0f, 700.0f - 170.0f, d); + ballPosition.y = easings[easingY].func(t, 100.0f, 400.0f - 170.0f, d); t += 1.0f; } //---------------------------------------------------------------------------------- @@ -204,8 +209,8 @@ int main(void) ClearBackground(RAYWHITE); // Draw information text - DrawText(TextFormat("Easing x: %s", Easings[easingX].name), 20, FONT_SIZE, FONT_SIZE, LIGHTGRAY); - DrawText(TextFormat("Easing y: %s", Easings[easingY].name), 20, FONT_SIZE*2, FONT_SIZE, LIGHTGRAY); + DrawText(TextFormat("Easing x: %s", easings[easingX].name), 20, FONT_SIZE, FONT_SIZE, LIGHTGRAY); + DrawText(TextFormat("Easing y: %s", easings[easingY].name), 20, FONT_SIZE*2, FONT_SIZE, LIGHTGRAY); DrawText(TextFormat("t (%c) = %.2f d = %.2f", (boundedT == true)? 'b' : 'u', t, d), 20, FONT_SIZE*3, FONT_SIZE, LIGHTGRAY); // Draw instructions text diff --git a/projects/VS2022/examples/shapes_easings_testbed.vcxproj b/projects/VS2022/examples/shapes_easings_testbed.vcxproj new file mode 100644 index 000000000..b2d63b10c --- /dev/null +++ b/projects/VS2022/examples/shapes_easings_testbed.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {4250CE87-9AA0-43BB-AB47-0636548922B5} + Win32Proj + shapes_easings_testbed + 10.0 + shapes_easings_testbed + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shapes + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 740d1bcbe..7b4c4b30a 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -21,8 +21,6 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "shaders", "shaders", "{5317 EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "audio", "audio", "{CC132A4D-D081-4C26-BFB9-AB11984054F8}" EndProject -Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "others", "others", "{E9D708A5-9C1F-4B84-A795-C5F191801762}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_window", "examples\core_basic_window.vcxproj", "{0981CA98-E4A5-4DF1-987F-A41D09131EFC}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_sprite_animation", "examples\textures_sprite_animation.vcxproj", "{C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC}" @@ -231,12 +229,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_rendering", EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_texture_waves", "examples\shaders_texture_waves.vcxproj", "{291B4975-8EFF-4C7C-8AF3-44A77B8491B8}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "embedded_files_loading", "examples\embedded_files_loading.vcxproj", "{FDE6080B-E203-4066-910D-AD0302566008}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "easings_testbed", "examples\easings_testbed.vcxproj", "{E1B6D565-9D7C-46B7-9202-ECF54974DE50}" -EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rlgl_standalone", "examples\rlgl_standalone.vcxproj", "{C8765523-58F8-4C8E-9914-693396F6F0FF}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading_vox", "examples\models_loading_vox.vcxproj", "{2F1B955B-275E-4D8E-8864-06FEC44D7912}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_loading_gltf", "examples\models_loading_gltf.vcxproj", "{F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71}" @@ -255,8 +247,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_basic_screen_manager", EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_custom_frame_control", "examples\core_custom_frame_control.vcxproj", "{658A1B85-554E-4A5D-973A-FFE592CDD5F2}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "rlgl_compute_shader", "examples\rlgl_compute_shader.vcxproj", "{07CA51AD-72AE-46A2-AAED-DC3E3F807976}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "text_3d_drawing", "examples\text_3d_drawing.vcxproj", "{27B110CC-43C0-400A-89D9-245E681647D7}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_polygon_drawing", "examples\textures_polygon_drawing.vcxproj", "{1DE84812-E143-4C4B-A61D-9267AAD55401}" @@ -363,8 +353,6 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_ascii_rendering", " EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_monitor_detector", "examples\core_monitor_detector.vcxproj", "{FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "web_basic_window", "examples\web_basic_window.vcxproj", "{A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}" -EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_kaleidoscope", "examples\shapes_kaleidoscope.vcxproj", "{0C442799-B09C-4CD1-9538-711B6E85E9BF}" EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_recursive_tree", "examples\shapes_recursive_tree.vcxproj", "{DFB40A10-F8B7-412A-BCC3-5EE49294D816}" @@ -437,6 +425,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_keyboard_testbed", "ex EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_framebuffer_rendering", "examples\textures_framebuffer_rendering.vcxproj", "{F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_testbed", "examples\shapes_easings_testbed.vcxproj", "{4250CE87-9AA0-43BB-AB47-0636548922B5}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -2973,76 +2963,6 @@ Global {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x64.Build.0 = Release|x64 {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x86.ActiveCfg = Release|Win32 {291B4975-8EFF-4C7C-8AF3-44A77B8491B8}.Release|x86.Build.0 = Release|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|ARM64.Build.0 = Debug|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x64.ActiveCfg = Debug|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x64.Build.0 = Debug|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x86.ActiveCfg = Debug|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Debug|x86.Build.0 = Debug|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|ARM64.ActiveCfg = Release|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|ARM64.Build.0 = Release|ARM64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|x64.ActiveCfg = Release|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|x64.Build.0 = Release|x64 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|x86.ActiveCfg = Release|Win32 - {FDE6080B-E203-4066-910D-AD0302566008}.Release|x86.Build.0 = Release|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|ARM64.Build.0 = Debug|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x64.ActiveCfg = Debug|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x64.Build.0 = Debug|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x86.ActiveCfg = Debug|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Debug|x86.Build.0 = Debug|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|ARM64.ActiveCfg = Release|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|ARM64.Build.0 = Release|ARM64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x64.ActiveCfg = Release|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x64.Build.0 = Release|x64 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x86.ActiveCfg = Release|Win32 - {E1B6D565-9D7C-46B7-9202-ECF54974DE50}.Release|x86.Build.0 = Release|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|ARM64.Build.0 = Debug|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x64.ActiveCfg = Debug|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x64.Build.0 = Debug|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x86.ActiveCfg = Debug|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Debug|x86.Build.0 = Debug|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|ARM64.ActiveCfg = Release|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|ARM64.Build.0 = Release|ARM64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x64.ActiveCfg = Release|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x64.Build.0 = Release|x64 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x86.ActiveCfg = Release|Win32 - {C8765523-58F8-4C8E-9914-693396F6F0FF}.Release|x86.Build.0 = Release|Win32 {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 {2F1B955B-275E-4D8E-8864-06FEC44D7912}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 @@ -3259,30 +3179,6 @@ Global {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x64.Build.0 = Release|x64 {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x86.ActiveCfg = Release|Win32 {658A1B85-554E-4A5D-973A-FFE592CDD5F2}.Release|x86.Build.0 = Release|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|ARM64.Build.0 = Debug|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x64.ActiveCfg = Debug|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x64.Build.0 = Debug|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x86.ActiveCfg = Debug|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Debug|x86.Build.0 = Debug|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|ARM64.ActiveCfg = Release|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|ARM64.Build.0 = Release|ARM64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x64.ActiveCfg = Release|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x64.Build.0 = Release|x64 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x86.ActiveCfg = Release|Win32 - {07CA51AD-72AE-46A2-AAED-DC3E3F807976}.Release|x86.Build.0 = Release|Win32 {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 {27B110CC-43C0-400A-89D9-245E681647D7}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 @@ -4555,30 +4451,6 @@ Global {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x64.Build.0 = Release|x64 {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x86.ActiveCfg = Release|Win32 {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3}.Release|x86.Build.0 = Release|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|ARM64.Build.0 = Debug|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x64.ActiveCfg = Debug|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x64.Build.0 = Debug|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x86.ActiveCfg = Debug|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Debug|x86.Build.0 = Debug|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|ARM64.ActiveCfg = Release|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|ARM64.Build.0 = Release|ARM64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x64.ActiveCfg = Release|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x64.Build.0 = Release|x64 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x86.ActiveCfg = Release|Win32 - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC}.Release|x86.Build.0 = Release|Win32 {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 {0C442799-B09C-4CD1-9538-711B6E85E9BF}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 @@ -5443,6 +5315,30 @@ Global {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x64.Build.0 = Release|x64 {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x86.ActiveCfg = Release|Win32 {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C}.Release|x86.Build.0 = Release|Win32 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug|ARM64.Build.0 = Debug|ARM64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug|x64.ActiveCfg = Debug|x64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug|x64.Build.0 = Debug|x64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug|x86.ActiveCfg = Debug|Win32 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Debug|x86.Build.0 = Debug|Win32 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|ARM64.ActiveCfg = Release|ARM64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|ARM64.Build.0 = Release|ARM64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x64.ActiveCfg = Release|x64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x64.Build.0 = Release|x64 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x86.ActiveCfg = Release|Win32 + {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -5455,7 +5351,6 @@ Global {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} {CC132A4D-D081-4C26-BFB9-AB11984054F8} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} - {E9D708A5-9C1F-4B84-A795-C5F191801762} = {8716DC0F-4FDE-4F57-8E25-5F78DFB80FE1} {0981CA98-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {C25D2CC6-80CA-4C8A-BE3B-2E0F4EA5D0CC} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} {103B292B-049B-4B15-85A1-9F902840DB2C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} @@ -5560,9 +5455,6 @@ Global {11F33A39-74B7-4018-B5F9-CC285A673A8F} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {A6F5E35E-B4A7-41B3-853A-75558E6E0715} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {291B4975-8EFF-4C7C-8AF3-44A77B8491B8} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {FDE6080B-E203-4066-910D-AD0302566008} = {E9D708A5-9C1F-4B84-A795-C5F191801762} - {E1B6D565-9D7C-46B7-9202-ECF54974DE50} = {E9D708A5-9C1F-4B84-A795-C5F191801762} - {C8765523-58F8-4C8E-9914-693396F6F0FF} = {E9D708A5-9C1F-4B84-A795-C5F191801762} {2F1B955B-275E-4D8E-8864-06FEC44D7912} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {F5FC9279-DE63-4EF3-B31F-CFCEF9B11F71} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {F2DB2E59-76BF-4D81-859A-AFC289C046C0} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} @@ -5572,7 +5464,6 @@ Global {3CFF7AB8-32CB-4D6D-9FED-53DBEF277359} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {8B1AF423-00F1-4924-AC54-F77D402D2AC9} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {658A1B85-554E-4A5D-973A-FFE592CDD5F2} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {07CA51AD-72AE-46A2-AAED-DC3E3F807976} = {E9D708A5-9C1F-4B84-A795-C5F191801762} {27B110CC-43C0-400A-89D9-245E681647D7} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} {1DE84812-E143-4C4B-A61D-9267AAD55401} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} {4A87569C-4BD3-4113-B4B9-573D65B3D3F8} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} @@ -5610,7 +5501,7 @@ Global {C54703BF-D68A-480D-BE27-49B62E45D582} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {9CD8BCAD-F212-4BCC-BA98-899743CE3279} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} {0981CA28-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {278D8859-20B1-428F-8448-064F46E1F021} {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {6777EC3C-077C-42FC-B4AD-B799CE55CCE4} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} {A61DAD9C-271C-4E95-81AA-DB4CD58564D4} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} @@ -5626,7 +5517,6 @@ Global {A4662163-83E7-4309-8CAA-B0BF13655FE6} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {5F4B766F-DD52-4B53-B6C3-BC7611E17F20} = {278D8859-20B1-428F-8448-064F46E1F021} {FF5F9EE9-29C5-40EE-BBCF-AE51B001FEC3} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {A9C422E7-0F03-4DBC-AC93-5C3EF4942DEC} = {E9D708A5-9C1F-4B84-A795-C5F191801762} {0C442799-B09C-4CD1-9538-711B6E85E9BF} = {278D8859-20B1-428F-8448-064F46E1F021} {DFB40A10-F8B7-412A-BCC3-5EE49294D816} = {278D8859-20B1-428F-8448-064F46E1F021} {BB58A5FB-1A35-4471-86D0-A5189EC541B3} = {278D8859-20B1-428F-8448-064F46E1F021} @@ -5663,6 +5553,7 @@ Global {DC163251-16C3-4B72-B965-ACDBA0F02BD1} = {278D8859-20B1-428F-8448-064F46E1F021} {D35D2FDA-B53F-4F70-81CA-24D95812B89C} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} + {4250CE87-9AA0-43BB-AB47-0636548922B5} = {278D8859-20B1-428F-8448-064F46E1F021} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} diff --git a/tools/rexm/reports/examples_issues.md b/tools/rexm/reports/examples_issues.md index 081170806..a648295cc 100644 --- a/tools/rexm/reports/examples_issues.md +++ b/tools/rexm/reports/examples_issues.md @@ -20,10 +20,3 @@ Example elements validated: ``` | **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]|[WMETA]| |:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:|:-----:| -| core_highdpi_testbed | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| rlgl_standalone | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| rlgl_compute_shader | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| easings_testbed | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| raylib_opengl_interop | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | -| embedded_files_loading | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| web_basic_window | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | diff --git a/tools/rexm/reports/examples_validation.md b/tools/rexm/reports/examples_validation.md index d8f4a9521..90283ace7 100644 --- a/tools/rexm/reports/examples_validation.md +++ b/tools/rexm/reports/examples_validation.md @@ -62,7 +62,7 @@ Example elements validated: | core_viewport_scaling | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_input_actions | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_directory_files | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| core_highdpi_testbed | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_highdpi_testbed | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_screen_recording | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_clipboard_text | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_text_file_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -107,6 +107,7 @@ Example elements validated: | shapes_ball_physics | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_penrose_tile | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_hilbert_curve | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shapes_easings_testbed | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_logo_raylib | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_srcrec_dstrec | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | textures_image_drawing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | @@ -222,9 +223,3 @@ Example elements validated: | audio_sound_multi | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_sound_positioning | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_spectrum_visualizer | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| rlgl_standalone | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| rlgl_compute_shader | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| easings_testbed | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| raylib_opengl_interop | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | -| embedded_files_loading | ✔ | ❌ | ✔ | ✔ | ✔ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | -| web_basic_window | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | diff --git a/tools/rexm/rexm.c b/tools/rexm/rexm.c index 70001a5f3..30ef6411f 100644 --- a/tools/rexm/rexm.c +++ b/tools/rexm/rexm.c @@ -63,7 +63,7 @@ #endif #define REXM_MAX_EXAMPLES 512 -#define REXM_MAX_EXAMPLE_CATEGORIES 8 +#define REXM_MAX_EXAMPLE_CATEGORIES 7 #define REXM_MAX_BUFFER_SIZE (2*1024*1024) // 2MB @@ -83,7 +83,7 @@ //---------------------------------------------------------------------------------- // raylib example info struct typedef struct { - char category[16]; // Example category: core, shapes, textures, text, models, shaders, audio, [others] + char category[16]; // Example category: core, shapes, textures, text, models, shaders, audio char name[128]; // Example name: _name_part int stars; // Example stars count: ★☆☆☆ char verCreated[12]; // Example raylib creation version @@ -151,7 +151,7 @@ typedef enum { OP_TESTLOG = 9, // Process available examples logs to generate report } rlExampleOperation; -static const char *exCategories[REXM_MAX_EXAMPLE_CATEGORIES] = { "core", "shapes", "textures", "text", "models", "shaders", "audio", "others" }; +static const char *exCategories[REXM_MAX_EXAMPLE_CATEGORIES] = { "core", "shapes", "textures", "text", "models", "shaders", "audio" }; // Paths required for examples management // NOTE: Paths can be provided with environment variables @@ -170,7 +170,7 @@ static const char *exVSProjectSolutionFile = NULL; // Env REXM_EXAMPLES_VS2022_S static int UpdateRequiredFiles(void); // Load examples collection information -// NOTE 1: Load by category: "ALL", "core", "shapes", "textures", "text", "models", "shaders", others" +// NOTE 1: Load by category: "ALL", "core", "shapes", "textures", "text", "models", "shaders", audio" // NOTE 2: Sort examples list on request flag static rlExampleInfo *LoadExampleData(const char *filter, bool sort, int *exCount); static void UnloadExampleData(rlExampleInfo *exInfo); @@ -590,7 +590,6 @@ int main(int argc, char *argv[]) else if (TextIsEqual(exCategory, "models")) nextCategoryIndex = 5; else if (TextIsEqual(exCategory, "shaders")) nextCategoryIndex = 6; else if (TextIsEqual(exCategory, "audio")) nextCategoryIndex = 7; - else if (TextIsEqual(exCategory, "others")) nextCategoryIndex = -1; // Add to EOF // Get required example info from example file header (if provided) @@ -1039,7 +1038,7 @@ int main(int argc, char *argv[]) if (nextCatIndex > (REXM_MAX_EXAMPLE_CATEGORIES - 1)) nextCatIndex = -1; // EOF // Find position to add new example on list, just before the following category - // Category order: core, shapes, textures, text, models, shaders, audio, [others] + // Category order: core, shapes, textures, text, models, shaders, audio int exListNextCatIndex = -1; if (nextCatIndex != -1) exListNextCatIndex = TextFindIndex(exList, exCategories[nextCatIndex]); else exListNextCatIndex = exListLen; // EOF @@ -1972,7 +1971,6 @@ static int UpdateRequiredFiles(void) //------------------------------------------------------------------------------------------------ // Edit: raylib/examples/Makefile.Web --> Update from collection - // NOTE: We avoid the "others" category on web building //------------------------------------------------------------------------------------------------ LOG("INFO: Updating raylib/examples/Makefile.Web\n"); char *mkwText = LoadFileText(TextFormat("%s/Makefile.Web", exBasePath)); @@ -1985,8 +1983,7 @@ static int UpdateRequiredFiles(void) memcpy(mkwTextUpdated, mkwText, mkwListStartIndex); mkwIndex = sprintf(mkwTextUpdated + mkwListStartIndex, "#EXAMPLES_LIST_START\n"); - // NOTE: We avoid the "others" category on web building - for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES - 1; i++) + for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES; i++) { mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat("%s = \\\n", TextToUpper(exCategories[i]))); @@ -2011,8 +2008,7 @@ static int UpdateRequiredFiles(void) mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, "shaders: $(SHADERS)\n"); mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, "audio: $(AUDIO)\n\n"); - // NOTE: We avoid the "others" category on web building - for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES - 1; i++) + for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES; i++) { mkwIndex += sprintf(mkwTextUpdated + mkwListStartIndex + mkwIndex, TextFormat("# Compile %s examples\n", TextToUpper(exCategories[i]))); @@ -2159,12 +2155,6 @@ static int UpdateRequiredFiles(void) mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "Examples using raylib audio functionality, including sound/music loading and playing. This functionality is provided by raylib [raudio](../src/raudio.c) module. Note this module can be used standalone independently of raylib.\n\n"); } - else if (i == 7) // "others" - { - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, TextFormat("\n### category: others [%i]\n\n", exCollectionCount)); - mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, - "Examples showing raylib misc functionality that does not fit in other categories, like standalone modules usage or examples integrating external libraries.\n\n"); - } // Table header required mdIndex += sprintf(mdTextUpdated + mdListStartIndex + mdIndex, "| example | image | difficulty
level | version
created | last version
updated | original
developer |\n"); @@ -2227,8 +2217,7 @@ static int UpdateRequiredFiles(void) char starsText[16] = { 0 }; - // NOTE: We avoid "others" category - for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES - 1; i++) + for (int i = 0; i < REXM_MAX_EXAMPLE_CATEGORIES; i++) { int exCollectionCount = 0; rlExampleInfo *exCollection = LoadExampleData(exCategories[i], false, &exCollectionCount); @@ -2295,8 +2284,7 @@ static rlExampleInfo *LoadExampleData(const char *filter, bool sort, int *exCoun (lines[i][0] == 's') || // shapes, shaders (lines[i][0] == 't') || // textures, text (lines[i][0] == 'm') || // models - (lines[i][0] == 'a') || // audio - (lines[i][0] == 'o'))) // TODO: Get others category? + (lines[i][0] == 'a'))) // audio { rlExampleInfo info = { 0 }; int result = ParseExampleInfoLine(lines[i], &info); From 0a7c7569aaf4491e80073a4ef95961d75302f5e6 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:11:32 +0100 Subject: [PATCH 35/42] Update examples_list.txt --- examples/examples_list.txt | 6 ------ 1 file changed, 6 deletions(-) diff --git a/examples/examples_list.txt b/examples/examples_list.txt index 0ad7a763a..6dd4aee40 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -212,9 +212,3 @@ audio;audio_stream_effects;★★★★;4.2;5.0;2022;2025;"Ramon Santamaria";@ra audio;audio_sound_multi;★★☆☆;5.0;5.0;2023;2025;"Jeffery Myers";@JeffM2501 audio;audio_sound_positioning;★★☆☆;5.5;5.5;2025;2025;"Le Juez Victor";@Bigfoot71 audio;audio_spectrum_visualizer;★★★☆;6.0;5.6-dev;2025;2025;"IANN";@meisei4 -ei4 -ei4 -meisei4 -ei4 -ei4 -ei4 From b9f16a28d358ae041b0474cb9c297b7affd33526 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:13:20 +0100 Subject: [PATCH 36/42] REXM: Update examples collection --- examples/Makefile | 2 +- examples/Makefile.Web | 4 + examples/README.md | 12 +- examples/examples_list.txt | 1 + examples/shaders/shaders_rlgl_compute.c | 4 +- .../examples/shaders_rlgl_compute.vcxproj | 569 ++++++++++++++++++ projects/VS2022/raylib.sln | 27 + tools/rexm/reports/examples_validation.md | 1 + 8 files changed, 608 insertions(+), 12 deletions(-) create mode 100644 projects/VS2022/examples/shaders_rlgl_compute.vcxproj diff --git a/examples/Makefile b/examples/Makefile index a6b2d6941..5f3f44773 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -708,6 +708,7 @@ SHADERS = \ shaders/shaders_palette_switch \ shaders/shaders_postprocessing \ shaders/shaders_raymarching_rendering \ + shaders/shaders_rlgl_compute \ shaders/shaders_rounded_rectangle \ shaders/shaders_shadowmap_rendering \ shaders/shaders_shapes_textures \ @@ -729,7 +730,6 @@ AUDIO = \ audio/audio_sound_positioning \ audio/audio_spectrum_visualizer \ audio/audio_stream_effects - #EXAMPLES_LIST_END # Define processes to execute diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 0e9515382..3f0c28506 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -693,6 +693,7 @@ SHADERS = \ shaders/shaders_palette_switch \ shaders/shaders_postprocessing \ shaders/shaders_raymarching_rendering \ + shaders/shaders_rlgl_compute \ shaders/shaders_rounded_rectangle \ shaders/shaders_shadowmap_rendering \ shaders/shaders_shapes_textures \ @@ -1465,6 +1466,9 @@ shaders/shaders_raymarching_rendering: shaders/shaders_raymarching_rendering.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/shaders/glsl100/raymarching.fs@resources/shaders/glsl100/raymarching.fs +shaders/shaders_rlgl_compute: shaders/shaders_rlgl_compute.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + shaders/shaders_rounded_rectangle: shaders/shaders_rounded_rectangle.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file shaders/resources/shaders/glsl100/base.vs@resources/shaders/glsl100/base.vs \ diff --git a/examples/README.md b/examples/README.md index d96ca5c10..69f6d71d1 100644 --- a/examples/README.md +++ b/examples/README.md @@ -17,7 +17,7 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 203] +## EXAMPLES COLLECTION [TOTAL: 204] ### category: core [48] @@ -215,7 +215,7 @@ Examples using raylib models functionality, including models loading/generation | [models_decals](models/models_decals.c) | models_decals | ⭐⭐⭐⭐️ | 5.6-dev | 5.6-dev | [JP Mortiboys](https://github.com/themushroompirates) | | [models_directional_billboard](models/models_directional_billboard.c) | models_directional_billboard | ⭐⭐☆☆ | 5.6-dev | 5.6 | [Robin](https://github.com/RobinsAviary) | -### category: shaders [33] +### category: shaders [34] Examples using raylib shaders functionality, including shaders loading, parameters configuration and drawing using them (model shaders and postprocessing shaders). This functionality is directly provided by raylib [rlgl](../src/rlgl.c) module. @@ -254,6 +254,7 @@ Examples using raylib shaders functionality, including shaders loading, paramete | [shaders_rounded_rectangle](shaders/shaders_rounded_rectangle.c) | shaders_rounded_rectangle | ⭐⭐⭐☆ | 5.5 | 5.5 | [Anstro Pleuton](https://github.com/anstropleuton) | | [shaders_depth_rendering](shaders/shaders_depth_rendering.c) | shaders_depth_rendering | ⭐⭐⭐☆ | 5.6-dev | 5.6-dev | [Luís Almeida](https://github.com/luis605) | | [shaders_game_of_life](shaders/shaders_game_of_life.c) | shaders_game_of_life | ⭐⭐⭐☆ | 5.6 | 5.6 | [Jordi Santonja](https://github.com/JordSant) | +| [shaders_rlgl_compute](shaders/shaders_rlgl_compute.c) | shaders_rlgl_compute | ⭐⭐⭐⭐️ | 4.0 | 4.0 | [Teddy Astie](https://github.com/tsnake41) | ### category: audio [9] @@ -271,12 +272,5 @@ Examples using raylib audio functionality, including sound/music loading and pla | [audio_sound_positioning](audio/audio_sound_positioning.c) | audio_sound_positioning | ⭐⭐☆☆ | 5.5 | 5.5 | [Le Juez Victor](https://github.com/Bigfoot71) | | [audio_spectrum_visualizer](audio/audio_spectrum_visualizer.c) | audio_spectrum_visualizer | ⭐⭐⭐☆ | 6.0 | 5.6-dev | [IANN](https://github.com/meisei4) | -### category: others [0] - -Examples showing raylib misc functionality that does not fit in other categories, like standalone modules usage or examples integrating external libraries. - -| example | image | difficulty
level | version
created | last version
updated | original
developer | -|-----------|--------|:-------------------:|:------------------:|:-----------------------:|:----------------------| - Some example missing? As always, contributions are welcome, feel free to send new examples! Here is an [examples template](examples_template.c) with instructions to start with! diff --git a/examples/examples_list.txt b/examples/examples_list.txt index 6dd4aee40..a8f8cb00c 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -203,6 +203,7 @@ shaders;shaders_lightmap_rendering;★★★☆;4.5;4.5;2019;2025;"Jussi Viitala shaders;shaders_rounded_rectangle;★★★☆;5.5;5.5;2025;2025;"Anstro Pleuton";@anstropleuton shaders;shaders_depth_rendering;★★★☆;5.6-dev;5.6-dev;2025;2025;"Luís Almeida";@luis605 shaders;shaders_game_of_life;★★★☆;5.6;5.6;2025;2025;"Jordi Santonja";@JordSant +shaders;shaders_rlgl_compute;★★★★;4.0;4.0;2021;2025;"Teddy Astie";@tsnake41 audio;audio_module_playing;★☆☆☆;1.5;3.5;2016;2025;"Ramon Santamaria";@raysan5 audio;audio_music_stream;★☆☆☆;1.3;4.2;2015;2025;"Ramon Santamaria";@raysan5 audio;audio_raw_stream;★★★☆;1.6;4.2;2015;2025;"Ramon Santamaria";@raysan5 diff --git a/examples/shaders/shaders_rlgl_compute.c b/examples/shaders/shaders_rlgl_compute.c index fd8a4cec7..af3bb6fe4 100644 --- a/examples/shaders/shaders_rlgl_compute.c +++ b/examples/shaders/shaders_rlgl_compute.c @@ -1,6 +1,6 @@ /******************************************************************************************* * -* raylib [others] example - compute shader +* raylib [shaders] example - rlgl compute * * WARNING: This example requires raylib compiled with OpenGL 4.3 version for * compute shaders support, shaders used in this example are #version 430 @@ -58,7 +58,7 @@ int main(void) const int screenWidth = GOL_WIDTH; const int screenHeight = GOL_WIDTH; - InitWindow(screenWidth, screenHeight, "raylib [others] example - compute shader"); + InitWindow(screenWidth, screenHeight, "raylib [shaders] example - rlgl compute"); const Vector2 resolution = { (float)screenWidth, (float)screenHeight }; unsigned int brushSize = 8; diff --git a/projects/VS2022/examples/shaders_rlgl_compute.vcxproj b/projects/VS2022/examples/shaders_rlgl_compute.vcxproj new file mode 100644 index 000000000..583898f19 --- /dev/null +++ b/projects/VS2022/examples/shaders_rlgl_compute.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {6B1A933E-71B8-4C1F-9E79-02D98830E671} + Win32Proj + shaders_rlgl_compute + 10.0 + shaders_rlgl_compute + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\shaders + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 7b4c4b30a..6575b6307 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -427,6 +427,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_framebuffer_render EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_testbed", "examples\shapes_easings_testbed.vcxproj", "{4250CE87-9AA0-43BB-AB47-0636548922B5}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_rlgl_compute", "examples\shaders_rlgl_compute.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -5339,6 +5341,30 @@ Global {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x64.Build.0 = Release|x64 {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x86.ActiveCfg = Release|Win32 {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x86.Build.0 = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -5554,6 +5580,7 @@ Global {D35D2FDA-B53F-4F70-81CA-24D95812B89C} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} {4250CE87-9AA0-43BB-AB47-0636548922B5} = {278D8859-20B1-428F-8448-064F46E1F021} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} diff --git a/tools/rexm/reports/examples_validation.md b/tools/rexm/reports/examples_validation.md index 90283ace7..633fcae2f 100644 --- a/tools/rexm/reports/examples_validation.md +++ b/tools/rexm/reports/examples_validation.md @@ -214,6 +214,7 @@ Example elements validated: | shaders_rounded_rectangle | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_depth_rendering | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_game_of_life | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| shaders_rlgl_compute | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_module_playing | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_music_stream | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | audio_raw_stream | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | From dea67fa18a3c4b345b79981c7f82a69d8ae5f63a Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:15:26 +0100 Subject: [PATCH 37/42] REXM: Update examples collection --- examples/Makefile | 1 + examples/Makefile.Web | 7 + examples/README.md | 5 +- examples/examples_list.txt | 1 + examples/shapes/shapes_easings_testbed.c | 2 - .../models_animation_bone_blending.vcxproj | 569 ++++++++++++++++++ projects/VS2022/raylib.sln | 27 + tools/rexm/reports/examples_issues.md | 1 + tools/rexm/reports/examples_validation.md | 1 + 9 files changed, 610 insertions(+), 4 deletions(-) create mode 100644 projects/VS2022/examples/models_animation_bone_blending.vcxproj diff --git a/examples/Makefile b/examples/Makefile index 5f3f44773..103cdc0fa 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -656,6 +656,7 @@ TEXT = \ text/text_writing_anim MODELS = \ + models/models_animation_bone_blending \ models/models_animation_gpu_skinning \ models/models_animation_playing \ models/models_basic_voxel \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 3f0c28506..663751ad1 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -641,6 +641,7 @@ TEXT = \ text/text_writing_anim MODELS = \ + models/models_animation_bone_blending \ models/models_animation_gpu_skinning \ models/models_animation_playing \ models/models_basic_voxel \ @@ -1193,6 +1194,12 @@ text/text_writing_anim: text/text_writing_anim.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) # Compile MODELS examples +models/models_animation_bone_blending: models/models_animation_bone_blending.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ + --preload-file models/resources/models/gltf/greenman.glb@resources/models/gltf/greenman.glb \ + --preload-file models/resources/shaders/glsl100/skinning.vs@resources/shaders/glsl100/skinning.vs \ + --preload-file models/resources/shaders/glsl100/skinning.fs@resources/shaders/glsl100/skinning.fs + models/models_animation_gpu_skinning: models/models_animation_gpu_skinning.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file models/resources/models/gltf/greenman.glb@resources/models/gltf/greenman.glb \ diff --git a/examples/README.md b/examples/README.md index 69f6d71d1..2b7474cff 100644 --- a/examples/README.md +++ b/examples/README.md @@ -17,7 +17,7 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 204] +## EXAMPLES COLLECTION [TOTAL: 205] ### category: core [48] @@ -181,7 +181,7 @@ Examples using raylib text functionality, including sprite fonts loading/generat | [text_words_alignment](text/text_words_alignment.c) | text_words_alignment | ⭐☆☆☆ | 5.6-dev | 5.6-dev | [JP Mortiboys](https://github.com/themushroompirates) | | [text_strings_management](text/text_strings_management.c) | text_strings_management | ⭐⭐⭐☆ | 5.6-dev | 5.6-dev | [David Buzatto](https://github.com/davidbuzatto) | -### category: models [27] +### category: models [28] Examples using raylib models functionality, including models loading/generation and drawing, provided by raylib [models](../src/rmodels.c) module. @@ -214,6 +214,7 @@ Examples using raylib models functionality, including models loading/generation | [models_rotating_cube](models/models_rotating_cube.c) | models_rotating_cube | ⭐☆☆☆ | 5.6-dev | 5.6-dev | [Jopestpe](https://github.com/jopestpe) | | [models_decals](models/models_decals.c) | models_decals | ⭐⭐⭐⭐️ | 5.6-dev | 5.6-dev | [JP Mortiboys](https://github.com/themushroompirates) | | [models_directional_billboard](models/models_directional_billboard.c) | models_directional_billboard | ⭐⭐☆☆ | 5.6-dev | 5.6 | [Robin](https://github.com/RobinsAviary) | +| [models_animation_bone_blending](models/models_animation_bone_blending.c) | models_animation_bone_blending | ⭐⭐⭐⭐️ | 5.5 | 5.5 | [dmitrii-brand](https://github.com/dmitrii-brand) | ### category: shaders [34] diff --git a/examples/examples_list.txt b/examples/examples_list.txt index a8f8cb00c..be0def2d8 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -170,6 +170,7 @@ models;models_basic_voxel;★★☆☆;5.5;5.5;2025;2025;"Tim Little";@timlittle models;models_rotating_cube;★☆☆☆;5.6-dev;5.6-dev;2025;2025;"Jopestpe";@jopestpe models;models_decals;★★★★;5.6-dev;5.6-dev;2025;2025;"JP Mortiboys";@themushroompirates models;models_directional_billboard;★★☆☆;5.6-dev;5.6;2025;2025;"Robin";@RobinsAviary +models;models_animation_bone_blending;★★★★;5.5;5.5;2026;2026;"dmitrii-brand";@dmitrii-brand shaders;shaders_ascii_rendering;★★☆☆;5.5;5.6;2025;2025;"Maicon Santana";@maiconpintoabreu shaders;shaders_basic_lighting;★★★★;3.0;4.2;2019;2025;"Chris Camacho";@chriscamacho shaders;shaders_model_shader;★★☆☆;1.3;3.7;2014;2025;"Ramon Santamaria";@raysan5 diff --git a/examples/shapes/shapes_easings_testbed.c b/examples/shapes/shapes_easings_testbed.c index 3f4f2528a..ce9b7d485 100644 --- a/examples/shapes/shapes_easings_testbed.c +++ b/examples/shapes/shapes_easings_testbed.c @@ -110,8 +110,6 @@ static const EasingFuncs easings[] = { [EASING_NONE] = { .name = "None", .func = NoEase }, }; - - //------------------------------------------------------------------------------------ // Program main entry point //------------------------------------------------------------------------------------ diff --git a/projects/VS2022/examples/models_animation_bone_blending.vcxproj b/projects/VS2022/examples/models_animation_bone_blending.vcxproj new file mode 100644 index 000000000..f03989949 --- /dev/null +++ b/projects/VS2022/examples/models_animation_bone_blending.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {6B1A933E-71B8-4C1F-9E79-02D98830E671} + Win32Proj + models_animation_bone_blending + 10.0 + models_animation_bone_blending + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\models + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 6575b6307..fdbf427ce 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -429,6 +429,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_testbed", "e EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_rlgl_compute", "examples\shaders_rlgl_compute.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_bone_blending", "examples\models_animation_bone_blending.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -5365,6 +5367,30 @@ Global {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -5581,6 +5607,7 @@ Global {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} {4250CE87-9AA0-43BB-AB47-0636548922B5} = {278D8859-20B1-428F-8448-064F46E1F021} {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} diff --git a/tools/rexm/reports/examples_issues.md b/tools/rexm/reports/examples_issues.md index a648295cc..3fcc136e5 100644 --- a/tools/rexm/reports/examples_issues.md +++ b/tools/rexm/reports/examples_issues.md @@ -20,3 +20,4 @@ Example elements validated: ``` | **EXAMPLE NAME** | [C] | [CAT]| [INFO]|[PNG]|[WPNG]| [RES]| [MK] |[MKWEB]| [VCX]| [SOL]|[RDME]|[JS] | [WOUT]|[WMETA]| |:---------------------------------|:---:|:----:|:-----:|:---:|:----:|:----:|:----:|:-----:|:----:|:----:|:----:|:---:|:-----:|:-----:| +| models_animation_bone_blending | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | diff --git a/tools/rexm/reports/examples_validation.md b/tools/rexm/reports/examples_validation.md index 633fcae2f..b2c05ebba 100644 --- a/tools/rexm/reports/examples_validation.md +++ b/tools/rexm/reports/examples_validation.md @@ -181,6 +181,7 @@ Example elements validated: | models_rotating_cube | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_decals | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_directional_billboard | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_animation_bone_blending | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_ascii_rendering | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_basic_lighting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_model_shader | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | From 1f4e1bc477feccf3ed3a355a578f7c14e2fd171b Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:18:50 +0100 Subject: [PATCH 38/42] REXM: Update examples collection --- examples/Makefile | 1 + examples/Makefile.Web | 7 ++++++ examples/README.md | 5 ++-- examples/examples_list.txt | 1 + examples/models/models_animation_blending.c | 6 ++--- projects/VS2022/raylib.sln | 27 +++++++++++++++++++++ tools/rexm/reports/examples_validation.md | 1 + 7 files changed, 43 insertions(+), 5 deletions(-) diff --git a/examples/Makefile b/examples/Makefile index 103cdc0fa..a1ddb12a0 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -656,6 +656,7 @@ TEXT = \ text/text_writing_anim MODELS = \ + models/models_animation_blending \ models/models_animation_bone_blending \ models/models_animation_gpu_skinning \ models/models_animation_playing \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index 663751ad1..c308fa8f7 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -641,6 +641,7 @@ TEXT = \ text/text_writing_anim MODELS = \ + models/models_animation_blending \ models/models_animation_bone_blending \ models/models_animation_gpu_skinning \ models/models_animation_playing \ @@ -1194,6 +1195,12 @@ text/text_writing_anim: text/text_writing_anim.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) # Compile MODELS examples +models/models_animation_blending: models/models_animation_blending.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ + --preload-file models/resources/models/gltf/robot.glb@resources/models/gltf/robot.glb \ + --preload-file models/resources/shaders/glsl100/skinning.vs@resources/shaders/glsl100/skinning.vs \ + --preload-file models/resources/shaders/glsl100/skinning.fs@resources/shaders/glsl100/skinning.fs + models/models_animation_bone_blending: models/models_animation_bone_blending.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) \ --preload-file models/resources/models/gltf/greenman.glb@resources/models/gltf/greenman.glb \ diff --git a/examples/README.md b/examples/README.md index 2b7474cff..26ba4d3d6 100644 --- a/examples/README.md +++ b/examples/README.md @@ -17,7 +17,7 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 205] +## EXAMPLES COLLECTION [TOTAL: 206] ### category: core [48] @@ -181,7 +181,7 @@ Examples using raylib text functionality, including sprite fonts loading/generat | [text_words_alignment](text/text_words_alignment.c) | text_words_alignment | ⭐☆☆☆ | 5.6-dev | 5.6-dev | [JP Mortiboys](https://github.com/themushroompirates) | | [text_strings_management](text/text_strings_management.c) | text_strings_management | ⭐⭐⭐☆ | 5.6-dev | 5.6-dev | [David Buzatto](https://github.com/davidbuzatto) | -### category: models [28] +### category: models [29] Examples using raylib models functionality, including models loading/generation and drawing, provided by raylib [models](../src/rmodels.c) module. @@ -215,6 +215,7 @@ Examples using raylib models functionality, including models loading/generation | [models_decals](models/models_decals.c) | models_decals | ⭐⭐⭐⭐️ | 5.6-dev | 5.6-dev | [JP Mortiboys](https://github.com/themushroompirates) | | [models_directional_billboard](models/models_directional_billboard.c) | models_directional_billboard | ⭐⭐☆☆ | 5.6-dev | 5.6 | [Robin](https://github.com/RobinsAviary) | | [models_animation_bone_blending](models/models_animation_bone_blending.c) | models_animation_bone_blending | ⭐⭐⭐⭐️ | 5.5 | 5.5 | [dmitrii-brand](https://github.com/dmitrii-brand) | +| [models_animation_blending](models/models_animation_blending.c) | models_animation_blending | ☆☆☆☆ | 5.5 | 5.6-dev | [Kirandeep](https://github.com/Kirandeep-Singh-Khehra) | ### category: shaders [34] diff --git a/examples/examples_list.txt b/examples/examples_list.txt index be0def2d8..ededf8e5a 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -171,6 +171,7 @@ models;models_rotating_cube;★☆☆☆;5.6-dev;5.6-dev;2025;2025;"Jopestpe";@j models;models_decals;★★★★;5.6-dev;5.6-dev;2025;2025;"JP Mortiboys";@themushroompirates models;models_directional_billboard;★★☆☆;5.6-dev;5.6;2025;2025;"Robin";@RobinsAviary models;models_animation_bone_blending;★★★★;5.5;5.5;2026;2026;"dmitrii-brand";@dmitrii-brand +models;models_animation_blending;☆☆☆☆;5.5;5.6-dev;2024;2024;"Kirandeep";@Kirandeep-Singh-Khehra shaders;shaders_ascii_rendering;★★☆☆;5.5;5.6;2025;2025;"Maicon Santana";@maiconpintoabreu shaders;shaders_basic_lighting;★★★★;3.0;4.2;2019;2025;"Chris Camacho";@chriscamacho shaders;shaders_model_shader;★★☆☆;1.3;3.7;2014;2025;"Ramon Santamaria";@raysan5 diff --git a/examples/models/models_animation_blending.c b/examples/models/models_animation_blending.c index 225c1bfbb..b33dbe85d 100644 --- a/examples/models/models_animation_blending.c +++ b/examples/models/models_animation_blending.c @@ -1,8 +1,8 @@ /******************************************************************************************* * -* raylib [core] example - Model animation blending +* raylib [models] example - animation blending * -* Example originally created with raylib 5.5 +* Example originally created with raylib 5.5, last time updated with raylib 5.6-dev * * Example contributed by Kirandeep (@Kirandeep-Singh-Khehra) * @@ -37,7 +37,7 @@ int main(void) const int screenWidth = 800; const int screenHeight = 450; - InitWindow(screenWidth, screenHeight, "raylib [models] example - Model Animation Blending"); + InitWindow(screenWidth, screenHeight, "raylib [models] example - animation blending"); // Define the camera to look into our 3d world Camera camera = { 0 }; diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index fdbf427ce..6cd7e8efc 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -431,6 +431,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_rlgl_compute", "exa EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_bone_blending", "examples\models_animation_bone_blending.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_blending", "examples\models_animation_blending.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -5391,6 +5393,30 @@ Global {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -5608,6 +5634,7 @@ Global {4250CE87-9AA0-43BB-AB47-0636548922B5} = {278D8859-20B1-428F-8448-064F46E1F021} {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} diff --git a/tools/rexm/reports/examples_validation.md b/tools/rexm/reports/examples_validation.md index b2c05ebba..391c007cb 100644 --- a/tools/rexm/reports/examples_validation.md +++ b/tools/rexm/reports/examples_validation.md @@ -182,6 +182,7 @@ Example elements validated: | models_decals | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_directional_billboard | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | models_animation_bone_blending | ✔ | ✔ | ✔ | ❌ | ❌ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| models_animation_blending | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_ascii_rendering | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_basic_lighting | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shaders_model_shader | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | From 1a5e22808c35350ec98fec3664d73569916af4af Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:19:44 +0100 Subject: [PATCH 39/42] REXM: Update examples collection --- examples/Makefile | 1 + examples/Makefile.Web | 4 + examples/README.md | 5 +- examples/examples_list.txt | 1 + .../VS2022/examples/core_window_web.vcxproj | 569 ++++++++++++++++++ projects/VS2022/raylib.sln | 27 + tools/rexm/reports/examples_validation.md | 1 + 7 files changed, 606 insertions(+), 2 deletions(-) create mode 100644 projects/VS2022/examples/core_window_web.vcxproj diff --git a/examples/Makefile b/examples/Makefile index a1ddb12a0..40906ebfc 100644 --- a/examples/Makefile +++ b/examples/Makefile @@ -561,6 +561,7 @@ CORE = \ core/core_window_flags \ core/core_window_letterbox \ core/core_window_should_close \ + core/core_window_web \ core/core_world_screen SHAPES = \ diff --git a/examples/Makefile.Web b/examples/Makefile.Web index c308fa8f7..b91f59267 100644 --- a/examples/Makefile.Web +++ b/examples/Makefile.Web @@ -546,6 +546,7 @@ CORE = \ core/core_window_flags \ core/core_window_letterbox \ core/core_window_should_close \ + core/core_window_web \ core/core_world_screen SHAPES = \ @@ -875,6 +876,9 @@ core/core_window_letterbox: core/core_window_letterbox.c core/core_window_should_close: core/core_window_should_close.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) +core/core_window_web: core/core_window_web.c + $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) + core/core_world_screen: core/core_world_screen.c $(CC) -o $@$(EXT) $< $(CFLAGS) $(INCLUDE_PATHS) $(LDFLAGS) $(LDLIBS) -D$(PLATFORM) diff --git a/examples/README.md b/examples/README.md index 26ba4d3d6..2b8b9dd98 100644 --- a/examples/README.md +++ b/examples/README.md @@ -17,9 +17,9 @@ You may find it easier to use than other toolchains, especially when it comes to - `zig build [module]` to compile all examples for a module (e.g. `zig build core`) - `zig build [example]` to compile _and run_ a particular example (e.g. `zig build core_basic_window`) -## EXAMPLES COLLECTION [TOTAL: 206] +## EXAMPLES COLLECTION [TOTAL: 207] -### category: core [48] +### category: core [49] Examples using raylib [core](../src/rcore.c) module platform functionality: window creation, inputs, drawing modes and system functionality. @@ -73,6 +73,7 @@ Examples using raylib [core](../src/rcore.c) module platform functionality: wind | [core_text_file_loading](core/core_text_file_loading.c) | core_text_file_loading | ⭐☆☆☆ | 5.5 | 5.6 | [Aanjishnu Bhattacharyya](https://github.com/NimComPoo-04) | | [core_compute_hash](core/core_compute_hash.c) | core_compute_hash | ⭐⭐☆☆ | 5.6-dev | 5.6-dev | [Ramon Santamaria](https://github.com/raysan5) | | [core_keyboard_testbed](core/core_keyboard_testbed.c) | core_keyboard_testbed | ⭐⭐☆☆ | 5.6 | 5.6 | [Ramon Santamaria](https://github.com/raysan5) | +| [core_window_web](core/core_window_web.c) | core_window_web | ⭐☆☆☆ | 1.3 | 5.5 | [Ramon Santamaria](https://github.com/raysan5) | ### category: shapes [40] diff --git a/examples/examples_list.txt b/examples/examples_list.txt index ededf8e5a..85b997ec4 100644 --- a/examples/examples_list.txt +++ b/examples/examples_list.txt @@ -57,6 +57,7 @@ core;core_clipboard_text;★★☆☆;5.6-dev;5.6-dev;2025;2025;"Ananth S";@Anan core;core_text_file_loading;★☆☆☆;5.5;5.6;0;0;"Aanjishnu Bhattacharyya";@NimComPoo-04 core;core_compute_hash;★★☆☆;5.6-dev;5.6-dev;2025;2025;"Ramon Santamaria";@raysan5 core;core_keyboard_testbed;★★☆☆;5.6;5.6;2026;2026;"Ramon Santamaria";@raysan5 +core;core_window_web;★☆☆☆;1.3;5.5;2015;2025;"Ramon Santamaria";@raysan5 shapes;shapes_basic_shapes;★☆☆☆;1.0;4.2;2014;2025;"Ramon Santamaria";@raysan5 shapes;shapes_bouncing_ball;★☆☆☆;2.5;2.5;2013;2025;"Ramon Santamaria";@raysan5 shapes;shapes_bullet_hell;★☆☆☆;5.6;5.6;2025;2025;"Zero";@zerohorsepower diff --git a/projects/VS2022/examples/core_window_web.vcxproj b/projects/VS2022/examples/core_window_web.vcxproj new file mode 100644 index 000000000..4d7a0e741 --- /dev/null +++ b/projects/VS2022/examples/core_window_web.vcxproj @@ -0,0 +1,569 @@ + + + + + Debug.DLL + ARM64 + + + Debug.DLL + Win32 + + + Debug.DLL + x64 + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release.DLL + ARM64 + + + Release.DLL + Win32 + + + Release.DLL + x64 + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {6B1A933E-71B8-4C1F-9E79-02D98830E671} + Win32Proj + core_window_web + 10.0 + core_window_web + + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + true + $(DefaultPlatformToolset) + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + Application + false + $(DefaultPlatformToolset) + true + Unicode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + true + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + false + $(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)\ + $(SolutionDir)\build\$(ProjectName)\obj\$(Platform)\$(Configuration)\ + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + $(SolutionDir)..\..\examples\core + WindowsLocalDebugger + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + /FS %(AdditionalOptions) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + + + Level3 + Disabled + WIN32;_DEBUG;_CONSOLE;PLATFORM_DESKTOP;%(PreprocessorDefinitions) + CompileAsC + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + + + Console + true + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + Copy Debug DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + Level3 + + + MaxSpeed + true + true + WIN32;NDEBUG;_CONSOLE;%(PreprocessorDefinitions);PLATFORM_DESKTOP + $(SolutionDir)..\..\src;%(AdditionalIncludeDirectories) + CompileAsC + true + + + Console + true + true + true + raylib.lib;opengl32.lib;kernel32.lib;user32.lib;gdi32.lib;winmm.lib;winspool.lib;comdlg32.lib;advapi32.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;odbc32.lib;odbccp32.lib;%(AdditionalDependencies) + $(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\ + + + xcopy /y /d "$(SolutionDir)\build\raylib\bin\$(Platform)\$(Configuration)\raylib.dll" "$(SolutionDir)\build\$(ProjectName)\bin\$(Platform)\$(Configuration)" + + + Copy Release DLL to output directory + + + + + + + + + + + {e89d61ac-55de-4482-afd4-df7242ebc859} + + + + + + \ No newline at end of file diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 6cd7e8efc..7f8fbbbf0 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -433,6 +433,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_bone_blend EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_blending", "examples\models_animation_blending.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_web", "examples\core_window_web.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug.DLL|ARM64 = Debug.DLL|ARM64 @@ -5417,6 +5419,30 @@ Global {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 + {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -5635,6 +5661,7 @@ Global {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} diff --git a/tools/rexm/reports/examples_validation.md b/tools/rexm/reports/examples_validation.md index 391c007cb..9c0c02956 100644 --- a/tools/rexm/reports/examples_validation.md +++ b/tools/rexm/reports/examples_validation.md @@ -68,6 +68,7 @@ Example elements validated: | core_text_file_loading | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_compute_hash | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | core_keyboard_testbed | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | +| core_window_web | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_basic_shapes | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_bouncing_ball | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | | shapes_bullet_hell | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | From 4a89da3300c10965a92884aaff98c89f807ed0fc Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:22:45 +0100 Subject: [PATCH 40/42] Update VS2022 examples solution --- .../VS2022/examples/core_window_web.vcxproj | 2 +- .../models_animation_blending.vcxproj | 4 +- .../models_animation_bone_blending.vcxproj | 2 +- .../examples/shaders_rlgl_compute.vcxproj | 2 +- projects/VS2022/raylib.sln | 210 +++++++++--------- 5 files changed, 110 insertions(+), 110 deletions(-) diff --git a/projects/VS2022/examples/core_window_web.vcxproj b/projects/VS2022/examples/core_window_web.vcxproj index 4d7a0e741..d26befac0 100644 --- a/projects/VS2022/examples/core_window_web.vcxproj +++ b/projects/VS2022/examples/core_window_web.vcxproj @@ -51,7 +51,7 @@ - {6B1A933E-71B8-4C1F-9E79-02D98830E671} + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3} Win32Proj core_window_web 10.0 diff --git a/projects/VS2022/examples/models_animation_blending.vcxproj b/projects/VS2022/examples/models_animation_blending.vcxproj index bf8a8b27a..3eca7a6f2 100644 --- a/projects/VS2022/examples/models_animation_blending.vcxproj +++ b/projects/VS2022/examples/models_animation_blending.vcxproj @@ -35,7 +35,7 @@ - {AFDDE100-2D36-4749-817D-12E54C56312F} + {BB9C957D-34F1-46AE-B64A-9E0499C1746D} Win32Proj models_animation_blending 10.0 @@ -384,4 +384,4 @@ - + \ No newline at end of file diff --git a/projects/VS2022/examples/models_animation_bone_blending.vcxproj b/projects/VS2022/examples/models_animation_bone_blending.vcxproj index f03989949..475ad47f0 100644 --- a/projects/VS2022/examples/models_animation_bone_blending.vcxproj +++ b/projects/VS2022/examples/models_animation_bone_blending.vcxproj @@ -51,7 +51,7 @@ - {6B1A933E-71B8-4C1F-9E79-02D98830E671} + {AC751FE1-C986-4B6A-92A8-28ED89DEE671} Win32Proj models_animation_bone_blending 10.0 diff --git a/projects/VS2022/examples/shaders_rlgl_compute.vcxproj b/projects/VS2022/examples/shaders_rlgl_compute.vcxproj index 583898f19..d10553409 100644 --- a/projects/VS2022/examples/shaders_rlgl_compute.vcxproj +++ b/projects/VS2022/examples/shaders_rlgl_compute.vcxproj @@ -51,7 +51,7 @@ - {6B1A933E-71B8-4C1F-9E79-02D98830E671} + {AEA9D0D4-B810-4624-BC75-10A291584ED6} Win32Proj shaders_rlgl_compute 10.0 diff --git a/projects/VS2022/raylib.sln b/projects/VS2022/raylib.sln index 7f8fbbbf0..873db235b 100644 --- a/projects/VS2022/raylib.sln +++ b/projects/VS2022/raylib.sln @@ -427,13 +427,13 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "textures_framebuffer_render EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shapes_easings_testbed", "examples\shapes_easings_testbed.vcxproj", "{4250CE87-9AA0-43BB-AB47-0636548922B5}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_rlgl_compute", "examples\shaders_rlgl_compute.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shaders_rlgl_compute", "examples\shaders_rlgl_compute.vcxproj", "{AEA9D0D4-B810-4624-BC75-10A291584ED6}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_bone_blending", "examples\models_animation_bone_blending.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_bone_blending", "examples\models_animation_bone_blending.vcxproj", "{AC751FE1-C986-4B6A-92A8-28ED89DEE671}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_blending", "examples\models_animation_blending.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "models_animation_blending", "examples\models_animation_blending.vcxproj", "{BB9C957D-34F1-46AE-B64A-9E0499C1746D}" EndProject -Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_web", "examples\core_window_web.vcxproj", "{6B1A933E-71B8-4C1F-9E79-02D98830E671}" +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core_window_web", "examples\core_window_web.vcxproj", "{4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -5347,102 +5347,102 @@ Global {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x64.Build.0 = Release|x64 {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x86.ActiveCfg = Release|Win32 {4250CE87-9AA0-43BB-AB47-0636548922B5}.Release|x86.Build.0 = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.ActiveCfg = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|ARM64.Build.0 = Debug|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.ActiveCfg = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x64.Build.0 = Debug|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.ActiveCfg = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Debug|x86.Build.0 = Debug|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x64.Build.0 = Release.DLL|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.ActiveCfg = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|ARM64.Build.0 = Release|ARM64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.ActiveCfg = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x64.Build.0 = Release|x64 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.ActiveCfg = Release|Win32 - {6B1A933E-71B8-4C1F-9E79-02D98830E671}.Release|x86.Build.0 = Release|Win32 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug|ARM64.Build.0 = Debug|ARM64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug|x64.ActiveCfg = Debug|x64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug|x64.Build.0 = Debug|x64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug|x86.ActiveCfg = Debug|Win32 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Debug|x86.Build.0 = Debug|Win32 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release|ARM64.ActiveCfg = Release|ARM64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release|ARM64.Build.0 = Release|ARM64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release|x64.ActiveCfg = Release|x64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release|x64.Build.0 = Release|x64 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release|x86.ActiveCfg = Release|Win32 + {AEA9D0D4-B810-4624-BC75-10A291584ED6}.Release|x86.Build.0 = Release|Win32 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug|ARM64.Build.0 = Debug|ARM64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug|x64.ActiveCfg = Debug|x64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug|x64.Build.0 = Debug|x64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug|x86.ActiveCfg = Debug|Win32 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Debug|x86.Build.0 = Debug|Win32 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release|ARM64.ActiveCfg = Release|ARM64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release|ARM64.Build.0 = Release|ARM64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release|x64.ActiveCfg = Release|x64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release|x64.Build.0 = Release|x64 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release|x86.ActiveCfg = Release|Win32 + {AC751FE1-C986-4B6A-92A8-28ED89DEE671}.Release|x86.Build.0 = Release|Win32 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug.DLL|ARM64.Build.0 = Debug.DLL|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug|ARM64.ActiveCfg = Debug|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug|ARM64.Build.0 = Debug|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug|x64.ActiveCfg = Debug|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug|x64.Build.0 = Debug|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug|x86.ActiveCfg = Debug|Win32 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Debug|x86.Build.0 = Debug|Win32 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release.DLL|ARM64.ActiveCfg = Release.DLL|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release.DLL|ARM64.Build.0 = Release.DLL|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release|ARM64.ActiveCfg = Release|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release|ARM64.Build.0 = Release|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release|x64.ActiveCfg = Release|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release|x64.Build.0 = Release|x64 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release|x86.ActiveCfg = Release|Win32 + {BB9C957D-34F1-46AE-B64A-9E0499C1746D}.Release|x86.Build.0 = Release|Win32 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug.DLL|ARM64.ActiveCfg = Debug.DLL|ARM64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug.DLL|ARM64.Build.0 = Debug.DLL|ARM64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug.DLL|x64.ActiveCfg = Debug.DLL|x64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug.DLL|x64.Build.0 = Debug.DLL|x64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug.DLL|x86.ActiveCfg = Debug.DLL|Win32 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug.DLL|x86.Build.0 = Debug.DLL|Win32 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug|ARM64.Build.0 = Debug|ARM64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug|x64.ActiveCfg = Debug|x64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug|x64.Build.0 = Debug|x64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug|x86.ActiveCfg = Debug|Win32 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Debug|x86.Build.0 = Debug|Win32 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release.DLL|ARM64.ActiveCfg = Release.DLL|ARM64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release.DLL|ARM64.Build.0 = Release.DLL|ARM64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release.DLL|x64.ActiveCfg = Release.DLL|x64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release.DLL|x64.Build.0 = Release.DLL|x64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release.DLL|x86.ActiveCfg = Release.DLL|Win32 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release.DLL|x86.Build.0 = Release.DLL|Win32 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release|ARM64.ActiveCfg = Release|ARM64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release|ARM64.Build.0 = Release|ARM64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release|x64.ActiveCfg = Release|x64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release|x64.Build.0 = Release|x64 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release|x86.ActiveCfg = Release|Win32 + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -5605,7 +5605,7 @@ Global {C54703BF-D68A-480D-BE27-49B62E45D582} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {9CD8BCAD-F212-4BCC-BA98-899743CE3279} = {CC132A4D-D081-4C26-BFB9-AB11984054F8} {0981CA28-E4A5-4DF1-987F-A41D09131EFC} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} - {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {278D8859-20B1-428F-8448-064F46E1F021} + {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {6BFF72EA-7362-4A3B-B6E5-9A3655BBBDA3} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} {6777EC3C-077C-42FC-B4AD-B799CE55CCE4} = {8D3C83B7-F1E0-4C2E-9E34-EE5F6AB2502A} {A61DAD9C-271C-4E95-81AA-DB4CD58564D4} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} @@ -5658,10 +5658,10 @@ Global {D35D2FDA-B53F-4F70-81CA-24D95812B89C} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} {F8DC77C0-556C-4672-B5B3-D2FA4ADC505C} = {DA049009-21FF-4AC0-84E4-830DD1BCD0CE} {4250CE87-9AA0-43BB-AB47-0636548922B5} = {278D8859-20B1-428F-8448-064F46E1F021} - {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} - {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} - {6B1A933E-71B8-4C1F-9E79-02D98830E671} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} + {AEA9D0D4-B810-4624-BC75-10A291584ED6} = {5317807F-61D4-4E0F-B6DC-2D9F12621ED9} + {AC751FE1-C986-4B6A-92A8-28ED89DEE671} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {BB9C957D-34F1-46AE-B64A-9E0499C1746D} = {AF5BEC5C-1F2B-4DA8-B12D-D09FE569237C} + {4E7157E0-6CDB-47AE-A19A-FEC3876FA8A3} = {6C82BAAE-BDDF-457D-8FA8-7E2490B07035} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {E926C768-6307-4423-A1EC-57E95B1FAB29} From 90dd9aef727ab1903a80e6c9783e0da2376bad0c Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:40:22 +0100 Subject: [PATCH 41/42] REVIEWED: `GenImageFontAtlas()`, no need for the conservative approach flag --- src/rtext.c | 21 +++------------------ 1 file changed, 3 insertions(+), 18 deletions(-) diff --git a/src/rtext.c b/src/rtext.c index 0fd2d8e6b..e0aa4fddd 100644 --- a/src/rtext.c +++ b/src/rtext.c @@ -818,25 +818,11 @@ Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyp totalWidth += glyphs[i].image.width + 2*padding; } -//#define SUPPORT_FONT_ATLAS_SIZE_CONSERVATIVE -#if defined(SUPPORT_FONT_ATLAS_SIZE_CONSERVATIVE) - int rowCount = 0; - int imageSize = 64; // Define minimum starting value to avoid unnecessary calculation steps for very small images - - // NOTE: maxGlyphWidth is maximum possible space left at the end of row - while (totalWidth > (imageSize - maxGlyphWidth)*rowCount) - { - imageSize *= 2; // Double the size of image (to keep POT) - rowCount = imageSize/(fontSize + 2*padding); // Calculate new row count for the new image size - } - - atlas.width = imageSize; // Atlas bitmap width - atlas.height = imageSize; // Atlas bitmap height -#else int paddedFontSize = fontSize + 2*padding; - // No need for a so-conservative atlas generation - // NOTE: Multiplying total expected are by 1.2f scale factor + // Estimate image atlas size from available data + // NOTE: Multiplying total expected area by 1.2f scale factor but in case + // some glyphs do not fit, the atlas height is scaled x2 to fit them float totalArea = totalWidth*paddedFontSize*1.2f; float imageMinSize = sqrtf(totalArea); int imageSize = (int)powf(2, ceilf(logf(imageMinSize)/logf(2))); @@ -851,7 +837,6 @@ Image GenImageFontAtlas(const GlyphInfo *glyphs, Rectangle **glyphRecs, int glyp atlas.width = imageSize; // Atlas bitmap width atlas.height = imageSize; // Atlas bitmap height } -#endif int atlasDataSize = atlas.width*atlas.height; // Save total size for bounds checking atlas.data = (unsigned char *)RL_CALLOC(atlasDataSize, 1); // Create a bitmap to store characters (8 bpp) From 4a3c49cdcbf09857a675179e63f27e5a6ffe9b22 Mon Sep 17 00:00:00 2001 From: Ray Date: Thu, 19 Feb 2026 17:55:13 +0100 Subject: [PATCH 42/42] REVIEWED: `rlLoadTextureDepth()`, address inconsistencies with WebGL 2.0 for sized depth formats #5500 --- src/rlgl.h | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/rlgl.h b/src/rlgl.h index d05bc42cb..3168b6a63 100644 --- a/src/rlgl.h +++ b/src/rlgl.h @@ -3432,6 +3432,13 @@ unsigned int rlLoadTextureDepth(int width, int height, bool useRenderBuffer) else glInternalFormat = GL_DEPTH_COMPONENT16; } #endif +#if defined(GRAPHICS_API_OPENGL_ES3) + // NOTE: This sized internal format should also work for WebGL 2.0 + // WARNING: Specification only allows GL_DEPTH_COMPONENT32F for GL_FLOAT type + // REF: https://registry.khronos.org/OpenGL-Refpages/es3.0/html/glTexImage2D.xhtml + if (RLGL.ExtSupported.maxDepthBits == 24) glInternalFormat = GL_DEPTH_COMPONENT24; + else glInternalFormat = GL_DEPTH_COMPONENT16; +#endif if (!useRenderBuffer && RLGL.ExtSupported.texDepth) {