diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 0000000..cd967fc
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,25 @@
+**/.dockerignore
+**/.env
+**/.git
+**/.gitignore
+**/.project
+**/.settings
+**/.toolstarget
+**/.vs
+**/.vscode
+**/.idea
+**/*.*proj.user
+**/*.dbmdl
+**/*.jfm
+**/azds.yaml
+**/bin
+**/charts
+**/docker-compose*
+**/Dockerfile*
+**/node_modules
+**/npm-debug.log
+**/obj
+**/secrets.dev.yaml
+**/values.dev.yaml
+LICENSE
+README.md
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 26d814a..add57be 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,93 +1,5 @@
-############################################
-# .NET Build
-############################################
-
-bin/
-obj/
-out/
-publish/
-
-############################################
-# Visual Studio
-############################################
-
-.vs/
-*.user
-*.suo
-*.userprefs
-*.csproj.user
-*.dbmdl
-*.cache
-*.pdb
-*.opendb
-
-############################################
-# Rider / JetBrains
-############################################
-
-.idea/
-*.sln.iml
-
-############################################
-# VSCode
-############################################
-
-.vscode/
-
-############################################
-# NuGet
-############################################
-
-*.nupkg
-*.snupkg
-packages/
-.nuget/
-.nuget/packages/
-
-############################################
-# Logs
-############################################
-
-*.log
-logs/
-
-############################################
-# OS files
-############################################
-
-.DS_Store
-Thumbs.db
-
-############################################
-# Local secrets / environment
-############################################
-
-.env
-.env.*
-secrets.json
-appsettings.Development.json
-
-############################################
-# E2EE private keys
-############################################
-
-keys/*
-!keys/.gitkeep
-
-############################################
-# Local test databases / data folders
-############################################
-
-data/
-*.db
-*.sqlite
-*.sqlite3
-
-############################################
-# Temporary files
-############################################
-
-*.tmp
-*.temp
-*.bak
-*.swp
\ No newline at end of file
+bin/
+obj/
+/packages/
+riderModule.iml
+/_ReSharper.Caches/
\ No newline at end of file
diff --git a/.idea/.idea.RelayCore/.idea/.gitignore b/.idea/.idea.RelayCore/.idea/.gitignore
new file mode 100644
index 0000000..50dbf98
--- /dev/null
+++ b/.idea/.idea.RelayCore/.idea/.gitignore
@@ -0,0 +1,13 @@
+# Default ignored files
+/shelf/
+/workspace.xml
+# Rider ignored files
+/projectSettingsUpdater.xml
+/modules.xml
+/contentModel.xml
+/.idea.RelayCore.iml
+# Editor-based HTTP Client requests
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/.idea.RelayCore/.idea/AndroidProjectSystem.xml b/.idea/.idea.RelayCore/.idea/AndroidProjectSystem.xml
new file mode 100644
index 0000000..e82600c
--- /dev/null
+++ b/.idea/.idea.RelayCore/.idea/AndroidProjectSystem.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.RelayCore/.idea/encodings.xml b/.idea/.idea.RelayCore/.idea/encodings.xml
new file mode 100644
index 0000000..df87cf9
--- /dev/null
+++ b/.idea/.idea.RelayCore/.idea/encodings.xml
@@ -0,0 +1,4 @@
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.RelayCore/.idea/indexLayout.xml b/.idea/.idea.RelayCore/.idea/indexLayout.xml
new file mode 100644
index 0000000..7b08163
--- /dev/null
+++ b/.idea/.idea.RelayCore/.idea/indexLayout.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/.idea.RelayCore/.idea/vcs.xml b/.idea/.idea.RelayCore/.idea/vcs.xml
new file mode 100644
index 0000000..94a25f7
--- /dev/null
+++ b/.idea/.idea.RelayCore/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/Dockerfile b/Dockerfile
new file mode 100644
index 0000000..d6dc02a
--- /dev/null
+++ b/Dockerfile
@@ -0,0 +1,21 @@
+FROM mcr.microsoft.com/dotnet/runtime:9.0 AS base
+USER $APP_UID
+WORKDIR /app
+
+FROM mcr.microsoft.com/dotnet/sdk:9.0 AS build
+ARG BUILD_CONFIGURATION=Release
+WORKDIR /src
+COPY ["RelayCore.csproj", "./"]
+RUN dotnet restore "RelayCore.csproj"
+COPY . .
+WORKDIR "/src/"
+RUN dotnet build "./RelayCore.csproj" -c $BUILD_CONFIGURATION -o /app/build
+
+FROM build AS publish
+ARG BUILD_CONFIGURATION=Release
+RUN dotnet publish "./RelayCore.csproj" -c $BUILD_CONFIGURATION -o /app/publish /p:UseAppHost=false
+
+FROM base AS final
+WORKDIR /app
+COPY --from=publish /app/publish .
+ENTRYPOINT ["dotnet", "RelayCore.dll"]
diff --git a/RelayCore/PasswordHasher.cs b/PasswordHasher.cs
similarity index 97%
rename from RelayCore/PasswordHasher.cs
rename to PasswordHasher.cs
index ee6ed19..d8fbae5 100644
--- a/RelayCore/PasswordHasher.cs
+++ b/PasswordHasher.cs
@@ -1,109 +1,109 @@
-using System;
-using System.Security.Cryptography;
-using System.Text;
-using Konscious.Security.Cryptography;
-
-namespace PasswordHasher
-{
- ///
- /// Provides secure password hashing functionality using Argon2id algorithm
- ///
- public class PasswordHasher
- {
- ///
- /// Size of the salt in bytes
- ///
- private const int SaltSize = 16;
-
- ///
- /// Size of the hash in bytes
- ///
- private const int HashSize = 32;
-
- ///
- /// Number of threads to use for parallel computation
- ///
- private const int DegreeOfParallelism = 1;
-
- ///
- /// Number of iterations for the Argon2id algorithm
- ///
- private const int Iterations = 2;
-
- ///
- /// Memory size in KB to use
- ///
- private const int MemorySize = 19456; // 19 MB
-
- ///
- /// Generates a secure hash of a password using Argon2id with a random salt
- ///
- /// The plain text password to hash
- /// A Base64 string containing the combined salt and hash
- /// Thrown when password is null
- public string HashPassword(string password)
- {
- // Generate a random salt
- byte[] salt = new byte[SaltSize];
- using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
- {
- rng.GetBytes(salt);
- }
-
- // Create hash
- byte[] hash = HashPassword(password, salt);
-
- // Combine salt and hash
- var combinedBytes = new byte[salt.Length + hash.Length];
- Array.Copy(salt, 0, combinedBytes, 0, salt.Length);
- Array.Copy(hash, 0, combinedBytes, salt.Length, hash.Length);
-
- // Convert to base64 for storage
- return Convert.ToBase64String(combinedBytes);
- }
-
- ///
- /// Generates a password hash using Argon2id with a specific salt
- ///
- /// The plain text password
- /// The salt to use for hashing
- /// A byte array containing the password hash
- private byte[] HashPassword(string password, byte[] salt)
- {
- var argon2 = new Argon2id(Encoding.UTF8.GetBytes(password))
- {
- Salt = salt,
- DegreeOfParallelism = DegreeOfParallelism,
- Iterations = Iterations,
- MemorySize = MemorySize
- };
- return argon2.GetBytes(HashSize);
- }
-
- ///
- /// Verifies if a password matches a stored hash
- ///
- /// The plain text password to verify
- /// The stored hash in Base64 format
- /// True if the password matches the hash, false otherwise
- /// Thrown when password or hashedPassword are null
- /// Thrown when hashedPassword is not in valid Base64 format
- public bool VerifyPassword(string password, string hashedPassword)
- {
- // Decode the stored hash
- byte[] combinedBytes = Convert.FromBase64String(hashedPassword);
-
- // Extract salt and hash
- byte[] salt = new byte[SaltSize];
- byte[] hash = new byte[HashSize];
- Array.Copy(combinedBytes, 0, salt, 0, SaltSize);
- Array.Copy(combinedBytes, SaltSize, hash, 0, HashSize);
-
- // Compute hash for the input password
- byte[] newHash = HashPassword(password, salt);
-
- // Compare the hashes
- return CryptographicOperations.FixedTimeEquals(hash, newHash);
- }
- }
+using System;
+using System.Security.Cryptography;
+using System.Text;
+using Konscious.Security.Cryptography;
+
+namespace PasswordHasher
+{
+ ///
+ /// Provides secure password hashing functionality using Argon2id algorithm
+ ///
+ public class PasswordHasher
+ {
+ ///
+ /// Size of the salt in bytes
+ ///
+ private const int SaltSize = 16;
+
+ ///
+ /// Size of the hash in bytes
+ ///
+ private const int HashSize = 32;
+
+ ///
+ /// Number of threads to use for parallel computation
+ ///
+ private const int DegreeOfParallelism = 1;
+
+ ///
+ /// Number of iterations for the Argon2id algorithm
+ ///
+ private const int Iterations = 2;
+
+ ///
+ /// Memory size in KB to use
+ ///
+ private const int MemorySize = 19456; // 19 MB
+
+ ///
+ /// Generates a secure hash of a password using Argon2id with a random salt
+ ///
+ /// The plain text password to hash
+ /// A Base64 string containing the combined salt and hash
+ /// Thrown when password is null
+ public string HashPassword(string password)
+ {
+ // Generate a random salt
+ byte[] salt = new byte[SaltSize];
+ using (RandomNumberGenerator rng = RandomNumberGenerator.Create())
+ {
+ rng.GetBytes(salt);
+ }
+
+ // Create hash
+ byte[] hash = HashPassword(password, salt);
+
+ // Combine salt and hash
+ var combinedBytes = new byte[salt.Length + hash.Length];
+ Array.Copy(salt, 0, combinedBytes, 0, salt.Length);
+ Array.Copy(hash, 0, combinedBytes, salt.Length, hash.Length);
+
+ // Convert to base64 for storage
+ return Convert.ToBase64String(combinedBytes);
+ }
+
+ ///
+ /// Generates a password hash using Argon2id with a specific salt
+ ///
+ /// The plain text password
+ /// The salt to use for hashing
+ /// A byte array containing the password hash
+ private byte[] HashPassword(string password, byte[] salt)
+ {
+ var argon2 = new Argon2id(Encoding.UTF8.GetBytes(password))
+ {
+ Salt = salt,
+ DegreeOfParallelism = DegreeOfParallelism,
+ Iterations = Iterations,
+ MemorySize = MemorySize
+ };
+ return argon2.GetBytes(HashSize);
+ }
+
+ ///
+ /// Verifies if a password matches a stored hash
+ ///
+ /// The plain text password to verify
+ /// The stored hash in Base64 format
+ /// True if the password matches the hash, false otherwise
+ /// Thrown when password or hashedPassword are null
+ /// Thrown when hashedPassword is not in valid Base64 format
+ public bool VerifyPassword(string password, string hashedPassword)
+ {
+ // Decode the stored hash
+ byte[] combinedBytes = Convert.FromBase64String(hashedPassword);
+
+ // Extract salt and hash
+ byte[] salt = new byte[SaltSize];
+ byte[] hash = new byte[HashSize];
+ Array.Copy(combinedBytes, 0, salt, 0, SaltSize);
+ Array.Copy(combinedBytes, SaltSize, hash, 0, HashSize);
+
+ // Compute hash for the input password
+ byte[] newHash = HashPassword(password, salt);
+
+ // Compare the hashes
+ return CryptographicOperations.FixedTimeEquals(hash, newHash);
+ }
+ }
}
\ No newline at end of file
diff --git a/Program.cs b/Program.cs
new file mode 100644
index 0000000..33ea9c4
--- /dev/null
+++ b/Program.cs
@@ -0,0 +1,173 @@
+using System.ComponentModel.Design;
+using SurrealDb.Net;
+using SurrealDb.Net.Models;
+using SurrealDb.Net.Models.Auth;
+using System.Text.Json;
+using PasswordHasher;
+
+using var db = new SurrealDbClient("ws://127.0.0.1:8000/rpc");
+
+await db.SignIn(new RootAuth { Username = "root", Password = "secret" });
+await db.Use("test", "test");
+
+var user = new Users
+{
+ Username = "Keeper317",
+ Email = "Keeper317@gmail.com",
+ CreatedAt = DateTime.Now,
+ UpdatedAt = DateTime.Now,
+ LastLogin = DateTime.Now,
+ TwoFactorEnabled = false,
+ EmailVerified = false,
+ AccountStatus = (int) AccountStatuses.Active,
+ OnlineStatus = (int) OnlineStatuses.Online,
+};
+var created = await db.Create("users", user);
+Console.WriteLine($"Created Person: {ToJsonString(created)}");
+var hasher = new PasswordHasher.PasswordHasher();
+user.Password = hasher.HashPassword(created.Id + "password");
+user.UpdatedAt = DateTime.Now;
+user.LastLogin = DateTime.Now;
+user.Id = created.Id;
+
+bool isValid = hasher.VerifyPassword(created.Id + "password", user.Password);
+Console.WriteLine($"Password match: {isValid}");
+
+var updated = await db.Merge("users", new() { Id = created.Id, Password = user.Password });
+
+// var updated = await db.Merge(
+// new() { Id = (TABLE, "8b4nwczy6x8f8zd5sslq"), Marketing = true }
+// );
+Console.WriteLine($"Updated Person: {ToJsonString(updated)}");
+//
+var people = await db.Select("users");
+Console.WriteLine($"Select Person: {ToJsonString(people)}");
+//
+// var queryResponse = await db.Query($"SELECT Marketing, count() AS Count FROM type::table({TABLE}) GROUP BY Marketing");
+// var groups = queryResponse.GetValue>(0);
+// Console.WriteLine($"Get Value as group: {ToJsonString(groups)}");
+
+await db.Delete("users");
+
+
+static string ToJsonString(object? o)
+{
+ return JsonSerializer.Serialize(o, new JsonSerializerOptions { WriteIndented = true, });
+}
+
+public class ResponsibilityMerge : Record
+{
+ public bool Marketing { get; set; }
+}
+public class Group
+{
+ public bool Marketing { get; set; }
+ public int Count { get; set; }
+}
+
+public class Users : Record
+{
+ public required string Username { get; set; }
+ public string? Password { get; set; }
+ public required string Email { get; set; }
+ public required DateTime CreatedAt { get; set; }
+ public required DateTime UpdatedAt { get; set; }
+ public required DateTime LastLogin { get; set; }
+ public bool TwoFactorEnabled { get; set; }
+ public bool EmailVerified { get; set; }
+ public required int AccountStatus { get; set; }
+ public required int OnlineStatus { get; set; }
+}
+
+public class PasswordHash : Record
+{
+ public string? Password { get; set; }
+}
+
+public class Sessions : Record
+{
+ public required string UserId { get; set; }
+ public required string TokenHash { get; set; }
+ public required DateTime IssuedAt { get; set; }
+ public required DateTime ExpiresAt { get; set; }
+ public DateTime? LastUsedAt { get; set; }
+ public bool Revoked { get; set; }
+ public required string DeviceName { get; set; }
+ public required string IpAddress { get; set; }
+ public required string UserAgent { get; set; }
+}
+
+public class PasswordReset : Record
+{
+ public required string UserId { get; set; }
+ public required string TokenHash { get; set; }
+ public required DateTime CreatedAt { get; set; }
+ public required DateTime ExpiresAt { get; set; }
+ public bool Revoked { get; set; }
+}
+
+public class Licenses : Record
+{
+ public required string UserId { get; set; }
+ public required int LicenseType { get; set; }
+ public required int Status { get; set; }
+ public required DateTime CreatedAt { get; set; }
+ public required DateTime StartsAt { get; set; }
+ public required DateTime UpdatedAt { get; set; }
+ public required DateTime ExpiresAt { get; set; }
+
+}
+
+public class AuthAudits : Record
+{
+ public required string UserId { get; set; }
+ public required int EventType { get; set; }
+ public bool Success { get; set; }
+ public required string IpAddress { get; set; }
+ public required string UserAgent { get; set; }
+ public required string Details { get; set; }
+ public required DateTime CreatedAt { get; set; }
+}
+enum AccountStatuses
+{
+ Active,
+ Suspended,
+ Banned,
+ Deleted
+}
+
+enum OnlineStatuses
+{
+ Online,
+ Busy,
+ DND,
+ Invisible,
+ Offline
+}
+
+enum LicenseStatuses
+{
+ Active,
+ Expired,
+ Renewable,
+ Revoked
+}
+
+enum LicenseType
+{
+ Free,
+ Basic,
+ Advanced,
+ Pro,
+ Enterprise
+}
+
+enum LogEvents
+{
+ LoginSuccess,
+ LoginFailure,
+ LogoutSuccess,
+ LogoutFailure,
+ PasswordResetSuccess,
+ PasswordResetFailure,
+}
\ No newline at end of file
diff --git a/Relay.sln b/Relay.sln
deleted file mode 100644
index c6a098d..0000000
--- a/Relay.sln
+++ /dev/null
@@ -1,62 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 17
-VisualStudioVersion = 17.0.31903.59
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RelayCore", "RelayCore\RelayCore.csproj", "{346BE501-DE74-4E88-9787-4722FBC8BD0D}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RelayClient", "RelayClient\RelayClient.csproj", "{AB9DA5AB-55DC-4DE4-834C-E1E1BCD0C3CD}"
-EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RelayServer", "RelayServer\RelayServer.csproj", "{38995780-E9AA-44D6-B62D-07CCA45E4E4C}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|Any CPU = Debug|Any CPU
- Debug|x64 = Debug|x64
- Debug|x86 = Debug|x86
- Release|Any CPU = Release|Any CPU
- Release|x64 = Release|x64
- Release|x86 = Release|x86
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {346BE501-DE74-4E88-9787-4722FBC8BD0D}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {346BE501-DE74-4E88-9787-4722FBC8BD0D}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {346BE501-DE74-4E88-9787-4722FBC8BD0D}.Debug|x64.ActiveCfg = Debug|Any CPU
- {346BE501-DE74-4E88-9787-4722FBC8BD0D}.Debug|x64.Build.0 = Debug|Any CPU
- {346BE501-DE74-4E88-9787-4722FBC8BD0D}.Debug|x86.ActiveCfg = Debug|Any CPU
- {346BE501-DE74-4E88-9787-4722FBC8BD0D}.Debug|x86.Build.0 = Debug|Any CPU
- {346BE501-DE74-4E88-9787-4722FBC8BD0D}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {346BE501-DE74-4E88-9787-4722FBC8BD0D}.Release|Any CPU.Build.0 = Release|Any CPU
- {346BE501-DE74-4E88-9787-4722FBC8BD0D}.Release|x64.ActiveCfg = Release|Any CPU
- {346BE501-DE74-4E88-9787-4722FBC8BD0D}.Release|x64.Build.0 = Release|Any CPU
- {346BE501-DE74-4E88-9787-4722FBC8BD0D}.Release|x86.ActiveCfg = Release|Any CPU
- {346BE501-DE74-4E88-9787-4722FBC8BD0D}.Release|x86.Build.0 = Release|Any CPU
- {AB9DA5AB-55DC-4DE4-834C-E1E1BCD0C3CD}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {AB9DA5AB-55DC-4DE4-834C-E1E1BCD0C3CD}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {AB9DA5AB-55DC-4DE4-834C-E1E1BCD0C3CD}.Debug|x64.ActiveCfg = Debug|Any CPU
- {AB9DA5AB-55DC-4DE4-834C-E1E1BCD0C3CD}.Debug|x64.Build.0 = Debug|Any CPU
- {AB9DA5AB-55DC-4DE4-834C-E1E1BCD0C3CD}.Debug|x86.ActiveCfg = Debug|Any CPU
- {AB9DA5AB-55DC-4DE4-834C-E1E1BCD0C3CD}.Debug|x86.Build.0 = Debug|Any CPU
- {AB9DA5AB-55DC-4DE4-834C-E1E1BCD0C3CD}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {AB9DA5AB-55DC-4DE4-834C-E1E1BCD0C3CD}.Release|Any CPU.Build.0 = Release|Any CPU
- {AB9DA5AB-55DC-4DE4-834C-E1E1BCD0C3CD}.Release|x64.ActiveCfg = Release|Any CPU
- {AB9DA5AB-55DC-4DE4-834C-E1E1BCD0C3CD}.Release|x64.Build.0 = Release|Any CPU
- {AB9DA5AB-55DC-4DE4-834C-E1E1BCD0C3CD}.Release|x86.ActiveCfg = Release|Any CPU
- {AB9DA5AB-55DC-4DE4-834C-E1E1BCD0C3CD}.Release|x86.Build.0 = Release|Any CPU
- {38995780-E9AA-44D6-B62D-07CCA45E4E4C}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
- {38995780-E9AA-44D6-B62D-07CCA45E4E4C}.Debug|Any CPU.Build.0 = Debug|Any CPU
- {38995780-E9AA-44D6-B62D-07CCA45E4E4C}.Debug|x64.ActiveCfg = Debug|Any CPU
- {38995780-E9AA-44D6-B62D-07CCA45E4E4C}.Debug|x64.Build.0 = Debug|Any CPU
- {38995780-E9AA-44D6-B62D-07CCA45E4E4C}.Debug|x86.ActiveCfg = Debug|Any CPU
- {38995780-E9AA-44D6-B62D-07CCA45E4E4C}.Debug|x86.Build.0 = Debug|Any CPU
- {38995780-E9AA-44D6-B62D-07CCA45E4E4C}.Release|Any CPU.ActiveCfg = Release|Any CPU
- {38995780-E9AA-44D6-B62D-07CCA45E4E4C}.Release|Any CPU.Build.0 = Release|Any CPU
- {38995780-E9AA-44D6-B62D-07CCA45E4E4C}.Release|x64.ActiveCfg = Release|Any CPU
- {38995780-E9AA-44D6-B62D-07CCA45E4E4C}.Release|x64.Build.0 = Release|Any CPU
- {38995780-E9AA-44D6-B62D-07CCA45E4E4C}.Release|x86.ActiveCfg = Release|Any CPU
- {38995780-E9AA-44D6-B62D-07CCA45E4E4C}.Release|x86.Build.0 = Release|Any CPU
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
-EndGlobal
diff --git a/RelayClient/.gitignore b/RelayClient/.gitignore
deleted file mode 100644
index 26d814a..0000000
--- a/RelayClient/.gitignore
+++ /dev/null
@@ -1,93 +0,0 @@
-############################################
-# .NET Build
-############################################
-
-bin/
-obj/
-out/
-publish/
-
-############################################
-# Visual Studio
-############################################
-
-.vs/
-*.user
-*.suo
-*.userprefs
-*.csproj.user
-*.dbmdl
-*.cache
-*.pdb
-*.opendb
-
-############################################
-# Rider / JetBrains
-############################################
-
-.idea/
-*.sln.iml
-
-############################################
-# VSCode
-############################################
-
-.vscode/
-
-############################################
-# NuGet
-############################################
-
-*.nupkg
-*.snupkg
-packages/
-.nuget/
-.nuget/packages/
-
-############################################
-# Logs
-############################################
-
-*.log
-logs/
-
-############################################
-# OS files
-############################################
-
-.DS_Store
-Thumbs.db
-
-############################################
-# Local secrets / environment
-############################################
-
-.env
-.env.*
-secrets.json
-appsettings.Development.json
-
-############################################
-# E2EE private keys
-############################################
-
-keys/*
-!keys/.gitkeep
-
-############################################
-# Local test databases / data folders
-############################################
-
-data/
-*.db
-*.sqlite
-*.sqlite3
-
-############################################
-# Temporary files
-############################################
-
-*.tmp
-*.temp
-*.bak
-*.swp
\ No newline at end of file
diff --git a/RelayClient/App.xaml b/RelayClient/App.xaml
deleted file mode 100644
index 6e6f0eb..0000000
--- a/RelayClient/App.xaml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
diff --git a/RelayClient/App.xaml.cs b/RelayClient/App.xaml.cs
deleted file mode 100644
index 895e755..0000000
--- a/RelayClient/App.xaml.cs
+++ /dev/null
@@ -1,16 +0,0 @@
-using Microsoft.Extensions.DependencyInjection;
-
-namespace RelayClient;
-
-public partial class App : Application
-{
- public App()
- {
- InitializeComponent();
- }
-
- protected override Window CreateWindow(IActivationState? activationState)
- {
- return new Window(new AppShell());
- }
-}
\ No newline at end of file
diff --git a/RelayClient/AppShell.xaml b/RelayClient/AppShell.xaml
deleted file mode 100644
index e32af14..0000000
--- a/RelayClient/AppShell.xaml
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
diff --git a/RelayClient/AppShell.xaml.cs b/RelayClient/AppShell.xaml.cs
deleted file mode 100644
index 6c62f2b..0000000
--- a/RelayClient/AppShell.xaml.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-namespace RelayClient;
-
-public partial class AppShell : Shell
-{
- public AppShell()
- {
- InitializeComponent();
- }
-}
\ No newline at end of file
diff --git a/RelayClient/MainPage.xaml b/RelayClient/MainPage.xaml
deleted file mode 100644
index 4f84d78..0000000
--- a/RelayClient/MainPage.xaml
+++ /dev/null
@@ -1,36 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/RelayClient/MainPage.xaml.cs b/RelayClient/MainPage.xaml.cs
deleted file mode 100644
index 3efa54a..0000000
--- a/RelayClient/MainPage.xaml.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-namespace RelayClient;
-
-public partial class MainPage : ContentPage
-{
- int count = 0;
-
- public MainPage()
- {
- InitializeComponent();
- }
-
- private void OnCounterClicked(object? sender, EventArgs e)
- {
- count++;
-
- if (count == 1)
- CounterBtn.Text = $"Clicked {count} time";
- else
- CounterBtn.Text = $"Clicked {count} times";
-
- SemanticScreenReader.Announce(CounterBtn.Text);
- }
-}
\ No newline at end of file
diff --git a/RelayClient/MauiProgram.cs b/RelayClient/MauiProgram.cs
deleted file mode 100644
index 5753707..0000000
--- a/RelayClient/MauiProgram.cs
+++ /dev/null
@@ -1,25 +0,0 @@
-using Microsoft.Extensions.Logging;
-using Microsoft.Maui.Hosting;
-
-namespace RelayClient;
-
-public static class MauiProgram
-{
- public static MauiApp CreateMauiApp()
- {
- var builder = MauiApp.CreateBuilder();
- builder
- .UseMauiApp()
- .ConfigureFonts(fonts =>
- {
- fonts.AddFont("OpenSans-Regular.ttf", "OpenSansRegular");
- fonts.AddFont("OpenSans-Semibold.ttf", "OpenSansSemibold");
- });
-
-#if DEBUG
- builder.Logging.AddDebug();
-#endif
-
- return builder.Build();
- }
-}
\ No newline at end of file
diff --git a/RelayClient/Platforms/Android/AndroidManifest.xml b/RelayClient/Platforms/Android/AndroidManifest.xml
deleted file mode 100644
index bdec9b5..0000000
--- a/RelayClient/Platforms/Android/AndroidManifest.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/RelayClient/Platforms/Android/MainActivity.cs b/RelayClient/Platforms/Android/MainActivity.cs
deleted file mode 100644
index 396a789..0000000
--- a/RelayClient/Platforms/Android/MainActivity.cs
+++ /dev/null
@@ -1,12 +0,0 @@
-using Android.App;
-using Android.Content.PM;
-using Android.OS;
-
-namespace RelayClient;
-
-[Activity(Theme = "@style/Maui.SplashTheme", MainLauncher = true, LaunchMode = LaunchMode.SingleTop,
- ConfigurationChanges = ConfigChanges.ScreenSize | ConfigChanges.Orientation | ConfigChanges.UiMode |
- ConfigChanges.ScreenLayout | ConfigChanges.SmallestScreenSize | ConfigChanges.Density)]
-public class MainActivity : MauiAppCompatActivity
-{
-}
\ No newline at end of file
diff --git a/RelayClient/Platforms/Android/MainApplication.cs b/RelayClient/Platforms/Android/MainApplication.cs
deleted file mode 100644
index 0a38bce..0000000
--- a/RelayClient/Platforms/Android/MainApplication.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using Android.App;
-using Android.Runtime;
-
-namespace RelayClient;
-
-[Application]
-public class MainApplication : MauiApplication
-{
- public MainApplication(IntPtr handle, JniHandleOwnership ownership)
- : base(handle, ownership)
- {
- }
-
- protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
-}
\ No newline at end of file
diff --git a/RelayClient/Platforms/Android/Resources/values/colors.xml b/RelayClient/Platforms/Android/Resources/values/colors.xml
deleted file mode 100644
index 5cd1604..0000000
--- a/RelayClient/Platforms/Android/Resources/values/colors.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- #512BD4
- #2B0B98
- #2B0B98
-
\ No newline at end of file
diff --git a/RelayClient/Platforms/MacCatalyst/AppDelegate.cs b/RelayClient/Platforms/MacCatalyst/AppDelegate.cs
deleted file mode 100644
index b9cec3e..0000000
--- a/RelayClient/Platforms/MacCatalyst/AppDelegate.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using Foundation;
-
-namespace RelayClient;
-
-[Register("AppDelegate")]
-public class AppDelegate : MauiUIApplicationDelegate
-{
- protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
-}
\ No newline at end of file
diff --git a/RelayClient/Platforms/MacCatalyst/Entitlements.plist b/RelayClient/Platforms/MacCatalyst/Entitlements.plist
deleted file mode 100644
index 8e87c0c..0000000
--- a/RelayClient/Platforms/MacCatalyst/Entitlements.plist
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
-
-
- com.apple.security.app-sandbox
-
-
- com.apple.security.network.client
-
-
-
-
diff --git a/RelayClient/Platforms/MacCatalyst/Info.plist b/RelayClient/Platforms/MacCatalyst/Info.plist
deleted file mode 100644
index cfd1c83..0000000
--- a/RelayClient/Platforms/MacCatalyst/Info.plist
+++ /dev/null
@@ -1,40 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
- UIDeviceFamily
-
- 2
-
- LSApplicationCategoryType
- public.app-category.lifestyle
- UIRequiredDeviceCapabilities
-
- arm64
-
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UISupportedInterfaceOrientations~ipad
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- XSAppIconAssets
- Assets.xcassets/appicon.appiconset
-
-
diff --git a/RelayClient/Platforms/MacCatalyst/Program.cs b/RelayClient/Platforms/MacCatalyst/Program.cs
deleted file mode 100644
index bce9b97..0000000
--- a/RelayClient/Platforms/MacCatalyst/Program.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using ObjCRuntime;
-using UIKit;
-
-namespace RelayClient;
-
-public class Program
-{
- // This is the main entry point of the application.
- static void Main(string[] args)
- {
- // if you want to use a different Application Delegate class from "AppDelegate"
- // you can specify it here.
- UIApplication.Main(args, null, typeof(AppDelegate));
- }
-}
\ No newline at end of file
diff --git a/RelayClient/Platforms/Windows/App.xaml b/RelayClient/Platforms/Windows/App.xaml
deleted file mode 100644
index 59902bc..0000000
--- a/RelayClient/Platforms/Windows/App.xaml
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
diff --git a/RelayClient/Platforms/Windows/App.xaml.cs b/RelayClient/Platforms/Windows/App.xaml.cs
deleted file mode 100644
index 59401da..0000000
--- a/RelayClient/Platforms/Windows/App.xaml.cs
+++ /dev/null
@@ -1,23 +0,0 @@
-using Microsoft.UI.Xaml;
-
-// To learn more about WinUI, the WinUI project structure,
-// and more about our project templates, see: http://aka.ms/winui-project-info.
-
-namespace RelayClient.WinUI;
-
-///
-/// Provides application-specific behavior to supplement the default Application class.
-///
-public partial class App : MauiWinUIApplication
-{
- ///
- /// Initializes the singleton application object. This is the first line of authored code
- /// executed, and as such is the logical equivalent of main() or WinMain().
- ///
- public App()
- {
- this.InitializeComponent();
- }
-
- protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
-}
\ No newline at end of file
diff --git a/RelayClient/Platforms/Windows/Package.appxmanifest b/RelayClient/Platforms/Windows/Package.appxmanifest
deleted file mode 100644
index df3d2f4..0000000
--- a/RelayClient/Platforms/Windows/Package.appxmanifest
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
-
-
-
-
-
- $placeholder$
- User Name
- $placeholder$.png
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/RelayClient/Platforms/Windows/app.manifest b/RelayClient/Platforms/Windows/app.manifest
deleted file mode 100644
index c528ef8..0000000
--- a/RelayClient/Platforms/Windows/app.manifest
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
-
-
-
-
-
- true/PM
- PerMonitorV2, PerMonitor
-
- true
-
-
-
diff --git a/RelayClient/Platforms/iOS/AppDelegate.cs b/RelayClient/Platforms/iOS/AppDelegate.cs
deleted file mode 100644
index b9cec3e..0000000
--- a/RelayClient/Platforms/iOS/AppDelegate.cs
+++ /dev/null
@@ -1,9 +0,0 @@
-using Foundation;
-
-namespace RelayClient;
-
-[Register("AppDelegate")]
-public class AppDelegate : MauiUIApplicationDelegate
-{
- protected override MauiApp CreateMauiApp() => MauiProgram.CreateMauiApp();
-}
\ No newline at end of file
diff --git a/RelayClient/Platforms/iOS/Info.plist b/RelayClient/Platforms/iOS/Info.plist
deleted file mode 100644
index 358337b..0000000
--- a/RelayClient/Platforms/iOS/Info.plist
+++ /dev/null
@@ -1,32 +0,0 @@
-
-
-
-
- LSRequiresIPhoneOS
-
- UIDeviceFamily
-
- 1
- 2
-
- UIRequiredDeviceCapabilities
-
- arm64
-
- UISupportedInterfaceOrientations
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- UISupportedInterfaceOrientations~ipad
-
- UIInterfaceOrientationPortrait
- UIInterfaceOrientationPortraitUpsideDown
- UIInterfaceOrientationLandscapeLeft
- UIInterfaceOrientationLandscapeRight
-
- XSAppIconAssets
- Assets.xcassets/appicon.appiconset
-
-
diff --git a/RelayClient/Platforms/iOS/Program.cs b/RelayClient/Platforms/iOS/Program.cs
deleted file mode 100644
index bce9b97..0000000
--- a/RelayClient/Platforms/iOS/Program.cs
+++ /dev/null
@@ -1,15 +0,0 @@
-using ObjCRuntime;
-using UIKit;
-
-namespace RelayClient;
-
-public class Program
-{
- // This is the main entry point of the application.
- static void Main(string[] args)
- {
- // if you want to use a different Application Delegate class from "AppDelegate"
- // you can specify it here.
- UIApplication.Main(args, null, typeof(AppDelegate));
- }
-}
\ No newline at end of file
diff --git a/RelayClient/Platforms/iOS/Resources/PrivacyInfo.xcprivacy b/RelayClient/Platforms/iOS/Resources/PrivacyInfo.xcprivacy
deleted file mode 100644
index 1ea3a5d..0000000
--- a/RelayClient/Platforms/iOS/Resources/PrivacyInfo.xcprivacy
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
- NSPrivacyAccessedAPITypes
-
-
- NSPrivacyAccessedAPIType
- NSPrivacyAccessedAPICategoryFileTimestamp
- NSPrivacyAccessedAPITypeReasons
-
- C617.1
-
-
-
- NSPrivacyAccessedAPIType
- NSPrivacyAccessedAPICategorySystemBootTime
- NSPrivacyAccessedAPITypeReasons
-
- 35F9.1
-
-
-
- NSPrivacyAccessedAPIType
- NSPrivacyAccessedAPICategoryDiskSpace
- NSPrivacyAccessedAPITypeReasons
-
- E174.1
-
-
-
-
-
-
diff --git a/RelayClient/Properties/launchSettings.json b/RelayClient/Properties/launchSettings.json
deleted file mode 100644
index f4c6c8d..0000000
--- a/RelayClient/Properties/launchSettings.json
+++ /dev/null
@@ -1,8 +0,0 @@
-{
- "profiles": {
- "Windows Machine": {
- "commandName": "Project",
- "nativeDebugging": false
- }
- }
-}
\ No newline at end of file
diff --git a/RelayClient/README.md b/RelayClient/README.md
deleted file mode 100644
index f31753a..0000000
--- a/RelayClient/README.md
+++ /dev/null
@@ -1 +0,0 @@
-# RelayClient
diff --git a/RelayClient/RelayClient.csproj b/RelayClient/RelayClient.csproj
deleted file mode 100644
index c767c3e..0000000
--- a/RelayClient/RelayClient.csproj
+++ /dev/null
@@ -1,46 +0,0 @@
-
-
-
- net10.0-android;net10.0-ios;net10.0-maccatalyst
-
- $(TargetFrameworks);net10.0-windows10.0.19041.0
-
-
- Exe
- RelayClient
- true
- true
- enable
- enable
-
- SourceGen
-
- RelayClient
- com.companyname.relayclient
- 1.0
- 1
-
- None
-
- 15.0
- 15.0
- 21.0
- 10.0.17763.0
- 10.0.17763.0
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/RelayClient/Resources/AppIcon/appicon.svg b/RelayClient/Resources/AppIcon/appicon.svg
deleted file mode 100644
index 5f04fcf..0000000
--- a/RelayClient/Resources/AppIcon/appicon.svg
+++ /dev/null
@@ -1,4 +0,0 @@
-
-
\ No newline at end of file
diff --git a/RelayClient/Resources/AppIcon/appiconfg.svg b/RelayClient/Resources/AppIcon/appiconfg.svg
deleted file mode 100644
index 62d66d7..0000000
--- a/RelayClient/Resources/AppIcon/appiconfg.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/RelayClient/Resources/Fonts/OpenSans-Regular.ttf b/RelayClient/Resources/Fonts/OpenSans-Regular.ttf
deleted file mode 100644
index 2cc82d2..0000000
Binary files a/RelayClient/Resources/Fonts/OpenSans-Regular.ttf and /dev/null differ
diff --git a/RelayClient/Resources/Fonts/OpenSans-Semibold.ttf b/RelayClient/Resources/Fonts/OpenSans-Semibold.ttf
deleted file mode 100644
index fcb5284..0000000
Binary files a/RelayClient/Resources/Fonts/OpenSans-Semibold.ttf and /dev/null differ
diff --git a/RelayClient/Resources/Images/dotnet_bot.png b/RelayClient/Resources/Images/dotnet_bot.png
deleted file mode 100644
index 054167e..0000000
Binary files a/RelayClient/Resources/Images/dotnet_bot.png and /dev/null differ
diff --git a/RelayClient/Resources/Raw/AboutAssets.txt b/RelayClient/Resources/Raw/AboutAssets.txt
deleted file mode 100644
index f22d3bf..0000000
--- a/RelayClient/Resources/Raw/AboutAssets.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-Any raw assets you want to be deployed with your application can be placed in
-this directory (and child directories). Deployment of the asset to your application
-is automatically handled by the following `MauiAsset` Build Action within your `.csproj`.
-
-
-
-These files will be deployed with your package and will be accessible using Essentials:
-
- async Task LoadMauiAsset()
- {
- using var stream = await FileSystem.OpenAppPackageFileAsync("AboutAssets.txt");
- using var reader = new StreamReader(stream);
-
- var contents = reader.ReadToEnd();
- }
diff --git a/RelayClient/Resources/Splash/splash.svg b/RelayClient/Resources/Splash/splash.svg
deleted file mode 100644
index 62d66d7..0000000
--- a/RelayClient/Resources/Splash/splash.svg
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
\ No newline at end of file
diff --git a/RelayClient/Resources/Styles/Colors.xaml b/RelayClient/Resources/Styles/Colors.xaml
deleted file mode 100644
index daae3bd..0000000
--- a/RelayClient/Resources/Styles/Colors.xaml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
- #512BD4
- #ac99ea
- #242424
- #DFD8F7
- #9880e5
- #2B0B98
-
- White
- Black
- #D600AA
- #190649
- #1f1f1f
-
- #E1E1E1
- #C8C8C8
- #ACACAC
- #919191
- #6E6E6E
- #404040
- #212121
- #141414
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/RelayClient/Resources/Styles/Styles.xaml b/RelayClient/Resources/Styles/Styles.xaml
deleted file mode 100644
index 0dce374..0000000
--- a/RelayClient/Resources/Styles/Styles.xaml
+++ /dev/null
@@ -1,434 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/RelayCore/RelayCore.csproj b/RelayCore.csproj
similarity index 96%
rename from RelayCore/RelayCore.csproj
rename to RelayCore.csproj
index 3a9a4a2..fc62708 100644
--- a/RelayCore/RelayCore.csproj
+++ b/RelayCore.csproj
@@ -1,16 +1,16 @@
-
-
-
- Exe
- net9.0
- enable
- enable
- Linux
-
-
-
-
-
-
-
-
+
+
+
+ Exe
+ net9.0
+ enable
+ enable
+ Linux
+
+
+
+
+
+
+
+
diff --git a/RelayCore/RelayCore.sln b/RelayCore.sln
similarity index 100%
rename from RelayCore/RelayCore.sln
rename to RelayCore.sln
diff --git a/RelayCore.sln.DotSettings.user b/RelayCore.sln.DotSettings.user
new file mode 100644
index 0000000..35bb567
--- /dev/null
+++ b/RelayCore.sln.DotSettings.user
@@ -0,0 +1,2 @@
+
+ ForceIncluded
\ No newline at end of file
diff --git a/RelayCore/.gitignore b/RelayCore/.gitignore
deleted file mode 100644
index 26d814a..0000000
--- a/RelayCore/.gitignore
+++ /dev/null
@@ -1,93 +0,0 @@
-############################################
-# .NET Build
-############################################
-
-bin/
-obj/
-out/
-publish/
-
-############################################
-# Visual Studio
-############################################
-
-.vs/
-*.user
-*.suo
-*.userprefs
-*.csproj.user
-*.dbmdl
-*.cache
-*.pdb
-*.opendb
-
-############################################
-# Rider / JetBrains
-############################################
-
-.idea/
-*.sln.iml
-
-############################################
-# VSCode
-############################################
-
-.vscode/
-
-############################################
-# NuGet
-############################################
-
-*.nupkg
-*.snupkg
-packages/
-.nuget/
-.nuget/packages/
-
-############################################
-# Logs
-############################################
-
-*.log
-logs/
-
-############################################
-# OS files
-############################################
-
-.DS_Store
-Thumbs.db
-
-############################################
-# Local secrets / environment
-############################################
-
-.env
-.env.*
-secrets.json
-appsettings.Development.json
-
-############################################
-# E2EE private keys
-############################################
-
-keys/*
-!keys/.gitkeep
-
-############################################
-# Local test databases / data folders
-############################################
-
-data/
-*.db
-*.sqlite
-*.sqlite3
-
-############################################
-# Temporary files
-############################################
-
-*.tmp
-*.temp
-*.bak
-*.swp
\ No newline at end of file
diff --git a/RelayCore/E2EeHelper.cs b/RelayCore/E2EeHelper.cs
deleted file mode 100644
index cb9ae85..0000000
--- a/RelayCore/E2EeHelper.cs
+++ /dev/null
@@ -1,82 +0,0 @@
-using System.Security.Cryptography;
-using System.Text;
-
-namespace RelayCore;
-
-public static class E2EeHelper
-{
- public static (string publicKey, string privateKey) GenerateRsaKeyPair()
- {
- using var rsa = RSA.Create(2048);
-
- var publicKey = Convert.ToBase64String(rsa.ExportSubjectPublicKeyInfo());
- var privateKey = Convert.ToBase64String(rsa.ExportPkcs8PrivateKey());
-
- return (publicKey, privateKey);
- }
-
- public static EncryptedMessagePayload EncryptForRecipient(string plainText, string recipientPublicKeyBase64)
- {
- var aesKey = RandomNumberGenerator.GetBytes(32);
- var nonce = RandomNumberGenerator.GetBytes(12);
- var plainBytes = Encoding.UTF8.GetBytes(plainText);
- var cipherBytes = new byte[plainBytes.Length];
- var tag = new byte[16];
-
- using (var aes = new AesGcm(aesKey, 16))
- {
- aes.Encrypt(nonce, plainBytes, cipherBytes, tag);
- }
-
- var recipientPublicKey = Convert.FromBase64String(recipientPublicKeyBase64);
- byte[] encryptedKey;
-
- using (var rsa = RSA.Create())
- {
- rsa.ImportSubjectPublicKeyInfo(recipientPublicKey, out _);
- encryptedKey = rsa.Encrypt(aesKey, RSAEncryptionPadding.OaepSHA256);
- }
-
- return new EncryptedMessagePayload
- {
- CipherText = Convert.ToBase64String(cipherBytes),
- Nonce = Convert.ToBase64String(nonce),
- Tag = Convert.ToBase64String(tag),
- EncryptedKey = Convert.ToBase64String(encryptedKey)
- };
- }
-
- public static string DecryptForRecipient(EncryptedMessagePayload payload, string recipientPrivateKeyBase64)
- {
- var encryptedKey = Convert.FromBase64String(payload.EncryptedKey);
- var privateKey = Convert.FromBase64String(recipientPrivateKeyBase64);
-
- byte[] aesKey;
-
- using (var rsa = RSA.Create())
- {
- rsa.ImportPkcs8PrivateKey(privateKey, out _);
- aesKey = rsa.Decrypt(encryptedKey, RSAEncryptionPadding.OaepSHA256);
- }
-
- var nonce = Convert.FromBase64String(payload.Nonce);
- var tag = Convert.FromBase64String(payload.Tag);
- var cipherBytes = Convert.FromBase64String(payload.CipherText);
- var plainBytes = new byte[cipherBytes.Length];
-
- using (var aes = new AesGcm(aesKey, 16))
- {
- aes.Decrypt(nonce, cipherBytes, tag, plainBytes);
- }
-
- return Encoding.UTF8.GetString(plainBytes);
- }
-}
-
-public class EncryptedMessagePayload
-{
- public required string CipherText { get; set; }
- public required string Nonce { get; set; }
- public required string Tag { get; set; }
- public required string EncryptedKey { get; set; }
-}
\ No newline at end of file
diff --git a/RelayCore/Program.cs b/RelayCore/Program.cs
deleted file mode 100644
index cf83956..0000000
--- a/RelayCore/Program.cs
+++ /dev/null
@@ -1,298 +0,0 @@
-using SurrealDb.Net;
-using SurrealDb.Net.Models;
-using SurrealDb.Net.Models.Auth;
-using System.Text.Json;
-using PasswordHasher;
-using RelayCore;
-
-using var db = new SurrealDbClient("ws://127.0.0.1:8000/rpc");
-
-await db.SignIn(new RootAuth { Username = "root", Password = "secret" });
-await db.Use("test", "test");
-
-var keeper = await CreateUserAsync(db, "Keeper317", "Keeper317@gmail.com", "password");
-var kira = await CreateUserAsync(db, "Ru_Kira", "jduesling13@gmail.com", "password");
-
-Console.WriteLine($"Keeper created: {ToJsonString(keeper)}");
-Console.WriteLine($"Kira created: {ToJsonString(kira)}");
-
-var keeperKeys = E2EeHelper.GenerateRsaKeyPair();
-var kiraKeys = E2EeHelper.GenerateRsaKeyPair();
-
-KeyStorage.SavePrivateKey("Keeper317", keeperKeys.privateKey);
-KeyStorage.SavePrivateKey("Ru_Kira", kiraKeys.privateKey);
-
-await db.Create("user_keys", new UserKeys
-{
- UserId = keeper.Id.ToString(),
- PublicKey = keeperKeys.publicKey,
- CreatedAt = DateTime.UtcNow,
- UpdatedAt = DateTime.UtcNow
-});
-
-await db.Create("user_keys", new UserKeys
-{
- UserId = kira.Id.ToString(),
- PublicKey = kiraKeys.publicKey,
- CreatedAt = DateTime.UtcNow,
- UpdatedAt = DateTime.UtcNow
-});
-
-Console.WriteLine("Public keys stored for both users.");
-
-var conversation = await db.Create("conversations", new Conversations
-{
- CreatedByUserId = keeper.Id.ToString(),
- CreatedAt = DateTime.UtcNow,
- UpdatedAt = DateTime.UtcNow,
- Title = "Keeper317 + Ru_Kira",
- IsDirectMessage = true
-});
-
-Console.WriteLine($"Conversation created: {ToJsonString(conversation)}");
-
-await db.Create("conversation_members", new ConversationMembers
-{
- ConversationId = conversation.Id.ToString(),
- UserId = keeper.Id.ToString(),
- JoinedAt = DateTime.UtcNow
-});
-
-await db.Create("conversation_members", new ConversationMembers
-{
- ConversationId = conversation.Id.ToString(),
- UserId = kira.Id.ToString(),
- JoinedAt = DateTime.UtcNow
-});
-
-Console.WriteLine("Conversation members added.");
-
-var encrypted = E2EeHelper.EncryptForRecipient("hello from Keeper317", kiraKeys.publicKey);
-
-var savedMessage = await db.Create("messages", new Messages
-{
- ConversationId = conversation.Id.ToString(),
- SenderUserId = keeper.Id.ToString(),
- RecipientUserId = kira.Id.ToString(),
- CipherText = encrypted.CipherText,
- Nonce = encrypted.Nonce,
- Tag = encrypted.Tag,
- EncryptedKey = encrypted.EncryptedKey,
- CreatedAt = DateTime.UtcNow
-});
-
-Console.WriteLine($"Encrypted message saved: {ToJsonString(savedMessage)}");
-
-var decrypted = E2EeHelper.DecryptForRecipient(encrypted, kiraKeys.privateKey);
-Console.WriteLine($"Decrypted for Ru_Kira: {decrypted}");
-
-return;
-
-static string ToJsonString(object? o)
-{
- return JsonSerializer.Serialize(o, new JsonSerializerOptions { WriteIndented = true });
-}
-
-static async Task CreateUserAsync(SurrealDbClient db, string username, string email, string rawPassword)
-{
- var now = DateTime.UtcNow;
-
- var user = new Users
- {
- Username = username,
- Email = email,
- CreatedAt = now,
- UpdatedAt = now,
- LastLogin = now,
- TwoFactorEnabled = false,
- EmailVerified = false,
- AccountStatus = (int)AccountStatuses.Active,
- OnlineStatus = (int)OnlineStatuses.Online,
- };
-
- var created = await db.Create("users", user);
-
- var hasher = new PasswordHasher.PasswordHasher();
- var passwordHash = hasher.HashPassword(created.Id.ToString() + rawPassword);
-
- var updated = await db.Merge(new PasswordHash
- {
- Id = created.Id,
- Password = passwordHash
- });
-
- return updated;
-}
-
-public static class KeyStorage
-{
- public static void SavePrivateKey(string username, string privateKey)
- {
- Directory.CreateDirectory("keys");
- File.WriteAllText(Path.Combine("keys", $"{username}.private.key"), privateKey);
- }
-
- public static string LoadPrivateKey(string username)
- {
- return File.ReadAllText(Path.Combine("keys", $"{username}.private.key"));
- }
-
- public static bool PrivateKeyExists(string username)
- {
- return File.Exists(Path.Combine("keys", $"{username}.private.key"));
- }
-}
-
-public class ResponsibilityMerge : Record
-{
- public bool Marketing { get; set; }
-}
-public class Group
-{
- public bool Marketing { get; set; }
- public int Count { get; set; }
-}
-
-public class Users : Record
-{
- public required string Username { get; set; }
- public string? Password { get; set; }
- public required string Email { get; set; }
- public required DateTime CreatedAt { get; set; }
- public required DateTime UpdatedAt { get; set; }
- public required DateTime LastLogin { get; set; }
- public bool TwoFactorEnabled { get; set; }
- public bool EmailVerified { get; set; }
- public required int AccountStatus { get; set; }
- public required int OnlineStatus { get; set; }
-}
-
-public class PasswordHash : Record
-{
- public string? Password { get; set; }
-}
-
-public class Sessions : Record
-{
- public required string UserId { get; set; }
- public required string TokenHash { get; set; }
- public required DateTime IssuedAt { get; set; }
- public required DateTime ExpiresAt { get; set; }
- public DateTime? LastUsedAt { get; set; }
- public bool Revoked { get; set; }
- public required string DeviceName { get; set; }
- public required string IpAddress { get; set; }
- public required string UserAgent { get; set; }
-}
-
-public class PasswordReset : Record
-{
- public required string UserId { get; set; }
- public required string TokenHash { get; set; }
- public required DateTime CreatedAt { get; set; }
- public required DateTime ExpiresAt { get; set; }
- public bool Revoked { get; set; }
-}
-
-public class Licenses : Record
-{
- public required string UserId { get; set; }
- public required int LicenseType { get; set; }
- public required int Status { get; set; }
- public required DateTime CreatedAt { get; set; }
- public required DateTime StartsAt { get; set; }
- public required DateTime UpdatedAt { get; set; }
- public required DateTime ExpiresAt { get; set; }
-
-}
-
-public class AuthAudits : Record
-{
- public required string UserId { get; set; }
- public required int EventType { get; set; }
- public bool Success { get; set; }
- public required string IpAddress { get; set; }
- public required string UserAgent { get; set; }
- public required string Details { get; set; }
- public required DateTime CreatedAt { get; set; }
-}
-
-public class UserKeys : Record
-{
- public required string UserId { get; set; }
- public required string PublicKey { get; set; }
- public required DateTime CreatedAt { get; set; }
- public required DateTime UpdatedAt { get; set; }
-}
-
-public class Conversations : Record
-{
- public required string CreatedByUserId { get; set; }
- public required DateTime CreatedAt { get; set; }
- public required DateTime UpdatedAt { get; set; }
- public string? Title { get; set; }
- public bool IsDirectMessage { get; set; }
-}
-
-public class ConversationMembers : Record
-{
- public required string ConversationId { get; set; }
- public required string UserId { get; set; }
- public required DateTime JoinedAt { get; set; }
-}
-
-public class Messages : Record
-{
- public required string ConversationId { get; set; }
- public required string SenderUserId { get; set; }
- public required string RecipientUserId { get; set; }
- public required string CipherText { get; set; }
- public required string Nonce { get; set; }
- public required string Tag { get; set; }
- public required string EncryptedKey { get; set; }
- public required DateTime CreatedAt { get; set; }
-}
-
-enum AccountStatuses
-{
- Active,
- Suspended,
- Banned,
- Deleted
-}
-
-enum OnlineStatuses
-{
- Online,
- Busy,
- DND,
- Invisible,
- Offline
-}
-
-enum LicenseStatuses
-{
- Active,
- Expired,
- Renewable,
- Revoked
-}
-
-enum LicenseType
-{
- Free,
- Basic,
- Advanced,
- Pro,
- Enterprise
-}
-
-enum LogEvents
-{
- LoginSuccess,
- LoginFailure,
- LogoutSuccess,
- LogoutFailure,
- PasswordResetSuccess,
- PasswordResetFailure,
-}
\ No newline at end of file
diff --git a/RelayCore/README.md b/RelayCore/README.md
deleted file mode 100644
index c099d39..0000000
--- a/RelayCore/README.md
+++ /dev/null
@@ -1 +0,0 @@
-# RelayCore
diff --git a/RelayCore/keys/.gitkeep b/RelayCore/keys/.gitkeep
deleted file mode 100644
index e69de29..0000000
diff --git a/RelayServer/.gitignore b/RelayServer/.gitignore
deleted file mode 100644
index 26d814a..0000000
--- a/RelayServer/.gitignore
+++ /dev/null
@@ -1,93 +0,0 @@
-############################################
-# .NET Build
-############################################
-
-bin/
-obj/
-out/
-publish/
-
-############################################
-# Visual Studio
-############################################
-
-.vs/
-*.user
-*.suo
-*.userprefs
-*.csproj.user
-*.dbmdl
-*.cache
-*.pdb
-*.opendb
-
-############################################
-# Rider / JetBrains
-############################################
-
-.idea/
-*.sln.iml
-
-############################################
-# VSCode
-############################################
-
-.vscode/
-
-############################################
-# NuGet
-############################################
-
-*.nupkg
-*.snupkg
-packages/
-.nuget/
-.nuget/packages/
-
-############################################
-# Logs
-############################################
-
-*.log
-logs/
-
-############################################
-# OS files
-############################################
-
-.DS_Store
-Thumbs.db
-
-############################################
-# Local secrets / environment
-############################################
-
-.env
-.env.*
-secrets.json
-appsettings.Development.json
-
-############################################
-# E2EE private keys
-############################################
-
-keys/*
-!keys/.gitkeep
-
-############################################
-# Local test databases / data folders
-############################################
-
-data/
-*.db
-*.sqlite
-*.sqlite3
-
-############################################
-# Temporary files
-############################################
-
-*.tmp
-*.temp
-*.bak
-*.swp
\ No newline at end of file
diff --git a/RelayServer/Program.cs b/RelayServer/Program.cs
deleted file mode 100644
index 837131c..0000000
--- a/RelayServer/Program.cs
+++ /dev/null
@@ -1 +0,0 @@
-Console.WriteLine("Hello, World!");
\ No newline at end of file
diff --git a/RelayServer/README.md b/RelayServer/README.md
deleted file mode 100644
index 2cd21e5..0000000
--- a/RelayServer/README.md
+++ /dev/null
@@ -1 +0,0 @@
-# RelayServer
diff --git a/RelayServer/RelayServer.csproj b/RelayServer/RelayServer.csproj
deleted file mode 100644
index 7ca9552..0000000
--- a/RelayServer/RelayServer.csproj
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
- Exe
- net10.0
- enable
- enable
-
-
-
diff --git a/compose.yaml b/compose.yaml
new file mode 100644
index 0000000..eed92af
--- /dev/null
+++ b/compose.yaml
@@ -0,0 +1,7 @@
+services:
+ relaycore:
+ image: relaycore
+ build:
+ context: .
+ dockerfile: Dockerfile
+
diff --git a/global.json b/global.json
deleted file mode 100644
index 9a523dc..0000000
--- a/global.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
- "sdk": {
- "version": "10.0.0",
- "rollForward": "latestMajor",
- "allowPrerelease": false
- }
-}
\ No newline at end of file
diff --git a/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs b/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs
new file mode 100644
index 0000000..feda5e9
--- /dev/null
+++ b/obj/Debug/net9.0/.NETCoreApp,Version=v9.0.AssemblyAttributes.cs
@@ -0,0 +1,4 @@
+//
+using System;
+using System.Reflection;
+[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETCoreApp,Version=v9.0", FrameworkDisplayName = ".NET 9.0")]
diff --git a/obj/Debug/net9.0/RelayCore.AssemblyInfo.cs b/obj/Debug/net9.0/RelayCore.AssemblyInfo.cs
new file mode 100644
index 0000000..8e7d44b
--- /dev/null
+++ b/obj/Debug/net9.0/RelayCore.AssemblyInfo.cs
@@ -0,0 +1,22 @@
+//------------------------------------------------------------------------------
+//
+// This code was generated by a tool.
+//
+// Changes to this file may cause incorrect behavior and will be lost if
+// the code is regenerated.
+//
+//------------------------------------------------------------------------------
+
+using System;
+using System.Reflection;
+
+[assembly: System.Reflection.AssemblyCompanyAttribute("RelayCore")]
+[assembly: System.Reflection.AssemblyConfigurationAttribute("Debug")]
+[assembly: System.Reflection.AssemblyFileVersionAttribute("1.0.0.0")]
+[assembly: System.Reflection.AssemblyInformationalVersionAttribute("1.0.0+7682ce0429634f5b008d85c59acf4ed3838121ef")]
+[assembly: System.Reflection.AssemblyProductAttribute("RelayCore")]
+[assembly: System.Reflection.AssemblyTitleAttribute("RelayCore")]
+[assembly: System.Reflection.AssemblyVersionAttribute("1.0.0.0")]
+
+// Generated by the MSBuild WriteCodeFragment class.
+
diff --git a/obj/Debug/net9.0/RelayCore.AssemblyInfoInputs.cache b/obj/Debug/net9.0/RelayCore.AssemblyInfoInputs.cache
new file mode 100644
index 0000000..56d3ba3
--- /dev/null
+++ b/obj/Debug/net9.0/RelayCore.AssemblyInfoInputs.cache
@@ -0,0 +1 @@
+86555fdeb5734425e2303585c6b325bb51b77f8679eb62d09e5e490545061734
diff --git a/obj/Debug/net9.0/RelayCore.GeneratedMSBuildEditorConfig.editorconfig b/obj/Debug/net9.0/RelayCore.GeneratedMSBuildEditorConfig.editorconfig
new file mode 100644
index 0000000..da7f5a5
--- /dev/null
+++ b/obj/Debug/net9.0/RelayCore.GeneratedMSBuildEditorConfig.editorconfig
@@ -0,0 +1,15 @@
+is_global = true
+build_property.TargetFramework = net9.0
+build_property.TargetPlatformMinVersion =
+build_property.UsingMicrosoftNETSdkWeb =
+build_property.ProjectTypeGuids =
+build_property.InvariantGlobalization =
+build_property.PlatformNeutralAssembly =
+build_property.EnforceExtendedAnalyzerRules =
+build_property._SupportedPlatformList = Linux,macOS,Windows
+build_property.RootNamespace = RelayCore
+build_property.ProjectDir = D:\DDI\Relay\RelayChat\RelayCore\
+build_property.EnableComHosting =
+build_property.EnableGeneratedComInterfaceComImportInterop =
+build_property.EffectiveAnalysisLevelStyle = 9.0
+build_property.EnableCodeStyleSeverity =
diff --git a/obj/Debug/net9.0/RelayCore.GlobalUsings.g.cs b/obj/Debug/net9.0/RelayCore.GlobalUsings.g.cs
new file mode 100644
index 0000000..8578f3d
--- /dev/null
+++ b/obj/Debug/net9.0/RelayCore.GlobalUsings.g.cs
@@ -0,0 +1,8 @@
+//
+global using global::System;
+global using global::System.Collections.Generic;
+global using global::System.IO;
+global using global::System.Linq;
+global using global::System.Net.Http;
+global using global::System.Threading;
+global using global::System.Threading.Tasks;
diff --git a/obj/Debug/net9.0/RelayCore.assets.cache b/obj/Debug/net9.0/RelayCore.assets.cache
new file mode 100644
index 0000000..8889c27
Binary files /dev/null and b/obj/Debug/net9.0/RelayCore.assets.cache differ
diff --git a/obj/RelayCore.csproj.nuget.dgspec.json b/obj/RelayCore.csproj.nuget.dgspec.json
new file mode 100644
index 0000000..4555919
--- /dev/null
+++ b/obj/RelayCore.csproj.nuget.dgspec.json
@@ -0,0 +1,84 @@
+{
+ "format": 1,
+ "restore": {
+ "D:\\DDI\\Relay\\RelayChat\\RelayCore\\RelayCore.csproj": {}
+ },
+ "projects": {
+ "D:\\DDI\\Relay\\RelayChat\\RelayCore\\RelayCore.csproj": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\DDI\\Relay\\RelayChat\\RelayCore\\RelayCore.csproj",
+ "projectName": "RelayCore",
+ "projectPath": "D:\\DDI\\Relay\\RelayChat\\RelayCore\\RelayCore.csproj",
+ "packagesPath": "C:\\Users\\Core\\.nuget\\packages\\",
+ "outputPath": "D:\\DDI\\Relay\\RelayChat\\RelayCore\\obj\\",
+ "projectStyle": "PackageReference",
+ "fallbackFolders": [
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+ ],
+ "configFilePaths": [
+ "C:\\Users\\Core\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net9.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "C:\\Program Files\\dotnet\\library-packs": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ },
+ "SdkAnalysisLevel": "9.0.300"
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "dependencies": {
+ "Konscious.Security.Cryptography.Argon2": {
+ "target": "Package",
+ "version": "[1.3.1, )"
+ },
+ "SurrealDb.Net": {
+ "target": "Package",
+ "version": "[0.9.0, )"
+ }
+ },
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.305/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/obj/RelayCore.csproj.nuget.g.props b/obj/RelayCore.csproj.nuget.g.props
new file mode 100644
index 0000000..65e84c4
--- /dev/null
+++ b/obj/RelayCore.csproj.nuget.g.props
@@ -0,0 +1,16 @@
+
+
+
+ True
+ NuGet
+ $(MSBuildThisFileDirectory)project.assets.json
+ $(UserProfile)\.nuget\packages\
+ C:\Users\Core\.nuget\packages\;C:\Program Files (x86)\Microsoft Visual Studio\Shared\NuGetPackages
+ PackageReference
+ 6.14.0
+
+
+
+
+
+
\ No newline at end of file
diff --git a/obj/RelayCore.csproj.nuget.g.targets b/obj/RelayCore.csproj.nuget.g.targets
new file mode 100644
index 0000000..90e8d8a
--- /dev/null
+++ b/obj/RelayCore.csproj.nuget.g.targets
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/obj/project.assets.json b/obj/project.assets.json
new file mode 100644
index 0000000..4837f80
--- /dev/null
+++ b/obj/project.assets.json
@@ -0,0 +1,1426 @@
+{
+ "version": 3,
+ "targets": {
+ "net9.0": {
+ "ConcurrentHashSet/1.3.0": {
+ "type": "package",
+ "compile": {
+ "lib/netstandard2.0/ConcurrentCollections.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/netstandard2.0/ConcurrentCollections.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Dahomey.Cbor/1.24.3": {
+ "type": "package",
+ "dependencies": {
+ "System.IO.Pipelines": "7.0.0"
+ },
+ "compile": {
+ "lib/net8.0/Dahomey.Cbor.dll": {}
+ },
+ "runtime": {
+ "lib/net8.0/Dahomey.Cbor.dll": {}
+ }
+ },
+ "Konscious.Security.Cryptography.Argon2/1.3.1": {
+ "type": "package",
+ "dependencies": {
+ "Konscious.Security.Cryptography.Blake2": "1.1.1",
+ "System.Memory": "4.5.4"
+ },
+ "compile": {
+ "lib/net8.0/Konscious.Security.Cryptography.Argon2.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/Konscious.Security.Cryptography.Argon2.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Konscious.Security.Cryptography.Blake2/1.1.1": {
+ "type": "package",
+ "compile": {
+ "lib/net8.0/Konscious.Security.Cryptography.Blake2.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/Konscious.Security.Cryptography.Blake2.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Microsoft.Bcl.AsyncInterfaces/6.0.0": {
+ "type": "package",
+ "compile": {
+ "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Microsoft.Extensions.Configuration/9.0.4": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Primitives": "9.0.4"
+ },
+ "compile": {
+ "lib/net9.0/Microsoft.Extensions.Configuration.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.Extensions.Configuration.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net8.0/_._": {}
+ }
+ },
+ "Microsoft.Extensions.Configuration.Abstractions/9.0.4": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "9.0.4"
+ },
+ "compile": {
+ "lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net8.0/_._": {}
+ }
+ },
+ "Microsoft.Extensions.Configuration.Binder/9.0.4": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "9.0.4"
+ },
+ "compile": {
+ "lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets": {}
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection/9.0.4": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4"
+ },
+ "compile": {
+ "lib/net9.0/Microsoft.Extensions.DependencyInjection.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.Extensions.DependencyInjection.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net8.0/_._": {}
+ }
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/9.0.4": {
+ "type": "package",
+ "compile": {
+ "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net8.0/_._": {}
+ }
+ },
+ "Microsoft.Extensions.Diagnostics/9.0.4": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.Configuration": "9.0.4",
+ "Microsoft.Extensions.Diagnostics.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options.ConfigurationExtensions": "9.0.4"
+ },
+ "compile": {
+ "lib/net9.0/Microsoft.Extensions.Diagnostics.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.Extensions.Diagnostics.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net8.0/_._": {}
+ }
+ },
+ "Microsoft.Extensions.Diagnostics.Abstractions/9.0.4": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4"
+ },
+ "compile": {
+ "lib/net9.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.Extensions.Diagnostics.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net8.0/_._": {}
+ }
+ },
+ "Microsoft.Extensions.Http/9.0.4": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "9.0.4",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Diagnostics": "9.0.4",
+ "Microsoft.Extensions.Logging": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4"
+ },
+ "compile": {
+ "lib/net9.0/Microsoft.Extensions.Http.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.Extensions.Http.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net8.0/_._": {}
+ }
+ },
+ "Microsoft.Extensions.Logging/9.0.4": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection": "9.0.4",
+ "Microsoft.Extensions.Logging.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4"
+ },
+ "compile": {
+ "lib/net9.0/Microsoft.Extensions.Logging.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.Extensions.Logging.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net8.0/_._": {}
+ }
+ },
+ "Microsoft.Extensions.Logging.Abstractions/9.0.4": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4"
+ },
+ "compile": {
+ "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets": {}
+ }
+ },
+ "Microsoft.Extensions.Options/9.0.4": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Primitives": "9.0.4"
+ },
+ "compile": {
+ "lib/net9.0/Microsoft.Extensions.Options.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.Extensions.Options.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net8.0/Microsoft.Extensions.Options.targets": {}
+ }
+ },
+ "Microsoft.Extensions.Options.ConfigurationExtensions/9.0.4": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.Configuration.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Configuration.Binder": "9.0.4",
+ "Microsoft.Extensions.DependencyInjection.Abstractions": "9.0.4",
+ "Microsoft.Extensions.Options": "9.0.4",
+ "Microsoft.Extensions.Primitives": "9.0.4"
+ },
+ "compile": {
+ "lib/net9.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net8.0/_._": {}
+ }
+ },
+ "Microsoft.Extensions.Primitives/9.0.4": {
+ "type": "package",
+ "compile": {
+ "lib/net9.0/Microsoft.Extensions.Primitives.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/Microsoft.Extensions.Primitives.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net8.0/_._": {}
+ }
+ },
+ "Microsoft.IO.RecyclableMemoryStream/3.0.1": {
+ "type": "package",
+ "compile": {
+ "lib/net6.0/Microsoft.IO.RecyclableMemoryStream.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net6.0/Microsoft.IO.RecyclableMemoryStream.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Microsoft.Spatial/7.18.0": {
+ "type": "package",
+ "compile": {
+ "lib/netstandard2.0/Microsoft.Spatial.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/netstandard2.0/Microsoft.Spatial.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Semver/3.0.0": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.Primitives": "5.0.1"
+ },
+ "compile": {
+ "lib/net5.0/Semver.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net5.0/Semver.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "SurrealDb.Net/0.9.0": {
+ "type": "package",
+ "dependencies": {
+ "ConcurrentHashSet": "1.3.0",
+ "Dahomey.Cbor": "1.24.3",
+ "Microsoft.Extensions.Http": "9.0.4",
+ "Microsoft.IO.RecyclableMemoryStream": "3.0.1",
+ "Microsoft.Spatial": "7.18.0",
+ "Semver": "3.0.0",
+ "System.Collections.Immutable": "9.0.4",
+ "System.Linq.Async": "6.0.1",
+ "SystemTextJsonPatch": "4.2.0",
+ "Websocket.Client": "5.1.2"
+ },
+ "compile": {
+ "lib/net9.0/SurrealDb.Net.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/SurrealDb.Net.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "System.Collections.Immutable/9.0.4": {
+ "type": "package",
+ "compile": {
+ "lib/net9.0/System.Collections.Immutable.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/System.Collections.Immutable.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net8.0/_._": {}
+ }
+ },
+ "System.IO.Pipelines/7.0.0": {
+ "type": "package",
+ "compile": {
+ "lib/net7.0/System.IO.Pipelines.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net7.0/System.IO.Pipelines.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net6.0/_._": {}
+ }
+ },
+ "System.Linq.Async/6.0.1": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Bcl.AsyncInterfaces": "6.0.0"
+ },
+ "compile": {
+ "ref/net6.0/System.Linq.Async.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net6.0/System.Linq.Async.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "System.Memory/4.5.4": {
+ "type": "package",
+ "compile": {
+ "ref/netcoreapp2.1/_._": {}
+ },
+ "runtime": {
+ "lib/netcoreapp2.1/_._": {}
+ }
+ },
+ "System.Reactive/6.0.0": {
+ "type": "package",
+ "compile": {
+ "lib/net6.0/System.Reactive.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net6.0/System.Reactive.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net6.0/_._": {}
+ }
+ },
+ "System.Threading.Channels/8.0.0": {
+ "type": "package",
+ "compile": {
+ "lib/net8.0/System.Threading.Channels.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/System.Threading.Channels.dll": {
+ "related": ".xml"
+ }
+ },
+ "build": {
+ "buildTransitive/net6.0/_._": {}
+ }
+ },
+ "SystemTextJsonPatch/4.2.0": {
+ "type": "package",
+ "compile": {
+ "lib/net9.0/SystemTextJsonPatch.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net9.0/SystemTextJsonPatch.dll": {
+ "related": ".xml"
+ }
+ }
+ },
+ "Websocket.Client/5.1.2": {
+ "type": "package",
+ "dependencies": {
+ "Microsoft.Extensions.Logging.Abstractions": "8.0.0",
+ "Microsoft.IO.RecyclableMemoryStream": "3.0.0",
+ "System.Reactive": "6.0.0",
+ "System.Threading.Channels": "8.0.0"
+ },
+ "compile": {
+ "lib/net8.0/Websocket.Client.dll": {
+ "related": ".xml"
+ }
+ },
+ "runtime": {
+ "lib/net8.0/Websocket.Client.dll": {
+ "related": ".xml"
+ }
+ }
+ }
+ }
+ },
+ "libraries": {
+ "ConcurrentHashSet/1.3.0": {
+ "sha512": "a30gfk4WDn2f7sOisXpko+CrQ7s5nL1ZWk4afnRwwRQHWPRrRSZpzn5Dz2YWpJtS90NJqkytQ/MkzHq4QYTIbg==",
+ "type": "package",
+ "path": "concurrenthashset/1.3.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "concurrenthashset.1.3.0.nupkg.sha512",
+ "concurrenthashset.nuspec",
+ "lib/net461/ConcurrentCollections.dll",
+ "lib/net461/ConcurrentCollections.xml",
+ "lib/netstandard1.0/ConcurrentCollections.dll",
+ "lib/netstandard1.0/ConcurrentCollections.xml",
+ "lib/netstandard2.0/ConcurrentCollections.dll",
+ "lib/netstandard2.0/ConcurrentCollections.xml"
+ ]
+ },
+ "Dahomey.Cbor/1.24.3": {
+ "sha512": "SIwp1RYjViZZw5ahxA7lYjegqZ6eu/78710MVY5/ukWCZ8WlSjGjpWrE3LOeCUxQnxkeRKy+pZyQUh+K91KBiA==",
+ "type": "package",
+ "path": "dahomey.cbor/1.24.3",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "dahomey.cbor.1.24.3.nupkg.sha512",
+ "dahomey.cbor.nuspec",
+ "lib/net6.0/Dahomey.Cbor.dll",
+ "lib/net7.0/Dahomey.Cbor.dll",
+ "lib/net8.0/Dahomey.Cbor.dll",
+ "lib/netstandard2.0/Dahomey.Cbor.dll"
+ ]
+ },
+ "Konscious.Security.Cryptography.Argon2/1.3.1": {
+ "sha512": "T+OAGwzYYXftahpOxO7J4xA5K6urxwGnWQf3M+Jpi+76Azv/0T3M5SuN+h7/QvXuiqNw3ZEZ5QqVLI5ygDAylw==",
+ "type": "package",
+ "path": "konscious.security.cryptography.argon2/1.3.1",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "konscious.security.cryptography.argon2.1.3.1.nupkg.sha512",
+ "konscious.security.cryptography.argon2.nuspec",
+ "lib/net46/Konscious.Security.Cryptography.Argon2.dll",
+ "lib/net46/Konscious.Security.Cryptography.Argon2.xml",
+ "lib/net6.0/Konscious.Security.Cryptography.Argon2.dll",
+ "lib/net6.0/Konscious.Security.Cryptography.Argon2.xml",
+ "lib/net8.0/Konscious.Security.Cryptography.Argon2.dll",
+ "lib/net8.0/Konscious.Security.Cryptography.Argon2.xml",
+ "lib/netstandard1.3/Konscious.Security.Cryptography.Argon2.dll",
+ "lib/netstandard1.3/Konscious.Security.Cryptography.Argon2.xml"
+ ]
+ },
+ "Konscious.Security.Cryptography.Blake2/1.1.1": {
+ "sha512": "odwOyzj/J/lHJZNwFWJGU/LRecBShupAJ2S8TQqZfhUe9niHzu/voBYK5wuVKsvSpzbfupKQYZguVyIk1sgOkQ==",
+ "type": "package",
+ "path": "konscious.security.cryptography.blake2/1.1.1",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "konscious.security.cryptography.blake2.1.1.1.nupkg.sha512",
+ "konscious.security.cryptography.blake2.nuspec",
+ "lib/net46/Konscious.Security.Cryptography.Blake2.dll",
+ "lib/net46/Konscious.Security.Cryptography.Blake2.xml",
+ "lib/net6.0/Konscious.Security.Cryptography.Blake2.dll",
+ "lib/net6.0/Konscious.Security.Cryptography.Blake2.xml",
+ "lib/net8.0/Konscious.Security.Cryptography.Blake2.dll",
+ "lib/net8.0/Konscious.Security.Cryptography.Blake2.xml",
+ "lib/netstandard1.3/Konscious.Security.Cryptography.Blake2.dll",
+ "lib/netstandard1.3/Konscious.Security.Cryptography.Blake2.xml"
+ ]
+ },
+ "Microsoft.Bcl.AsyncInterfaces/6.0.0": {
+ "sha512": "UcSjPsst+DfAdJGVDsu346FX0ci0ah+lw3WRtn18NUwEqRt70HaOQ7lI72vy3+1LxtqI3T5GWwV39rQSrCzAeg==",
+ "type": "package",
+ "path": "microsoft.bcl.asyncinterfaces/6.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/net461/Microsoft.Bcl.AsyncInterfaces.dll",
+ "lib/net461/Microsoft.Bcl.AsyncInterfaces.xml",
+ "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.dll",
+ "lib/netstandard2.0/Microsoft.Bcl.AsyncInterfaces.xml",
+ "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.dll",
+ "lib/netstandard2.1/Microsoft.Bcl.AsyncInterfaces.xml",
+ "microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512",
+ "microsoft.bcl.asyncinterfaces.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.Extensions.Configuration/9.0.4": {
+ "sha512": "KIVBrMbItnCJDd1RF4KEaE8jZwDJcDUJW5zXpbwQ05HNYTK1GveHxHK0B3SjgDJuR48GRACXAO+BLhL8h34S7g==",
+ "type": "package",
+ "path": "microsoft.extensions.configuration/9.0.4",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "buildTransitive/net461/Microsoft.Extensions.Configuration.targets",
+ "buildTransitive/net462/_._",
+ "buildTransitive/net8.0/_._",
+ "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.targets",
+ "lib/net462/Microsoft.Extensions.Configuration.dll",
+ "lib/net462/Microsoft.Extensions.Configuration.xml",
+ "lib/net8.0/Microsoft.Extensions.Configuration.dll",
+ "lib/net8.0/Microsoft.Extensions.Configuration.xml",
+ "lib/net9.0/Microsoft.Extensions.Configuration.dll",
+ "lib/net9.0/Microsoft.Extensions.Configuration.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.Configuration.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.Configuration.xml",
+ "microsoft.extensions.configuration.9.0.4.nupkg.sha512",
+ "microsoft.extensions.configuration.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.Extensions.Configuration.Abstractions/9.0.4": {
+ "sha512": "0LN/DiIKvBrkqp7gkF3qhGIeZk6/B63PthAHjQsxymJfIBcz0kbf4/p/t4lMgggVxZ+flRi5xvTwlpPOoZk8fg==",
+ "type": "package",
+ "path": "microsoft.extensions.configuration.abstractions/9.0.4",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "buildTransitive/net461/Microsoft.Extensions.Configuration.Abstractions.targets",
+ "buildTransitive/net462/_._",
+ "buildTransitive/net8.0/_._",
+ "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Configuration.Abstractions.targets",
+ "lib/net462/Microsoft.Extensions.Configuration.Abstractions.dll",
+ "lib/net462/Microsoft.Extensions.Configuration.Abstractions.xml",
+ "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.dll",
+ "lib/net8.0/Microsoft.Extensions.Configuration.Abstractions.xml",
+ "lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.dll",
+ "lib/net9.0/Microsoft.Extensions.Configuration.Abstractions.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.Configuration.Abstractions.xml",
+ "microsoft.extensions.configuration.abstractions.9.0.4.nupkg.sha512",
+ "microsoft.extensions.configuration.abstractions.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.Extensions.Configuration.Binder/9.0.4": {
+ "sha512": "cdrjcl9RIcwt3ECbnpP0Gt1+pkjdW90mq5yFYy8D9qRj2NqFFcv3yDp141iEamsd9E218sGxK8WHaIOcrqgDJg==",
+ "type": "package",
+ "path": "microsoft.extensions.configuration.binder/9.0.4",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "analyzers/dotnet/cs/Microsoft.Extensions.Configuration.Binder.SourceGeneration.dll",
+ "analyzers/dotnet/cs/cs/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll",
+ "analyzers/dotnet/cs/de/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll",
+ "analyzers/dotnet/cs/es/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll",
+ "analyzers/dotnet/cs/fr/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll",
+ "analyzers/dotnet/cs/it/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll",
+ "analyzers/dotnet/cs/ja/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll",
+ "analyzers/dotnet/cs/ko/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll",
+ "analyzers/dotnet/cs/pl/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll",
+ "analyzers/dotnet/cs/pt-BR/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll",
+ "analyzers/dotnet/cs/ru/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll",
+ "analyzers/dotnet/cs/tr/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll",
+ "analyzers/dotnet/cs/zh-Hans/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll",
+ "analyzers/dotnet/cs/zh-Hant/Microsoft.Extensions.Configuration.Binder.SourceGeneration.resources.dll",
+ "buildTransitive/netstandard2.0/Microsoft.Extensions.Configuration.Binder.targets",
+ "lib/net462/Microsoft.Extensions.Configuration.Binder.dll",
+ "lib/net462/Microsoft.Extensions.Configuration.Binder.xml",
+ "lib/net8.0/Microsoft.Extensions.Configuration.Binder.dll",
+ "lib/net8.0/Microsoft.Extensions.Configuration.Binder.xml",
+ "lib/net9.0/Microsoft.Extensions.Configuration.Binder.dll",
+ "lib/net9.0/Microsoft.Extensions.Configuration.Binder.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.Configuration.Binder.xml",
+ "microsoft.extensions.configuration.binder.9.0.4.nupkg.sha512",
+ "microsoft.extensions.configuration.binder.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.Extensions.DependencyInjection/9.0.4": {
+ "sha512": "f2MTUaS2EQ3lX4325ytPAISZqgBfXmY0WvgD80ji6Z20AoDNiCESxsqo6mFRwHJD/jfVKRw9FsW6+86gNre3ug==",
+ "type": "package",
+ "path": "microsoft.extensions.dependencyinjection/9.0.4",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.targets",
+ "buildTransitive/net462/_._",
+ "buildTransitive/net8.0/_._",
+ "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.targets",
+ "lib/net462/Microsoft.Extensions.DependencyInjection.dll",
+ "lib/net462/Microsoft.Extensions.DependencyInjection.xml",
+ "lib/net8.0/Microsoft.Extensions.DependencyInjection.dll",
+ "lib/net8.0/Microsoft.Extensions.DependencyInjection.xml",
+ "lib/net9.0/Microsoft.Extensions.DependencyInjection.dll",
+ "lib/net9.0/Microsoft.Extensions.DependencyInjection.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.xml",
+ "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.dll",
+ "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.xml",
+ "microsoft.extensions.dependencyinjection.9.0.4.nupkg.sha512",
+ "microsoft.extensions.dependencyinjection.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.Extensions.DependencyInjection.Abstractions/9.0.4": {
+ "sha512": "UI0TQPVkS78bFdjkTodmkH0Fe8lXv9LnhGFKgKrsgUJ5a5FVdFRcgjIkBVLbGgdRhxWirxH/8IXUtEyYJx6GQg==",
+ "type": "package",
+ "path": "microsoft.extensions.dependencyinjection.abstractions/9.0.4",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "buildTransitive/net461/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
+ "buildTransitive/net462/_._",
+ "buildTransitive/net8.0/_._",
+ "buildTransitive/netcoreapp2.0/Microsoft.Extensions.DependencyInjection.Abstractions.targets",
+ "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/net462/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/net8.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.dll",
+ "lib/netstandard2.1/Microsoft.Extensions.DependencyInjection.Abstractions.xml",
+ "microsoft.extensions.dependencyinjection.abstractions.9.0.4.nupkg.sha512",
+ "microsoft.extensions.dependencyinjection.abstractions.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.Extensions.Diagnostics/9.0.4": {
+ "sha512": "1bCSQrGv9+bpF5MGKF6THbnRFUZqQDrWPA39NDeVW9djeHBmow8kX4SX6/8KkeKI8gmUDG7jsG/bVuNAcY/ATQ==",
+ "type": "package",
+ "path": "microsoft.extensions.diagnostics/9.0.4",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "buildTransitive/net461/Microsoft.Extensions.Diagnostics.targets",
+ "buildTransitive/net462/_._",
+ "buildTransitive/net8.0/_._",
+ "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Diagnostics.targets",
+ "lib/net462/Microsoft.Extensions.Diagnostics.dll",
+ "lib/net462/Microsoft.Extensions.Diagnostics.xml",
+ "lib/net8.0/Microsoft.Extensions.Diagnostics.dll",
+ "lib/net8.0/Microsoft.Extensions.Diagnostics.xml",
+ "lib/net9.0/Microsoft.Extensions.Diagnostics.dll",
+ "lib/net9.0/Microsoft.Extensions.Diagnostics.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.xml",
+ "microsoft.extensions.diagnostics.9.0.4.nupkg.sha512",
+ "microsoft.extensions.diagnostics.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.Extensions.Diagnostics.Abstractions/9.0.4": {
+ "sha512": "IAucBcHYtiCmMyFag+Vrp5m+cjGRlDttJk9Vx7Dqpq+Ama4BzVUOk0JARQakgFFr7ZTBSgLKlHmtY5MiItB7Cg==",
+ "type": "package",
+ "path": "microsoft.extensions.diagnostics.abstractions/9.0.4",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "buildTransitive/net461/Microsoft.Extensions.Diagnostics.Abstractions.targets",
+ "buildTransitive/net462/_._",
+ "buildTransitive/net8.0/_._",
+ "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Diagnostics.Abstractions.targets",
+ "lib/net462/Microsoft.Extensions.Diagnostics.Abstractions.dll",
+ "lib/net462/Microsoft.Extensions.Diagnostics.Abstractions.xml",
+ "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.dll",
+ "lib/net8.0/Microsoft.Extensions.Diagnostics.Abstractions.xml",
+ "lib/net9.0/Microsoft.Extensions.Diagnostics.Abstractions.dll",
+ "lib/net9.0/Microsoft.Extensions.Diagnostics.Abstractions.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.Abstractions.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.Diagnostics.Abstractions.xml",
+ "microsoft.extensions.diagnostics.abstractions.9.0.4.nupkg.sha512",
+ "microsoft.extensions.diagnostics.abstractions.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.Extensions.Http/9.0.4": {
+ "sha512": "ezelU6HJgmq4862YoWuEbHGSV+JnfnonTSbNSJVh6n6wDehyiJn4hBtcK7rGbf2KO3QeSvK5y8E7uzn1oaRH5w==",
+ "type": "package",
+ "path": "microsoft.extensions.http/9.0.4",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "buildTransitive/net461/Microsoft.Extensions.Http.targets",
+ "buildTransitive/net462/_._",
+ "buildTransitive/net8.0/_._",
+ "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Http.targets",
+ "lib/net462/Microsoft.Extensions.Http.dll",
+ "lib/net462/Microsoft.Extensions.Http.xml",
+ "lib/net8.0/Microsoft.Extensions.Http.dll",
+ "lib/net8.0/Microsoft.Extensions.Http.xml",
+ "lib/net9.0/Microsoft.Extensions.Http.dll",
+ "lib/net9.0/Microsoft.Extensions.Http.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.Http.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.Http.xml",
+ "microsoft.extensions.http.9.0.4.nupkg.sha512",
+ "microsoft.extensions.http.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.Extensions.Logging/9.0.4": {
+ "sha512": "xW6QPYsqhbuWBO9/1oA43g/XPKbohJx+7G8FLQgQXIriYvY7s+gxr2wjQJfRoPO900dvvv2vVH7wZovG+M1m6w==",
+ "type": "package",
+ "path": "microsoft.extensions.logging/9.0.4",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "buildTransitive/net461/Microsoft.Extensions.Logging.targets",
+ "buildTransitive/net462/_._",
+ "buildTransitive/net8.0/_._",
+ "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.targets",
+ "lib/net462/Microsoft.Extensions.Logging.dll",
+ "lib/net462/Microsoft.Extensions.Logging.xml",
+ "lib/net8.0/Microsoft.Extensions.Logging.dll",
+ "lib/net8.0/Microsoft.Extensions.Logging.xml",
+ "lib/net9.0/Microsoft.Extensions.Logging.dll",
+ "lib/net9.0/Microsoft.Extensions.Logging.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.Logging.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.Logging.xml",
+ "lib/netstandard2.1/Microsoft.Extensions.Logging.dll",
+ "lib/netstandard2.1/Microsoft.Extensions.Logging.xml",
+ "microsoft.extensions.logging.9.0.4.nupkg.sha512",
+ "microsoft.extensions.logging.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.Extensions.Logging.Abstractions/9.0.4": {
+ "sha512": "0MXlimU4Dud6t+iNi5NEz3dO2w1HXdhoOLaYFuLPCjAsvlPQGwOT6V2KZRMLEhCAm/stSZt1AUv0XmDdkjvtbw==",
+ "type": "package",
+ "path": "microsoft.extensions.logging.abstractions/9.0.4",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "analyzers/dotnet/roslyn3.11/cs/Microsoft.Extensions.Logging.Generators.dll",
+ "analyzers/dotnet/roslyn3.11/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn3.11/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/Microsoft.Extensions.Logging.Generators.dll",
+ "analyzers/dotnet/roslyn4.0/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.0/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Logging.Generators.dll",
+ "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Logging.Generators.resources.dll",
+ "buildTransitive/net461/Microsoft.Extensions.Logging.Abstractions.targets",
+ "buildTransitive/net462/Microsoft.Extensions.Logging.Abstractions.targets",
+ "buildTransitive/net8.0/Microsoft.Extensions.Logging.Abstractions.targets",
+ "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Logging.Abstractions.targets",
+ "buildTransitive/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.targets",
+ "lib/net462/Microsoft.Extensions.Logging.Abstractions.dll",
+ "lib/net462/Microsoft.Extensions.Logging.Abstractions.xml",
+ "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.dll",
+ "lib/net8.0/Microsoft.Extensions.Logging.Abstractions.xml",
+ "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll",
+ "lib/net9.0/Microsoft.Extensions.Logging.Abstractions.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.Logging.Abstractions.xml",
+ "microsoft.extensions.logging.abstractions.9.0.4.nupkg.sha512",
+ "microsoft.extensions.logging.abstractions.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.Extensions.Options/9.0.4": {
+ "sha512": "fiFI2+58kicqVZyt/6obqoFwHiab7LC4FkQ3mmiBJ28Yy4fAvy2+v9MRnSvvlOO8chTOjKsdafFl/K9veCPo5g==",
+ "type": "package",
+ "path": "microsoft.extensions.options/9.0.4",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "analyzers/dotnet/roslyn4.4/cs/Microsoft.Extensions.Options.SourceGeneration.dll",
+ "analyzers/dotnet/roslyn4.4/cs/cs/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/de/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/es/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/fr/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/it/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/ja/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/ko/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/pl/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/pt-BR/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/ru/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/tr/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/zh-Hans/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
+ "analyzers/dotnet/roslyn4.4/cs/zh-Hant/Microsoft.Extensions.Options.SourceGeneration.resources.dll",
+ "buildTransitive/net461/Microsoft.Extensions.Options.targets",
+ "buildTransitive/net462/Microsoft.Extensions.Options.targets",
+ "buildTransitive/net8.0/Microsoft.Extensions.Options.targets",
+ "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.targets",
+ "buildTransitive/netstandard2.0/Microsoft.Extensions.Options.targets",
+ "lib/net462/Microsoft.Extensions.Options.dll",
+ "lib/net462/Microsoft.Extensions.Options.xml",
+ "lib/net8.0/Microsoft.Extensions.Options.dll",
+ "lib/net8.0/Microsoft.Extensions.Options.xml",
+ "lib/net9.0/Microsoft.Extensions.Options.dll",
+ "lib/net9.0/Microsoft.Extensions.Options.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.Options.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.Options.xml",
+ "lib/netstandard2.1/Microsoft.Extensions.Options.dll",
+ "lib/netstandard2.1/Microsoft.Extensions.Options.xml",
+ "microsoft.extensions.options.9.0.4.nupkg.sha512",
+ "microsoft.extensions.options.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.Extensions.Options.ConfigurationExtensions/9.0.4": {
+ "sha512": "aridVhAT3Ep+vsirR1pzjaOw0Jwiob6dc73VFQn2XmDfBA2X98M8YKO1GarvsXRX7gX1Aj+hj2ijMzrMHDOm0A==",
+ "type": "package",
+ "path": "microsoft.extensions.options.configurationextensions/9.0.4",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "buildTransitive/net461/Microsoft.Extensions.Options.ConfigurationExtensions.targets",
+ "buildTransitive/net462/_._",
+ "buildTransitive/net8.0/_._",
+ "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Options.ConfigurationExtensions.targets",
+ "lib/net462/Microsoft.Extensions.Options.ConfigurationExtensions.dll",
+ "lib/net462/Microsoft.Extensions.Options.ConfigurationExtensions.xml",
+ "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll",
+ "lib/net8.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml",
+ "lib/net9.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll",
+ "lib/net9.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.Options.ConfigurationExtensions.xml",
+ "microsoft.extensions.options.configurationextensions.9.0.4.nupkg.sha512",
+ "microsoft.extensions.options.configurationextensions.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.Extensions.Primitives/9.0.4": {
+ "sha512": "SPFyMjyku1nqTFFJ928JAMd0QnRe4xjE7KeKnZMWXf3xk+6e0WiOZAluYtLdbJUXtsl2cCRSi8cBquJ408k8RA==",
+ "type": "package",
+ "path": "microsoft.extensions.primitives/9.0.4",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "buildTransitive/net461/Microsoft.Extensions.Primitives.targets",
+ "buildTransitive/net462/_._",
+ "buildTransitive/net8.0/_._",
+ "buildTransitive/netcoreapp2.0/Microsoft.Extensions.Primitives.targets",
+ "lib/net462/Microsoft.Extensions.Primitives.dll",
+ "lib/net462/Microsoft.Extensions.Primitives.xml",
+ "lib/net8.0/Microsoft.Extensions.Primitives.dll",
+ "lib/net8.0/Microsoft.Extensions.Primitives.xml",
+ "lib/net9.0/Microsoft.Extensions.Primitives.dll",
+ "lib/net9.0/Microsoft.Extensions.Primitives.xml",
+ "lib/netstandard2.0/Microsoft.Extensions.Primitives.dll",
+ "lib/netstandard2.0/Microsoft.Extensions.Primitives.xml",
+ "microsoft.extensions.primitives.9.0.4.nupkg.sha512",
+ "microsoft.extensions.primitives.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "Microsoft.IO.RecyclableMemoryStream/3.0.1": {
+ "sha512": "s/s20YTVY9r9TPfTrN5g8zPF1YhwxyqO6PxUkrYTGI2B+OGPe9AdajWZrLhFqXIvqIW23fnUE4+ztrUWNU1+9g==",
+ "type": "package",
+ "path": "microsoft.io.recyclablememorystream/3.0.1",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "README.md",
+ "lib/net6.0/Microsoft.IO.RecyclableMemoryStream.dll",
+ "lib/net6.0/Microsoft.IO.RecyclableMemoryStream.xml",
+ "lib/netstandard2.0/Microsoft.IO.RecyclableMemoryStream.dll",
+ "lib/netstandard2.0/Microsoft.IO.RecyclableMemoryStream.xml",
+ "lib/netstandard2.1/Microsoft.IO.RecyclableMemoryStream.dll",
+ "lib/netstandard2.1/Microsoft.IO.RecyclableMemoryStream.xml",
+ "microsoft.io.recyclablememorystream.3.0.1.nupkg.sha512",
+ "microsoft.io.recyclablememorystream.nuspec"
+ ]
+ },
+ "Microsoft.Spatial/7.18.0": {
+ "sha512": "zisZHpaCqYl4Cy3dEDQ7/lIm7w/wEXyr9smHN5N3hxQmlO669tKnVjKK+cpS/vwRnQkAAZfipIhPVKyPXb0nEA==",
+ "type": "package",
+ "path": "microsoft.spatial/7.18.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "lib/net45/Microsoft.Spatial.dll",
+ "lib/net45/Microsoft.Spatial.xml",
+ "lib/netstandard1.1/Microsoft.Spatial.dll",
+ "lib/netstandard1.1/Microsoft.Spatial.xml",
+ "lib/netstandard2.0/Microsoft.Spatial.dll",
+ "lib/netstandard2.0/Microsoft.Spatial.xml",
+ "microsoft.spatial.7.18.0.nupkg.sha512",
+ "microsoft.spatial.nuspec"
+ ]
+ },
+ "Semver/3.0.0": {
+ "sha512": "9jZCicsVgTebqkAujRWtC9J1A5EQVlu0TVKHcgoCuv345ve5DYf4D1MjhKEnQjdRZo6x/vdv6QQrYFs7ilGzLA==",
+ "type": "package",
+ "path": "semver/3.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "README.md",
+ "lib/net5.0/Semver.dll",
+ "lib/net5.0/Semver.xml",
+ "lib/netstandard2.0/Semver.dll",
+ "lib/netstandard2.0/Semver.xml",
+ "lib/netstandard2.1/Semver.dll",
+ "lib/netstandard2.1/Semver.xml",
+ "semver.3.0.0.nupkg.sha512",
+ "semver.nuspec"
+ ]
+ },
+ "SurrealDb.Net/0.9.0": {
+ "sha512": "SCGNxiVRnt+V7G1nSNb9qLwmwOWljG32z6kWOIh4tIVG4jTezexaNenZVXrzemnlo93oe1c3ZvcBjp0R9x1gwQ==",
+ "type": "package",
+ "path": "surrealdb.net/0.9.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "LICENSE",
+ "README.md",
+ "icon.png",
+ "lib/net6.0/SurrealDb.Net.dll",
+ "lib/net6.0/SurrealDb.Net.xml",
+ "lib/net7.0/SurrealDb.Net.dll",
+ "lib/net7.0/SurrealDb.Net.xml",
+ "lib/net8.0/SurrealDb.Net.dll",
+ "lib/net8.0/SurrealDb.Net.xml",
+ "lib/net9.0/SurrealDb.Net.dll",
+ "lib/net9.0/SurrealDb.Net.xml",
+ "lib/netstandard2.1/SurrealDb.Net.dll",
+ "lib/netstandard2.1/SurrealDb.Net.xml",
+ "surrealdb.net.0.9.0.nupkg.sha512",
+ "surrealdb.net.nuspec"
+ ]
+ },
+ "System.Collections.Immutable/9.0.4": {
+ "sha512": "wfm2NgK22MmBe5qJjp52qzpkeDZKb4l9LbdubhZSehY1z4LS+lld6R+B+UQNb2AZRHu/QJlHxEUcRst5hIEejg==",
+ "type": "package",
+ "path": "system.collections.immutable/9.0.4",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "buildTransitive/net461/System.Collections.Immutable.targets",
+ "buildTransitive/net462/_._",
+ "buildTransitive/net8.0/_._",
+ "buildTransitive/netcoreapp2.0/System.Collections.Immutable.targets",
+ "lib/net462/System.Collections.Immutable.dll",
+ "lib/net462/System.Collections.Immutable.xml",
+ "lib/net8.0/System.Collections.Immutable.dll",
+ "lib/net8.0/System.Collections.Immutable.xml",
+ "lib/net9.0/System.Collections.Immutable.dll",
+ "lib/net9.0/System.Collections.Immutable.xml",
+ "lib/netstandard2.0/System.Collections.Immutable.dll",
+ "lib/netstandard2.0/System.Collections.Immutable.xml",
+ "system.collections.immutable.9.0.4.nupkg.sha512",
+ "system.collections.immutable.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "System.IO.Pipelines/7.0.0": {
+ "sha512": "jRn6JYnNPW6xgQazROBLSfpdoczRw694vO5kKvMcNnpXuolEixUyw6IBuBs2Y2mlSX/LdLvyyWmfXhaI3ND1Yg==",
+ "type": "package",
+ "path": "system.io.pipelines/7.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "buildTransitive/net461/System.IO.Pipelines.targets",
+ "buildTransitive/net462/_._",
+ "buildTransitive/net6.0/_._",
+ "buildTransitive/netcoreapp2.0/System.IO.Pipelines.targets",
+ "lib/net462/System.IO.Pipelines.dll",
+ "lib/net462/System.IO.Pipelines.xml",
+ "lib/net6.0/System.IO.Pipelines.dll",
+ "lib/net6.0/System.IO.Pipelines.xml",
+ "lib/net7.0/System.IO.Pipelines.dll",
+ "lib/net7.0/System.IO.Pipelines.xml",
+ "lib/netstandard2.0/System.IO.Pipelines.dll",
+ "lib/netstandard2.0/System.IO.Pipelines.xml",
+ "system.io.pipelines.7.0.0.nupkg.sha512",
+ "system.io.pipelines.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "System.Linq.Async/6.0.1": {
+ "sha512": "0YhHcaroWpQ9UCot3Pizah7ryAzQhNvobLMSxeDIGmnXfkQn8u5owvpOH0K6EVB+z9L7u6Cc4W17Br/+jyttEQ==",
+ "type": "package",
+ "path": "system.linq.async/6.0.1",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Logo.png",
+ "lib/net48/System.Linq.Async.dll",
+ "lib/net48/System.Linq.Async.xml",
+ "lib/net6.0/System.Linq.Async.dll",
+ "lib/net6.0/System.Linq.Async.xml",
+ "lib/netstandard2.0/System.Linq.Async.dll",
+ "lib/netstandard2.0/System.Linq.Async.xml",
+ "lib/netstandard2.1/System.Linq.Async.dll",
+ "lib/netstandard2.1/System.Linq.Async.xml",
+ "ref/net48/System.Linq.Async.dll",
+ "ref/net48/System.Linq.Async.xml",
+ "ref/net6.0/System.Linq.Async.dll",
+ "ref/net6.0/System.Linq.Async.xml",
+ "ref/netstandard2.0/System.Linq.Async.dll",
+ "ref/netstandard2.0/System.Linq.Async.xml",
+ "ref/netstandard2.1/System.Linq.Async.dll",
+ "ref/netstandard2.1/System.Linq.Async.xml",
+ "system.linq.async.6.0.1.nupkg.sha512",
+ "system.linq.async.nuspec"
+ ]
+ },
+ "System.Memory/4.5.4": {
+ "sha512": "1MbJTHS1lZ4bS4FmsJjnuGJOu88ZzTT2rLvrhW7Ygic+pC0NWA+3hgAen0HRdsocuQXCkUTdFn9yHJJhsijDXw==",
+ "type": "package",
+ "path": "system.memory/4.5.4",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "LICENSE.TXT",
+ "THIRD-PARTY-NOTICES.TXT",
+ "lib/net461/System.Memory.dll",
+ "lib/net461/System.Memory.xml",
+ "lib/netcoreapp2.1/_._",
+ "lib/netstandard1.1/System.Memory.dll",
+ "lib/netstandard1.1/System.Memory.xml",
+ "lib/netstandard2.0/System.Memory.dll",
+ "lib/netstandard2.0/System.Memory.xml",
+ "ref/netcoreapp2.1/_._",
+ "system.memory.4.5.4.nupkg.sha512",
+ "system.memory.nuspec",
+ "useSharedDesignerContext.txt",
+ "version.txt"
+ ]
+ },
+ "System.Reactive/6.0.0": {
+ "sha512": "31kfaW4ZupZzPsI5PVe77VhnvFF55qgma7KZr/E0iFTs6fmdhhG8j0mgEx620iLTey1EynOkEfnyTjtNEpJzGw==",
+ "type": "package",
+ "path": "system.reactive/6.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "build/net6.0-windows10.0.19041/_._",
+ "build/net6.0/_._",
+ "buildTransitive/net6.0-windows10.0.19041/_._",
+ "buildTransitive/net6.0/_._",
+ "icon.png",
+ "lib/net472/System.Reactive.dll",
+ "lib/net472/System.Reactive.xml",
+ "lib/net6.0-windows10.0.19041/System.Reactive.dll",
+ "lib/net6.0-windows10.0.19041/System.Reactive.xml",
+ "lib/net6.0/System.Reactive.dll",
+ "lib/net6.0/System.Reactive.xml",
+ "lib/netstandard2.0/System.Reactive.dll",
+ "lib/netstandard2.0/System.Reactive.xml",
+ "lib/uap10.0.18362/System.Reactive.dll",
+ "lib/uap10.0.18362/System.Reactive.pri",
+ "lib/uap10.0.18362/System.Reactive.xml",
+ "readme.md",
+ "system.reactive.6.0.0.nupkg.sha512",
+ "system.reactive.nuspec"
+ ]
+ },
+ "System.Threading.Channels/8.0.0": {
+ "sha512": "CMaFr7v+57RW7uZfZkPExsPB6ljwzhjACWW1gfU35Y56rk72B/Wu+sTqxVmGSk4SFUlPc3cjeKND0zktziyjBA==",
+ "type": "package",
+ "path": "system.threading.channels/8.0.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "Icon.png",
+ "LICENSE.TXT",
+ "PACKAGE.md",
+ "THIRD-PARTY-NOTICES.TXT",
+ "buildTransitive/net461/System.Threading.Channels.targets",
+ "buildTransitive/net462/_._",
+ "buildTransitive/net6.0/_._",
+ "buildTransitive/netcoreapp2.0/System.Threading.Channels.targets",
+ "lib/net462/System.Threading.Channels.dll",
+ "lib/net462/System.Threading.Channels.xml",
+ "lib/net6.0/System.Threading.Channels.dll",
+ "lib/net6.0/System.Threading.Channels.xml",
+ "lib/net7.0/System.Threading.Channels.dll",
+ "lib/net7.0/System.Threading.Channels.xml",
+ "lib/net8.0/System.Threading.Channels.dll",
+ "lib/net8.0/System.Threading.Channels.xml",
+ "lib/netstandard2.0/System.Threading.Channels.dll",
+ "lib/netstandard2.0/System.Threading.Channels.xml",
+ "lib/netstandard2.1/System.Threading.Channels.dll",
+ "lib/netstandard2.1/System.Threading.Channels.xml",
+ "system.threading.channels.8.0.0.nupkg.sha512",
+ "system.threading.channels.nuspec",
+ "useSharedDesignerContext.txt"
+ ]
+ },
+ "SystemTextJsonPatch/4.2.0": {
+ "sha512": "InSbrL1gJGrNdrQYJe+XkBVbnRH85TRBh+yjG7Lzx/2NyHeHIjlGI1hq2Q0zKMdVwjnynj8wqoYlvaXfh0meZA==",
+ "type": "package",
+ "path": "systemtextjsonpatch/4.2.0",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "README.md",
+ "lib/net6.0/SystemTextJsonPatch.dll",
+ "lib/net6.0/SystemTextJsonPatch.xml",
+ "lib/net7.0/SystemTextJsonPatch.dll",
+ "lib/net7.0/SystemTextJsonPatch.xml",
+ "lib/net8.0/SystemTextJsonPatch.dll",
+ "lib/net8.0/SystemTextJsonPatch.xml",
+ "lib/net9.0/SystemTextJsonPatch.dll",
+ "lib/net9.0/SystemTextJsonPatch.xml",
+ "lib/netstandard2.0/SystemTextJsonPatch.dll",
+ "lib/netstandard2.0/SystemTextJsonPatch.xml",
+ "logo.png",
+ "systemtextjsonpatch.4.2.0.nupkg.sha512",
+ "systemtextjsonpatch.nuspec"
+ ]
+ },
+ "Websocket.Client/5.1.2": {
+ "sha512": "ZE5VoUCIYbfACGmXxgfD96i4W0wyBk0JEwIViyPpvxdk/pNfzh2SX9BgEj8fTqNaxlFl0bUTWq1UUvR/c18BTQ==",
+ "type": "package",
+ "path": "websocket.client/5.1.2",
+ "files": [
+ ".nupkg.metadata",
+ ".signature.p7s",
+ "README.md",
+ "icon-modern.png",
+ "icon.png",
+ "lib/net6.0/Websocket.Client.dll",
+ "lib/net6.0/Websocket.Client.xml",
+ "lib/net7.0/Websocket.Client.dll",
+ "lib/net7.0/Websocket.Client.xml",
+ "lib/net8.0/Websocket.Client.dll",
+ "lib/net8.0/Websocket.Client.xml",
+ "lib/netstandard2.1/Websocket.Client.dll",
+ "lib/netstandard2.1/Websocket.Client.xml",
+ "websocket.client.5.1.2.nupkg.sha512",
+ "websocket.client.nuspec"
+ ]
+ }
+ },
+ "projectFileDependencyGroups": {
+ "net9.0": [
+ "Konscious.Security.Cryptography.Argon2 >= 1.3.1",
+ "SurrealDb.Net >= 0.9.0"
+ ]
+ },
+ "packageFolders": {
+ "C:\\Users\\Core\\.nuget\\packages\\": {},
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages": {}
+ },
+ "project": {
+ "version": "1.0.0",
+ "restore": {
+ "projectUniqueName": "D:\\DDI\\Relay\\RelayChat\\RelayCore\\RelayCore.csproj",
+ "projectName": "RelayCore",
+ "projectPath": "D:\\DDI\\Relay\\RelayChat\\RelayCore\\RelayCore.csproj",
+ "packagesPath": "C:\\Users\\Core\\.nuget\\packages\\",
+ "outputPath": "D:\\DDI\\Relay\\RelayChat\\RelayCore\\obj\\",
+ "projectStyle": "PackageReference",
+ "fallbackFolders": [
+ "C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"
+ ],
+ "configFilePaths": [
+ "C:\\Users\\Core\\AppData\\Roaming\\NuGet\\NuGet.Config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.FallbackLocation.config",
+ "C:\\Program Files (x86)\\NuGet\\Config\\Microsoft.VisualStudio.Offline.config"
+ ],
+ "originalTargetFrameworks": [
+ "net9.0"
+ ],
+ "sources": {
+ "C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\": {},
+ "C:\\Program Files\\dotnet\\library-packs": {},
+ "https://api.nuget.org/v3/index.json": {}
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "projectReferences": {}
+ }
+ },
+ "warningProperties": {
+ "warnAsError": [
+ "NU1605"
+ ]
+ },
+ "restoreAuditProperties": {
+ "enableAudit": "true",
+ "auditLevel": "low",
+ "auditMode": "direct"
+ },
+ "SdkAnalysisLevel": "9.0.300"
+ },
+ "frameworks": {
+ "net9.0": {
+ "targetAlias": "net9.0",
+ "dependencies": {
+ "Konscious.Security.Cryptography.Argon2": {
+ "target": "Package",
+ "version": "[1.3.1, )"
+ },
+ "SurrealDb.Net": {
+ "target": "Package",
+ "version": "[0.9.0, )"
+ }
+ },
+ "imports": [
+ "net461",
+ "net462",
+ "net47",
+ "net471",
+ "net472",
+ "net48",
+ "net481"
+ ],
+ "assetTargetFallback": true,
+ "warn": true,
+ "frameworkReferences": {
+ "Microsoft.NETCore.App": {
+ "privateAssets": "all"
+ }
+ },
+ "runtimeIdentifierGraphPath": "C:\\Program Files\\dotnet\\sdk\\9.0.305/PortableRuntimeIdentifierGraph.json"
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/obj/project.nuget.cache b/obj/project.nuget.cache
new file mode 100644
index 0000000..f2556c4
--- /dev/null
+++ b/obj/project.nuget.cache
@@ -0,0 +1,39 @@
+{
+ "version": 2,
+ "dgSpecHash": "hVKcd/jquSo=",
+ "success": true,
+ "projectFilePath": "D:\\DDI\\Relay\\RelayChat\\RelayCore\\RelayCore.csproj",
+ "expectedPackageFiles": [
+ "C:\\Users\\Core\\.nuget\\packages\\concurrenthashset\\1.3.0\\concurrenthashset.1.3.0.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\dahomey.cbor\\1.24.3\\dahomey.cbor.1.24.3.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\konscious.security.cryptography.argon2\\1.3.1\\konscious.security.cryptography.argon2.1.3.1.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\konscious.security.cryptography.blake2\\1.1.1\\konscious.security.cryptography.blake2.1.1.1.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\microsoft.bcl.asyncinterfaces\\6.0.0\\microsoft.bcl.asyncinterfaces.6.0.0.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\microsoft.extensions.configuration\\9.0.4\\microsoft.extensions.configuration.9.0.4.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\microsoft.extensions.configuration.abstractions\\9.0.4\\microsoft.extensions.configuration.abstractions.9.0.4.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\microsoft.extensions.configuration.binder\\9.0.4\\microsoft.extensions.configuration.binder.9.0.4.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\microsoft.extensions.dependencyinjection\\9.0.4\\microsoft.extensions.dependencyinjection.9.0.4.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\microsoft.extensions.dependencyinjection.abstractions\\9.0.4\\microsoft.extensions.dependencyinjection.abstractions.9.0.4.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\microsoft.extensions.diagnostics\\9.0.4\\microsoft.extensions.diagnostics.9.0.4.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\microsoft.extensions.diagnostics.abstractions\\9.0.4\\microsoft.extensions.diagnostics.abstractions.9.0.4.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\microsoft.extensions.http\\9.0.4\\microsoft.extensions.http.9.0.4.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\microsoft.extensions.logging\\9.0.4\\microsoft.extensions.logging.9.0.4.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\microsoft.extensions.logging.abstractions\\9.0.4\\microsoft.extensions.logging.abstractions.9.0.4.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\microsoft.extensions.options\\9.0.4\\microsoft.extensions.options.9.0.4.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\microsoft.extensions.options.configurationextensions\\9.0.4\\microsoft.extensions.options.configurationextensions.9.0.4.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\microsoft.extensions.primitives\\9.0.4\\microsoft.extensions.primitives.9.0.4.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\microsoft.io.recyclablememorystream\\3.0.1\\microsoft.io.recyclablememorystream.3.0.1.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\microsoft.spatial\\7.18.0\\microsoft.spatial.7.18.0.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\semver\\3.0.0\\semver.3.0.0.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\surrealdb.net\\0.9.0\\surrealdb.net.0.9.0.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\system.collections.immutable\\9.0.4\\system.collections.immutable.9.0.4.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\system.io.pipelines\\7.0.0\\system.io.pipelines.7.0.0.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\system.linq.async\\6.0.1\\system.linq.async.6.0.1.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\system.memory\\4.5.4\\system.memory.4.5.4.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\system.reactive\\6.0.0\\system.reactive.6.0.0.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\system.threading.channels\\8.0.0\\system.threading.channels.8.0.0.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\systemtextjsonpatch\\4.2.0\\systemtextjsonpatch.4.2.0.nupkg.sha512",
+ "C:\\Users\\Core\\.nuget\\packages\\websocket.client\\5.1.2\\websocket.client.5.1.2.nupkg.sha512"
+ ],
+ "logs": []
+}
\ No newline at end of file
diff --git a/obj/project.packagespec.json b/obj/project.packagespec.json
new file mode 100644
index 0000000..6e15b5d
--- /dev/null
+++ b/obj/project.packagespec.json
@@ -0,0 +1 @@
+"restore":{"projectUniqueName":"D:\\DDI\\Relay\\RelayChat\\RelayCore\\RelayCore.csproj","projectName":"RelayCore","projectPath":"D:\\DDI\\Relay\\RelayChat\\RelayCore\\RelayCore.csproj","outputPath":"D:\\DDI\\Relay\\RelayChat\\RelayCore\\obj\\","projectStyle":"PackageReference","fallbackFolders":["C:\\Program Files (x86)\\Microsoft Visual Studio\\Shared\\NuGetPackages"],"originalTargetFrameworks":["net9.0"],"sources":{"C:\\Program Files (x86)\\Microsoft SDKs\\NuGetPackages\\":{},"C:\\Program Files\\dotnet\\library-packs":{},"https://api.nuget.org/v3/index.json":{}},"frameworks":{"net9.0":{"targetAlias":"net9.0","projectReferences":{}}},"warningProperties":{"warnAsError":["NU1605"]},"restoreAuditProperties":{"enableAudit":"true","auditLevel":"low","auditMode":"direct"},"SdkAnalysisLevel":"9.0.300"}"frameworks":{"net9.0":{"targetAlias":"net9.0","dependencies":{"Konscious.Security.Cryptography.Argon2":{"target":"Package","version":"[1.3.1, )"},"SurrealDb.Net":{"target":"Package","version":"[0.9.0, )"}},"imports":["net461","net462","net47","net471","net472","net48","net481"],"assetTargetFallback":true,"warn":true,"frameworkReferences":{"Microsoft.NETCore.App":{"privateAssets":"all"}},"runtimeIdentifierGraphPath":"C:\\Program Files\\dotnet\\sdk\\9.0.305/PortableRuntimeIdentifierGraph.json"}}
\ No newline at end of file
diff --git a/obj/rider.project.model.nuget.info b/obj/rider.project.model.nuget.info
new file mode 100644
index 0000000..f9a00fa
--- /dev/null
+++ b/obj/rider.project.model.nuget.info
@@ -0,0 +1 @@
+17734474740469652
\ No newline at end of file
diff --git a/obj/rider.project.restore.info b/obj/rider.project.restore.info
new file mode 100644
index 0000000..84908d7
--- /dev/null
+++ b/obj/rider.project.restore.info
@@ -0,0 +1 @@
+17734474749787742
\ No newline at end of file