From efbbf4b9e09e1f7e7bfc3f2ef595a91296686987 Mon Sep 17 00:00:00 2001 From: Luis Lema Date: Tue, 16 Jul 2024 21:23:22 -0500 Subject: [PATCH] Update Bouncy Castle library to fix the following vulnerabilities: - CVE-2024-30171 - CVE-2024-29857 - CVE-2024-30172 --- .../Khernet.Core.Common.csproj | 2 +- .../Engine/Khernet.Core.Common/app.config | 4 +- .../Khernet.Core.Container.csproj | 2 +- .../Khernet.Core.Data.csproj | 2 +- .../Engine/Khernet.Core.Data/app.config | 12 ++-- .../Khernet.Core.Entity.csproj | 2 +- .../Khernet.Core.Host.csproj | 2 +- .../Engine/Khernet.Core.Host/app.config | 2 +- .../Khernet.Core.Processor/AccountManager.cs | 2 +- .../Khernet.Core.Processor.csproj | 6 +- .../Engine/Khernet.Core.Processor/app.config | 2 +- .../Khernet.Core.Processor/packages.config | 2 +- .../Khernet.Core.Utility.csproj | 2 +- .../Engine/Khernet.Core.Utility/app.config | 4 +- .../Khernet.Services.Client.csproj | 2 +- .../Khernet.Services.Common.csproj | 2 +- .../Khernet.Services.Contracts.csproj | 2 +- .../Khernet.Services.Messages.csproj | 2 +- .../Khernet.Services.WCF.csproj | 2 +- Khernet.Installer/KhernetInstaller.iss | 20 +++--- .../Khernet.UI.Container.csproj | 6 +- .../Properties/AssemblyInfo.cs | 2 +- .../Properties/Settings.Designer.cs | 2 +- .../Khernet.UI.Presentation.csproj | 65 ++++++++++--------- .../Properties/AssemblyInfo.cs | 6 +- .../Properties/Settings.Designer.cs | 2 +- Khernet.UI/Khernet.UI.Presentation/app.config | 30 ++++----- .../Khernet.UI.Presentation/packages.config | 11 ++-- README.md | 19 ++++-- build.bat | 2 +- 30 files changed, 116 insertions(+), 105 deletions(-) diff --git a/Khernet.Core/Engine/Khernet.Core.Common/Khernet.Core.Common.csproj b/Khernet.Core/Engine/Khernet.Core.Common/Khernet.Core.Common.csproj index 04dd2c5..670d999 100644 --- a/Khernet.Core/Engine/Khernet.Core.Common/Khernet.Core.Common.csproj +++ b/Khernet.Core/Engine/Khernet.Core.Common/Khernet.Core.Common.csproj @@ -9,7 +9,7 @@ Properties Khernet.Core.Common Khernet.Core.Common - v4.5.2 + v4.6.1 512 diff --git a/Khernet.Core/Engine/Khernet.Core.Common/app.config b/Khernet.Core/Engine/Khernet.Core.Common/app.config index f01c346..cc6ccd1 100644 --- a/Khernet.Core/Engine/Khernet.Core.Common/app.config +++ b/Khernet.Core/Engine/Khernet.Core.Common/app.config @@ -1,4 +1,4 @@ - + - + diff --git a/Khernet.Core/Engine/Khernet.Core.Container/Khernet.Core.Container.csproj b/Khernet.Core/Engine/Khernet.Core.Container/Khernet.Core.Container.csproj index 384ec36..fef7df7 100644 --- a/Khernet.Core/Engine/Khernet.Core.Container/Khernet.Core.Container.csproj +++ b/Khernet.Core/Engine/Khernet.Core.Container/Khernet.Core.Container.csproj @@ -9,7 +9,7 @@ Properties Khernet.Core.Container Khernet.Core.Container - v4.5.2 + v4.6.1 512 true diff --git a/Khernet.Core/Engine/Khernet.Core.Data/Khernet.Core.Data.csproj b/Khernet.Core/Engine/Khernet.Core.Data/Khernet.Core.Data.csproj index 8037f92..8cb61f8 100644 --- a/Khernet.Core/Engine/Khernet.Core.Data/Khernet.Core.Data.csproj +++ b/Khernet.Core/Engine/Khernet.Core.Data/Khernet.Core.Data.csproj @@ -9,7 +9,7 @@ Properties Khernet.Core.Data Khernet.Core.Data - v4.5.2 + v4.6.1 512 diff --git a/Khernet.Core/Engine/Khernet.Core.Data/app.config b/Khernet.Core/Engine/Khernet.Core.Data/app.config index a4bcde6..7aa90c4 100644 --- a/Khernet.Core/Engine/Khernet.Core.Data/app.config +++ b/Khernet.Core/Engine/Khernet.Core.Data/app.config @@ -1,16 +1,16 @@ - + - - + + - - + + - + diff --git a/Khernet.Core/Engine/Khernet.Core.Entity/Khernet.Core.Entity.csproj b/Khernet.Core/Engine/Khernet.Core.Entity/Khernet.Core.Entity.csproj index 97b02ea..7e5991e 100644 --- a/Khernet.Core/Engine/Khernet.Core.Entity/Khernet.Core.Entity.csproj +++ b/Khernet.Core/Engine/Khernet.Core.Entity/Khernet.Core.Entity.csproj @@ -9,7 +9,7 @@ Properties Khernet.Core.Entity Khernet.Core.Entity - v4.5.2 + v4.6.1 512 diff --git a/Khernet.Core/Engine/Khernet.Core.Host/Khernet.Core.Host.csproj b/Khernet.Core/Engine/Khernet.Core.Host/Khernet.Core.Host.csproj index 4ce9349..0ffe156 100644 --- a/Khernet.Core/Engine/Khernet.Core.Host/Khernet.Core.Host.csproj +++ b/Khernet.Core/Engine/Khernet.Core.Host/Khernet.Core.Host.csproj @@ -9,7 +9,7 @@ Properties Khernet.Core.Host Khernet.Core.Host - v4.5.2 + v4.6.1 512 diff --git a/Khernet.Core/Engine/Khernet.Core.Host/app.config b/Khernet.Core/Engine/Khernet.Core.Host/app.config index d2df693..1ed787c 100644 --- a/Khernet.Core/Engine/Khernet.Core.Host/app.config +++ b/Khernet.Core/Engine/Khernet.Core.Host/app.config @@ -12,4 +12,4 @@ - + diff --git a/Khernet.Core/Engine/Khernet.Core.Processor/AccountManager.cs b/Khernet.Core/Engine/Khernet.Core.Processor/AccountManager.cs index a749b19..6e942c6 100644 --- a/Khernet.Core/Engine/Khernet.Core.Processor/AccountManager.cs +++ b/Khernet.Core/Engine/Khernet.Core.Processor/AccountManager.cs @@ -301,7 +301,7 @@ private static System.Security.Cryptography.X509Certificates.X509Certificate2 Co // Now to convert the Bouncy Castle certificate to a .NET certificate. // See http://web.archive.org/web/20100504192226/http://www.fkollmann.de/v2/post/Creating-certificates-using-BouncyCastle.aspx // ...but, basically, we create a PKCS12 store (a .PFX file) in memory, and add the public and private key to that. - var store = new Pkcs12Store(); + var store = new Pkcs12StoreBuilder().Build(); // What Bouncy Castle calls "alias" is the same as what Windows terms the "friendly name". diff --git a/Khernet.Core/Engine/Khernet.Core.Processor/Khernet.Core.Processor.csproj b/Khernet.Core/Engine/Khernet.Core.Processor/Khernet.Core.Processor.csproj index db75845..7f10820 100644 --- a/Khernet.Core/Engine/Khernet.Core.Processor/Khernet.Core.Processor.csproj +++ b/Khernet.Core/Engine/Khernet.Core.Processor/Khernet.Core.Processor.csproj @@ -9,7 +9,7 @@ Properties Khernet.Core.Processor Khernet.Core.Processor - v4.5.2 + v4.6.1 512 @@ -55,8 +55,8 @@ false - - ..\..\packages\BouncyCastle.1.8.9\lib\BouncyCastle.Crypto.dll + + ..\..\..\..\..\..\.nuget\BouncyCastle.Cryptography.2.4.0\lib\net461\BouncyCastle.Cryptography.dll ..\..\packages\Ninject.3.3.4\lib\net45\Ninject.dll diff --git a/Khernet.Core/Engine/Khernet.Core.Processor/app.config b/Khernet.Core/Engine/Khernet.Core.Processor/app.config index d2df693..1ed787c 100644 --- a/Khernet.Core/Engine/Khernet.Core.Processor/app.config +++ b/Khernet.Core/Engine/Khernet.Core.Processor/app.config @@ -12,4 +12,4 @@ - + diff --git a/Khernet.Core/Engine/Khernet.Core.Processor/packages.config b/Khernet.Core/Engine/Khernet.Core.Processor/packages.config index 879bd3f..64eda86 100644 --- a/Khernet.Core/Engine/Khernet.Core.Processor/packages.config +++ b/Khernet.Core/Engine/Khernet.Core.Processor/packages.config @@ -1,5 +1,5 @@  - + \ No newline at end of file diff --git a/Khernet.Core/Engine/Khernet.Core.Utility/Khernet.Core.Utility.csproj b/Khernet.Core/Engine/Khernet.Core.Utility/Khernet.Core.Utility.csproj index c8bc53d..13fc97a 100644 --- a/Khernet.Core/Engine/Khernet.Core.Utility/Khernet.Core.Utility.csproj +++ b/Khernet.Core/Engine/Khernet.Core.Utility/Khernet.Core.Utility.csproj @@ -9,7 +9,7 @@ Properties Khernet.Core.Utility Khernet.Core.Utility - v4.5.2 + v4.6.1 512 diff --git a/Khernet.Core/Engine/Khernet.Core.Utility/app.config b/Khernet.Core/Engine/Khernet.Core.Utility/app.config index f01c346..cc6ccd1 100644 --- a/Khernet.Core/Engine/Khernet.Core.Utility/app.config +++ b/Khernet.Core/Engine/Khernet.Core.Utility/app.config @@ -1,4 +1,4 @@ - + - + diff --git a/Khernet.Core/Services/Khernet.Services.Client/Khernet.Services.Client.csproj b/Khernet.Core/Services/Khernet.Services.Client/Khernet.Services.Client.csproj index a3bb5bc..e76bc04 100644 --- a/Khernet.Core/Services/Khernet.Services.Client/Khernet.Services.Client.csproj +++ b/Khernet.Core/Services/Khernet.Services.Client/Khernet.Services.Client.csproj @@ -9,7 +9,7 @@ Properties Khernet.Services.Client Khernet.Services.Client - v4.5.2 + v4.6.1 512 diff --git a/Khernet.Core/Services/Khernet.Services.Common/Khernet.Services.Common.csproj b/Khernet.Core/Services/Khernet.Services.Common/Khernet.Services.Common.csproj index 3c94003..50cf76d 100644 --- a/Khernet.Core/Services/Khernet.Services.Common/Khernet.Services.Common.csproj +++ b/Khernet.Core/Services/Khernet.Services.Common/Khernet.Services.Common.csproj @@ -9,7 +9,7 @@ Properties Khernet.Services.Common Khernet.Services.Common - v4.5.2 + v4.6.1 512 diff --git a/Khernet.Core/Services/Khernet.Services.Contracts/Khernet.Services.Contracts.csproj b/Khernet.Core/Services/Khernet.Services.Contracts/Khernet.Services.Contracts.csproj index 0dd2624..5d8274c 100644 --- a/Khernet.Core/Services/Khernet.Services.Contracts/Khernet.Services.Contracts.csproj +++ b/Khernet.Core/Services/Khernet.Services.Contracts/Khernet.Services.Contracts.csproj @@ -9,7 +9,7 @@ Properties Khernet.Services.Contracts Khernet.Services.Contracts - v4.5.2 + v4.6.1 512 diff --git a/Khernet.Core/Services/Khernet.Services.Messages/Khernet.Services.Messages.csproj b/Khernet.Core/Services/Khernet.Services.Messages/Khernet.Services.Messages.csproj index b07c9de..c419c99 100644 --- a/Khernet.Core/Services/Khernet.Services.Messages/Khernet.Services.Messages.csproj +++ b/Khernet.Core/Services/Khernet.Services.Messages/Khernet.Services.Messages.csproj @@ -9,7 +9,7 @@ Properties Khernet.Services.Messages Khernet.Services.Messages - v4.5.2 + v4.6.1 512 diff --git a/Khernet.Core/Services/Khernet.Services.WCF/Khernet.Services.WCF.csproj b/Khernet.Core/Services/Khernet.Services.WCF/Khernet.Services.WCF.csproj index 34066f3..f15187b 100644 --- a/Khernet.Core/Services/Khernet.Services.WCF/Khernet.Services.WCF.csproj +++ b/Khernet.Core/Services/Khernet.Services.WCF/Khernet.Services.WCF.csproj @@ -9,7 +9,7 @@ Properties Khernet.Services.WCF Khernet.Services.WCF - v4.5.2 + v4.6.1 512 diff --git a/Khernet.Installer/KhernetInstaller.iss b/Khernet.Installer/KhernetInstaller.iss index f236fe4..b7e61ef 100644 --- a/Khernet.Installer/KhernetInstaller.iss +++ b/Khernet.Installer/KhernetInstaller.iss @@ -7,7 +7,7 @@ #include #define ApplicationName "Khernet" -#define CurrentVersion "0.21.0.1" +#define CurrentVersion "0.22.0.0" #define AppDirectoryName "khernet-app" #define SQLScript "SAVE_TEXT_MESSAGE.sql" #define IzarcDirectory "izarc" @@ -20,7 +20,7 @@ [Setup] AppName={#ApplicationName} AppVersion={#CurrentVersion} -VersionInfoCopyright=Copyright © 2023 +VersionInfoCopyright=Copyright © 2024 VersionInfoVersion={#CurrentVersion} VersionInfoProductVersion={#CurrentVersion} WizardStyle=modern @@ -96,16 +96,16 @@ var installed: Boolean; // Indicates whether .NET Framework was successfully ins function InitializeSetup(): Boolean; begin - if not IsDotNetInstalled(net452, 0) then + if not IsDotNetInstalled(net461, 0) then begin if not IsAdmin() then begin - MsgBox('Khernet requires .NET Framework 4.5.2, please re-run the installer with administrative privilegies.', mbInformation, MB_OK); + MsgBox('Khernet requires .NET Framework 4.6.1, please re-run the installer with administrative privilegies.', mbInformation, MB_OK); result := false; end else begin - dotnetInstallerFile := '{tmp}\NetFramework452Installer.exe'; + dotnetInstallerFile := '{tmp}\NetFramework461Installer.exe'; result := true; end end @@ -121,7 +121,7 @@ var ResultCode: Integer; begin StatusText := WizardForm.StatusLabel.Caption; - WizardForm.StatusLabel.Caption := 'Installing .NET Framework 4.5.2. This might take a few minutes...'; + WizardForm.StatusLabel.Caption := 'Installing .NET Framework 4.6.1. This might take a few minutes...'; WizardForm.ProgressGauge.Style := npbstMarquee; try if not Exec(ExpandConstant(dotnetInstallerFile), '/passive /norestart', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then @@ -141,7 +141,7 @@ end; function PrepareToInstall(var NeedsRestart: Boolean): String; begin - if not IsDotNetInstalled(net452, 0) then + if not IsDotNetInstalled(net461, 0) then begin installed := false; InstallFramework(); @@ -151,7 +151,7 @@ begin result := ''; // Successful installation end else // Failed installation - result := 'Installation of .NET 4.5.2 failed with error: '+SysErrorMessage(rescode)+' code: '+IntToStr(rescode)+''#13#13 + result := 'Installation of .NET 4.6.1 failed with error: '+SysErrorMessage(rescode)+' code: '+IntToStr(rescode)+''#13#13 'Make sure you have administrative privilegies and internet connection.'; end; end; @@ -195,11 +195,11 @@ end; // Event fired just before the wizard is shown. procedure InitializeWizard; begin - if not IsDotNetInstalled(net452, 0) then + if not IsDotNetInstalled(net461, 0) then begin if IsAdmin() then begin - idpAddFile('https://download.microsoft.com/download/E/2/1/E21644B5-2DF2-47C2-91BD-63C560427900/NDP452-KB2901907-x86-x64-AllOS-ENU.exe', ExpandConstant(dotnetInstallerFile)); + idpAddFile('https://download.microsoft.com/download/E/4/1/E4173890-A24A-4936-9FC9-AF930FE3FA40/NDP461-KB3102436-x86-x64-AllOS-ENU.exe', ExpandConstant(dotnetInstallerFile)); idpDownloadAfter(wpReady); end end; diff --git a/Khernet.UI/Khernet.UI.Container/Khernet.UI.Container.csproj b/Khernet.UI/Khernet.UI.Container/Khernet.UI.Container.csproj index bf159ce..02d212c 100644 --- a/Khernet.UI/Khernet.UI.Container/Khernet.UI.Container.csproj +++ b/Khernet.UI/Khernet.UI.Container/Khernet.UI.Container.csproj @@ -8,7 +8,7 @@ library Khernet.UI.Container Khernet.UI.Container - v4.5.2 + v4.6.1 512 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 4 @@ -98,11 +98,11 @@ - This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}. - + + \ No newline at end of file diff --git a/Khernet.UI/Khernet.UI.Container/Properties/AssemblyInfo.cs b/Khernet.UI/Khernet.UI.Container/Properties/AssemblyInfo.cs index 4f5c2d6..50d6e1e 100644 --- a/Khernet.UI/Khernet.UI.Container/Properties/AssemblyInfo.cs +++ b/Khernet.UI/Khernet.UI.Container/Properties/AssemblyInfo.cs @@ -7,7 +7,7 @@ [assembly: AssemblyConfiguration("")] [assembly: AssemblyCompany("")] [assembly: AssemblyProduct("Khernet.UI.Resources")] -[assembly: AssemblyCopyright("Copyright © 2019")] +[assembly: AssemblyCopyright("Copyright © 2024")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] diff --git a/Khernet.UI/Khernet.UI.Container/Properties/Settings.Designer.cs b/Khernet.UI/Khernet.UI.Container/Properties/Settings.Designer.cs index 766d96a..53287b8 100644 --- a/Khernet.UI/Khernet.UI.Container/Properties/Settings.Designer.cs +++ b/Khernet.UI/Khernet.UI.Container/Properties/Settings.Designer.cs @@ -12,7 +12,7 @@ namespace Khernet.UI.Container.Properties { [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] - [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.0.3.0")] + [global::System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.VisualStudio.Editors.SettingsDesigner.SettingsSingleFileGenerator", "17.10.0.0")] internal sealed partial class Settings : global::System.Configuration.ApplicationSettingsBase { private static Settings defaultInstance = ((Settings)(global::System.Configuration.ApplicationSettingsBase.Synchronized(new Settings()))); diff --git a/Khernet.UI/Khernet.UI.Presentation/Khernet.UI.Presentation.csproj b/Khernet.UI/Khernet.UI.Presentation/Khernet.UI.Presentation.csproj index 80ac486..95e9998 100644 --- a/Khernet.UI/Khernet.UI.Presentation/Khernet.UI.Presentation.csproj +++ b/Khernet.UI/Khernet.UI.Presentation/Khernet.UI.Presentation.csproj @@ -1,5 +1,6 @@  + @@ -10,13 +11,15 @@ Properties Khernet.UI Khernet - v4.5.2 + v4.6.1 512 {60dc8134-eba5-43b8-bcc9-bb4bc16c2548};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC} 4 false + + publish\ true Disk false @@ -32,7 +35,6 @@ false true true - x86 @@ -127,25 +129,25 @@ - ..\packages\Autoupdater.NET.Official.1.7.0\lib\net45\AutoUpdater.NET.dll + ..\..\..\..\..\.nuget\Autoupdater.NET.Official.1.7.0\lib\net45\AutoUpdater.NET.dll - ..\packages\ControlzEx.3.0.2.4\lib\net45\ControlzEx.dll + ..\..\..\..\..\.nuget\ControlzEx.3.0.2.4\lib\net45\ControlzEx.dll - ..\packages\Khernet.UI.Lib.2.0.0\lib\Net452\ffme.common.dll + ..\..\..\..\..\.nuget\Khernet.UI.Lib.2.0.0\lib\Net452\ffme.common.dll - ..\packages\Khernet.UI.Lib.2.0.0\lib\Net452\ffme.win.dll + ..\..\..\..\..\.nuget\Khernet.UI.Lib.2.0.0\lib\Net452\ffme.win.dll - ..\packages\Khernet.UI.Lib.2.0.0\lib\Net452\FFmpeg.AutoGen.dll + ..\..\..\..\..\.nuget\Khernet.UI.Lib.2.0.0\lib\Net452\FFmpeg.AutoGen.dll - ..\packages\Hardcodet.NotifyIcon.Wpf.1.1.0\lib\net45\Hardcodet.NotifyIcon.Wpf.dll + ..\..\..\..\..\.nuget\Hardcodet.NotifyIcon.Wpf.1.1.0\lib\net45\Hardcodet.NotifyIcon.Wpf.dll - ..\packages\HtmlAgilityPack.1.11.37\lib\Net45\HtmlAgilityPack.dll + ..\..\..\..\..\.nuget\HtmlAgilityPack.1.11.37\lib\Net45\HtmlAgilityPack.dll False @@ -168,25 +170,22 @@ ..\..\bin\Khernet.Core\Khernet.Services.Messages.dll - ..\packages\MahApps.Metro.1.6.5\lib\net45\MahApps.Metro.dll + ..\..\..\..\..\.nuget\MahApps.Metro.1.6.5\lib\net45\MahApps.Metro.dll - ..\packages\MahApps.Metro.IconPacks.Material.4.11.0\lib\net45\MahApps.Metro.IconPacks.Core.dll + ..\..\..\..\..\.nuget\MahApps.Metro.IconPacks.Material.4.0.0\lib\net45\MahApps.Metro.IconPacks.Core.dll - ..\packages\MahApps.Metro.IconPacks.Material.4.11.0\lib\net45\MahApps.Metro.IconPacks.Material.dll + ..\..\..\..\..\.nuget\MahApps.Metro.IconPacks.Material.4.0.0\lib\net45\MahApps.Metro.IconPacks.Material.dll - ..\packages\Markdig.0.26.0\lib\net452\Markdig.dll + ..\..\..\..\..\.nuget\Markdig.0.26.0\lib\net452\Markdig.dll - ..\packages\Markdig.Wpf.0.5.0.1\lib\net452\Markdig.Wpf.dll - - - ..\packages\Microsoft.Xaml.Behaviors.Wpf.1.1.37\lib\net45\Microsoft.Xaml.Behaviors.dll + ..\..\..\..\..\.nuget\Markdig.Wpf.0.5.0.1\lib\net452\Markdig.Wpf.dll - ..\packages\Ninject.3.3.4\lib\net45\Ninject.dll + ..\..\..\..\..\.nuget\Ninject.3.3.4\lib\net45\Ninject.dll @@ -199,7 +198,7 @@ - ..\packages\System.Memory.4.5.4\lib\netstandard1.1\System.Memory.dll + ..\..\..\..\..\.nuget\System.Memory.4.5.4\lib\netstandard1.1\System.Memory.dll @@ -211,7 +210,7 @@ - ..\packages\ControlzEx.3.0.2.4\lib\net45\System.Windows.Interactivity.dll + ..\..\..\..\..\.nuget\ControlzEx.3.0.2.4\lib\net45\System.Windows.Interactivity.dll @@ -223,7 +222,7 @@ - ..\packages\VirtualizingWrapPanel.1.5.6\lib\net45\VirtualizingWrapPanel.dll + ..\..\..\..\..\.nuget\VirtualizingWrapPanel.1.5.6\lib\net45\VirtualizingWrapPanel.dll @@ -893,12 +892,6 @@ - - - {b76e3fde-f66b-405b-a523-b7e1611776c1} - Khernet.UI.Container - - False @@ -913,8 +906,14 @@ - - + + + + + + {b76e3fde-f66b-405b-a523-b7e1611776c1} + Khernet.UI.Container +