Your one-stop-cake-shop for everything Freshly Baked has to offer

feat: add kavita

Co-Authored-By: Skyler Grey <sky@a.starrysky.fyi>

thecoded.prof b37fdc34 77a1b906

verified
+1
packetmix/packages/default.nix
··· 11 11 ./bluesky-pds 12 12 ./collabora-gtimelog 13 13 ./headscale 14 + ./kavita 14 15 ./lua-multipart 15 16 ./OpenLinkHub 16 17 ./scriptfs
+87
packetmix/packages/kavita/change-webroot.diff
··· 1 + Commit ID: 60c1f64421b3de57be486e3d6fcac5db29be448c 2 + Change ID: zyrloqpswtmulpttnvwyonrounzyqpok 3 + Author : Samuel Shuert <me@thecoded.prof> (2025-10-29 23:29:04 (49 seconds ago)) 4 + Committer: Samuel Shuert <me@thecoded.prof> (2025-10-29 23:29:04 (49 seconds ago)) 5 + Signature: (no signature) 6 + 7 + (no description set) 8 + 9 + diff --git a/API/Controllers/FallbackController.cs b/API/Controllers/FallbackController.cs 10 + index 9aff820278..7d0ead694e 100644 11 + --- a/API/Controllers/FallbackController.cs 12 + +++ b/API/Controllers/FallbackController.cs 13 + @@ -27,7 +27,6 @@ 14 + return NotFound(); 15 + } 16 + 17 + - return PhysicalFile(Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "index.html"), "text/HTML"); 18 + + return PhysicalFile(Path.Combine("@webroot@", "index.html"), "text/HTML"); 19 + } 20 + } 21 + - 22 + diff --git a/API/Services/DirectoryService.cs b/API/Services/DirectoryService.cs 23 + index ecce1957a9..8fc8739e0a 100644 24 + --- a/API/Services/DirectoryService.cs 25 + +++ b/API/Services/DirectoryService.cs 26 + @@ -135,7 +135,7 @@ 27 + ExistOrCreate(SiteThemeDirectory); 28 + FaviconDirectory = FileSystem.Path.Join(FileSystem.Directory.GetCurrentDirectory(), "config", "favicons"); 29 + ExistOrCreate(FaviconDirectory); 30 + - LocalizationDirectory = FileSystem.Path.Join(FileSystem.Directory.GetCurrentDirectory(), "I18N"); 31 + + LocalizationDirectory = FileSystem.Path.Join("@out@/lib/kavita-backend", "I18N"); 32 + CustomizedTemplateDirectory = FileSystem.Path.Join(FileSystem.Directory.GetCurrentDirectory(), "config", "templates"); 33 + ExistOrCreate(CustomizedTemplateDirectory); 34 + TemplateDirectory = FileSystem.Path.Join(FileSystem.Directory.GetCurrentDirectory(), "EmailTemplates"); 35 + diff --git a/API/Services/LocalizationService.cs b/API/Services/LocalizationService.cs 36 + index 8abde66474..3a2d29b982 100644 37 + --- a/API/Services/LocalizationService.cs 38 + +++ b/API/Services/LocalizationService.cs 39 + @@ -58,8 +58,7 @@ 40 + else 41 + { 42 + _localizationDirectoryUi = directoryService.FileSystem.Path.Join( 43 + - directoryService.FileSystem.Directory.GetCurrentDirectory(), 44 + - "wwwroot", "assets/langs"); 45 + + "@webroot@", "assets/langs"); 46 + } 47 + 48 + _cacheOptions = new MemoryCacheEntryOptions() 49 + diff --git a/API/Startup.cs b/API/Startup.cs 50 + index fad79ceea5..f0801bd6f8 100644 51 + --- a/API/Startup.cs 52 + +++ b/API/Startup.cs 53 + @@ -36,6 +36,7 @@ 54 + using Microsoft.EntityFrameworkCore; 55 + using Microsoft.Extensions.Configuration; 56 + using Microsoft.Extensions.DependencyInjection; 57 + +using Microsoft.Extensions.FileProviders; 58 + using Microsoft.Extensions.Hosting; 59 + using Microsoft.Extensions.Logging; 60 + using Microsoft.Net.Http.Headers; 61 + @@ -353,9 +354,6 @@ 62 + app.UsePathBase(basePath); 63 + if (!env.IsDevelopment()) 64 + { 65 + - // We don't update the index.html in local as we don't serve from there 66 + - UpdateBaseUrlInIndex(basePath); 67 + - 68 + // Update DB with what's in config 69 + var dataContext = serviceProvider.GetRequiredService<DataContext>(); 70 + var setting = dataContext.ServerSetting.SingleOrDefault(x => x.Key == ServerSettingKey.BaseUrl); 71 + @@ -399,6 +397,7 @@ 72 + 73 + app.UseStaticFiles(new StaticFileOptions 74 + { 75 + + FileProvider = new PhysicalFileProvider("@webroot@"), 76 + // bcmap files needed for PDF reader localizations (https://github.com/Kareadita/Kavita/issues/2970) 77 + // ftl files are needed for PDF zoom options (https://github.com/Kareadita/Kavita/issues/3995) 78 + ContentTypeProvider = new FileExtensionContentTypeProvider 79 + @@ -481,7 +480,7 @@ 80 + try 81 + { 82 + var htmlDoc = new HtmlDocument(); 83 + - var indexHtmlPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "index.html"); 84 + + var indexHtmlPath = Path.Combine("@webroot@", "index.html"); 85 + htmlDoc.Load(indexHtmlPath); 86 + 87 + var baseNode = htmlDoc.DocumentNode.SelectSingleNode("/html/head/base");
+4
packetmix/packages/kavita/change-webroot.diff.license
··· 1 + SPDX-FileCopyrightText: 2025 Samuel Shuert 2 + SPDX-FileCopyrightText: 2025 Nixpkgs Maintainers 3 + 4 + SPDX-License-Identifier: MIT
+68
packetmix/packages/kavita/default.nix
··· 1 + # SPDX-FileCopyrightText: 2025 FreshlyBakedCake 2 + # SPDX-FileCopyrightText: 2025 Nixpkgs Maintainers 3 + # 4 + # SPDX-License-Identifier: MIT 5 + { config, ... }: 6 + { 7 + config.packages.kavita = { 8 + systems = [ "x86_64-linux" ]; 9 + package = 10 + { 11 + kavita, 12 + fetchFromGitHub, 13 + buildNpmPackage, 14 + buildDotnetModule, 15 + dotnetCorePackages, 16 + ... 17 + }: 18 + kavita.overrideAttrs ( 19 + final: prev: { 20 + version = "0.8.8.3"; 21 + src = fetchFromGitHub { 22 + owner = prev.src.owner; 23 + repo = prev.src.repo; 24 + rev = "v${final.version}"; 25 + hash = "sha256-Va3scgMxcLhqP+s7x/iDneCPZQCF0iOIQAfTJENcvOI="; 26 + }; 27 + 28 + backend = buildDotnetModule { 29 + pname = "kavita-backend"; 30 + inherit (final) version src; 31 + 32 + patches = [ 33 + # The webroot is hardcoded as ./wwwroot 34 + ./change-webroot.diff 35 + # NOTE: Upstream frequently removes old database migrations between versions. 36 + # Currently no migration patches are needed for upgrades from NixOS 24.11 (v0.8.3.2). 37 + # Future updates should check if migration restoration is needed for supported upgrade paths. 38 + ]; 39 + postPatch = '' 40 + substituteInPlace API/Services/DirectoryService.cs --subst-var out 41 + 42 + substituteInPlace API/Startup.cs API/Services/LocalizationService.cs API/Controllers/FallbackController.cs \ 43 + --subst-var-by webroot "${final.frontend}/lib/node_modules/kavita-webui/dist/browser" 44 + ''; 45 + 46 + executables = [ "API" ]; 47 + 48 + projectFile = "API/API.csproj"; 49 + nugetDeps = ./nuget-deps.json; 50 + dotnet-sdk = dotnetCorePackages.sdk_9_0; 51 + dotnet-runtime = dotnetCorePackages.aspnetcore_9_0; 52 + }; 53 + 54 + frontend = buildNpmPackage { 55 + pname = "kavita-frontend"; 56 + inherit (final) version src; 57 + 58 + sourceRoot = "${final.src.name}/UI/Web"; 59 + 60 + npmBuildScript = "prod"; 61 + npmFlags = [ "--legacy-peer-deps" ]; 62 + npmRebuildFlags = [ "--ignore-scripts" ]; # Prevent playwright from trying to install browsers 63 + npmDepsHash = "sha256-SqW9qeg0CKfVKYsDXmVsnVNmcH7YkaXtXpPjIqGL0i0="; 64 + }; 65 + } 66 + ); 67 + }; 68 + }
+1707
packetmix/packages/kavita/nuget-deps.json
··· 1 + [ 2 + { 3 + "pname": "AutoMapper", 4 + "version": "12.0.1", 5 + "hash": "sha256-a3wCSaOXl+5RKWNi1ddRbNWkOzfodFAUokqPyQiVHGg=" 6 + }, 7 + { 8 + "pname": "AutoMapper.Extensions.Microsoft.DependencyInjection", 9 + "version": "12.0.1", 10 + "hash": "sha256-IfFPa1nHf9cT07gBH5/K6VfiabcHtjjO6X0oV92TWj4=" 11 + }, 12 + { 13 + "pname": "BouncyCastle.Cryptography", 14 + "version": "2.5.1", 15 + "hash": "sha256-ISDd8fS6/cIJIXBFDd7F3FQ0wzWkAo4r8dvycb8iT6c=" 16 + }, 17 + { 18 + "pname": "Cronos", 19 + "version": "0.11.0", 20 + "hash": "sha256-xElG27p+D4RrirLAbEhddOAlDgx95pm5KcOX47UAc10=" 21 + }, 22 + { 23 + "pname": "CsvHelper", 24 + "version": "33.1.0", 25 + "hash": "sha256-pEfX4o63xupI7uuwe6qa05One0pJ7UbzzJqLh4Shju8=" 26 + }, 27 + { 28 + "pname": "Docnet.Core", 29 + "version": "2.6.0", 30 + "hash": "sha256-FcUM3Ox+U6b/vkjX2ZmKTSfIvFEhZoeEfJ94SlCSNqw=" 31 + }, 32 + { 33 + "pname": "DotNet.Glob", 34 + "version": "3.1.3", 35 + "hash": "sha256-5uGSaGY1IqDjq4RCDLPJm0Lg9oyWmyR96OiNeGqSj84=" 36 + }, 37 + { 38 + "pname": "EasyCaching.Core", 39 + "version": "1.9.2", 40 + "hash": "sha256-Fx+3X6kqW0PEb1SpWcAVHmP2x4MVaTGggzAlZGtXf2I=" 41 + }, 42 + { 43 + "pname": "EasyCaching.InMemory", 44 + "version": "1.9.2", 45 + "hash": "sha256-mKtQtByW+nQpA7JSZrajCnfNmPx/eO62JMRjOFq1zEU=" 46 + }, 47 + { 48 + "pname": "ExCSS", 49 + "version": "4.3.0", 50 + "hash": "sha256-7QGbwOlT1EEkgUULKWSJO3H8BzvV4KP/mUZE/9/3r6M=" 51 + }, 52 + { 53 + "pname": "Flurl", 54 + "version": "4.0.0", 55 + "hash": "sha256-qCbO6ELAw+OP/RyrJhrxys5b+Kk2xR4RbzpLOsZYheg=" 56 + }, 57 + { 58 + "pname": "Flurl.Http", 59 + "version": "4.0.2", 60 + "hash": "sha256-V1tlyjoCB9ZyTiwEV3ZYiSP/0q2R2+bqRI+wZLVJATA=" 61 + }, 62 + { 63 + "pname": "Hangfire", 64 + "version": "1.8.20", 65 + "hash": "sha256-54lEtT81UcSf5LMkpo9cwA33lf2JUHqbP3nmfe744jc=" 66 + }, 67 + { 68 + "pname": "Hangfire.AspNetCore", 69 + "version": "1.8.20", 70 + "hash": "sha256-0fjlvnTlikupJO9MVDbWGF0pitF8jeufvcen8RyiHpc=" 71 + }, 72 + { 73 + "pname": "Hangfire.Core", 74 + "version": "1.6.17", 75 + "hash": "sha256-2ir8fLJJyWLxGTp2U12Pm6quH+uyJDfJvI2wRK2EIk8=" 76 + }, 77 + { 78 + "pname": "Hangfire.Core", 79 + "version": "1.8.0", 80 + "hash": "sha256-FhGdGFroLF6CNuxWceNX46H/7taWpoqvbWJ8KzQo7xA=" 81 + }, 82 + { 83 + "pname": "Hangfire.Core", 84 + "version": "1.8.20", 85 + "hash": "sha256-m+OTEYX7+jfhJk880KhfOH52d9TD/I1wfgil5gLlt5s=" 86 + }, 87 + { 88 + "pname": "Hangfire.InMemory", 89 + "version": "1.0.0", 90 + "hash": "sha256-nwMCtNl2TEJiUrG07EIEQZS8efb7/0iNgMa83ruPSTo=" 91 + }, 92 + { 93 + "pname": "Hangfire.MaximumConcurrentExecutions", 94 + "version": "1.1.0", 95 + "hash": "sha256-xkAEW9jG1pc8vRwICyJUTgRg5mEyYOdQoXXpVuAhIaA=" 96 + }, 97 + { 98 + "pname": "Hangfire.NetCore", 99 + "version": "1.8.20", 100 + "hash": "sha256-5ioXNuuNaKL7IW438haeSes32r1tu6tXLdebMxFU6Zs=" 101 + }, 102 + { 103 + "pname": "Hangfire.SqlServer", 104 + "version": "1.8.20", 105 + "hash": "sha256-rMT6IywSAt+JzN+y541g29c+2rmHTeDNA0dqT4gnWn0=" 106 + }, 107 + { 108 + "pname": "Hangfire.Storage.SQLite", 109 + "version": "0.4.2", 110 + "hash": "sha256-//40m/V+kgcDrKJ7/YfX1upOK9ZQEG/Bpbk7c5PmQuk=" 111 + }, 112 + { 113 + "pname": "HtmlAgilityPack", 114 + "version": "1.12.2", 115 + "hash": "sha256-SbzDudru9uTMuMjSTxnKyoT0KbAkd8SVNH9VOfCiR50=" 116 + }, 117 + { 118 + "pname": "Humanizer.Core", 119 + "version": "2.14.1", 120 + "hash": "sha256-EXvojddPu+9JKgOG9NSQgUTfWq1RpOYw7adxDPKDJ6o=" 121 + }, 122 + { 123 + "pname": "MailKit", 124 + "version": "4.13.0", 125 + "hash": "sha256-mDQpvjLB36QFdBW0EK5Ok3+vk59WxbqEsJ3yO1r+Msc=" 126 + }, 127 + { 128 + "pname": "MarkdownDeep.NET.Core", 129 + "version": "1.5.0.4", 130 + "hash": "sha256-NO//QjqAcE4yDmQARbThyp8fdFrE2U0Bed5XToOG+jI=" 131 + }, 132 + { 133 + "pname": "Microsoft.AspNetCore.Authentication.Abstractions", 134 + "version": "2.3.0", 135 + "hash": "sha256-UwMVhuE3TBEO7G0QJrghhYrgkYw2p9WR87yHQ1ty2RI=" 136 + }, 137 + { 138 + "pname": "Microsoft.AspNetCore.Authentication.JwtBearer", 139 + "version": "9.0.10", 140 + "hash": "sha256-6l1ldFyaaj3s068Va9/dB1r/bwz28yvXFrRqqeApO1o=" 141 + }, 142 + { 143 + "pname": "Microsoft.AspNetCore.Authentication.OpenIdConnect", 144 + "version": "9.0.10", 145 + "hash": "sha256-60LP/JjEanENkOHuC+A2uRnH8LX836p1SWeCGz7WI4I=" 146 + }, 147 + { 148 + "pname": "Microsoft.AspNetCore.Authorization", 149 + "version": "2.3.0", 150 + "hash": "sha256-UbxzeOIh76eCOMgC8A92KwfgOAljyT0k8En+l4PZDtA=" 151 + }, 152 + { 153 + "pname": "Microsoft.AspNetCore.Authorization.Policy", 154 + "version": "2.3.0", 155 + "hash": "sha256-nMV4Yt6810pXITTxMysPIpfenu+3AnY7jq2LkPrkV00=" 156 + }, 157 + { 158 + "pname": "Microsoft.AspNetCore.Connections.Abstractions", 159 + "version": "2.3.0", 160 + "hash": "sha256-qvA9LDr8vOLaERoxia/KRnVmf2q15n7OHKNsBY6t6xw=" 161 + }, 162 + { 163 + "pname": "Microsoft.AspNetCore.Cryptography.Internal", 164 + "version": "9.0.10", 165 + "hash": "sha256-6tRIqQiseoFNIMWxV/DXXbKWPOWA9xV5Q84SXr2j6OU=" 166 + }, 167 + { 168 + "pname": "Microsoft.AspNetCore.Cryptography.KeyDerivation", 169 + "version": "9.0.10", 170 + "hash": "sha256-MFG67dFFudqB0Mm53U+ypKMVeMSviUVbpvD8nftInKk=" 171 + }, 172 + { 173 + "pname": "Microsoft.AspNetCore.Hosting.Abstractions", 174 + "version": "2.3.0", 175 + "hash": "sha256-gtiRMQA5kO1biIVaBLjSq0/jVVpiI8WzS136z/Ex1zs=" 176 + }, 177 + { 178 + "pname": "Microsoft.AspNetCore.Hosting.Server.Abstractions", 179 + "version": "2.3.0", 180 + "hash": "sha256-ltKZ02L3cXu2dCx1JGEt1X8gQgwTABn45QkBsREYxaw=" 181 + }, 182 + { 183 + "pname": "Microsoft.AspNetCore.Http", 184 + "version": "2.3.0", 185 + "hash": "sha256-ubPGvFwMjXbydY1gzo/m31pWq5/SsS/tGRtOotHFfBU=" 186 + }, 187 + { 188 + "pname": "Microsoft.AspNetCore.Http.Abstractions", 189 + "version": "2.3.0", 190 + "hash": "sha256-NrAFzk5IcxmeRk3Zu+rLcq0+KKiAYfygJbAdIt2Zpfk=" 191 + }, 192 + { 193 + "pname": "Microsoft.AspNetCore.Http.Connections", 194 + "version": "1.2.0", 195 + "hash": "sha256-uev0FzYG2Ppl09h//B3BFxooD0uRm0ENO2jgOsABedM=" 196 + }, 197 + { 198 + "pname": "Microsoft.AspNetCore.Http.Connections.Common", 199 + "version": "1.2.0", 200 + "hash": "sha256-eXIg7vJSl1x0xWcxTKmgUiGRJnEfnp/TEe0xqL0629w=" 201 + }, 202 + { 203 + "pname": "Microsoft.AspNetCore.Http.Extensions", 204 + "version": "2.3.0", 205 + "hash": "sha256-sOVwC5wK5w85R+HbYkBlfPpmknyAEig3g0uVnTSGwhI=" 206 + }, 207 + { 208 + "pname": "Microsoft.AspNetCore.Http.Features", 209 + "version": "2.3.0", 210 + "hash": "sha256-QkNFS3ScDLyt0XppATSogbF1raSQJN+wStcnAsSoUJw=" 211 + }, 212 + { 213 + "pname": "Microsoft.AspNetCore.Identity.EntityFrameworkCore", 214 + "version": "9.0.10", 215 + "hash": "sha256-Hbz3KMfcbODbd+FDOzf+bo08WTJ+mZz9cdzY+tnmA6g=" 216 + }, 217 + { 218 + "pname": "Microsoft.AspNetCore.Routing", 219 + "version": "2.3.0", 220 + "hash": "sha256-bXrYeVgI+sm2e5eOCwOkdWyCf5b7dQ8kv+pJRaeLiHI=" 221 + }, 222 + { 223 + "pname": "Microsoft.AspNetCore.Routing.Abstractions", 224 + "version": "2.3.0", 225 + "hash": "sha256-pSPpwAU/zEidmBcRjSuz71fs5CIBRWF8yp/ujsIBXok=" 226 + }, 227 + { 228 + "pname": "Microsoft.AspNetCore.SignalR", 229 + "version": "1.2.0", 230 + "hash": "sha256-83ogiJwoHL0XBOnGFQYopGTlzEyen1ep4aXesWSl/sg=" 231 + }, 232 + { 233 + "pname": "Microsoft.AspNetCore.SignalR.Common", 234 + "version": "1.2.0", 235 + "hash": "sha256-ULMhoU12HCOE6BMAjdZpsbgIPGjtHeggnn7RkyPHmag=" 236 + }, 237 + { 238 + "pname": "Microsoft.AspNetCore.SignalR.Core", 239 + "version": "1.1.0", 240 + "hash": "sha256-8NYrz6J0cVF+eBW/2B6oObwtD82Ze74H6TV+a1xRPtM=" 241 + }, 242 + { 243 + "pname": "Microsoft.AspNetCore.SignalR.Core", 244 + "version": "1.2.0", 245 + "hash": "sha256-FbLZ4BbD5wYOoEyfqZ9C7Y5hJldXlbm1q3QJlkxgp68=" 246 + }, 247 + { 248 + "pname": "Microsoft.AspNetCore.SignalR.Protocols.Json", 249 + "version": "1.2.0", 250 + "hash": "sha256-j2oYNJEX9r4owDiHMI83cglxkyP5Gty0Y0aFzA7avBo=" 251 + }, 252 + { 253 + "pname": "Microsoft.AspNetCore.WebSockets", 254 + "version": "2.3.0", 255 + "hash": "sha256-D3h1Im37SQlDnIl3LiKb7Roje34qPeaRoeP3nEm0p3Y=" 256 + }, 257 + { 258 + "pname": "Microsoft.AspNetCore.WebUtilities", 259 + "version": "2.3.0", 260 + "hash": "sha256-oJMEP44Q9ClhbyZUPtSb9jqQyJJ/dD4DHElRvkYpIOo=" 261 + }, 262 + { 263 + "pname": "Microsoft.Bcl.AsyncInterfaces", 264 + "version": "7.0.0", 265 + "hash": "sha256-1e031E26iraIqun84ad0fCIR4MJZ1hcQo4yFN+B7UfE=" 266 + }, 267 + { 268 + "pname": "Microsoft.Build.Framework", 269 + "version": "16.10.0", 270 + "hash": "sha256-Sj41LE1YQ/NfOdiDf5YnZgWSwGOzQ2uVvP1LgF/HSJ0=" 271 + }, 272 + { 273 + "pname": "Microsoft.Build.Framework", 274 + "version": "17.8.3", 275 + "hash": "sha256-Rp4dN8ejOXqclIKMUXYvIliM6IYB7WMckMLwdCbVZ34=" 276 + }, 277 + { 278 + "pname": "Microsoft.Build.Locator", 279 + "version": "1.7.8", 280 + "hash": "sha256-VhZ4jiJi17Cd5AkENXL1tjG9dV/oGj0aY67IGYd7vNs=" 281 + }, 282 + { 283 + "pname": "Microsoft.CodeAnalysis.Analyzers", 284 + "version": "3.3.4", 285 + "hash": "sha256-qDzTfZBSCvAUu9gzq2k+LOvh6/eRvJ9++VCNck/ZpnE=" 286 + }, 287 + { 288 + "pname": "Microsoft.CodeAnalysis.Common", 289 + "version": "4.8.0", 290 + "hash": "sha256-3IEinVTZq6/aajMVA8XTRO3LTIEt0PuhGyITGJLtqz4=" 291 + }, 292 + { 293 + "pname": "Microsoft.CodeAnalysis.CSharp", 294 + "version": "4.8.0", 295 + "hash": "sha256-MmOnXJvd/ezs5UPcqyGLnbZz5m+VedpRfB+kFZeeqkU=" 296 + }, 297 + { 298 + "pname": "Microsoft.CodeAnalysis.CSharp.Workspaces", 299 + "version": "4.8.0", 300 + "hash": "sha256-WNzc+6mKqzPviOI0WMdhKyrWs8u32bfGj2XwmfL7bwE=" 301 + }, 302 + { 303 + "pname": "Microsoft.CodeAnalysis.Workspaces.Common", 304 + "version": "4.8.0", 305 + "hash": "sha256-X8R4SpWVO/gpip5erVZf5jCCx8EX3VzIRtNrQiLDIoM=" 306 + }, 307 + { 308 + "pname": "Microsoft.CodeAnalysis.Workspaces.MSBuild", 309 + "version": "4.8.0", 310 + "hash": "sha256-hxpMKC6OF8OaIiSZhAgJ+Rw7M8nqS6xHdUURnRRxJmU=" 311 + }, 312 + { 313 + "pname": "Microsoft.CSharp", 314 + "version": "4.7.0", 315 + "hash": "sha256-Enknv2RsFF68lEPdrf5M+BpV1kHoLTVRApKUwuk/pj0=" 316 + }, 317 + { 318 + "pname": "Microsoft.Data.Sqlite.Core", 319 + "version": "9.0.10", 320 + "hash": "sha256-prsCR2WzQAhbhdZ30xk+/wvLt6rDj0M3k1tvyoD6uYM=" 321 + }, 322 + { 323 + "pname": "Microsoft.EntityFrameworkCore", 324 + "version": "9.0.10", 325 + "hash": "sha256-Zm4oMVeloK2WmPskzg4l3SXjJuC+sRg3O5aiTK5rHvw=" 326 + }, 327 + { 328 + "pname": "Microsoft.EntityFrameworkCore.Abstractions", 329 + "version": "9.0.10", 330 + "hash": "sha256-FB+8WtFYKn1PH9R3pgKw7dNJiJDCcS78UkeRkxdOuCk=" 331 + }, 332 + { 333 + "pname": "Microsoft.EntityFrameworkCore.Analyzers", 334 + "version": "9.0.10", 335 + "hash": "sha256-q6w0uQ4qMAe2EuA65a3rk18rhGXuGVYMrdrIzD5Z+tw=" 336 + }, 337 + { 338 + "pname": "Microsoft.EntityFrameworkCore.Design", 339 + "version": "9.0.10", 340 + "hash": "sha256-Zb5u2PySq+VuISn4bSTTDp6sN05ml94eK5O3dZAGO9g=" 341 + }, 342 + { 343 + "pname": "Microsoft.EntityFrameworkCore.Relational", 344 + "version": "9.0.10", 345 + "hash": "sha256-2XHQOKvs4mAXwl8vEZpdi6ZtDFhK2hPusRMFemu3Shw=" 346 + }, 347 + { 348 + "pname": "Microsoft.EntityFrameworkCore.Sqlite", 349 + "version": "9.0.10", 350 + "hash": "sha256-LunzXQSLdZZL1aTlg8E8Jj58oKXniJwYx9zQasPbM2I=" 351 + }, 352 + { 353 + "pname": "Microsoft.EntityFrameworkCore.Sqlite.Core", 354 + "version": "9.0.10", 355 + "hash": "sha256-3uBgFul0W3+7MaxwRjZoowQ9iSw58jYPUChyWG/3UF4=" 356 + }, 357 + { 358 + "pname": "Microsoft.Extensions.ApiDescription.Server", 359 + "version": "9.0.0", 360 + "hash": "sha256-dvSRCpheFixWJk+ZJ2FyOSodjNPnkW9fWSYkl62/giY=" 361 + }, 362 + { 363 + "pname": "Microsoft.Extensions.Caching.Abstractions", 364 + "version": "9.0.10", 365 + "hash": "sha256-W/9WhAG5t/hWPZxIL5+ILMsPKO/DjprHRymZUmU5YOA=" 366 + }, 367 + { 368 + "pname": "Microsoft.Extensions.Caching.Memory", 369 + "version": "9.0.10", 370 + "hash": "sha256-HIXNiUnBJaYN+QGzpTlHzkvkBwYmcU0QUlIgQDhVG5g=" 371 + }, 372 + { 373 + "pname": "Microsoft.Extensions.Configuration", 374 + "version": "9.0.10", 375 + "hash": "sha256-K16pSHfb71WhGqD7mzjrYaNBihU4tga90c6IOHsgRxw=" 376 + }, 377 + { 378 + "pname": "Microsoft.Extensions.Configuration.Abstractions", 379 + "version": "3.0.0", 380 + "hash": "sha256-GJDvt3qFAif5ToFjHgs8imCaUER7yvYJghnlYXiHrHU=" 381 + }, 382 + { 383 + "pname": "Microsoft.Extensions.Configuration.Abstractions", 384 + "version": "6.0.0", 385 + "hash": "sha256-Evg+Ynj2QUa6Gz+zqF+bUyfGD0HI5A2fHmxZEXbn3HA=" 386 + }, 387 + { 388 + "pname": "Microsoft.Extensions.Configuration.Abstractions", 389 + "version": "8.0.0", 390 + "hash": "sha256-4eBpDkf7MJozTZnOwQvwcfgRKQGcNXe0K/kF+h5Rl8o=" 391 + }, 392 + { 393 + "pname": "Microsoft.Extensions.Configuration.Abstractions", 394 + "version": "9.0.0", 395 + "hash": "sha256-xtG2USC9Qm0f2Nn6jkcklpyEDT3hcEZOxOwTc0ep7uc=" 396 + }, 397 + { 398 + "pname": "Microsoft.Extensions.Configuration.Abstractions", 399 + "version": "9.0.10", 400 + "hash": "sha256-sRv0yS2sbyli7eejtnpmd7UIAz4PwSt5/Po5Irc1j98=" 401 + }, 402 + { 403 + "pname": "Microsoft.Extensions.Configuration.Binder", 404 + "version": "6.0.0", 405 + "hash": "sha256-7NZcKkiXWSuhhVcA/fXHPY/62aGUyMsRdiHm91cWC5Y=" 406 + }, 407 + { 408 + "pname": "Microsoft.Extensions.Configuration.Binder", 409 + "version": "9.0.0", 410 + "hash": "sha256-6ajYWcNOQX2WqftgnoUmVtyvC1kkPOtTCif4AiKEffU=" 411 + }, 412 + { 413 + "pname": "Microsoft.Extensions.Configuration.Binder", 414 + "version": "9.0.10", 415 + "hash": "sha256-4NEBx28byvjjIzo0wQPIUUymk9AzSgPS4fu5IRxkIt4=" 416 + }, 417 + { 418 + "pname": "Microsoft.Extensions.Configuration.CommandLine", 419 + "version": "9.0.10", 420 + "hash": "sha256-lgBXA1ovyeEqH9xmLNxxMB2/OLILt7AW6BXf+yc8wqs=" 421 + }, 422 + { 423 + "pname": "Microsoft.Extensions.Configuration.EnvironmentVariables", 424 + "version": "9.0.10", 425 + "hash": "sha256-D4Myt5rp8jxOvuQ4zwo/1bfNfLDZHrBYx7+UDOnhWgA=" 426 + }, 427 + { 428 + "pname": "Microsoft.Extensions.Configuration.FileExtensions", 429 + "version": "9.0.10", 430 + "hash": "sha256-I8ywPAfg7GPQgOuA5TPXuseurWKk7BmXsnaowF80XEQ=" 431 + }, 432 + { 433 + "pname": "Microsoft.Extensions.Configuration.Json", 434 + "version": "9.0.10", 435 + "hash": "sha256-ykcnGdvnx19q3dpwZ9A09k+6iIGNurVebe4nUaOBtng=" 436 + }, 437 + { 438 + "pname": "Microsoft.Extensions.Configuration.UserSecrets", 439 + "version": "9.0.10", 440 + "hash": "sha256-t4ssmlaX/lVemYekfubS841MStq00+C2h2HY1HyZQvQ=" 441 + }, 442 + { 443 + "pname": "Microsoft.Extensions.DependencyInjection", 444 + "version": "9.0.10", 445 + "hash": "sha256-f3r2msA/oV9gGdFn9OEr5bPAfINR17P+sS6/2/NnCuk=" 446 + }, 447 + { 448 + "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", 449 + "version": "3.0.0", 450 + "hash": "sha256-dGTb6sHsjZ86fiLnwbauGf9CQdN7G96lCM4ADjaSSBs=" 451 + }, 452 + { 453 + "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", 454 + "version": "3.1.9", 455 + "hash": "sha256-Zkt069WHJ542l+LbeeZxmaddoQiUeYE9bdyh4MN59tA=" 456 + }, 457 + { 458 + "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", 459 + "version": "6.0.0", 460 + "hash": "sha256-SZke0jNKIqJvvukdta+MgIlGsrP2EdPkkS8lfLg7Ju4=" 461 + }, 462 + { 463 + "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", 464 + "version": "8.0.2", 465 + "hash": "sha256-UfLfEQAkXxDaVPC7foE/J3FVEXd31Pu6uQIhTic3JgY=" 466 + }, 467 + { 468 + "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", 469 + "version": "9.0.0", 470 + "hash": "sha256-CncVwkKZ5CsIG2O0+OM9qXuYXh3p6UGyueTHSLDVL+c=" 471 + }, 472 + { 473 + "pname": "Microsoft.Extensions.DependencyInjection.Abstractions", 474 + "version": "9.0.10", 475 + "hash": "sha256-5rwFXG+Wjbf+TkXeWrkGVKV4wfvOryTPadEkEyPyKj4=" 476 + }, 477 + { 478 + "pname": "Microsoft.Extensions.DependencyModel", 479 + "version": "3.1.6", 480 + "hash": "sha256-TKEE5GJmn1wLKuiF6Wd+Q7jpIlq9gSvlWvTVopCyoo4=" 481 + }, 482 + { 483 + "pname": "Microsoft.Extensions.DependencyModel", 484 + "version": "9.0.0", 485 + "hash": "sha256-xirwlMWM0hBqgTneQOGkZ8l45mHT08XuSSRIbprgq94=" 486 + }, 487 + { 488 + "pname": "Microsoft.Extensions.DependencyModel", 489 + "version": "9.0.10", 490 + "hash": "sha256-isJHVIKcWkwi+CqwNBVlz2ISKzZj+TilVpmVNOonNWo=" 491 + }, 492 + { 493 + "pname": "Microsoft.Extensions.Diagnostics", 494 + "version": "9.0.10", 495 + "hash": "sha256-QOjI52VFJne2OpvSPeoep/AcPXvwtr9AtvU0xdCIWog=" 496 + }, 497 + { 498 + "pname": "Microsoft.Extensions.Diagnostics.Abstractions", 499 + "version": "9.0.0", 500 + "hash": "sha256-wG1LcET+MPRjUdz3HIOTHVEnbG/INFJUqzPErCM79eY=" 501 + }, 502 + { 503 + "pname": "Microsoft.Extensions.Diagnostics.Abstractions", 504 + "version": "9.0.10", 505 + "hash": "sha256-FXJrBpG4UieCn9MLcNX25WbPycfZWdPg38/ZLckmAI0=" 506 + }, 507 + { 508 + "pname": "Microsoft.Extensions.FileProviders.Abstractions", 509 + "version": "3.0.0", 510 + "hash": "sha256-QiLBIsAUcHkWk0Io6YEoPz3eQu8k50J2GzLFmiwYtJg=" 511 + }, 512 + { 513 + "pname": "Microsoft.Extensions.FileProviders.Abstractions", 514 + "version": "8.0.0", 515 + "hash": "sha256-uQSXmt47X2HGoVniavjLICbPtD2ReQOYQMgy3l0xuMU=" 516 + }, 517 + { 518 + "pname": "Microsoft.Extensions.FileProviders.Abstractions", 519 + "version": "9.0.0", 520 + "hash": "sha256-mVfLjZ8VrnOQR/uQjv74P2uEG+rgW72jfiGdSZhIfDc=" 521 + }, 522 + { 523 + "pname": "Microsoft.Extensions.FileProviders.Abstractions", 524 + "version": "9.0.10", 525 + "hash": "sha256-NJUg0fFe+djIUkdYhJDCG5A1JU9hhQ5GXGsz+gBEaFo=" 526 + }, 527 + { 528 + "pname": "Microsoft.Extensions.FileProviders.Physical", 529 + "version": "9.0.10", 530 + "hash": "sha256-fqh0OzyoSouNpJkVp/stjqD2NInnBKX9n6JPx+HD5Q0=" 531 + }, 532 + { 533 + "pname": "Microsoft.Extensions.FileSystemGlobbing", 534 + "version": "9.0.10", 535 + "hash": "sha256-m3gjvbPKl36XlrOzCjNHEhWjQcG8agZ5REc/EIOExmQ=" 536 + }, 537 + { 538 + "pname": "Microsoft.Extensions.Hosting", 539 + "version": "9.0.10", 540 + "hash": "sha256-SImJyuK5D7uR0AjWFz6JwqvPZ5VVHPVK79T7vqTUs0g=" 541 + }, 542 + { 543 + "pname": "Microsoft.Extensions.Hosting.Abstractions", 544 + "version": "3.0.0", 545 + "hash": "sha256-iUMCRR9uHSoub48MboewTxokP5QwrC47X5t+C+JUMo4=" 546 + }, 547 + { 548 + "pname": "Microsoft.Extensions.Hosting.Abstractions", 549 + "version": "8.0.1", 550 + "hash": "sha256-/bIVL9uvBQhV/KQmjA1ZjR74sMfaAlBb15sVXsGDEVA=" 551 + }, 552 + { 553 + "pname": "Microsoft.Extensions.Hosting.Abstractions", 554 + "version": "9.0.0", 555 + "hash": "sha256-NhEDqZGnwCDFyK/NKn1dwLQExYE82j1YVFcrhXVczqY=" 556 + }, 557 + { 558 + "pname": "Microsoft.Extensions.Hosting.Abstractions", 559 + "version": "9.0.10", 560 + "hash": "sha256-CrysJ8NO0kx9smoGIk0Oz05RnISTUcPVjTLpRKeVBgQ=" 561 + }, 562 + { 563 + "pname": "Microsoft.Extensions.Identity.Core", 564 + "version": "9.0.10", 565 + "hash": "sha256-IB+CQR+mFoHWLfZLIa06NIKd+YSc81M+NuJsDIUM+QE=" 566 + }, 567 + { 568 + "pname": "Microsoft.Extensions.Identity.Stores", 569 + "version": "9.0.10", 570 + "hash": "sha256-H1ZtfawaS48a3SEf8WcRPM8iN8m/E2B0azOAv5mjWlk=" 571 + }, 572 + { 573 + "pname": "Microsoft.Extensions.Logging", 574 + "version": "6.0.0", 575 + "hash": "sha256-8WsZKRGfXW5MsXkMmNVf6slrkw+cR005czkOP2KUqTk=" 576 + }, 577 + { 578 + "pname": "Microsoft.Extensions.Logging", 579 + "version": "9.0.0", 580 + "hash": "sha256-kR16c+N8nQrWeYLajqnXPg7RiXjZMSFLnKLEs4VfjcM=" 581 + }, 582 + { 583 + "pname": "Microsoft.Extensions.Logging", 584 + "version": "9.0.10", 585 + "hash": "sha256-/Et36NBhpMoxQzI+p/moW7knwYDfjI7Ma7DF7KIYn+Q=" 586 + }, 587 + { 588 + "pname": "Microsoft.Extensions.Logging.Abstractions", 589 + "version": "3.0.0", 590 + "hash": "sha256-p70uTENWQc0J7ibLHlRHWk3RYZg0DMP3g2m4kAUaoxA=" 591 + }, 592 + { 593 + "pname": "Microsoft.Extensions.Logging.Abstractions", 594 + "version": "8.0.0", 595 + "hash": "sha256-Jmddjeg8U5S+iBTwRlVAVLeIHxc4yrrNgqVMOB7EjM4=" 596 + }, 597 + { 598 + "pname": "Microsoft.Extensions.Logging.Abstractions", 599 + "version": "8.0.2", 600 + "hash": "sha256-cHpe8X2BgYa5DzulZfq24rg8O2K5Lmq2OiLhoyAVgJc=" 601 + }, 602 + { 603 + "pname": "Microsoft.Extensions.Logging.Abstractions", 604 + "version": "9.0.0", 605 + "hash": "sha256-iBTs9twjWXFeERt4CErkIIcoJZU1jrd1RWCI8V5j7KU=" 606 + }, 607 + { 608 + "pname": "Microsoft.Extensions.Logging.Abstractions", 609 + "version": "9.0.10", 610 + "hash": "sha256-PtYXXHi+mbdQMh2QtA57NbWlt+JEpXiey36zLzbKTmo=" 611 + }, 612 + { 613 + "pname": "Microsoft.Extensions.Logging.Configuration", 614 + "version": "9.0.10", 615 + "hash": "sha256-z2lcPYfDld5XiqyLYRLBHe29rbO9j135W2U1HyoRXJI=" 616 + }, 617 + { 618 + "pname": "Microsoft.Extensions.Logging.Console", 619 + "version": "9.0.10", 620 + "hash": "sha256-qM1mcbTK4YmzcWNC0U5f0cunB2CFafTsNzldH5g9Q7E=" 621 + }, 622 + { 623 + "pname": "Microsoft.Extensions.Logging.Debug", 624 + "version": "9.0.10", 625 + "hash": "sha256-x3B8uLpMuIUru3LxEg1ZMYkE5QkcfFe9fMCSUO1kakM=" 626 + }, 627 + { 628 + "pname": "Microsoft.Extensions.Logging.EventLog", 629 + "version": "9.0.10", 630 + "hash": "sha256-TzOq62cH8KolfIvXnWapvPdmCdDxiKF7tg5ICE6iwEk=" 631 + }, 632 + { 633 + "pname": "Microsoft.Extensions.Logging.EventSource", 634 + "version": "9.0.10", 635 + "hash": "sha256-GGxnzocUi1se0kkysvkZ5QpN3p/N1VbrLkpeVPS18Ks=" 636 + }, 637 + { 638 + "pname": "Microsoft.Extensions.ObjectPool", 639 + "version": "8.0.11", 640 + "hash": "sha256-xutYzUA86hOg0NfLcs/NPylKvNcNohucY1LpSEkkaps=" 641 + }, 642 + { 643 + "pname": "Microsoft.Extensions.Options", 644 + "version": "6.0.0", 645 + "hash": "sha256-DxnEgGiCXpkrxFkxXtOXqwaiAtoIjA8VSSWCcsW0FwE=" 646 + }, 647 + { 648 + "pname": "Microsoft.Extensions.Options", 649 + "version": "8.0.2", 650 + "hash": "sha256-AjcldddddtN/9aH9pg7ClEZycWtFHLi9IPe1GGhNQys=" 651 + }, 652 + { 653 + "pname": "Microsoft.Extensions.Options", 654 + "version": "9.0.0", 655 + "hash": "sha256-DT5euAQY/ItB5LPI8WIp6Dnd0lSvBRP35vFkOXC68ck=" 656 + }, 657 + { 658 + "pname": "Microsoft.Extensions.Options", 659 + "version": "9.0.10", 660 + "hash": "sha256-QTNhi83xhjJuIQ/3QffzQs/KY7avNyBMvnkuuSr3pBo=" 661 + }, 662 + { 663 + "pname": "Microsoft.Extensions.Options.ConfigurationExtensions", 664 + "version": "6.0.0", 665 + "hash": "sha256-au0Y13cGk/dQFKuvSA5NnP/++bErTk0oOTlgmHdI2Mw=" 666 + }, 667 + { 668 + "pname": "Microsoft.Extensions.Options.ConfigurationExtensions", 669 + "version": "9.0.10", 670 + "hash": "sha256-4YxwQH66IhJiJP53/Fy/lGBIEkVo4k+o/5QxzFQLhfQ=" 671 + }, 672 + { 673 + "pname": "Microsoft.Extensions.Primitives", 674 + "version": "6.0.0", 675 + "hash": "sha256-AgvysszpQ11AiTBJFkvSy8JnwIWTj15Pfek7T7ThUc4=" 676 + }, 677 + { 678 + "pname": "Microsoft.Extensions.Primitives", 679 + "version": "8.0.0", 680 + "hash": "sha256-FU8qj3DR8bDdc1c+WeGZx/PCZeqqndweZM9epcpXjSo=" 681 + }, 682 + { 683 + "pname": "Microsoft.Extensions.Primitives", 684 + "version": "9.0.0", 685 + "hash": "sha256-ZNLusK1CRuq5BZYZMDqaz04PIKScE2Z7sS2tehU7EJs=" 686 + }, 687 + { 688 + "pname": "Microsoft.Extensions.Primitives", 689 + "version": "9.0.10", 690 + "hash": "sha256-It7NQ+Ap/hrqFX3LXDVJqVz1Xl3j8QIapYDcG2MQ/7w=" 691 + }, 692 + { 693 + "pname": "Microsoft.IdentityModel.Abstractions", 694 + "version": "8.13.0", 695 + "hash": "sha256-B5PshNfnDfB36QjEOf0S3FQaC+9K7MR+y5KUiQDHfhg=" 696 + }, 697 + { 698 + "pname": "Microsoft.IdentityModel.JsonWebTokens", 699 + "version": "8.13.0", 700 + "hash": "sha256-i9CvrXUvYvtmuAQNHU9IvjItFh6x2/O8CAuEjeOOYyg=" 701 + }, 702 + { 703 + "pname": "Microsoft.IdentityModel.Logging", 704 + "version": "8.13.0", 705 + "hash": "sha256-wg6jCW8tiXfwrKs/Hxo0M0Cyi2EPRlIa6+vfnVxsQ+M=" 706 + }, 707 + { 708 + "pname": "Microsoft.IdentityModel.Protocols", 709 + "version": "8.0.1", 710 + "hash": "sha256-v3DIpG6yfIToZBpHOjtQHRo2BhXGDoE70EVs6kBtrRg=" 711 + }, 712 + { 713 + "pname": "Microsoft.IdentityModel.Protocols.OpenIdConnect", 714 + "version": "8.0.1", 715 + "hash": "sha256-ZHKaZxqESk+OU1SFTFGxvZ71zbdgWqv1L6ET9+fdXX0=" 716 + }, 717 + { 718 + "pname": "Microsoft.IdentityModel.Tokens", 719 + "version": "8.0.1", 720 + "hash": "sha256-beVbbVQy874HlXkTKarPTT5/r7XR1NGHA/50ywWp7YA=" 721 + }, 722 + { 723 + "pname": "Microsoft.IdentityModel.Tokens", 724 + "version": "8.13.0", 725 + "hash": "sha256-M1NZQyQt8q10MLai4BooKtzJebRVwHeQuq/UQiJl28c=" 726 + }, 727 + { 728 + "pname": "Microsoft.IO.RecyclableMemoryStream", 729 + "version": "3.0.1", 730 + "hash": "sha256-unFg/5EcU/XKJbob4GtQC43Ydgi5VjeBGs7hfhj4EYo=" 731 + }, 732 + { 733 + "pname": "Microsoft.Net.Http.Headers", 734 + "version": "2.3.0", 735 + "hash": "sha256-XY3OyhKTzUVbmMnegp0IxApg8cw97RD9eXC2XenrOqE=" 736 + }, 737 + { 738 + "pname": "Microsoft.NETCore.Platforms", 739 + "version": "1.1.0", 740 + "hash": "sha256-FeM40ktcObQJk4nMYShB61H/E8B7tIKfl9ObJ0IOcCM=" 741 + }, 742 + { 743 + "pname": "Microsoft.NETCore.Targets", 744 + "version": "1.1.0", 745 + "hash": "sha256-0AqQ2gMS8iNlYkrD+BxtIg7cXMnr9xZHtKAuN4bjfaQ=" 746 + }, 747 + { 748 + "pname": "Microsoft.OpenApi", 749 + "version": "1.6.23", 750 + "hash": "sha256-YD2oxM/tlNpK5xUeHF85xdqcpBzHioUSyRjpN2A7KcY=" 751 + }, 752 + { 753 + "pname": "Microsoft.Win32.Primitives", 754 + "version": "4.3.0", 755 + "hash": "sha256-mBNDmPXNTW54XLnPAUwBRvkIORFM7/j0D0I2SyQPDEg=" 756 + }, 757 + { 758 + "pname": "Microsoft.Win32.SystemEvents", 759 + "version": "9.0.7", 760 + "hash": "sha256-7o59Y4Wy9EsTlcNVCNuweR/7Y7QlbB6MwK/aHGax3F4=" 761 + }, 762 + { 763 + "pname": "MimeKit", 764 + "version": "4.13.0", 765 + "hash": "sha256-mPFMFcK+ks4aoA02JfC6JUhUyc1LTVp5siW9t3wUgNo=" 766 + }, 767 + { 768 + "pname": "MimeTypeMapOfficial", 769 + "version": "1.0.17", 770 + "hash": "sha256-HuQRDUDjBlAKzbnCWvxkXp7tf2bCdd/evox8964grdA=" 771 + }, 772 + { 773 + "pname": "Mono.TextTemplating", 774 + "version": "3.0.0", 775 + "hash": "sha256-VlgGDvgNZb7MeBbIZ4DE2Nn/j2aD9k6XqNHnASUSDr0=" 776 + }, 777 + { 778 + "pname": "Nager.ArticleNumber", 779 + "version": "1.0.7", 780 + "hash": "sha256-Th3BIABiOo0vsgqznr6C6WhVdGDFalso/rAfUYDI0NE=" 781 + }, 782 + { 783 + "pname": "NETStandard.Library", 784 + "version": "1.6.1", 785 + "hash": "sha256-iNan1ix7RtncGWC9AjAZ2sk70DoxOsmEOgQ10fXm4Pw=" 786 + }, 787 + { 788 + "pname": "NetVips", 789 + "version": "3.1.0", 790 + "hash": "sha256-ZxbN+5JCLjyH23/2NPX/U0+5kbG20knpzouaZjpcrnA=" 791 + }, 792 + { 793 + "pname": "NetVips.Native", 794 + "version": "8.17.1", 795 + "hash": "sha256-3Bt+CkZZqwgujWBlD9frEEk6veRW9//QFqL974aQk0Y=" 796 + }, 797 + { 798 + "pname": "NetVips.Native.linux-arm", 799 + "version": "8.17.1", 800 + "hash": "sha256-ImOgBzek3104u1yluZKUCXJ7XBFiYx0pU+pCSoCLZN4=" 801 + }, 802 + { 803 + "pname": "NetVips.Native.linux-arm64", 804 + "version": "8.17.1", 805 + "hash": "sha256-epMLp8Ig2EBVYP7CrE4/Itf3wcqxwJovObD3g7laFc4=" 806 + }, 807 + { 808 + "pname": "NetVips.Native.linux-musl-arm64", 809 + "version": "8.17.1", 810 + "hash": "sha256-suweTrKlrrFGm4vAI5/88rAjY0xh1xloZ6HmDrZkCYk=" 811 + }, 812 + { 813 + "pname": "NetVips.Native.linux-musl-x64", 814 + "version": "8.17.1", 815 + "hash": "sha256-tO0PZMeLXnzn1crTSVni6dhLkIoVd6Aw9tTBbePrFSo=" 816 + }, 817 + { 818 + "pname": "NetVips.Native.linux-x64", 819 + "version": "8.17.1", 820 + "hash": "sha256-BvD/a88FCd9Q09qVJJ2PNcW7OxKsGjLcqzscawVB9co=" 821 + }, 822 + { 823 + "pname": "NetVips.Native.osx-arm64", 824 + "version": "8.17.1", 825 + "hash": "sha256-IOs4owMMZ9pmLNoU273Fb78SQauMWaYltc0NIf/uUpQ=" 826 + }, 827 + { 828 + "pname": "NetVips.Native.osx-x64", 829 + "version": "8.17.1", 830 + "hash": "sha256-Gx0L959G5pKAwtjll6phwoIHELqQOWrItPleWuJz8f8=" 831 + }, 832 + { 833 + "pname": "NetVips.Native.win-arm64", 834 + "version": "8.17.1", 835 + "hash": "sha256-8dgBepaQf7l/wNgYO+NPCYOsjnPNwUSgvRn+FUNMZtc=" 836 + }, 837 + { 838 + "pname": "NetVips.Native.win-x64", 839 + "version": "8.17.1", 840 + "hash": "sha256-ia+ar6vMv+1HhJq6ppQAeuMbluK1IX8qhcO0z5HDv8o=" 841 + }, 842 + { 843 + "pname": "NetVips.Native.win-x86", 844 + "version": "8.17.1", 845 + "hash": "sha256-PHLRQK2I3cmimTdmDNMq6SDBnpZwin8claHp56HrAWc=" 846 + }, 847 + { 848 + "pname": "Newtonsoft.Json", 849 + "version": "11.0.1", 850 + "hash": "sha256-lbR7rpS/EXgJ8TqQspuIIqAsiorrZb1oOK4HFw+QyPw=" 851 + }, 852 + { 853 + "pname": "Newtonsoft.Json", 854 + "version": "11.0.2", 855 + "hash": "sha256-YhlAbGfwoxQzxb3Hef4iyV9eGdPQJJNd2GgSR0jsBJ0=" 856 + }, 857 + { 858 + "pname": "Polly", 859 + "version": "8.6.2", 860 + "hash": "sha256-JWPe3Une30ljf2z4aeshNSjz2CfIQZWw3IHiPvFgy6E=" 861 + }, 862 + { 863 + "pname": "Polly.Core", 864 + "version": "8.6.2", 865 + "hash": "sha256-jX1i7tkQwaY74qgVarx6vLeLIg7zonQwisFvm6nWrHs=" 866 + }, 867 + { 868 + "pname": "runtime.any.System.Collections", 869 + "version": "4.3.0", 870 + "hash": "sha256-4PGZqyWhZ6/HCTF2KddDsbmTTjxs2oW79YfkberDZS8=" 871 + }, 872 + { 873 + "pname": "runtime.any.System.Diagnostics.Tools", 874 + "version": "4.3.0", 875 + "hash": "sha256-8yLKFt2wQxkEf7fNfzB+cPUCjYn2qbqNgQ1+EeY2h/I=" 876 + }, 877 + { 878 + "pname": "runtime.any.System.Diagnostics.Tracing", 879 + "version": "4.3.0", 880 + "hash": "sha256-dsmTLGvt8HqRkDWP8iKVXJCS+akAzENGXKPV18W2RgI=" 881 + }, 882 + { 883 + "pname": "runtime.any.System.Globalization", 884 + "version": "4.3.0", 885 + "hash": "sha256-PaiITTFI2FfPylTEk7DwzfKeiA/g/aooSU1pDcdwWLU=" 886 + }, 887 + { 888 + "pname": "runtime.any.System.Globalization.Calendars", 889 + "version": "4.3.0", 890 + "hash": "sha256-AYh39tgXJVFu8aLi9Y/4rK8yWMaza4S4eaxjfcuEEL4=" 891 + }, 892 + { 893 + "pname": "runtime.any.System.IO", 894 + "version": "4.3.0", 895 + "hash": "sha256-vej7ySRhyvM3pYh/ITMdC25ivSd0WLZAaIQbYj/6HVE=" 896 + }, 897 + { 898 + "pname": "runtime.any.System.Reflection", 899 + "version": "4.3.0", 900 + "hash": "sha256-ns6f++lSA+bi1xXgmW1JkWFb2NaMD+w+YNTfMvyAiQk=" 901 + }, 902 + { 903 + "pname": "runtime.any.System.Reflection.Extensions", 904 + "version": "4.3.0", 905 + "hash": "sha256-Y2AnhOcJwJVYv7Rp6Jz6ma0fpITFqJW+8rsw106K2X8=" 906 + }, 907 + { 908 + "pname": "runtime.any.System.Reflection.Primitives", 909 + "version": "4.3.0", 910 + "hash": "sha256-LkPXtiDQM3BcdYkAm5uSNOiz3uF4J45qpxn5aBiqNXQ=" 911 + }, 912 + { 913 + "pname": "runtime.any.System.Resources.ResourceManager", 914 + "version": "4.3.0", 915 + "hash": "sha256-9EvnmZslLgLLhJ00o5MWaPuJQlbUFcUF8itGQNVkcQ4=" 916 + }, 917 + { 918 + "pname": "runtime.any.System.Runtime", 919 + "version": "4.3.0", 920 + "hash": "sha256-qwhNXBaJ1DtDkuRacgHwnZmOZ1u9q7N8j0cWOLYOELM=" 921 + }, 922 + { 923 + "pname": "runtime.any.System.Runtime.Handles", 924 + "version": "4.3.0", 925 + "hash": "sha256-PQRACwnSUuxgVySO1840KvqCC9F8iI9iTzxNW0RcBS4=" 926 + }, 927 + { 928 + "pname": "runtime.any.System.Runtime.InteropServices", 929 + "version": "4.3.0", 930 + "hash": "sha256-Kaw5PnLYIiqWbsoF3VKJhy7pkpoGsUwn4ZDCKscbbzA=" 931 + }, 932 + { 933 + "pname": "runtime.any.System.Text.Encoding", 934 + "version": "4.3.0", 935 + "hash": "sha256-Q18B9q26MkWZx68exUfQT30+0PGmpFlDgaF0TnaIGCs=" 936 + }, 937 + { 938 + "pname": "runtime.any.System.Text.Encoding.Extensions", 939 + "version": "4.3.0", 940 + "hash": "sha256-6MYj0RmLh4EVqMtO/MRqBi0HOn5iG4x9JimgCCJ+EFM=" 941 + }, 942 + { 943 + "pname": "runtime.any.System.Threading.Tasks", 944 + "version": "4.3.0", 945 + "hash": "sha256-agdOM0NXupfHbKAQzQT8XgbI9B8hVEh+a/2vqeHctg4=" 946 + }, 947 + { 948 + "pname": "runtime.any.System.Threading.Timer", 949 + "version": "4.3.0", 950 + "hash": "sha256-BgHxXCIbicVZtpgMimSXixhFC3V+p5ODqeljDjO8hCs=" 951 + }, 952 + { 953 + "pname": "runtime.debian.8-x64.runtime.native.System.Security.Cryptography.OpenSsl", 954 + "version": "4.3.0", 955 + "hash": "sha256-LXUPLX3DJxsU1Pd3UwjO1PO9NM2elNEDXeu2Mu/vNps=" 956 + }, 957 + { 958 + "pname": "runtime.fedora.23-x64.runtime.native.System.Security.Cryptography.OpenSsl", 959 + "version": "4.3.0", 960 + "hash": "sha256-qeSqaUI80+lqw5MK4vMpmO0CZaqrmYktwp6L+vQAb0I=" 961 + }, 962 + { 963 + "pname": "runtime.fedora.24-x64.runtime.native.System.Security.Cryptography.OpenSsl", 964 + "version": "4.3.0", 965 + "hash": "sha256-SrHqT9wrCBsxILWtaJgGKd6Odmxm8/Mh7Kh0CUkZVzA=" 966 + }, 967 + { 968 + "pname": "runtime.native.System", 969 + "version": "4.3.0", 970 + "hash": "sha256-ZBZaodnjvLXATWpXXakFgcy6P+gjhshFXmglrL5xD5Y=" 971 + }, 972 + { 973 + "pname": "runtime.native.System.IO.Compression", 974 + "version": "4.3.0", 975 + "hash": "sha256-DWnXs4vlKoU6WxxvCArTJupV6sX3iBbZh8SbqfHace8=" 976 + }, 977 + { 978 + "pname": "runtime.native.System.Net.Http", 979 + "version": "4.3.0", 980 + "hash": "sha256-c556PyheRwpYhweBjSfIwEyZHnAUB8jWioyKEcp/2dg=" 981 + }, 982 + { 983 + "pname": "runtime.native.System.Security.Cryptography.Apple", 984 + "version": "4.3.0", 985 + "hash": "sha256-2IhBv0i6pTcOyr8FFIyfPEaaCHUmJZ8DYwLUwJ+5waw=" 986 + }, 987 + { 988 + "pname": "runtime.native.System.Security.Cryptography.OpenSsl", 989 + "version": "4.3.0", 990 + "hash": "sha256-Jy01KhtcCl2wjMpZWH+X3fhHcVn+SyllWFY8zWlz/6I=" 991 + }, 992 + { 993 + "pname": "runtime.opensuse.13.2-x64.runtime.native.System.Security.Cryptography.OpenSsl", 994 + "version": "4.3.0", 995 + "hash": "sha256-wyv00gdlqf8ckxEdV7E+Ql9hJIoPcmYEuyeWb5Oz3mM=" 996 + }, 997 + { 998 + "pname": "runtime.opensuse.42.1-x64.runtime.native.System.Security.Cryptography.OpenSsl", 999 + "version": "4.3.0", 1000 + "hash": "sha256-zi+b4sCFrA9QBiSGDD7xPV27r3iHGlV99gpyVUjRmc4=" 1001 + }, 1002 + { 1003 + "pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.Apple", 1004 + "version": "4.3.0", 1005 + "hash": "sha256-serkd4A7F6eciPiPJtUyJyxzdAtupEcWIZQ9nptEzIM=" 1006 + }, 1007 + { 1008 + "pname": "runtime.osx.10.10-x64.runtime.native.System.Security.Cryptography.OpenSsl", 1009 + "version": "4.3.0", 1010 + "hash": "sha256-gybQU6mPgaWV3rBG2dbH6tT3tBq8mgze3PROdsuWnX0=" 1011 + }, 1012 + { 1013 + "pname": "runtime.rhel.7-x64.runtime.native.System.Security.Cryptography.OpenSsl", 1014 + "version": "4.3.0", 1015 + "hash": "sha256-VsP72GVveWnGUvS/vjOQLv1U80H2K8nZ4fDAmI61Hm4=" 1016 + }, 1017 + { 1018 + "pname": "runtime.ubuntu.14.04-x64.runtime.native.System.Security.Cryptography.OpenSsl", 1019 + "version": "4.3.0", 1020 + "hash": "sha256-4yKGa/IrNCKuQ3zaDzILdNPD32bNdy6xr5gdJigyF5g=" 1021 + }, 1022 + { 1023 + "pname": "runtime.ubuntu.16.04-x64.runtime.native.System.Security.Cryptography.OpenSsl", 1024 + "version": "4.3.0", 1025 + "hash": "sha256-HmdJhhRsiVoOOCcUvAwdjpMRiyuSwdcgEv2j9hxi+Zc=" 1026 + }, 1027 + { 1028 + "pname": "runtime.ubuntu.16.10-x64.runtime.native.System.Security.Cryptography.OpenSsl", 1029 + "version": "4.3.0", 1030 + "hash": "sha256-pVFUKuPPIx0edQKjzRon3zKq8zhzHEzko/lc01V/jdw=" 1031 + }, 1032 + { 1033 + "pname": "runtime.unix.Microsoft.Win32.Primitives", 1034 + "version": "4.3.0", 1035 + "hash": "sha256-LZb23lRXzr26tRS5aA0xyB08JxiblPDoA7HBvn6awXg=" 1036 + }, 1037 + { 1038 + "pname": "runtime.unix.System.Console", 1039 + "version": "4.3.0", 1040 + "hash": "sha256-AHkdKShTRHttqfMjmi+lPpTuCrM5vd/WRy6Kbtie190=" 1041 + }, 1042 + { 1043 + "pname": "runtime.unix.System.Diagnostics.Debug", 1044 + "version": "4.3.0", 1045 + "hash": "sha256-ReoazscfbGH+R6s6jkg5sIEHWNEvjEoHtIsMbpc7+tI=" 1046 + }, 1047 + { 1048 + "pname": "runtime.unix.System.IO.FileSystem", 1049 + "version": "4.3.0", 1050 + "hash": "sha256-Pf4mRl6YDK2x2KMh0WdyNgv0VUNdSKVDLlHqozecy5I=" 1051 + }, 1052 + { 1053 + "pname": "runtime.unix.System.Net.Primitives", 1054 + "version": "4.3.0", 1055 + "hash": "sha256-pHJ+I6i16MV6m77uhTC6GPY6jWGReE3SSP3fVB59ti0=" 1056 + }, 1057 + { 1058 + "pname": "runtime.unix.System.Net.Sockets", 1059 + "version": "4.3.0", 1060 + "hash": "sha256-IvgOeA2JuBjKl5yAVGjPYMPDzs9phb3KANs95H9v1w4=" 1061 + }, 1062 + { 1063 + "pname": "runtime.unix.System.Private.Uri", 1064 + "version": "4.3.0", 1065 + "hash": "sha256-c5tXWhE/fYbJVl9rXs0uHh3pTsg44YD1dJvyOA0WoMs=" 1066 + }, 1067 + { 1068 + "pname": "runtime.unix.System.Runtime.Extensions", 1069 + "version": "4.3.0", 1070 + "hash": "sha256-l8S9gt6dk3qYG6HYonHtdlYtBKyPb29uQ6NDjmrt3V4=" 1071 + }, 1072 + { 1073 + "pname": "Scrutor", 1074 + "version": "3.3.0", 1075 + "hash": "sha256-cYd6xuCn8cniuHWhiWMZRYZrYUjOvAz2wlEvOM5drmE=" 1076 + }, 1077 + { 1078 + "pname": "Serilog", 1079 + "version": "4.3.0", 1080 + "hash": "sha256-jyIy4BjsyFXge3aO4GRFAdnX4/rz1MHfBkBDIpCDsTw=" 1081 + }, 1082 + { 1083 + "pname": "Serilog.AspNetCore", 1084 + "version": "9.0.0", 1085 + "hash": "sha256-h58CFtXBRvwhTCrhQPHQMKbp98YiK02o+cOyOmktVpQ=" 1086 + }, 1087 + { 1088 + "pname": "Serilog.Enrichers.Thread", 1089 + "version": "4.0.0", 1090 + "hash": "sha256-lo+3ohNHKe/hTq9vGbk29p/OWcNlcyJToGL6EpCJQm8=" 1091 + }, 1092 + { 1093 + "pname": "Serilog.Extensions.Hosting", 1094 + "version": "9.0.0", 1095 + "hash": "sha256-bidr2foe7Dp4BJOlkc7ko0q6vt9ITG3IZ8b2BKRa0pw=" 1096 + }, 1097 + { 1098 + "pname": "Serilog.Extensions.Logging", 1099 + "version": "3.0.1", 1100 + "hash": "sha256-KtHMMnepmEpOlHrIGlUkK6Vq1L0iBBnFGavbUtvxOBk=" 1101 + }, 1102 + { 1103 + "pname": "Serilog.Extensions.Logging", 1104 + "version": "9.0.0", 1105 + "hash": "sha256-aGkz1V4HVl0rWC1BkcnLhG1EC7WLBoT3tdLdUUTFXaw=" 1106 + }, 1107 + { 1108 + "pname": "Serilog.Formatting.Compact", 1109 + "version": "3.0.0", 1110 + "hash": "sha256-nejEYqJEMG9P2iFZvbsCUPr5LZRtxbdUTLCI9N71jHY=" 1111 + }, 1112 + { 1113 + "pname": "Serilog.Settings.Configuration", 1114 + "version": "9.0.0", 1115 + "hash": "sha256-Q/q5UiSrcxoy5a/orod20E2RfiRtHDhxjjGMe1dW35I=" 1116 + }, 1117 + { 1118 + "pname": "Serilog.Sinks.AspNetCore.SignalR", 1119 + "version": "0.4.0", 1120 + "hash": "sha256-KkyrLNMsoBGMJN7C8NNGhGVxFDYzfvxlX66i3NLYkmo=" 1121 + }, 1122 + { 1123 + "pname": "Serilog.Sinks.Console", 1124 + "version": "6.0.0", 1125 + "hash": "sha256-QH8ykDkLssJ99Fgl+ZBFBr+RQRl0wRTkeccQuuGLyro=" 1126 + }, 1127 + { 1128 + "pname": "Serilog.Sinks.Debug", 1129 + "version": "3.0.0", 1130 + "hash": "sha256-7/LmoRF1rUDFhJ47bTRQQFRgSHnZDO8484r3sCGqYvE=" 1131 + }, 1132 + { 1133 + "pname": "Serilog.Sinks.File", 1134 + "version": "7.0.0", 1135 + "hash": "sha256-LxZYUoUPkCjIIVarJilnXnqQiMrFNJtoRilmzTNtUjo=" 1136 + }, 1137 + { 1138 + "pname": "Serilog.Sinks.SignalR.Core", 1139 + "version": "0.1.2", 1140 + "hash": "sha256-7j9SK++4U7Q6f6ofPWsaH9xQii/jBK864u/kHYwxyJk=" 1141 + }, 1142 + { 1143 + "pname": "SharpCompress", 1144 + "version": "0.40.0", 1145 + "hash": "sha256-pxz5ef//xOUClwuyflO0eLAfUItFcwfq74Cf0Hj5c1E=" 1146 + }, 1147 + { 1148 + "pname": "SixLabors.ImageSharp", 1149 + "version": "3.1.11", 1150 + "hash": "sha256-MlRF+3SGfahbsB1pZGKMOrsfUCx//hCo7ECrXr03DpA=" 1151 + }, 1152 + { 1153 + "pname": "SonarAnalyzer.CSharp", 1154 + "version": "10.15.0.120848", 1155 + "hash": "sha256-zmZrHhqRbJq3DcA7Plo6N56gjz7hi7DXwk1e/NSGQwU=" 1156 + }, 1157 + { 1158 + "pname": "sqlite-net-pcl", 1159 + "version": "1.8.116", 1160 + "hash": "sha256-XlD0ycLkpMeFkZ9NCktC2ldYzD2NyJarSv5h6e4gekA=" 1161 + }, 1162 + { 1163 + "pname": "SQLitePCLRaw.bundle_e_sqlite3", 1164 + "version": "2.1.10", 1165 + "hash": "sha256-kZIWjH/TVTXRIsHPZSl7zoC4KAMBMWmgFYGLrQ15Occ=" 1166 + }, 1167 + { 1168 + "pname": "SQLitePCLRaw.bundle_green", 1169 + "version": "2.0.4", 1170 + "hash": "sha256-QjDI47nPUXx75rMABeSYefB6gw6xgrgTjYY6Uq/1J4U=" 1171 + }, 1172 + { 1173 + "pname": "SQLitePCLRaw.core", 1174 + "version": "2.0.4", 1175 + "hash": "sha256-IUfP6hlLayClMzG3V0cEU2woJrlCqvZ/J6LBQB3fZVE=" 1176 + }, 1177 + { 1178 + "pname": "SQLitePCLRaw.core", 1179 + "version": "2.1.10", 1180 + "hash": "sha256-gpZcYwiJVCVwCyJu0R6hYxyMB39VhJDmYh9LxcIVAA8=" 1181 + }, 1182 + { 1183 + "pname": "SQLitePCLRaw.lib.e_sqlite3", 1184 + "version": "2.0.4", 1185 + "hash": "sha256-rPj53a6jdeX4gSr7SsUz7LtbecdoDJQb7bxSigsPvU4=" 1186 + }, 1187 + { 1188 + "pname": "SQLitePCLRaw.lib.e_sqlite3", 1189 + "version": "2.1.10", 1190 + "hash": "sha256-m2v2RQWol+1MNGZsx+G2N++T9BNtQGLLHXUjcwkdCnc=" 1191 + }, 1192 + { 1193 + "pname": "SQLitePCLRaw.provider.dynamic_cdecl", 1194 + "version": "2.0.4", 1195 + "hash": "sha256-0rzyURehoQsyDxW8Yj477TJLNcItBsJVwKBeGidKmSA=" 1196 + }, 1197 + { 1198 + "pname": "SQLitePCLRaw.provider.e_sqlite3", 1199 + "version": "2.1.10", 1200 + "hash": "sha256-MLs3jiETLZ7k/TgkHynZegCWuAbgHaDQKTPB0iNv7Fg=" 1201 + }, 1202 + { 1203 + "pname": "Swashbuckle.AspNetCore", 1204 + "version": "9.0.3", 1205 + "hash": "sha256-ofwJQnDEXT1V3Bzn8jh9qangDQZFeJyvWQt4IxjiPq8=" 1206 + }, 1207 + { 1208 + "pname": "Swashbuckle.AspNetCore.Filters", 1209 + "version": "9.0.0", 1210 + "hash": "sha256-OaXRtWMj6og+FC11y3Fst+rbvnVogDiyiOKbDiSKdXE=" 1211 + }, 1212 + { 1213 + "pname": "Swashbuckle.AspNetCore.Filters.Abstractions", 1214 + "version": "9.0.0", 1215 + "hash": "sha256-iogw8nDb0tRdGgNLNaL3QlbSB1n5pqzpN0r++wgRz80=" 1216 + }, 1217 + { 1218 + "pname": "Swashbuckle.AspNetCore.Swagger", 1219 + "version": "9.0.3", 1220 + "hash": "sha256-JbBGVnPO3dkPYcYOnB0njA5G4KNiDz1Bsg2NUgiv+PI=" 1221 + }, 1222 + { 1223 + "pname": "Swashbuckle.AspNetCore.SwaggerGen", 1224 + "version": "8.0.0", 1225 + "hash": "sha256-K9vOS4Qk+sgwX5H6Yhkjb9LIQzm2ALfrvlaGt+/2cTk=" 1226 + }, 1227 + { 1228 + "pname": "Swashbuckle.AspNetCore.SwaggerGen", 1229 + "version": "9.0.3", 1230 + "hash": "sha256-d1WW1sUCuEopzV/9XQbdwz6Tj10iQdQukTWBB4RVMYY=" 1231 + }, 1232 + { 1233 + "pname": "Swashbuckle.AspNetCore.SwaggerUI", 1234 + "version": "9.0.3", 1235 + "hash": "sha256-G4/F1VDMHBEU0vruOLYuaIhBme3TVKzj8lpLKokH+QE=" 1236 + }, 1237 + { 1238 + "pname": "System.AppContext", 1239 + "version": "4.3.0", 1240 + "hash": "sha256-yg95LNQOwFlA1tWxXdQkVyJqT4AnoDc+ACmrNvzGiZg=" 1241 + }, 1242 + { 1243 + "pname": "System.Buffers", 1244 + "version": "4.3.0", 1245 + "hash": "sha256-XqZWb4Kd04960h4U9seivjKseGA/YEIpdplfHYHQ9jk=" 1246 + }, 1247 + { 1248 + "pname": "System.Buffers", 1249 + "version": "4.6.0", 1250 + "hash": "sha256-c2QlgFB16IlfBms5YLsTCFQ/QeKoS6ph1a9mdRkq/Jc=" 1251 + }, 1252 + { 1253 + "pname": "System.CodeDom", 1254 + "version": "6.0.0", 1255 + "hash": "sha256-uPetUFZyHfxjScu5x4agjk9pIhbCkt5rG4Axj25npcQ=" 1256 + }, 1257 + { 1258 + "pname": "System.Collections", 1259 + "version": "4.3.0", 1260 + "hash": "sha256-afY7VUtD6w/5mYqrce8kQrvDIfS2GXDINDh73IjxJKc=" 1261 + }, 1262 + { 1263 + "pname": "System.Collections.Concurrent", 1264 + "version": "4.3.0", 1265 + "hash": "sha256-KMY5DfJnDeIsa13DpqvyN8NkReZEMAFnlmNglVoFIXI=" 1266 + }, 1267 + { 1268 + "pname": "System.Collections.Immutable", 1269 + "version": "7.0.0", 1270 + "hash": "sha256-9an2wbxue2qrtugYES9awshQg+KfJqajhnhs45kQIdk=" 1271 + }, 1272 + { 1273 + "pname": "System.Composition", 1274 + "version": "7.0.0", 1275 + "hash": "sha256-YjhxuzuVdAzRBHNQy9y/1ES+ll3QtLcd2o+o8wIyMao=" 1276 + }, 1277 + { 1278 + "pname": "System.Composition.AttributedModel", 1279 + "version": "7.0.0", 1280 + "hash": "sha256-3s52Dyk2J66v/B4LLYFBMyXl0I8DFDshjE+sMjW4ubM=" 1281 + }, 1282 + { 1283 + "pname": "System.Composition.Convention", 1284 + "version": "7.0.0", 1285 + "hash": "sha256-N4MkkBXSQkcFKsEdcSe6zmyFyMmFOHmI2BNo3wWxftk=" 1286 + }, 1287 + { 1288 + "pname": "System.Composition.Hosting", 1289 + "version": "7.0.0", 1290 + "hash": "sha256-7liQGMaVKNZU1iWTIXvqf0SG8zPobRoLsW7q916XC3M=" 1291 + }, 1292 + { 1293 + "pname": "System.Composition.Runtime", 1294 + "version": "7.0.0", 1295 + "hash": "sha256-Oo1BxSGLETmdNcYvnkGdgm7JYAnQmv1jY0gL0j++Pd0=" 1296 + }, 1297 + { 1298 + "pname": "System.Composition.TypedParts", 1299 + "version": "7.0.0", 1300 + "hash": "sha256-6ZzNdk35qQG3ttiAi4OXrihla7LVP+y2fL3bx40/32s=" 1301 + }, 1302 + { 1303 + "pname": "System.Console", 1304 + "version": "4.3.0", 1305 + "hash": "sha256-Xh3PPBZr0pDbDaK8AEHbdGz7ePK6Yi1ZyRWI1JM6mbo=" 1306 + }, 1307 + { 1308 + "pname": "System.Diagnostics.Debug", 1309 + "version": "4.3.0", 1310 + "hash": "sha256-fkA79SjPbSeiEcrbbUsb70u9B7wqbsdM9s1LnoKj0gM=" 1311 + }, 1312 + { 1313 + "pname": "System.Diagnostics.DiagnosticSource", 1314 + "version": "4.3.0", 1315 + "hash": "sha256-OFJRb0ygep0Z3yDBLwAgM/Tkfs4JCDtsNhwDH9cd1Xw=" 1316 + }, 1317 + { 1318 + "pname": "System.Diagnostics.DiagnosticSource", 1319 + "version": "6.0.0", 1320 + "hash": "sha256-RY9uWSPdK2fgSwlj1OHBGBVo3ZvGQgBJNzAsS5OGMWc=" 1321 + }, 1322 + { 1323 + "pname": "System.Diagnostics.EventLog", 1324 + "version": "9.0.10", 1325 + "hash": "sha256-Nl5DqIAwczE10eWNlVz1UpAVO668eNdhyWq+Rfw+QI0=" 1326 + }, 1327 + { 1328 + "pname": "System.Diagnostics.Tools", 1329 + "version": "4.3.0", 1330 + "hash": "sha256-gVOv1SK6Ape0FQhCVlNOd9cvQKBvMxRX9K0JPVi8w0Y=" 1331 + }, 1332 + { 1333 + "pname": "System.Diagnostics.Tracing", 1334 + "version": "4.3.0", 1335 + "hash": "sha256-hCETZpHHGVhPYvb4C0fh4zs+8zv4GPoixagkLZjpa9Q=" 1336 + }, 1337 + { 1338 + "pname": "System.Drawing.Common", 1339 + "version": "9.0.7", 1340 + "hash": "sha256-GRiTUzguCr8o3V9whhoKvW16NCA08mdYO1rViJiDvvo=" 1341 + }, 1342 + { 1343 + "pname": "System.Formats.Asn1", 1344 + "version": "8.0.1", 1345 + "hash": "sha256-may/Wg+esmm1N14kQTG4ESMBi+GQKPp0ZrrBo/o6OXM=" 1346 + }, 1347 + { 1348 + "pname": "System.Globalization", 1349 + "version": "4.3.0", 1350 + "hash": "sha256-caL0pRmFSEsaoeZeWN5BTQtGrAtaQPwFi8YOZPZG5rI=" 1351 + }, 1352 + { 1353 + "pname": "System.Globalization.Calendars", 1354 + "version": "4.3.0", 1355 + "hash": "sha256-uNOD0EOVFgnS2fMKvMiEtI9aOw00+Pfy/H+qucAQlPc=" 1356 + }, 1357 + { 1358 + "pname": "System.Globalization.Extensions", 1359 + "version": "4.3.0", 1360 + "hash": "sha256-mmJWA27T0GRVuFP9/sj+4TrR4GJWrzNIk2PDrbr7RQk=" 1361 + }, 1362 + { 1363 + "pname": "System.IdentityModel.Tokens.Jwt", 1364 + "version": "8.13.0", 1365 + "hash": "sha256-2nqEzhLuxq9az4FYh3pJkSesM/HdHIKMtGXQdfhkllE=" 1366 + }, 1367 + { 1368 + "pname": "System.IO", 1369 + "version": "4.3.0", 1370 + "hash": "sha256-ruynQHekFP5wPrDiVyhNiRIXeZ/I9NpjK5pU+HPDiRY=" 1371 + }, 1372 + { 1373 + "pname": "System.IO.Abstractions", 1374 + "version": "22.0.15", 1375 + "hash": "sha256-2deBvDALOzd+BAnhdbnR7ZPjChE71HPv7w61/2tfYOg=" 1376 + }, 1377 + { 1378 + "pname": "System.IO.Compression", 1379 + "version": "4.3.0", 1380 + "hash": "sha256-f5PrQlQgj5Xj2ZnHxXW8XiOivaBvfqDao9Sb6AVinyA=" 1381 + }, 1382 + { 1383 + "pname": "System.IO.Compression.ZipFile", 1384 + "version": "4.3.0", 1385 + "hash": "sha256-WQl+JgWs+GaRMeiahTFUbrhlXIHapzcpTFXbRvAtvvs=" 1386 + }, 1387 + { 1388 + "pname": "System.IO.FileSystem", 1389 + "version": "4.3.0", 1390 + "hash": "sha256-vNIYnvlayuVj0WfRfYKpDrhDptlhp1pN8CYmlVd2TXw=" 1391 + }, 1392 + { 1393 + "pname": "System.IO.FileSystem.Primitives", 1394 + "version": "4.3.0", 1395 + "hash": "sha256-LMnfg8Vwavs9cMnq9nNH8IWtAtSfk0/Fy4s4Rt9r1kg=" 1396 + }, 1397 + { 1398 + "pname": "System.IO.Pipelines", 1399 + "version": "7.0.0", 1400 + "hash": "sha256-W2181khfJUTxLqhuAVRhCa52xZ3+ePGOLIPwEN8WisY=" 1401 + }, 1402 + { 1403 + "pname": "System.IO.Pipelines", 1404 + "version": "8.0.0", 1405 + "hash": "sha256-LdpB1s4vQzsOODaxiKstLks57X9DTD5D6cPx8DE1wwE=" 1406 + }, 1407 + { 1408 + "pname": "System.Linq", 1409 + "version": "4.3.0", 1410 + "hash": "sha256-R5uiSL3l6a3XrXSSL6jz+q/PcyVQzEAByiuXZNSqD/A=" 1411 + }, 1412 + { 1413 + "pname": "System.Linq.Expressions", 1414 + "version": "4.3.0", 1415 + "hash": "sha256-+3pvhZY7rip8HCbfdULzjlC9FPZFpYoQxhkcuFm2wk8=" 1416 + }, 1417 + { 1418 + "pname": "System.Memory", 1419 + "version": "4.5.3", 1420 + "hash": "sha256-Cvl7RbRbRu9qKzeRBWjavUkseT2jhZBUWV1SPipUWFk=" 1421 + }, 1422 + { 1423 + "pname": "System.Net.Http", 1424 + "version": "4.3.0", 1425 + "hash": "sha256-UoBB7WPDp2Bne/fwxKF0nE8grJ6FzTMXdT/jfsphj8Q=" 1426 + }, 1427 + { 1428 + "pname": "System.Net.NameResolution", 1429 + "version": "4.3.0", 1430 + "hash": "sha256-eGZwCBExWsnirWBHyp2sSSSXp6g7I6v53qNmwPgtJ5c=" 1431 + }, 1432 + { 1433 + "pname": "System.Net.Primitives", 1434 + "version": "4.3.0", 1435 + "hash": "sha256-MY7Z6vOtFMbEKaLW9nOSZeAjcWpwCtdO7/W1mkGZBzE=" 1436 + }, 1437 + { 1438 + "pname": "System.Net.Sockets", 1439 + "version": "4.3.0", 1440 + "hash": "sha256-il7dr5VT/QWDg/0cuh+4Es2u8LY//+qqiY9BZmYxSus=" 1441 + }, 1442 + { 1443 + "pname": "System.Net.WebSockets.WebSocketProtocol", 1444 + "version": "5.1.0", 1445 + "hash": "sha256-TCcPu94+/BpZ94sTdBA20RgD+qJvMsaTOqYKN+HxZBc=" 1446 + }, 1447 + { 1448 + "pname": "System.ObjectModel", 1449 + "version": "4.3.0", 1450 + "hash": "sha256-gtmRkWP2Kwr3nHtDh0yYtce38z1wrGzb6fjm4v8wN6Q=" 1451 + }, 1452 + { 1453 + "pname": "System.Private.Uri", 1454 + "version": "4.3.0", 1455 + "hash": "sha256-fVfgcoP4AVN1E5wHZbKBIOPYZ/xBeSIdsNF+bdukIRM=" 1456 + }, 1457 + { 1458 + "pname": "System.Reflection", 1459 + "version": "4.3.0", 1460 + "hash": "sha256-NQSZRpZLvtPWDlvmMIdGxcVuyUnw92ZURo0hXsEshXY=" 1461 + }, 1462 + { 1463 + "pname": "System.Reflection.Emit", 1464 + "version": "4.3.0", 1465 + "hash": "sha256-5LhkDmhy2FkSxulXR+bsTtMzdU3VyyuZzsxp7/DwyIU=" 1466 + }, 1467 + { 1468 + "pname": "System.Reflection.Emit", 1469 + "version": "4.7.0", 1470 + "hash": "sha256-Fw/CSRD+wajH1MqfKS3Q/sIrUH7GN4K+F+Dx68UPNIg=" 1471 + }, 1472 + { 1473 + "pname": "System.Reflection.Emit.ILGeneration", 1474 + "version": "4.3.0", 1475 + "hash": "sha256-mKRknEHNls4gkRwrEgi39B+vSaAz/Gt3IALtS98xNnA=" 1476 + }, 1477 + { 1478 + "pname": "System.Reflection.Emit.Lightweight", 1479 + "version": "4.3.0", 1480 + "hash": "sha256-rKx4a9yZKcajloSZHr4CKTVJ6Vjh95ni+zszPxWjh2I=" 1481 + }, 1482 + { 1483 + "pname": "System.Reflection.Extensions", 1484 + "version": "4.3.0", 1485 + "hash": "sha256-mMOCYzUenjd4rWIfq7zIX9PFYk/daUyF0A8l1hbydAk=" 1486 + }, 1487 + { 1488 + "pname": "System.Reflection.Metadata", 1489 + "version": "7.0.0", 1490 + "hash": "sha256-GwAKQhkhPBYTqmRdG9c9taqrKSKDwyUgOEhWLKxWNPI=" 1491 + }, 1492 + { 1493 + "pname": "System.Reflection.Primitives", 1494 + "version": "4.3.0", 1495 + "hash": "sha256-5ogwWB4vlQTl3jjk1xjniG2ozbFIjZTL9ug0usZQuBM=" 1496 + }, 1497 + { 1498 + "pname": "System.Reflection.TypeExtensions", 1499 + "version": "4.3.0", 1500 + "hash": "sha256-4U4/XNQAnddgQIHIJq3P2T80hN0oPdU2uCeghsDTWng=" 1501 + }, 1502 + { 1503 + "pname": "System.Resources.ResourceManager", 1504 + "version": "4.3.0", 1505 + "hash": "sha256-idiOD93xbbrbwwSnD4mORA9RYi/D/U48eRUsn/WnWGo=" 1506 + }, 1507 + { 1508 + "pname": "System.Runtime", 1509 + "version": "4.3.0", 1510 + "hash": "sha256-51813WXpBIsuA6fUtE5XaRQjcWdQ2/lmEokJt97u0Rg=" 1511 + }, 1512 + { 1513 + "pname": "System.Runtime.CompilerServices.Unsafe", 1514 + "version": "6.0.0", 1515 + "hash": "sha256-bEG1PnDp7uKYz/OgLOWs3RWwQSVYm+AnPwVmAmcgp2I=" 1516 + }, 1517 + { 1518 + "pname": "System.Runtime.Extensions", 1519 + "version": "4.3.0", 1520 + "hash": "sha256-wLDHmozr84v1W2zYCWYxxj0FR0JDYHSVRaRuDm0bd/o=" 1521 + }, 1522 + { 1523 + "pname": "System.Runtime.Handles", 1524 + "version": "4.3.0", 1525 + "hash": "sha256-KJ5aXoGpB56Y6+iepBkdpx/AfaJDAitx4vrkLqR7gms=" 1526 + }, 1527 + { 1528 + "pname": "System.Runtime.InteropServices", 1529 + "version": "4.3.0", 1530 + "hash": "sha256-8sDH+WUJfCR+7e4nfpftj/+lstEiZixWUBueR2zmHgI=" 1531 + }, 1532 + { 1533 + "pname": "System.Runtime.InteropServices.RuntimeInformation", 1534 + "version": "4.3.0", 1535 + "hash": "sha256-MYpl6/ZyC6hjmzWRIe+iDoldOMW1mfbwXsduAnXIKGA=" 1536 + }, 1537 + { 1538 + "pname": "System.Runtime.Numerics", 1539 + "version": "4.3.0", 1540 + "hash": "sha256-P5jHCgMbgFMYiONvzmaKFeOqcAIDPu/U8bOVrNPYKqc=" 1541 + }, 1542 + { 1543 + "pname": "System.Security.Claims", 1544 + "version": "4.3.0", 1545 + "hash": "sha256-Fua/rDwAqq4UByRVomAxMPmDBGd5eImRqHVQIeSxbks=" 1546 + }, 1547 + { 1548 + "pname": "System.Security.Cryptography.Algorithms", 1549 + "version": "4.3.0", 1550 + "hash": "sha256-tAJvNSlczYBJ3Ed24Ae27a55tq/n4D3fubNQdwcKWA8=" 1551 + }, 1552 + { 1553 + "pname": "System.Security.Cryptography.Cng", 1554 + "version": "4.3.0", 1555 + "hash": "sha256-u17vy6wNhqok91SrVLno2M1EzLHZm6VMca85xbVChsw=" 1556 + }, 1557 + { 1558 + "pname": "System.Security.Cryptography.Csp", 1559 + "version": "4.3.0", 1560 + "hash": "sha256-oefdTU/Z2PWU9nlat8uiRDGq/PGZoSPRgkML11pmvPQ=" 1561 + }, 1562 + { 1563 + "pname": "System.Security.Cryptography.Encoding", 1564 + "version": "4.3.0", 1565 + "hash": "sha256-Yuge89N6M+NcblcvXMeyHZ6kZDfwBv3LPMDiF8HhJss=" 1566 + }, 1567 + { 1568 + "pname": "System.Security.Cryptography.OpenSsl", 1569 + "version": "4.3.0", 1570 + "hash": "sha256-DL+D2sc2JrQiB4oAcUggTFyD8w3aLEjJfod5JPe+Oz4=" 1571 + }, 1572 + { 1573 + "pname": "System.Security.Cryptography.Pkcs", 1574 + "version": "8.0.1", 1575 + "hash": "sha256-KMNIkJ3yQ/5O6WIhPjyAIarsvIMhkp26A6aby5KkneU=" 1576 + }, 1577 + { 1578 + "pname": "System.Security.Cryptography.Primitives", 1579 + "version": "4.3.0", 1580 + "hash": "sha256-fnFi7B3SnVj5a+BbgXnbjnGNvWrCEU6Hp/wjsjWz318=" 1581 + }, 1582 + { 1583 + "pname": "System.Security.Cryptography.X509Certificates", 1584 + "version": "4.3.0", 1585 + "hash": "sha256-MG3V/owDh273GCUPsGGraNwaVpcydupl3EtPXj6TVG0=" 1586 + }, 1587 + { 1588 + "pname": "System.Security.Principal", 1589 + "version": "4.3.0", 1590 + "hash": "sha256-rjudVUHdo8pNJg2EVEn0XxxwNo5h2EaYo+QboPkXlYk=" 1591 + }, 1592 + { 1593 + "pname": "System.Security.Principal.Windows", 1594 + "version": "4.3.0", 1595 + "hash": "sha256-mbdLVUcEwe78p3ZnB6jYsizNEqxMaCAWI3tEQNhRQAE=" 1596 + }, 1597 + { 1598 + "pname": "System.Text.Encoding", 1599 + "version": "4.3.0", 1600 + "hash": "sha256-GctHVGLZAa/rqkBNhsBGnsiWdKyv6VDubYpGkuOkBLg=" 1601 + }, 1602 + { 1603 + "pname": "System.Text.Encoding.Extensions", 1604 + "version": "4.3.0", 1605 + "hash": "sha256-vufHXg8QAKxHlujPHHcrtGwAqFmsCD6HKjfDAiHyAYc=" 1606 + }, 1607 + { 1608 + "pname": "System.Text.Encodings.Web", 1609 + "version": "8.0.0", 1610 + "hash": "sha256-IUQkQkV9po1LC0QsqrilqwNzPvnc+4eVvq+hCvq8fvE=" 1611 + }, 1612 + { 1613 + "pname": "System.Text.Json", 1614 + "version": "7.0.3", 1615 + "hash": "sha256-aSJZ17MjqaZNQkprfxm/09LaCoFtpdWmqU9BTROzWX4=" 1616 + }, 1617 + { 1618 + "pname": "System.Text.Json", 1619 + "version": "9.0.10", 1620 + "hash": "sha256-wqeobpRw3PqOw21q8oGvauj5BkX1pS02Cm78E6c742w=" 1621 + }, 1622 + { 1623 + "pname": "System.Text.RegularExpressions", 1624 + "version": "4.3.0", 1625 + "hash": "sha256-VLCk1D1kcN2wbAe3d0YQM/PqCsPHOuqlBY1yd2Yo+K0=" 1626 + }, 1627 + { 1628 + "pname": "System.Threading", 1629 + "version": "4.3.0", 1630 + "hash": "sha256-ZDQ3dR4pzVwmaqBg4hacZaVenQ/3yAF/uV7BXZXjiWc=" 1631 + }, 1632 + { 1633 + "pname": "System.Threading.Channels", 1634 + "version": "7.0.0", 1635 + "hash": "sha256-Cu0gjQsLIR8Yvh0B4cOPJSYVq10a+3F9pVz/C43CNeM=" 1636 + }, 1637 + { 1638 + "pname": "System.Threading.Channels", 1639 + "version": "8.0.0", 1640 + "hash": "sha256-c5TYoLNXDLroLIPnlfyMHk7nZ70QAckc/c7V199YChg=" 1641 + }, 1642 + { 1643 + "pname": "System.Threading.Tasks", 1644 + "version": "4.3.0", 1645 + "hash": "sha256-Z5rXfJ1EXp3G32IKZGiZ6koMjRu0n8C1NGrwpdIen4w=" 1646 + }, 1647 + { 1648 + "pname": "System.Threading.Tasks.Extensions", 1649 + "version": "4.3.0", 1650 + "hash": "sha256-X2hQ5j+fxcmnm88Le/kSavjiGOmkcumBGTZKBLvorPc=" 1651 + }, 1652 + { 1653 + "pname": "System.Threading.ThreadPool", 1654 + "version": "4.3.0", 1655 + "hash": "sha256-wW0QdvssRoaOfQLazTGSnwYTurE4R8FxDx70pYkL+gg=" 1656 + }, 1657 + { 1658 + "pname": "System.Threading.Timer", 1659 + "version": "4.3.0", 1660 + "hash": "sha256-pmhslmhQhP32TWbBzoITLZ4BoORBqYk25OWbru04p9s=" 1661 + }, 1662 + { 1663 + "pname": "System.Xml.ReaderWriter", 1664 + "version": "4.3.0", 1665 + "hash": "sha256-QQ8KgU0lu4F5Unh+TbechO//zaAGZ4MfgvW72Cn1hzA=" 1666 + }, 1667 + { 1668 + "pname": "System.Xml.XDocument", 1669 + "version": "4.3.0", 1670 + "hash": "sha256-rWtdcmcuElNOSzCehflyKwHkDRpiOhJJs8CeQ0l1CCI=" 1671 + }, 1672 + { 1673 + "pname": "TestableIO.System.IO.Abstractions", 1674 + "version": "22.0.15", 1675 + "hash": "sha256-6YwnBfAnsxM0lEPB2LOFQcs7d1r7CyqjDEmvUBTz+X0=" 1676 + }, 1677 + { 1678 + "pname": "TestableIO.System.IO.Abstractions.Wrappers", 1679 + "version": "22.0.15", 1680 + "hash": "sha256-KoGuXGzecpf4rTmEth4/2goVFFR9V2aj+iibfZxpR7U=" 1681 + }, 1682 + { 1683 + "pname": "Testably.Abstractions.FileSystem.Interface", 1684 + "version": "9.0.0", 1685 + "hash": "sha256-6JW+qDtqQT9StP4oTR7uO0NnmVc2xcjSZ6ds2H71wtg=" 1686 + }, 1687 + { 1688 + "pname": "VersOne.Epub", 1689 + "version": "3.3.4", 1690 + "hash": "sha256-BzUtRaxKkaG7tmXbvnWFM9vjf4g5XwhwnMUIdQzGlns=" 1691 + }, 1692 + { 1693 + "pname": "xunit.assert", 1694 + "version": "2.9.3", 1695 + "hash": "sha256-vHYOde8bd10pOmr7iTAYNtPlqHzsJl4x3t1DDuYdDCA=" 1696 + }, 1697 + { 1698 + "pname": "YamlDotNet", 1699 + "version": "16.3.0", 1700 + "hash": "sha256-4Gi8wSQ8Rsi/3+LyegJr//A83nxn2fN8LN1wvSSp39Q=" 1701 + }, 1702 + { 1703 + "pname": "ZstdSharp.Port", 1704 + "version": "0.8.5", 1705 + "hash": "sha256-+UQFeU64md0LlSf9nMXif6hHnfYEKm+WRyYd0Vo2QvI=" 1706 + } 1707 + ]
+3
packetmix/packages/kavita/nuget-deps.json.license
··· 1 + SPDX-FileCopyrightText: 2025 FreshlyBakedCake 2 + 3 + SPDX-License-Identifier: CC0-1.0
+62
packetmix/systems/teal/kavita.nix
··· 1 + # SPDX-FileCopyrightText: 2025 FreshlyBakedCake 2 + # 3 + # SPDX-License-Identifier: MIT 4 + { 5 + project, 6 + pkgs, 7 + config, 8 + lib, 9 + ... 10 + }: 11 + { 12 + disabledModules = [ "services/web-apps/kavita.nix" ]; 13 + imports = [ 14 + "${project.inputs.nixos-unstable.src}/nixos/modules/services/web-apps/kavita.nix" 15 + ]; 16 + 17 + services.kavita = { 18 + enable = true; 19 + package = project.packages.kavita.result."x86_64-linux"; 20 + tokenKeyFile = "/secrets/kavita/tokenKeyFile"; 21 + settings = { 22 + Port = 1034; 23 + OpenIdConnectSettings = { 24 + Authority = "https://idm.freshly.space/oauth2/openid/kavita"; 25 + ClientId = "kavita"; 26 + Secret = "@OIDC_SECRET@"; 27 + Enabled = true; 28 + CustomScopes = [ 29 + "groups" 30 + "openid" 31 + "profile" 32 + ]; 33 + }; 34 + }; 35 + }; 36 + 37 + systemd.services.kavita = { 38 + preStart = lib.mkAfter '' 39 + ${pkgs.replace-secret}/bin/replace-secret '@OIDC_SECRET@' \ 40 + ''${CREDENTIALS_DIRECTORY}/oidc_secret \ 41 + '${config.services.kavita.dataDir}/config/appsettings.json' 42 + ''; 43 + serviceConfig.LoadCredential = [ "OIDC_SECRET:/secrets/kavita/OIDC_SECRET" ]; 44 + }; 45 + 46 + services.nginx.enable = true; 47 + services.nginx.virtualHosts."kavita.freshly.space" = { 48 + addSSL = true; 49 + enableACME = true; 50 + acmeRoot = null; 51 + 52 + locations."/" = { 53 + proxyPass = "http://127.0.0.1:1034"; 54 + recommendedProxySettings = true; 55 + extraConfig = "proxy_http_version 1.1;"; 56 + }; 57 + }; 58 + 59 + clicks.storage.impermanence.persist.directories = [ 60 + "/var/lib/kavita" 61 + ]; 62 + }