From d33acbec7589caa1cf9f72f628f28a36aafd3012 Mon Sep 17 00:00:00 2001 From: Murat Cakir Date: Thu, 5 Nov 2020 22:59:45 +0100 Subject: [PATCH 001/230] More detailed error logging for consumer invokers --- src/Libraries/SmartStore.Core/Events/ConsumerInvoker.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Libraries/SmartStore.Core/Events/ConsumerInvoker.cs b/src/Libraries/SmartStore.Core/Events/ConsumerInvoker.cs index 7a2dcf0aca..e382cae1b3 100644 --- a/src/Libraries/SmartStore.Core/Events/ConsumerInvoker.cs +++ b/src/Libraries/SmartStore.Core/Events/ConsumerInvoker.cs @@ -101,11 +101,11 @@ private void HandleException(Exception ex, ConsumerDescriptor descriptor) { if (ex is AggregateException ae) { - ae.InnerExceptions.Each(x => Logger.Error(x)); + ae.InnerExceptions.Each(x => Logger.Error(x, $"Error invoking event consumer '{descriptor}'.")); } else { - Logger.Error(ex); + Logger.Error(ex, $"Error invoking event consumer '{descriptor}'."); } if (!descriptor.FireForget) From f6fdb1959892b0d50abebb5dfd29c9714bab20e7 Mon Sep 17 00:00:00 2001 From: Marcel Schmidt Date: Thu, 5 Nov 2020 23:51:56 +0100 Subject: [PATCH 002/230] Blog > removed redundant bracket --- src/Presentation/SmartStore.Web/Views/Blog/BlogPost.cshtml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/Presentation/SmartStore.Web/Views/Blog/BlogPost.cshtml b/src/Presentation/SmartStore.Web/Views/Blog/BlogPost.cshtml index 7437e37352..4db21ea5c0 100644 --- a/src/Presentation/SmartStore.Web/Views/Blog/BlogPost.cshtml +++ b/src/Presentation/SmartStore.Web/Views/Blog/BlogPost.cshtml @@ -71,8 +71,7 @@ - } - } + } @{ Html.RenderWidget("blogpost_page_before_comments"); } From a064799da45e81183d6593f7429cd2516a84d3ff Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Fri, 6 Nov 2020 11:26:26 +0100 Subject: [PATCH 003/230] Fixes missing links for blogs and news with a different language --- ...202010121359446_RemoveBlogAndNewsLanguage.cs | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/src/Libraries/SmartStore.Data/Migrations/202010121359446_RemoveBlogAndNewsLanguage.cs b/src/Libraries/SmartStore.Data/Migrations/202010121359446_RemoveBlogAndNewsLanguage.cs index 2d3ec0f116..53fcbb0cdc 100644 --- a/src/Libraries/SmartStore.Data/Migrations/202010121359446_RemoveBlogAndNewsLanguage.cs +++ b/src/Libraries/SmartStore.Data/Migrations/202010121359446_RemoveBlogAndNewsLanguage.cs @@ -39,8 +39,15 @@ public override void Up() public override void Down() { - AddColumn("dbo.News", "LanguageId", c => c.Int(nullable: false)); - AddColumn("dbo.BlogPost", "LanguageId", c => c.Int(nullable: false)); + var defaultLanguageId = 1; + + if (DataSettings.DatabaseIsInstalled()) + { + defaultLanguageId = new SmartObjectContext().Set().Select(x => x.Id).FirstOrDefault(); + } + + AddColumn("dbo.News", "LanguageId", c => c.Int(nullable: false, defaultValue: defaultLanguageId)); + AddColumn("dbo.BlogPost", "LanguageId", c => c.Int(nullable: false, defaultValue: defaultLanguageId)); CreateIndex("dbo.News", "LanguageId"); CreateIndex("dbo.BlogPost", "LanguageId"); AddForeignKey("dbo.News", "LanguageId", "dbo.Language", "Id", cascadeDelete: true); @@ -56,9 +63,7 @@ public void Seed(SmartObjectContext context) return; } - // Migrate URL records of BlogPost and NewsItem that are stored with primary language ID. Must be 0 for "Standard" now. - var defaultLangId = context.Set().AsNoTracking().OrderBy(x => x.DisplayOrder).First().Id; - + // URL records of BlogPost and NewsItem must now have 0 for "Standard" as language ID otherwise no link is created. using (var scope = new DbContextScope(ctx: context, validateOnSave: false, hooksEnabled: false, autoCommit: false)) { var urlRecords = context.Set(); @@ -84,7 +89,7 @@ public void Seed(SmartObjectContext context) if (!kvp.Value.Any(x => x.LanguageId == 0)) { // Migrate active and inactive slugs. - kvp.Value.Where(x => x.LanguageId == defaultLangId).Each(x => x.LanguageId = 0); + kvp.Value.Where(x => x.LanguageId != 0).Each(x => x.LanguageId = 0); } } From e9dc2a257ca788994105aeb0e6dddea7fc4a2495 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Fri, 6 Nov 2020 11:21:00 +0100 Subject: [PATCH 004/230] Corrected changelog typo --- changelog.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/changelog.md b/changelog.md index 6846e51026..f80e43947d 100644 --- a/changelog.md +++ b/changelog.md @@ -5,8 +5,8 @@ * **Web API:** now supports the widely extended version 4 of OData. New endpoints for uploading and managing media files have been added to the API. * (NEW) **Delivery dates:** product info now shows estimated delivery date (exact date, range, *Not before*, *Not later than*). Merchant can enter optional Min/Max delivery days and also specify business hours. * (DEV) [VS Extension](https://marketplace.visualstudio.com/items?itemName=SmartStoreAG.Smartstore) to create plugins. Helps developing plugins for Smartstore by creating the basic structure of a Smartstore plugin with all the required files. -* **OCI** provides connection to eprocurement systems via industry standard OCI (commercial plugin) -* **cXmlPunchout** provides connection to eprocurement systems via industry standard cXmlPunchout (commercial plugin) +* **OCI** provides connection to e-procurement systems via industry standard OCI (commercial plugin) +* **cXmlPunchout** provides connection to e-procurement systems via industry standard cXmlPunchout (commercial plugin) * **Video** support in product media gallery. * **Media Gallery** displays a multitude of media files in various styles as Page Builder block. * (PERF) **~10% faster page rendering** speed thanks to better eager loading & caching strategies From 94414d29c84ac61e43589308ead55e7843c4bfb6 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Fri, 6 Nov 2020 11:21:46 +0100 Subject: [PATCH 005/230] Close menu after successful post --- .../Administration/Views/Shared/Partials/Navbar.cshtml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Presentation/SmartStore.Web/Administration/Views/Shared/Partials/Navbar.cshtml b/src/Presentation/SmartStore.Web/Administration/Views/Shared/Partials/Navbar.cshtml index d80730222e..244384dca3 100644 --- a/src/Presentation/SmartStore.Web/Administration/Views/Shared/Partials/Navbar.cshtml +++ b/src/Presentation/SmartStore.Web/Administration/Views/Shared/Partials/Navbar.cshtml @@ -163,6 +163,7 @@ data: { "__RequestVerificationToken": token }, callbackSuccess: function (data) { displayNotification(data.Message, 'success'); + $(e.target).closest(".dropdown").dropdown('toggle'); } }); From 3e79d5181e989392ad8b2231f5378d50544cb9fd Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Fri, 6 Nov 2020 12:19:37 +0100 Subject: [PATCH 006/230] Fixed captcha error on login page --- src/Presentation/SmartStore.Web/Views/Customer/Login.cshtml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Presentation/SmartStore.Web/Views/Customer/Login.cshtml b/src/Presentation/SmartStore.Web/Views/Customer/Login.cshtml index 5269f89a08..fccf203807 100644 --- a/src/Presentation/SmartStore.Web/Views/Customer/Login.cshtml +++ b/src/Presentation/SmartStore.Web/Views/Customer/Login.cshtml @@ -100,7 +100,7 @@ - @if (!Model.DisplayCaptcha) + @if (Model.DisplayCaptcha) {
@Html.Raw(Html.GenerateCaptcha()) From 6e5b2b34e3dbf2f2560a5d418ec8e826800b779d Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Fri, 6 Nov 2020 13:41:00 +0100 Subject: [PATCH 007/230] Catches InvalidOperationException if customer last activity date is updated on the first page load after a migration --- .../Filters/CustomerLastActivityAttribute.cs | 19 ++++++++--- .../Filters/StoreIpAddressAttribute.cs | 26 ++++++++++---- .../Filters/StoreLastVisitedPageAttribute.cs | 34 ++++++++++--------- 3 files changed, 52 insertions(+), 27 deletions(-) diff --git a/src/Presentation/SmartStore.Web.Framework/Filters/CustomerLastActivityAttribute.cs b/src/Presentation/SmartStore.Web.Framework/Filters/CustomerLastActivityAttribute.cs index 8d797b1dcd..d0ecd40b0c 100644 --- a/src/Presentation/SmartStore.Web.Framework/Filters/CustomerLastActivityAttribute.cs +++ b/src/Presentation/SmartStore.Web.Framework/Filters/CustomerLastActivityAttribute.cs @@ -27,11 +27,22 @@ public virtual void OnActionExecuting(ActionExecutingContext filterContext) var customer = WorkContext.Value.CurrentCustomer; - // update last activity date - if (!customer.IsSystemAccount && customer.LastActivityDateUtc.AddMinutes(1.0) < DateTime.UtcNow) + // Update last activity date. + if (customer != null && !customer.Deleted && !customer.IsSystemAccount && customer.LastActivityDateUtc.AddMinutes(1.0) < DateTime.UtcNow) { - customer.LastActivityDateUtc = DateTime.UtcNow; - CustomerService.Value.UpdateCustomer(customer); + try + { + customer.LastActivityDateUtc = DateTime.UtcNow; + CustomerService.Value.UpdateCustomer(customer); + } + catch (InvalidOperationException ioe) + { + // The exception may occur on the first call after a migration. + if (!ioe.IsAlreadyAttachedEntityException()) + { + throw; + } + } } } diff --git a/src/Presentation/SmartStore.Web.Framework/Filters/StoreIpAddressAttribute.cs b/src/Presentation/SmartStore.Web.Framework/Filters/StoreIpAddressAttribute.cs index 8d04cee8c9..aa57f5c33f 100644 --- a/src/Presentation/SmartStore.Web.Framework/Filters/StoreIpAddressAttribute.cs +++ b/src/Presentation/SmartStore.Web.Framework/Filters/StoreIpAddressAttribute.cs @@ -34,16 +34,28 @@ public virtual void OnActionExecuting(ActionExecutingContext filterContext) return; // Update IP address. - var webHelper = WebHelper.Value; - var currentIpAddress = webHelper.GetCurrentIpAddress(); - if (!String.IsNullOrEmpty(currentIpAddress)) + var currentIpAddress = WebHelper.Value.GetCurrentIpAddress(); + + if (!string.IsNullOrEmpty(currentIpAddress)) { var customer = WorkContext.Value.CurrentCustomer; - if (customer != null && !currentIpAddress.Equals(customer.LastIpAddress, StringComparison.InvariantCultureIgnoreCase)) + + if (customer != null && !customer.Deleted && !customer.IsSystemAccount && + !currentIpAddress.Equals(customer.LastIpAddress, StringComparison.InvariantCultureIgnoreCase)) { - var customerService = CustomerService.Value; - customer.LastIpAddress = currentIpAddress; - customerService.UpdateCustomer(customer); + try + { + customer.LastIpAddress = currentIpAddress; + CustomerService.Value.UpdateCustomer(customer); + } + catch (InvalidOperationException ioe) + { + // The exception may occur on the first call after a migration. + if (!ioe.IsAlreadyAttachedEntityException()) + { + throw; + } + } } } } diff --git a/src/Presentation/SmartStore.Web.Framework/Filters/StoreLastVisitedPageAttribute.cs b/src/Presentation/SmartStore.Web.Framework/Filters/StoreLastVisitedPageAttribute.cs index 1bbb6abd78..a9392a363c 100644 --- a/src/Presentation/SmartStore.Web.Framework/Filters/StoreLastVisitedPageAttribute.cs +++ b/src/Presentation/SmartStore.Web.Framework/Filters/StoreLastVisitedPageAttribute.cs @@ -3,7 +3,6 @@ using SmartStore.Core; using SmartStore.Core.Data; using SmartStore.Core.Domain.Customers; -using SmartStore.Core.Logging; using SmartStore.Services.Common; using SmartStore.Services.Customers; @@ -17,7 +16,6 @@ public class StoreLastVisitedPageAttribute : FilterAttribute, IActionFilter public Lazy GenericAttributeService { get; set; } public Lazy UserAgent { get; set; } public Lazy CustomerService { get; set; } - public Lazy Logger { get; set; } public virtual void OnActionExecuting(ActionExecutingContext filterContext) { @@ -46,31 +44,35 @@ public virtual void OnActionExecuting(ActionExecutingContext filterContext) var pageUrl = WebHelper.Value.GetThisPageUrl(true); var userAgent = UserAgent.Value.RawValue; - try + if (pageUrl.HasValue()) { - if (pageUrl.HasValue()) + var previousPageUrl = customer.GetAttribute(SystemCustomerAttributeNames.LastVisitedPage); + if (!pageUrl.IsCaseInsensitiveEqual(previousPageUrl)) { - var previousPageUrl = customer.GetAttribute(SystemCustomerAttributeNames.LastVisitedPage); - if (!pageUrl.IsCaseInsensitiveEqual(previousPageUrl)) - { - GenericAttributeService.Value.SaveAttribute(customer, SystemCustomerAttributeNames.LastVisitedPage, pageUrl); - } + GenericAttributeService.Value.SaveAttribute(customer, SystemCustomerAttributeNames.LastVisitedPage, pageUrl); } + } - if (userAgent.HasValue()) + if (userAgent.HasValue()) + { + var previousUserAgent = customer.LastUserAgent; + if (!userAgent.IsCaseInsensitiveEqual(previousUserAgent)) { - var previousUserAgent = customer.LastUserAgent; - if (!userAgent.IsCaseInsensitiveEqual(previousUserAgent)) + try { customer.LastUserAgent = userAgent; CustomerService.Value.UpdateCustomer(customer); } + catch (InvalidOperationException ioe) + { + // The exception may occur on the first call after a migration. + if (!ioe.IsAlreadyAttachedEntityException()) + { + throw; + } + } } } - catch (Exception ex) - { - Logger?.Value?.Error(ex); - } } public virtual void OnActionExecuted(ActionExecutedContext filterContext) From 09061c825e492fa9881c8d686d58a58c2a5654d6 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Fri, 6 Nov 2020 17:25:07 +0100 Subject: [PATCH 008/230] Fixed antiforgery problem with apply to remaining option --- .../SmartStore.Web/Scripts/smartstore.dropzoneWrapper.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Presentation/SmartStore.Web/Scripts/smartstore.dropzoneWrapper.js b/src/Presentation/SmartStore.Web/Scripts/smartstore.dropzoneWrapper.js index 1ff3797ff6..6b81937736 100644 --- a/src/Presentation/SmartStore.Web/Scripts/smartstore.dropzoneWrapper.js +++ b/src/Presentation/SmartStore.Web/Scripts/smartstore.dropzoneWrapper.js @@ -179,7 +179,7 @@ formData.append("duplicateFileHandling", enumId); } - if (token !== "") + if (token !== "" && !formData.get("__RequestVerificationToken")) formData.append("__RequestVerificationToken", token); if (file.fullPath) { @@ -203,6 +203,9 @@ }); el.on("sendingmultiple", function (files, xhr, formData) { + if (token !== "" && !formData.get("__RequestVerificationToken")) + formData.append("__RequestVerificationToken", token); + logEvent("sendingmultiple", files, xhr, formData); }); From 9407e60f84361306fc774db4de6322ef250f8364 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Fri, 6 Nov 2020 17:25:59 +0100 Subject: [PATCH 009/230] Changed link to current C++ download in README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 42ca308b5f..b45617f1fa 100644 --- a/README.md +++ b/README.md @@ -138,7 +138,7 @@ NOTE: Smartstore 4 requires [Visual C++ Redistributable für Visual Studio 2015] * IIS 7+ * ASP.NET 4.5+ * MS SQL Server 2008 Express (or higher) OR MS SQL Server Compact 4 -* Visual C++ Redistributable für Visual Studio 2015 ([Download](https://www.microsoft.com/en-US/download/details.aspx?id=52685)) +* Visual C++ Redistributable für Visual Studio 2015-2019 ([Download](https://support.microsoft.com/en-us/help/2977003/the-latest-supported-visual-c-downloads)) * Full Trust From 659d1e030340f30d0988c90d8c6afe0216345105 Mon Sep 17 00:00:00 2001 From: Marcel Schmidt Date: Fri, 6 Nov 2020 23:37:49 +0100 Subject: [PATCH 010/230] Compare > display remove button as 'x'-icon with text as title tooltip --- .../SmartStore.Web/Views/Catalog/CompareProducts.cshtml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Presentation/SmartStore.Web/Views/Catalog/CompareProducts.cshtml b/src/Presentation/SmartStore.Web/Views/Catalog/CompareProducts.cshtml index ed493a1659..c3326e98d5 100644 --- a/src/Presentation/SmartStore.Web/Views/Catalog/CompareProducts.cshtml +++ b/src/Presentation/SmartStore.Web/Views/Catalog/CompareProducts.cshtml @@ -95,8 +95,10 @@
} From 6b26bd4c8d766cf8934aad9c1b98f5f360068bc9 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Mon, 9 Nov 2020 11:26:18 +0100 Subject: [PATCH 011/230] Minor html formatting fix for install seed data --- .../Setup/SeedData/InvariantSeedData.Products.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Libraries/SmartStore.Data/Setup/SeedData/InvariantSeedData.Products.cs b/src/Libraries/SmartStore.Data/Setup/SeedData/InvariantSeedData.Products.cs index d504ad951a..1886ae9f64 100644 --- a/src/Libraries/SmartStore.Data/Setup/SeedData/InvariantSeedData.Products.cs +++ b/src/Libraries/SmartStore.Data/Setup/SeedData/InvariantSeedData.Products.cs @@ -3597,7 +3597,7 @@ public IList Products() Sku = "Microsoft-xbox1s", Name = "Xbox One S 500 GB Konsole", ShortDescription = "Genieße über 100 Spiele, die es nur für die Konsole gibt, sowie eine ständig größer werdende Bibliothek an Xbox 360-Spielen auf der Xbox One S im neuen Design – der einzigen Konsole mit 4K Ultra HD Blu-ray, 4K-Videostreaming und HDR. Streame deine Lieblingsfilme und -sendungen in atemberaubendem 4K Ultra HD. Spiele Blockbuster wie Gears of War 4 und Battlefield 1 mit Freunden auf Xbox Live, dem schnellsten und zuverlässigsten Gaming-Netzwerk.", - FullDescription = "
  • Die ultimativen Spiele und 4K-Entertainment-System.
  • 40 % kompaktere Konsole
    Lasse dich nicht von der Größe täuschen. Mit integriertem Netzteil und bis zu 2 TB Speicherplatz ist die Xbox One S die fortschrittlichste Xbox überhaupt.
  • Der beste Controller - jetzt noch besser
    Der neue Xbox Wireless Controller bietet ein schlankes, optimiertes Design, texturierte Grip - Fläche und Bluetooth zum Spielen auf Windows 10 Geräten. Genieße individuelle Tastenbelegung und verbesserte drahtlose Reichweite und stecke jeden kompatiblen Kopfhörer mit der 3, 5 mm Stereo - Headset - Buchse ein.
", + FullDescription = "
  • Die ultimativen Spiele und 4K-Entertainment-System.
  • 40 % kompaktere Konsole
    Lasse dich nicht von der Größe täuschen. Mit integriertem Netzteil und bis zu 2 TB Speicherplatz ist die Xbox One S die fortschrittlichste Xbox überhaupt.
  • Der beste Controller - jetzt noch besser
    Der neue Xbox Wireless Controller bietet ein schlankes, optimiertes Design, texturierte Grip - Fläche und Bluetooth zum Spielen auf Windows 10 Geräten. Genieße individuelle Tastenbelegung und verbesserte drahtlose Reichweite und stecke jeden kompatiblen Kopfhörer mit der 3, 5 mm Stereo - Headset - Buchse ein.
", ProductTemplateId = productTemplate.Id, AllowCustomerReviews = true, Published = true, From 9e6a37440d8cbd4310cd71108dd6c4937e4385a0 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Mon, 9 Nov 2020 13:37:33 +0100 Subject: [PATCH 012/230] API: no need to copy assemblies that are also referenced by the framework project --- src/Plugins/SmartStore.WebApi/SmartStore.WebApi.csproj | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Plugins/SmartStore.WebApi/SmartStore.WebApi.csproj b/src/Plugins/SmartStore.WebApi/SmartStore.WebApi.csproj index 317f12c92f..99355d41f7 100644 --- a/src/Plugins/SmartStore.WebApi/SmartStore.WebApi.csproj +++ b/src/Plugins/SmartStore.WebApi/SmartStore.WebApi.csproj @@ -113,15 +113,15 @@ ..\..\packages\Microsoft.OData.Core.6.15.0\lib\portable-net45+win+wpa81\Microsoft.OData.Core.dll - True + False ..\..\packages\Microsoft.OData.Edm.6.15.0\lib\portable-net45+win+wpa81\Microsoft.OData.Edm.dll - True + False ..\..\packages\Microsoft.Spatial.6.15.0\lib\portable-net45+win+wpa81\Microsoft.Spatial.dll - True + False ..\..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll @@ -190,7 +190,7 @@ ..\..\packages\Microsoft.AspNet.OData.5.10.0\lib\net45\System.Web.OData.dll - True + False ..\..\packages\Microsoft.AspNet.Razor.3.2.7\lib\net45\System.Web.Razor.dll From d02dea6c3f4a4ca695004003d781de12a6920630 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Mon, 9 Nov 2020 11:58:09 +0100 Subject: [PATCH 013/230] Updated VS extension for 4.1.0 --- .../SmartStore.VSIXProject.vsix | Bin 302748 -> 136867 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/Tools/SmartStore.VS.Extensions/SmartStore.VSIXProject.vsix b/src/Tools/SmartStore.VS.Extensions/SmartStore.VSIXProject.vsix index 3e7ea256c2b299d64e1c0e7e5f2108e9672e4d02..07654a7809f32c3dd09e46d40d3f9f4c926a4b8e 100644 GIT binary patch delta 24985 zcmcJ&c_38ZAOC;v%ovP)2_YtXvL{LH9j@65gNh@Av!XH}B7!$2rflyv{x6+;h)4bM-lPQ}j$0kEES7nL@+R zM{%96eP154axE8zt<90-!*TsYMf{Rrz?R^RzW($8CS#MgXHcF9sT3z0YU$-YCrgur zP$q_XaSG;xWANqJZNX&|rKsl>-qAAG5ygVjiYd_fa2*VL34z1IYE^&Y8>$xBCmK%_ zcPYvrEFTvc5zQ9(DXm;vt?3E)tPbFpNS{6U8tZrhbql9w|wL#ZVX{ zsqtVK6(a@0B~T+JAVwX-#B^|sAIbzx1S5qbl{OQjs*CB6FmDpFP3U@w`+4QL7a$>A zIx!3Ul7wF`@j0&&_b14W^dVj)Ryp`b3L=H;L2(RmupS92Ww>}qIHp1wW9qaql{`+B zN2(MmfjUm5kEz__)al@74JU>x9V=J?B_=9C8K-RARKK8(>U%91Bo`-lD0f8$+L>R+nVRplEd%I3x^O z0E5mF!N?kXq;NFW#92e+nYaXvsv!s&kiw89iX)NLpo51qa$$+6vMA#d$WBs|gP1_* zX&Q|b2u5g;&;t}wAoM3K5^4ip=tEj08aE>%7@0#h!3(QXq6KEfS585fw6wdQq>Bm{b1eg?n%`8yZ3*+0eKlyewKI>eLY#_4QjQaFlaK#gh8 z$WU8AIBHsYJlu|S3lfF}Ld9tesPSkN^CI*)1L{30$Xm-x214a&45;>~D8Yb=j|P~< zC<{~{2`p5;Bm=HsG@3L-g|4Os!j;e%a1BUDohr$Is~8Q)^UE7fs0&KLEE`uBB*>e} z3rwiXa5*D&A+oR@jjIeAF!B!a`V&eDqj}5>3ec6IujJ=Vu!MA`+Bicy<%E)v$Xq?HWF-8r#vyXcjTVk>w&7Z{pm$MdxY`pN z2lkV89$hla3LB1%t8#vkmf{R+eObCn&|FP{96a<*7_j3Pdnq4jRn|18w_+ z`l7;^vXE?au0g`^K$|k5laMa2Hd=9tz z8}P3I#Ui(jt*}m{IB6n z6reZSP((IlfEaLSE=3EAv7SZ&uqHQoj3J#lf1EWUq3@(IhD7?wabt|g<~nL^%-G0` zHv?mhGmRECVA^J~X{0m5#+fD(T1_&IM0)->(?qs}ai)=CH?ojGKL}PPSts;o zvl$Y`tfQ6am~|A8cVN-)Oty|9m|MnKM*{uKf2|WbdP3H{eN>qJg-loQON=OGfttfTe)ShJ%5SnnNab=H`56u~?=&N>qQ*Yk_e zDUg4(*@>L_#H;v60R~wM8m(aGYr(nZ=~}o)Be5jS_iiy#Fp4 z?N?w4FlDT0R5B8oN+=cFfuq9swI*wHAxmVZjh2o!HEIT^Zw!a?5rR1EF&K0H3GyQJ z`J_p=ElMa)m!}UeFy@X+JSH0b6Pc_<<0>~XFWfq)#)LSHG4EeUf-(PJ0Jc6{lea$b zp!?V4C;%PKH@TunXF9XSnMVq-(492c30-4chZ9-D#A!=W&^5g4#ktl~iMy z5FYvmFhKW3wS@VSre;d0YKs7*a8y3SY`lW5ccOxNX`+G#)I7Y6eF`TF-R5@X(ZGv39{6z5Y^GC6`Xf* zVSC9K1~;?_76^lpN~1E+7#yC$mVl3so5I|Lid+hT;c}@AYw)X($U$&LcqGhPl;Jeo z#EB$h8N|Z81?5u1p-c)tg}Dz(;9=N61dKms1`0_qmP1g@7925dQEoLm@bE}7?2)(v z93nL&egcU{3WE|UqjKjznKDkM@QtO0iyBK!ACp-TaHmq#R*th^G8P%ZJvnauzc`-B zaohgI@lK9Q_!mc;5Qnb+>c2?-36bb>|HTPTj%)iD$2U1{@L!z3PXCJ&o)kBWS@|zgd{QLy)4#YW|Kbwk>DmIK0$6}3 zd8FeKYv_tB4Wx{}n2}+E#sjgrVmLrAYY2?UsNdljSB#6oT#j;bjT;2xa}qmolv7i3 zybR|60Yrf_aY->Mg&Dz*3ZafxD15px3m)AR@gW=ziWM;CMTmX^V{rH+n6U~93|tKk zA2%DN!*(E-e;2NlHmxY(x^cyiE|XRjY1%a;tmXJ1HOVH6;}o^ef>8ELT0QC+M6FnmEx+E*h82M zp>Hrn%T-HYKEYloB%V^x69H=&q#~l=357W(wkgbD{oq1=u!_+rH+ZPncEVLAAK($f z++gfeu?^%G@Cf`&xQ__eje-<)!Zjn@NJ3vhJ_aS^5dI@%F)qkU^Pr-;`5Uhw*3aF_ zMZ@^Hzwy$rMlR%@;`_z|#PXrQ5yIUAE)~1N>p>O7&O!!JObyq;C9rjvD<*+0p&~bt z<_gu4#h92VCJM1MOocGeO{(UmVmwfFDppTI7n9B11g;qOZK^aT&%KLF5Gx_If;*So z3YF95@}R<+F_bWTjfUzthlVmg#y#NrwvmwA1b#uRmD0*3jn&h3f!jpc1=n$ggeqFf zjjm4t%)4N}VHDCZ9Vmx}ZRPpKD~(;jQF>1dr5AxTH0(J3jdwTp5mHKHG1OgLR2H@r zilAaUsmRUZdjU}x22&V(aN<8@ANU z?*hyabSgHNgp;V)G{T)pxB-M~%#HMNoC0nh6@GsJ<2=Z9AtBe954l`~a+-?#LEOlF z#)aGxUgUNVN)HYBUlA@Bk&8^EafetOOXuYV*M!CgE)OOIE{=(TD@~FFcLw3t!Ngb) zP$MKmLMp{&K)Fgq?hYR0`jOyU!QQ7K?$&DGa$?hV~UWpmx40b5=ozuR7oOOFm)!li6kA89UXPbKB*8G zAvnf|?%A=B&Txol4{bK&w<1D2v9nx85GqncDR*Ld5F%suM?x8x5s3?X$s&RkSUzbA z%n-s#!%1(`U>svt;PH!L9r$0|l=Ls;!(~b09gADaWlExrg({%m`LO(vd_$NGi4U`a zEdnaVgldKfVJ<{y_#%WcFC%znVAyWrnuM_cA~KODp4*iqj9niIg_G7p=ODyiQp`vI0#TNQ*h~6C`7{@LAW?>!8Z$Ag4ggFV)pn(zWLziqM2ct*b~eO z(qzN<_rN9imVxpL0|R(IC_9PH+=_q3U9ksHjyD!hl$J`krwBKbaC5K_78olc0z2_b z(CauZ%SXiyKvlMYKY_{wR|Fb7end&5go3h#4{j%XIiE0=ird4Loq||4D0jK`fm=bD zf@R_#ph7uV2X73PgI~iFu_BxoPlZ@No^-Hy2|ow^d*x+ubL zU_U!1W1Fv+H*;cq;=Y-3c}He4snaGT!mK<3#|wE}dj6EWAOm?EKaiMYXvJ-VEypY{ zhrDLP6+A1ZdtyG=X3P}Zg007bF+a=>o|g=48{7q6m^b(_T~qLRVRVS|2Kr(i;P)6y zPsai#=E&1Dc}Y@GR)TUpu)uLCC#6fo&4z?cxcP6TyI)*O%hO4$yOk~?ZOlbSr#^dgpfh9kw5Pk8W{bSZ%>Vpnf!C?;yecWpIR_}N zk>`w$%cWKPTHL4>hrwOWE`Z1$IH&o{HQQNQA?VDY< zS#15#Gjq1z3ZZ#J{QB(|w{9PBZ|OG1JpxW`{Qh{xEFZCoPh4G>3-n+^k71+l#Gogt zEOeaf5BR>suoWxKSNcBcx$thmI+Hy|sAN@xc7oPOTJ3wIK6p9q8C`vrJQibQY;TlvrSFLm8@8&|$>dj`g za-CBS{B+JauaVohtIvDQ*&(@E(SpOF6u?$tmvY%<)&whelCtDwHO|5Jov7L#Fa(yNVSsUN#Nk@PN01-3rath^hHv7V;_ieSXM|flje)biOM zjj)1xJW+S^bjUBnsZPN8r6hGx2^dxiDb#={bry5S4bImD+-eCbZ&X$LYEtY2DUcmF zMIvl@BaVEK&C#^KTw~f%T2vR5Hk-pv#APTqqIZ7gq$lEPlvl?;2XLy9Poj1C5>9_2 zo==6@h$<_=$w|W1Nx-Kk@NJxx$#@w*JaDOU62tQp=Sc-F!!b(1HE~{!PYSL`g$ayG zm*B*w;446CLlW#}sR|Mt0S>+hBs&f+DTK@m*)|7*+i6Y&@0+kNwN}eguk#tqV1CDrZ_MzEo~B3z)1+6p<9h%3a2gAmA!sld0E z6LJ)Pzr+;7*hit+7X$AA;RuCY4_pH51ug|r;X;-HHGy!z!8QTHp$2;^5Y9B%dw}+w zlWBM`9>NhlhHH}G5=@Wb(ju^cXM=sTkY}T3#md4h$8a$cC;9{~j$h%NJb}*yJUoHl zkQPVj;DZ*(SBAato1C;BulPVym-+y?Gc zVNP@gPN%}Ik9u_~Cnp1!BLSag;Qst*M_B|%Psj|%?j9~V6E+WIks}a9GY_09W24bX zhj|ZE0$l-kZz?C|EWR2S=Cqx~XHnstfZ79nbPk4qFvtBIuFWL|(jQLJIou4Cm*=1( zVTVcOlIGy&aRm}k`8>W{4pj@r!0?NEG7|V`hr-b_2Gxu|k1rw>P36>`#}AUgfX4+e z@Q0Ie0XKsp3O`=J@8Qr|S1;o7_?5yZ7jbJGf69@)j59>gD}SROcz9ErIma&JEPN41 zHVe01ycAPMi&M-M`U!o6hC#Sc9jYzpMC<=QK94!mIJn*nFhoW5)*C6acBIUi&x$Phciax;6&&C~bZqA`>Tn4W5LN*?V zuI~!IaH~7C1y?qd5TGa>KRrgf-m1 zEOb z@_~`a(M}YGT0JcE$;HVy%LV*!PRrg1gz1>=4>SWF0Gb1j0xf`7fM|{>0irpk28f!! z5r~?<2Z%2CFA!a@ICKZPU}YehV~l|IKuaLHs5QXVaMsTD0}mVzv3CI108@ZYzzpD8 zU=Gj?cn`P^_yXt-`~>s>4gl8!X>gGnfRezCKy9E85KVTzz*WFa!1ch*z(61aersSy zfhPcjRNz)%4v-1F1%xFI`yp^U5DwiiXliyJFce6GaUTYh1cn3EfGpr_ARGQ?1KbI8 z1MUI_0(S#<0`~wDfO}DfbnqMiUIrcnRsf@cb-+Ww&%hYqZ{T4dKg`6jz^TAQpb9Vv zXbemS+5%I68-W~PFz^U)A21b|2s{ov31q=NwdVzR&VcX0keU-fLDNVz^lMhz#L#U@EY(2umJcRSO{#RLW5lg&j1KTK=^$f zD+bB{ZvfSRw}7*OWx%Dta-a+FHZTBq2e<=R0gMG!0*?V70P}%Wz`MX|U?cD$@B^?0 zIKU0<{}en_xL=+@YnA~!Ap8>e9{3UX0f_Tr*hiocuoFlJegSF%zXC0Q-+-%u-N4Pj z9$*Bp7Z?Nl4m=9{2|N!R0N#S%8nIvCc>??mYzGbke*pggxoH?S1QZ9t84P`GM$|LI9Wt6a-cPg@CLE@W6b)h94{77y$+u zP!!0+M=V;{Q-G2X)&xocje%2vtAWzMjX)V-2oN?M?7cub5Pn^NT{XtO2vh*x04f5X z1L3*Mh93$rc*T;%?gNhs2qc)O)PX|4nLt$_{J_ed1B9PC*)~8epc_yd$N<7i^y~)(GteH`16%tE z0iA%>Kxd#Q5T<8#2+$Q616&I{0dxcA0bw7-E(f{;9|1jp9YA<%husU@0OS*b84)N8 z^a1JveSsE0)+X?*2G3@oCy)UQ00sb~fLnp7KqfE;2!F-Ez6}flJ_iN^TY=kvKY?LD zL1CB?ffB$7pau}$w5J-{d+MFeJ0pak$B5dHiR4KxBC0xko_0NsFxfdRl+;4Trk|Kq@u1VTLU954ZR z9heBL0ww`p0pXP(_7`9Z5LOZx2Pg_W0#pK~0u6vifmXmY;5y(j;AY@);CA2%;BH_# zFq$7cC&7~dJk2>$jPJyk6iVE{$z;u0u&%I!?*jN*!&eW!7VupJ-$3{-9r>c=jR8lY z6wk!xa2}T8s-{Wsgt`ph3i!T)F9r{e@t?o&k>=IzhT8{Ag2(46_<|SB`28pcMcj+TI{eA1MG9(dDorCy^5Esq&n^<@f?f zfN{#o@hKdK+xSd5$T#Uj9}DA@!sEB`r8w+}KHS0Aab1OyOGfs`f}H3Id^SFpQ(l2D z#639pUD!9Q=UCjuXW^clPy{bd)?Iua?#=ml7hg@%)!~@lgP?9<A3D@J~R6?Rz zoc2mw8`tMdd4M;vv@m5DT^QC1)gt}B9IbglItgsXxb!*(I_P77^x<;c;c7{kxo=8m5$Q?TOO9Fsci0&QeH9zj~zo<#z=&=zqnhy4hb>>%DZKCu z&&4?b&;R#1&gEKs8=Ouk*5Nj|WZ~92TpCxzq`*2IzTaVd%mK>7A_ftC0-y(?a86D= zE^XlhVKw-gz}f}=Scu5e3i01zH;#6D8W1N1Ven%5@SP1`Sbq^)4qc!gd}nd^U*KnO z?ZoclCfs0n450I_YJ9w#aHE1a5)?;Af=tic>aD8qz<@75{Hn>B*+DiE!sFncjDsHs zp!IGUJmk0wl2ur^XBh@xJU=@v10rSzS*!^%WBB=b`v+lW4F7H3%ph+s`gY$SAG&wg zM&Auuo(w#Uny5xXInT5VRp8PQ~{|(sHKCNBt#RBib{Ncm74?+iaq`&WNeH5tu`PkpTgDfw-CFkn8g5lAp zvh247oJySeqX37tPj`r5>~5c1JXl#s{yGZgKEF{LZa=xturX-qm%5>$&;8~t ztK_eLlN$KD$lQG8=TBYr)22B)hgr_CKUB~sp1pcMi*fz@PvzM>rDDsa<_3Qd+Aq5I zufyNL#9XsXTZ^WI6>C^SK2423{(PIdiCru6UG;217Gqnww7&JaFR>9`pMJkjUv`|Y*d8)TJPvLf+@v$!o>u5=ss7VRrA?-um7oA$6HmXpt2&=lgs9^{(6>_l_@ ziyi%ISiimb#T1y4d=mV!E!$RZ-8XPy(X`T;$(mJP90fhKdpfa(*QFk!1N9$Fel8lA zDJ*iW;M-~L<*9Wp*EN#Vl*|^e?h164MK*+C;m75vQFl|G4pnY^_?nVed?3KPM{%>Q! z#XssTMtjvvYODlhVX$f0$Lf_%?VMrEIy+BRx3o+s&M~>L|62OY*CdgFoJj4qnU~#t zUhc+wBnwinOwUw3KTYK|O(gWD)#<_2y_yfqZthM0AZWTwj%pM92PTiqWeRd2-vX%9Fk3 zv+^8!HpG}~J&MSm&anF#*T>$SCq);Sx+8SePw{~tQI!G~DH1KE{k+}g-BY{D_jS0l z^*?oUxEmFFG)3*Lm#PTOdcEA-crSy~XJQtpYogMo+&iney-DfxhQ1SR#V^w2i!%f@ zduQqA@1J@!7T5E*aewtSmUHPU1!isl8&e_pP_00>fAhbs~^9x<@~uu zPqtlj6+GQKWl2Y@pS4tU-SoV=un%PmrRaiAvspJ*tlR$MDRW5_X@y?sk&^aGvHCmI zp*z^tTEn&k;elID2Ns39oL*BmP5+xJH7alM?+xp;ID0G8Yg}`?DWOdwC+I>_pg*)V zcvYYtbk0>;Vd1KDE%~eM!J{3VTMMP$S=&^bpU@Rd*)C4$KmVZ2g)KFZ<2D##x)UUF&>ar+9d8=abfVp53pd=r;KmBQKmdw(W?kiULD? zNz&_!g3*`zzF`o926fRg^Do-9E^AH-9^9D4&F#LPt?$HY%lu{17Egb*cBK#ub~H{nVC_qR!0_>Bn)zOd9d&`x+c!+xos~bcF|y_=I;|X{2)j(*^fWd zd(Ek~sO{{0erLg6mIL?g=z20~jyTn-`qK{I*1vLP9<+bf`z}k2vJXp@W<6p z{mgh=rL4GVM_$;$ulD=P7?<~xo~Ti+Hg~J-akh&LQ}cLrQjk5Zo{S&ip;}$K_F9w0 ziK!fTWX*po=ePdu}=6d#Za=NQkf#Ic% z-~M!}{7vjT$NlLxwpGAPOa5tXVxi)jLe}M0HEPu6PjAjJe5;N}HW#0{bKvdT;Jw{o75@#&SyN=Mh6YPlU=C-7%aAC>!9 z1-6xwQ_9yegA;!tr)}Wy=lV360BLf?+Qq*W{wi?dKRnS~qZ4qw_`ogyo0&T|c(AY6 zd}5gv9Wv)8CP#QeHQNa2!(b0Cc#$VLO_h`Ip=^WF*M;`YC3ou6rurCAqkbRCI{IgN zQIa{U;quwDg_$z_lJzoEeYhazTg#dZ&3vzKgLbyvGn!-g^GW22y{l`oE6*x5IyNQT zo*#Ut)cxkpovWc$o*fP|W?pt(P77oCE!cahuBNIfp)6R6{zboW;ctbaW8!U%qIbQE zWh4X0)Tntea7!jvFDbulyr9-I!fE?+l7Bh2_0o@d?aUS5^cLoo{G8oYL%S|Ot~eW_ zu;9q&@ZiulO~q+b0%V3WpMcD!OZMI09&D)Ix|mW1rzp1_X%CYfovn{Up=3q9G_UwpXOAfITxbVp6Z$_ipU2a^2nV_UD} ztcveyPe_nYi`RFPTrTC^9K#!elPl_swK++HDFeqWT^QZ3gAJ8ir+``M&(RTUwPp;= z81TC!|H0p?%vy@h(kf7Yh7zxg44Y$LV!eG9$qjD)ydS|(Kke=xO5en&QPF*tGzbb^ z>yxeyHk{tNieK1KCdGQGn|AHWWgq-a%BrR4{szA-Ax-t(u;>?^{>Eip$E4`yN_)d; zju&M73j6Mn2if?dHoG?`-g4L46f}oD$9I%t)0wQ3KhB;FtP}Wgxo;nNa1Xx7D=Mc+^xPai#${QtrBYLxYp6d3$a^Xa9zNF9ZaH(~DYkGuTe!jDLSabs z7Zvj0LC9_PMouyNMme_7lPzqM^JInR;o{Vv!D}gkeZ45FL7gmB8UWrc4636EG^DY~T z3F{*vXz2Z+!V5C*w|2!)C?e!N7s?fy6)pFPEq2Gm3YnNsl3S|n!?!0|- zZ)}%8on8r+-zjNJL_7%V#aO2B!i$l4N3UGx;)X3Zw_-XbQG!l$?AM&SG3;-=e4@Pn zQkoa1?;L(rh`h&YrJ8SvX*2y+UW*Rqb{CuetTsjM^0Q_Lv{zuMX}0N&@z#Hx2fQt{ zX64#md=_uZuv_PH<<*&?e#d#anHj%+1y37zsA^R2)nS>J>ck5CVqI!FG}}CDMv_kU zvt|u!C_$0z<@bw!wo>QHtJf6MhBBq+_h|XYS@iM*PBEm8l!Frp~u+ zmU`?0uW@rTKVox}&L^9;S3h-Cmvc$u)s&K&<2vMX`hlUUuk0zgNQWRp8k-y%!2VED z8*eQzb7n{TbB+az71Fz;$8q|ml7Q18iCa3r-8l87-%GogB)bm0qA>qND+M26R!ve86`D}jSOPU=F z_S$1M#}!%LH0B%gH%84hcft{B`s zfCB*EF&=E6w&#yCS=pZ|wetQn#zn6%EK|K~NMYa8 zH4)TIv1S;on<4L1)MGX9qf%(?lUX4vE}Z|F^yM7(M2c#4=Y)QG$gQB797X7`#|31rL6 zn7>hdi!q(8{BbjyvM=ku-nphUk{Rg7>zVU~kcFEL9bMRXG|{%yUW;6m)hoJN^^(os zV|^-^&Rl-sCcoM1j)XiYo_9E<+SGqWl3Ikzb}{UTER_}IDHr4YoUbjx?ot};QZ5PH zY6^oV%6xdHuP^#emVBR56K8Ffm1(@zZ(ECo$knOjj2YXGrmxbwZ&kWjOJsIl!Jh8^ z;u<0MP4Glcvi-ZsO>4HJme}kwR(h<^3{irJE&@r|AiaCk4Qz^&pV7@bYpH@~?_dM`ye-?in=9Je@{lc&x z?(FNgQ(iVMv(l1puy=XfI}Z?2(jTek$O0Z;Ylw*5Ivm6O&O#wYo~z!2N0YchYcqXwsRkyhwc zK4n_}#}U!b(b6E#PAgm|?OJ}w;l|36PFWwE8udQ)>xbWunICs^!oGKFHs7PRLTB1~ zJ^!o3Svco7M{0iR4PKf#Vd@>v7l4~GtX_s$g`(yU$i^RmAg*+-5VrR~?-7cHO&Q{Tm!-{D;w zs83w^g4lS7rbmv&J3U}i9f@CFjPwJ=qu*hN!j^T>5KAHL&zLVFa=%&fV z_9@kWYOJKMtW4_*?dsrq;>;gcCY_ePu3p8u#@Xx?qfS&KF=|#n{NH#@a>z6 zmlpcs*U4nc@6g&+x00tU6_=~?bH=`uVLR_Ko$l4ww`?A~=6{D2AVlTS*tQtv``o0g zOIhbbZj6ZfEPkh|`h55DvNwJ=@2UpNNU+0oOim`-L^`D84eS-Wd%-`C6d+0E5q$e1 z@KD=kuO(?N*YE$lII60oRBNOt`}uG39J*I*k6#xeQ}%zmJs3WVk?ifaJWupqXmJd! zEK-U-C&|a4ceYb~hxnHn8c+QkurGJ8@;L=8*0<93jaAQ#(i@ZR)Z5U?j!V&{Y&AGV zD^uzlh_#U5rc-@V$4V@1j5hqxmHEDjMHK z{d_Ea?T!MCoIe)DmWLf=n3sZglLEA4sFoXd|2mahkdz=m9r=%^HtL$ z&S>P_+#7yy-Lnzd+&nKe%`5e@jo-a=XG2vCwruXZPUQYskh?*vA!JwMp&MCgV(c5b zCOY=;ywkGwvxPp}A3UP*F65joP`xI?$n#%@eYua7dp%rxe8&}y{#riOgA42ZmSbP; zVdWVw`)=Q6!Q<8BvUt5+E`4;9a)|sXxtYjy?YsQ0f^6}p3tPsBgZ}pnbQCbD~g_qS04(1v-{W>rO zHY0U@OR<(Rti1N@v)u1um$C|fX85lpeWOx&&S|6%C2K^!+bg*s;Gn-5>6;*x=abGG zdC!_oP1kcxaahT2oaEB>+}dkEW@eJkkWC@HWy?*b80dmv?N@p^coylK1eIq?yzN)k z2dOn%OSbInUYYh)w`&6h?SWq^AGM7%FDN^emhAd>L-VMZQvGU%OY4)pVtcKF(nQ#W zIwtNMAFV$w4W#{ANjhP{Bii}UOV7_gFqji^%KQy?aSczIixmCpO8vAV*MjnLzJBqc zbpK)VpOTBr3RvZ)aE7o_hEZEAf``EHHTa#gg&g^&<@VI#7@o3l$lH(|om(iY>hh*+ z(ShNXtnXPKqK5lb1 zoQ^Tpv&(p&)*0S%DY$dVBJ9xij|L-RqhrSY@PqQt{1#y?71&O(^#iqf4T4uBmP#3Z z7)$fIVuj2XzIp+kvKvzLfXc;00$6=C?ZHY8;3UBzwh12)evrRswj7Iw9Dn~_0!^L!$j7HAablDYkAxDZX%t{(f zwyt`_NX4D842lh+=H@YXv7JA+kNC>n8ou{?fi)H~cW#YViWxh zH1iBtDrmXvs(ih+(7*ZV3vu=HTCaYd$y;{3z45Z+Q2*>SgPWn{Wo2)A{wCdn&RwYy z-fIC>D0!W{JI%J!VAI!V&ZXnW&vr^CU+Z4cXW#c&GC7RQ8oE3`U-b<3 z`d@Z946AzwXtDJTZ8K2*7j^ADX>ZMvxsIQ$S{nS}@8W%Iv2ELvFS|h*y++u zw;|fjLpaG>BXyaa3e-?0m~-iKr-`Bb+9R>zKPvIpTRb>Z@$Kbo^`$Bau&drUxxrycY-mdRPXZri9!Vl3>^r#Ih<)N6` z#$vv-mKLXr&5XGbf4t5!Z>-x94v&_if$y16g!9V&%F6h)XFJyiU-xhNdbKa_evN8V zdsF`wSR90}E+E-&?$o(n}YkVh(a<+6TK2eJmr3S49n+JIu^6+}CnPR<= z-o&mfdZ=1`W9hXU`f!%)=lH_znzh!MnVxLQ8slC@u0YhW2N5exgN3uN$sY1KHt?=A z!*%(KyBKe_kAYaCpNSW%gCRaJxT@X8!9{^nw@TN9wAt}~*}-?-GQtfmxo!)WO^f)$ z;+ETUM5)gzLzGk9bySL8E?#}suv&tidn+WfXG+cVsLY155e`~8GvS(7>T`xlw%`ik zEB7B8=wvqIQJFHq&#(N{Guh?)rSp5ZH=l3=bZ7g!qh>-s!c^Q|2JLh0Nx6sdW^8;f z^+3@JqMx5%dTo2`}6K+NOm$vdjRx7j}IH zMT45rxTs0P!$nRz6v8`YFYd73URiG6vDw`DSB4Q;DPY^opzkgyx%LA<=$VEoH5-e?uiOyDrmGhQc zUd=U(1aH-&5ihb_w&xpNmSg3~x&`d~Y1h}3yUgYQE-F0movktVX>F&v5WtJ}zH0!#a*S+~3)qZu?yk@OS9X_x}X!6U>VQCmXZHwj@{1K`# z<=P&0Z_u0D$>{!i_D?srl%qbIf|ECG_Z3vXzN+Yl?y&BnvAvhuEAxQL>nUCGVOd5= zZgX1Wc7+S9n)dgKB{eGDd$CvQfpe=jW-`zIh})I+xuh!On`Z8w!xdQf6(57ZB8^#a zaT<<>K7wl3U0>L-`qp{zPCJ0VwawYmkyBZfY+0ozW@FrI^Q+b)|4!JPaxvLRGVGrg zTJ-u_{=KuC(RzWzR=dt!mZSpG*sgwgQc(Cs+TqYc5b7W6EY9G@Q#_eN#;N5ujTX< z9^K8;lCSD3Wm);GQG#4?2ddujiW9M0LplEDUF$m56BcAu>$NzQn_qAj>(2HuZvV-B z*q+@beR1ujc~Px4FQn>bdHecB<8PhjZ(aVV-YI)9?+bmGp{A^yv1Lkq0c@hb-!7^9 z_}q*4z_A&|4r?<|uH_}t$MLrdO5Pqjx?*GIkEzY36h?8eYj~kXmLKe1u%yAwwM2<>3APLS%YUad4b7K|F9<1W%!D%S7k|FuMO0)u9G`hL zL>;?w$@O=7<8Gc4Z51xXvrOhIqz#?Wm}(ygw~p~i$gxEGL2e@)e~S$Td_3B&TA3g+ zTQ&H@vCVV$wA#Z1xG?u}!99$%wJ0LYl6X|Rn%8VDPtml@ytDCqpU$rSpk(zfZ=y~8 zbGCF+ozzcvoFA(0vqxQefTMo6#8-}7aTC^k>P{-B>oWw?j}7O#^rA8W*}W!Lsuo_o zHFueL){<%S3qQaxIb?ra(R$NnIKB-#ZHIrU0*lX;f8ZKj4$eD)oLPV@V1)j z^V*5+(>M8b{8mN3Ks|Uz49Tq=bO@*+5YKn<#raF*55CnqDMBCB9lxa1p%EQk!Aza! z?G*JY(P+=Fto@=TcLv>coR&7h0gAct%?)UAlB;3;X}NzC4<3-6;qUNhHTN^Q zE}W}h@AbZWgPKN8i%{Ve=`8I>nrYLmP1<7Kws$UWHs#_-UsUn>C>xDG3wr#hW@BS} zk65Ux@u?>(x2; z`_LtEuC3O*c*AJU#dR-aR|lkqg!Z1z^*VeH^F8>w=B9SvwxTxkmKxSzPL$Ef0v92T z>s7YLcJvHFa~uv2@i&gV=<2WVRZ`pWR_5INR#A8sDCRmGhBN;a7nu)=(_Slaj#kRw zS%&Q+>R*B%}=Ax4QAwLreJ${K77u54Ar(9PwQzzH3G7A_-qX z-TZrxv^-ZnU#D1x<$MFvejp=#8q2~zk2xh*Q)(5@1&Rs)O54FraFs~y;kgK$q8#%Rk9k?c)OtO8S*2XBW01Df_WMtn15qE6-=3{HufJdRn8y&UuZa24MS`5+ z!8)2&?W(|ui3$o%p2^zoB4{*+ZtM_v_wnPYbb+FcLw_EKwI_%?El+rFwqwhJZ|>=E zfqu*)7ddj9onGwyo{zT@tu4%Bf`W?%&pkTTs2#Ll{@exE8|NFY7%YT!b5?Uz6|rID z9Eeg`vC+4;$;dicHGe-{C3D4f|7Ih{1$Z?!x6G_}wRU){D@zW3GVV!pdMpU$rjmolDlIZC z6`DJ*zVe?tfA<&N-p}3bqM-`%LU9YG4Sc7{Z51xce-y*IX0-;^G&Cn{KGAGVP{U(C5N@2&N*^ym2UCJq5Xef zl;_71d6m~1ucbvo&+aw57G38dec`dV{q8d_{T$~1*?dw?p59dVL`sLX?3%lKYrsHC zRAqGPt=x-(^%*R^g1@F+3*pZL9kP=cP0vHOvM*T5EbOX0>)&>lWp2FX&9`rJJK1Zq z1YK@L*8j3z+uo^}e!0#~`}M{5y-%=)XYn@5^XfC4ho-8V*Y0`fc(wX{^ru|e3OCOk zKc9c@=yGp!>9x_4rwgT;?N+TgKyrQYZTGCVW_7DNgX*ZV2cNfJu`}Ln_&ndc>By^0!OpA{a>=S44Nlq3;@Vq`%!Ur`yzqeB7CWuT zfu)~bYMf&8xFd`8{D9BW)W3DUrSzu}nigp9HLb1Ymq4~;%|gc4^h-k#16>rY{nW~B z-qFnM8XTuBLq|Uo=X(niqAF9f*Zh65`Q767-N()9_87I@I)CWXf=_*BC+%%BJv@%Y zhCGx%6)fOqlrGQtv^jxX5pk_w-Y7RS_t*R8j@Xk%J(-tSXBr;f?PX>bDkmjoIMV!y}Vt z{g3%Xh)?{Mcf@O8|9`v%hF%(*lm9FKuh8*rFQ&=gDZInkAx4%U{$_W1%gO#Cc#E+J zFI4oU+`>7V{U~#Zn3JTI&o1z$pbLqU>qm)#7gA04QKoS0{3%iVvo_8S)z|adsO2B1 z$7%DYyy7J7qR^?jvu5k-8gPntQQV0lc+%5eJ%%?5ACoz1yD4X&h=;o=@c_3yl-=Cu zMLb;vjl`!Usg%8xbg_y5=D$MZ+DHw~8$XKEuw{E5U40z`eS^rgoaO$MgA=Quv!6m& z9JU?_`RuIW@9W`jsnBP_|HA+$a6iRx`lSE=0QlER#(%Q7umq}%=HxQ|{c$t;=S{|c zaDVux45TB)IsGK#}5Cj#Cq6ijLln8c>9&ieJaCmp9C@R={i#4B`s8NZc z5@U}A)8m((m}(MDF`D>A6H9E7|L@J-9(&7i+)<4ACkt<9=FQA&^JaE-XLc{9uamPU zqvLGMz0&MNiYUPn>mDrXc9UGw@+*x-ytZzbx5K*q;+Ue zNO0>8fuZf%CMLF5cWf8mNM)8g7;*4$8*Crd1GIzMm_-(EyfzlC*EuTHU{q^i2hucLs~rUW;2%bPI+QfgmzIfB>&Iz~h0QY} zs9iu{tDp`6fz2E7_AhMc!O4bnwKmq6o|vo)fFDR&#tKF9onq=n=u%SBQ{i9|w-^x= zV&XeWqzj`+l;Ogo9n&ojO7R%7Gp8QzghqN-fXOb5!A&HU%csU4fD~%S1>1x z{my`b0>+M*t^?gnp{*bbncjZKyx9SdcN-p2^n15qToMK*j8Ws@|EdIaYO2ntir1+0 z>8UD=laT{rRVlheO+e+!o=r@IV|p;wPvOMkmtKEL@&Es{~BQ z4F(%KaHtq_mlStLy0;`9V8kUE>DSKUggmY*NEb4f+Hi1=*n65+pvCmSU_M z{sZ*5(4rv8${;h@fF&Z79Nie}E=ls}b7WT>B%6}Cuu7d68`_jH4~_+i(Tv5cX6(Rq z#LMwn;HAv8^y$dc`GP_vcPg48Df%e{k`OE`TG@k&zAGuZ8%0f` zO9T~~hbttZGaV8*3u-E-!S4m7rt?NKm2E)S+7L=;EfdzyjOC4I!m7+z-j*h8Lo;3O z0VZrSGnPAp3H!L20&jm4wy_z@-NA%yVa9UrFkxGovD{fq*yd&|_Z<_~-;Cw1WWu&K zW4ULUu&vBk?r0`#8#9*soe3LY#&S0_VS~+B!7Je&P_jjPruS38b?TDqKqvU1l0gd^ zud6YqR$j_!aS5S&jMrB>`J>_B-l*roE|73k?*r6U`qxK}0WIk1 zsWhO;Jg39EoRtQ&ljn4_DWYf`&*|i-CM={7qo6MqAlEPz07*m}Q8jW6Q8m4OG52h$JmMKcDX^N5)n4;A3rYJR*DN3zr zic+(fqSS6C83K8f+kv{G(g2}6r?)LEOYNqdMhG2*^n_Uu`gkN7jUjqd8)In4cSxX0D#f1I0um3mAWTU8eFOGZ(#v|u7bD@N) zDH_V}2@6Jq*EgbCrdA?^U$l%7A?u2acolR|b1PBTfN5ea2oq8tBOy!(Yo_6~8;HcI zZ<&Rrgdnt~bqKH5N@x?pFG(geA?r!$>ZeMCrk-nNL@0HPb>1k#$>hW|N|@PF0&KsKvn9O#nuIMOR6megS#stCVnoioS`DYdh9QKx z`>1%r)J-S>&e!Ce39lbdBuwr=2-WW>CgV(azu_WhUM)+)nGj~qGzR+WFnUl2rGyUS ziD%uVxZ)_9*3y52dRv?N>VM^7ZT$lt*3nmT23{9ZSPecl*`j%fmcAB>iP926@UfZ} zEkt-fe^FXqjkt=#42{g@Mxg{us?8A6f)nBOze_mrg571DgxVq}UWd69+LbPu zW-sGYEAlcwAJNU~qAa;tGalA9xmz85C!VgW@5jT(^l?0_r%&QxeSI1a8|X86=;xuI zBSbv)%Y=xRewPrbq~9+@D(mxwh`0VdAyP$uUWioH-w-0z^q6=$;q|pqQuK8~So3vGpsi>oUX2)t?nl!JbAwO<%o@l&j_~^S5@x($vdrTMsd`T0 zalG2#BFs!fAI)COoGAg$(Q?j&*Bd3AdBNT?&V*DQkZ|VJmPj}g!tCobSu%5`1UPHt zoC&YrEaA)xM#?x7Qgu?onO8d?;Yo>Inz|o%$XA4yhhHM@Oo#rLZ>2xY7v;om~;F`66U;Sd#Y&~)(Bx{PLoeF zb4q~ut8(Uq*N>GjCxmKSQRW;^mnzYzdCdh9=7caar|GVlIVHe6SI(U9`nM#^dBIGX z+JsbHlyK(Nu1Po(!pxaw*JjR?0OzmdoC&Y5A^>(zTQj zX67`XH#4UMm|vGOC%k@+ggGIsUBo!v8P!Fb^O}1l%n4y;PInMy=9KWO>{r{u$qA{y zCE?6V^^lG69Ql~Ylh<+fC{&p4PB06oX+fEg`UX@AU60H{2x~J4B8C^0-C#Ky)1Cchg_ zG2w>JkkY>k7uDB4jEAaApraa0vS2*&^zX{C{@oBLrx6)lxD-RWTVkk{EHUH;mKgFq zOAK`dOAPf)OAL(?mKYkeEHN~OT4HECx5Uu3#S%joK1&Q;cP%kAVX?%}WXTdkGc-#K z>@34HEP_!L!O+Ctk`CRKSYqh*$Pz<$VwM=X)w9IVEvF@hZfz|wbnk45p~nO!jH~`Q z`Bir~fe{{~@Q>i`p#KP1f1v~GuSh(PJ4hriQ_H`H;5t1iXn}uv-jnRa82U#wW`NJR zdb;Y!)r9e&7h+y+&ibmJ;Mf}pVc>MtMIqiy>12d{is`t+a2CqA@dui^KFGx=0J^Tz zK-0OBv%VE5xa;~-hO@p8C2HyVA>|*9laE_Kxclk`5HbcQvG61mHqin>XA!-k z5bZ2M?<_H z3-jm!rlcKAO-xd>u4_sV>DHA^36i0u!nd-seievRcPd(!TF+dZOoZY-@XTB)Z-p26 z4Zn-g4TL+i5*d+$;4!I>i?jYcs_9ac6R*i{fT?C{Uz3O&O?Tg%AaQraLnxx*DxrZ9 zlCKd!T;chwFJB&LB(5owV)_=9S=tBiap4KA zE*63q;&AeE%c62Z=}Ik`yT}g~Vc-cmxLylO5{;NLixL!Js;8^58Tz_cOXf!Oy2tkEu3)%O;eZpfNmv*U2o4MmB4II_XmRchVvT2DJqTeY zm^Y3!>amr;KqUgv`b*%cjR(cD<6sPqtZ}bFQIQDWL3#wzzn*cM+jLX)tg14e06r2{RU-6 zvynJ^y3)C==SWCZkLjV|$H?_$KY^Mz+piq&=E~lNaI{Uf_5F0bl!-#H{0U8#icGw_l&@KqjLnb zNK}%XquhwX_uxK)9fwIh+4~-(QC0Wl9(7rog32c_D*qAJ_bJ74kJ)S&O4eolA&)Eb z0tHvr-IdP$yw+2*FnBT!@-7AZBEZAfvx_;^+|}1JoYmw@mQ|Urq7w2#cq>HNGKofCMj505|X zLYNUAbe_vGD|yLjLV13E&DmM0U|}9^IDhNmg|j=Wg0q78;QW=s7w6_Y9>~v^Ii>@T z&s02y+=;GquJ2Cg0Hq(!u1bn;aien>FWG~i@4Hg&El#Ey((*rS_hn|?keTu%4)2=YfGHtl!3|^6}7^=+P?4z1#@mFP5BEc z_r{*>P_r9PWwWs^osjxZV=9@=j7T}LT%LN3r7LTqpZ;LVQ+v9ijXuOM#n?qfz9JlU z6;sV!dMVw^DKD3BrMo$`616matc}kGlnQDb-mSkJQJeRBvSxQs+#mpImiHTr#15a}1nHwjTq$Wn6(lMZs#p zZxyVQXJPy|%m|ch5Jo*Gb^#Qe*%V+DY!oj)*x8vSLla+j1%_L)a2=dI;UB*4Rap=} zcjV`AevabjC;538KdW)B2^v&>B0qa5eBJA^YB+-$KZoP2Vj0MFMSJjeRQ%u>%%T)p zuMX@zcgAGEJR@iNW}A%hn2SXVvHA1SJ`l_tzc=L}%HywF1w|MRTMHYl#S z)nr?cn+41~mw7nPb*{-?P`rTt{vw;}v6Q{2n51}`9aWrR8<1Pc{aJRDX%#yVPv_J$ zI3Hz1^C-LKT9bVUYJ1ohiaj1L;XGV%3>vNCB`0{CW|tL9*_*7PLh1P)@O@lAX4#7F zT=KU)Yl7ydh+kG*b-9Eq+*OxbC^OLIPsDG#I4LTzrOZhYrFh-LOL0eW$*n5RzdDm` z|8TAe{LdbBG3p4IL|AyDqPJHIMMKCFh_lkOha!M^u_ej?T(#EV{1`icb7OV_=a%dX zoP+uK34V^?_`WM(yX9|LaREQ9?6N2_a(1CT1)+MHEHDRnr>ZHiH9xOI_s-`DPF(l~p+T?f^n_)0& zQUW4$S}nHIfxaQ2mnK!CPflRriHU4rdTP()RN7CP$gsb0bVQOSVFKdVtv9--PM@MS z8Zlq$k*bc@0*lhIMr?C674D6VnQTb%RJA@4Ien9n!rmz!MhR$E%YM(_J$bJ81`CcO$IQGZ|&bP_#vm8K)QpHN+I8 zNz&=Xlu0?Bgcv;%lZ_<7kmN*|eK@x3u?Tf4VI`P^lz4$8Ng*_ku)C0RHSIKH*p{bD z*C%Miba(Ds-PHz=)aq~+bks1SuG4qd>n3xB(UL|D8=Z&~?HGhIdhQv(CWad^Pll6{ z4d5(P-B_)Ru|2T(4~$|9+wV1(Lsu4OLis~W(qdrH3n+5>M1;C zD9jfbqu~?N6O2VOB6MjP`s8s*RT)9H;-*mj(()=~+0Ypfbu#x;VKSZ}q# zB5fLBOds0HWp1x`+CLEbu{!!m>?ZvO&IJ&H^rbE)QM9YCa``qG8Yb)rY*EIk^pOc zZ$I`4qwAy^)ye216w&LntY5OhD8^|-B?Wnt@Cd|B*Ct{>lBmzpgl+Od0X|-{SPdU| z4KxOudpKThVBK{(tp*{DJG2*`NBZd!xcgCCL7%~BIJ~C-Up66njEzplCRdIz*{>IF zY^i-MkOMViO;-u77t|@dZm{u95C$4%8h4^n$Ld)3WMhgtjSp2x8f_XEE>0bf z*CNuGc{J;#*QKYih$OY%Bwmb0pOS2#*EL|3Ny&*CJt|`Nx}FmnXd2(3J@)zQ`C!Gj zH_J16OoA5+1GT=eArm!`I=cP|Bb;auDvDMzq^E#l6tx#`L{l~f3tU%3>GYcLv^3$m zC*q1AVsr+h1R1C6r<)84)Jhm1#hvXLT1|KCl7pp5u5cAGFzMSXQa6+o zDW*T5_3-kH5w9Esh;$8-TEaC0ot8QkB(~nE3W~ zzM`eWNJ)FFo}X|3*Cq26sDMU{khydV$Bm9kfv@Y>W*1n zB8|^270NZ zpE^UAZe+wRMPo{!|6*E{VoK4V7f0L0$@zIiXr1uHl;qTCO=>zHvxQuBd=&cm6c!EZ zp>ty%%wo(_Vhj^(kixoDhmvY)SvnhsyWv#J zdQK`lOo}Ont_sxCA&bCE$HN3jKvJnqv?jA8#7Ig57HGWu`YA&S|Yqn-A z*ORQNV&SY89=))J325#KED9FE0}x0?%}w?p{mFG%bEy<6lrf;T7GaT+jRji0Q5SR*QB^E8G zL%r5$%S6x=hJpmtB1;l4qM^bgkU}}8nrbWRNG;YACA26@y0Dr=jr1QY#Y%bvotB5 zy)z&$`5@ZaEdpMF2k2hWCau-L#ll~(tm+Yo(qu{YSTEGl@m419oyzehuXGFNoLJ>( zUV^MaeK;1W1eE3N3z=w`PKT^y*9^!K3Ctt_(WUl-^}J$vY4R;rneu6*83&n}2YD{8 z*o@UL>H)n9ZR00xnL;~}ZmHnT>Wl58mb5yJIXu@_TARj19V`o3s)@D8X9!oc&lm`6 zE=M-w7}E$L^yqFP3A|JsksEjy{NlIBzBkeUN847uFYCS}1)})r!vnhLXsq8V3n5bE` zQZL*5q&01Fl#Bt`5rr|p`V@!N7q6bueDn3pmwG-;im1P7@Lrw{y&u6Y^jSfuhav_h9YdP9j=SCwK>iCLvq}Mdy&9Yk? zYq*^71A&`3ZgQ+y1~n{-hYqlI;kW|2O~qQ&-ZcHUTI%t_QbO-4rkt5t;kY9BW8tU* zo{dFnGv8@wJkrO8->ETPhn{(f1%$A zvr4HSqVy1JbJPGnYmZ_>P1gwVHYvcAw(MO2Y#`({peGO?nw#RP=Rvc7E%ad%lRNCEjl7&40Bc~6z;fLQn(;etr{i0>7;Z~DHYz{u7u6n z?aUNP?2AX%9xAQ$1`=zAit1S}dONu(lvG~hPU)l7vQ7{Y#E7E1yFl@EA$Xf`^=bRDfqAoc6HU=K&u1tG%}{78i>RT64m7J}b+otr|rY=}~ii(EbHPGvXu>XoWz zWqWg(QGnvEHLGVRxmG?3ABMV6zztM=n2!RLo!p_AlM`az?pP!9_V)I0b5d5%T8V#R zlJ&TZ4gXNjgOxIW+#Ivz@nr?-ebX~jho5Q^o8>#FZo%k; z17{b{Zy((J@g2)szOnF!zze%V$Nur&&F+TK;a#t0J8iqdI;q?~9o_ru#oPD0H(h-D zBc-di(pBl?THPJc0}us>20RHE1Q-Sw1xRsrg%#+u#u=tSJEG;PtEsiBPvqxxZ(@jmdk~icU_y!q_CpI|yqrQtf8h9l?ui@tnSP&Oh>+nW}0{akZ4biL9u+GtA zN`i)e7$q)=mQWNZNADM5xW?*xF%NT?3olU#MNMCbz)Gir)uWFpm=`NriQjy|4kmm^ z13bNJm@{ed#`GCK|lqf!s>zx*EB0?GR3OWt|-aB*kB%xOVv_;5^v<7Oh4x?|S5*Hf_KZikEvF!RB zMtp}3>UIh3+6Q$E4$%aLc5GafnXoJ;^2EbGQBcT+{mYT`Pcm=B`tKtzHyM>6$)u-g z86!Y=aNbH~i7t&n1B1u58{1)QP*7sKKy|QMFwp9e6Ene;!MT{bc@zes8<(a42T4Uo zB{J`m$r>%JNt-CZ9Q86G#Z*Y+VEajQS8 z+5XLEVn2>;{NJn>zZ{+rxuj-Z-BuG{$m*LIlw2t|BKydMvq=YPblCb`b>CTad(;Sz zOZ>Lp>LU#YwIAmEgBl6YcSt43F+C)aT87x=Ctisd zH7qha`+CRB8G*igKm222=iQYR8TGHd{I&PDxjV1Dt(`mWyT-Zhx%pSF2CL6+%{rNo zm^~-6i)FR&7SfZJ~wZmYH;Ny_bZ*tbbsFGqi1sd^iyrGcI3CLd(VEK z_-ky#I(LGaR(g9#qvh9r9Qw=(T^lFk^DEoMo{OE>cBj+2t4l@tM^_J(7tzk~;|Nd7W1x}py%(W-f6Y5s`=8Eg5=?B&IhrF?2N53cU)ca-Yuj+G$ zKU1xodpmgDyx-Rx5B~h4uh;u-)J=M9)eBc9B<#Ajv-R8SFRgUFzUi{E+5dXaZ@%WU zDSbVAru2KG_u(drbM3#`sPt*H>65dYzihVp{{9tu=UScTejHV^(x~^sKRfgF`i|{B zshcrmNZlPHGY(asI5|tDY57KM^LHmde>#5hysWottay7*mzP$Iy6L{JZ>`H0{obAH z@kQX#PnUnyxy$_2_Ug&qyNtc^&iPGS68l$f_x7{|?Yur4YlOyru&~mXPpysoech-! z>-$`9zcl~U#UK2;tbP2Wo2|XWGH%b&9z0p8|7*X`*UqVVIJRb=7d$=h&kOBwcgCOT zr$R5J_HEg2;Ms*f9hWElaCv?IWx=<`d8|L##>;1NVz*J>w)luOJvbmw^;}gir$sBC z3Lm!kqdWE1pAUcV!}T+xpMGugFE@w!8GM`VEtvO1->#D{UUYW-IdqQykomhN9<4jn zXVBc_X>HX%Zm2xr%rok!@F{V_ldooG4|w~HOy9;%35TBlE;ZplpL?x;QrR!}=D7Q7 zR-GSpVZ$fRUe7dJ*m=oLwd(QbUj6CzgXibJvia~6tNMB$4!Sqyy}s{sS~2@_+?Jac zTHJ0r=+*Bto9_7azw>H-5xs5Y@GI}WvTbMmMqL6IR)6W%&kbguN?HEHharbgKNDXk zbd!_8psaqfpZAV1#U7t6BMon-jrk`ZTRtcF>oYCA+Q+#(arJnEyqfBW z#v7(D=-D&;vCYRDjT=^d=#pWdygBLXOqXZBa&M72@AAvKC^kRd&E&4x~*1PD}=1R@c)vq*H9A59avTjae{bL_}(ctaJzYV*; ztY&sSDlK_ws0=Z$9G5 z&fo1C(`(SZpCiAWaqg!YG2O4ue>`wo<7f7bPf=DMHD9&n%8}~orvLjq^S7{i{cD{5 zEpg($6+Rd5)jA#gU~}&(xrN7tU49}jt@adx+6=B{pcV4YJGHBhcn_E7a zA3Ev-&vhSfA39}lk0JVD9a>dt_3DrZO&i^8sjmOWiPTe&7&{VPCY}Id6F5%ytjLKYNfDf91<5t*Q)eykqOr zhc3Q9w7=p(wZYkIF4Rq%R&D8(MXQ!YKY8TcW2uwo)KvfY`Hk4h$3H%Lqj~LPx0Ow< zAFugNQ~k*rGwR)68~D`d2HynE4Opx>y=FnHU#h0&t*KV?Mo4Tz`fAsfjXxP$cX+l- z_>W3Z(&a4Q^5X8-4z)~I-g&%+?)L9}Ykybc!~A-UhAjW7)BA2$|NHjck3P8j_6^m< z=QFx&_`3TO+g$d(IQi0!xP<7CZGEo)_uE-}JtrJo@Z_sE?~khY+`$8j&xFm0XgjZU zWBr@grY>u(zcFQ1@?5_qepOpF*`N2uhr9QV+3{0~Hgt6BjTgc;ynCR1gE0x`y5z>j zc?^Aj!Jg{I2A};rXHRCxwmR=Aw%0z{qJdwlV_6MnR?+>iKK@FFQ%gLwp~JrY_07A|h1U_TjcFB0}&oeD+AG)!%o7TU|z$#5fFKhV5)Cu}M*E;_eUnhM1josl9Dd~F- z->utwc8fdpt}beLVEWO4^Y%a2=a72Dt!mRd_I%dxpxK2rXTF;IM=QU2_cvbDzo!~{ z!u8XMeqZIazL%$4e)hpB&*ih0_YXUDr}~BclU#l|vOMJ*{cC^T{nNKyc9YP0%5n52 z0E_C;KXPyPF|)jGEchGEPshq;YP8j)0%oV($N%RUG7^0*p@!9Ge8_ybb5tKIn$xt@ zolHQpR34$tQg{v_FHC4EY@Wxu+{e_qxKb{YlM{_eu1Ol&1qKf8R82hi4EW?cPK&n6 zcI$?DE~dWz-SN3N6bi(x8>MraGByJ^mCBT^%2=}`#%kjYKFVL<0k^|aO;zA2orF97 z!Lt~iwv%NU%K{LdAE5K^@vjB`3Jc76F|raM3@`)mEMO;KH9!r3m)ky0WVERSSP6Ir zFdHxm5Db9lKe`8WQvhNB?*r}v3ar4d!2Jh+w_U9t(9;L-EucUGcM<;zum#W^K=;*; z%mIBo0Gj}R0<7sR$Nh|Qk=7J|Zr1dd+JfSr0mv_~G5@bUpoc4f+ElJ%N$Fou2e0H? z9>?v|pKNd+@CKl*C54BZf(|->z3ncy$q%SoT`KX*_UkYD#4Xq$6Tn~pkkYE?IApH^ zxB`&tupg;AU9-{t-XOu~Qvd6Q43hxV$nSB4Na?qcA0$Xr|n8SWfyc6y+=j{mBNm0sPfdk#2d1(7P6Z`mVJ;?I>=xC|^10Pd0cL!0+8f z+T|HSZ+F1Q<)ptxl&u`~r)xs8NVg(F=uUG!N84In{twV-Bg$6};~%xX2;U=)<)?}{ zAa}2F(ElyaFw0oR>z}B%G#pYf+6z=6`>SQJ!2{IAhSI{Ll=B~{zVi4H_<*vIL;1!a ze|rGk*UA0bp7b8nvyiP6^Iy5X^7PNpAK#p+xC1&w1AceV21il8np`Re?tkQZ+DgaB z`IL7Wy7U0pGatH#a?b+jdk{qqv{hN>Ki2Fpw+N#OKtLx?fB|p@@Ed^oH}wP3ndS<+ z0im{7SCIZM+TvN>dC<`f&=k-S&pKmuN{EjA5p+&cj4GKJ-j0HKMTE|1{6G^fNjOXkvpSjMd*JR zdK(^5-KkB?`oAzUsv`7X2_Ag_4<1n)nDyT|GrA)59|67n0oVV5`u~nO1?gTH@cBPb z|JR_u3ym(&eb+xw|1{IkO8Srchv|O}ZEs#ThVFiVM{x|SsPWJITv_4+XC6Txs0jVP zM%!cejO78{)Bhp*KV_-8kb>@w0sni%Y*3!q)M>e-q88H%=$mf^ysE0^Mr@P6Hn1vvRZkJ6_KA zfv(>I3LJoI_V~EHWuQA<6J7y4EI%;ozx(*~(&+z*y}H?34!ZjSXx-pp_<>pfy~i_3 zqyJ8O^>U;fbaw@82HdM)JDBy~=eYh4&`;tW(aVvtCL2sdc&7qwP!|1vf&L90(Wx|L zq5Bhn4=cz9Wzm04Y4j;g9q8@@SO+L?Uns5qzoYH(TY(Svfd1_O`GE2o7fPf59q6up zxSAJogYF)HI6!&yiPGr50{ZiHtwO0Dehm6M0cdUcD4?|KtB&YT?YHjD6rTOq|fX(OH zrIGVt)PdeKpMD(B6EGeyAFv6q7jOs=E6RcSk2mz(2FNk#+ykMHnE!A1uLVkD0s1zW z?8xt$Ka)_bN`4gt513oN6T`EcaXMUy-6>!U$&&1Hplm-Eg zN65>AkQm-4I*jNG;REoYbOHGCFw0K}&vzBVf&xj%=s=nu4un}$A)hH^A+aXB7?KEF zA2B>Hr2R}`SAK&HdzeDf3gw-k4TV)q;Y?T&$4{gc4g}^f3+a4d@=f7+Q%D2}PXs9> zf)r9k-VRx&@H|3lAF{8|PAng0r-Howkdfb&(hpcZ1(pYWCn69q1|WVXBC9D9{~pC! zV0K=F6QDNsZATz{63`Fv<_JBkRmxou;&d=8r~}^N>2qvqn^3&V(BSx#02gazD;ftm zt3b{az$wJfBfJEl_Z2@txNc5fL@T)rd2`yj<2m~#$ovCEv=i z#zufQ0pj}u*50MLK5uXL!7I0hxrz1j<_3E}&Rl@CcOWhSuLm>+RM__uVB7it`sPIe z!UqI4;^!9Rc8^}WsWX4pzYp@mXL4ch2Lz;tEPe~=mw}H(SnlfskW&eHwE+Guj~(*= zi86VspX-9(qGxRHyb|Rnz39C}@~;tqa-GLQeia~}?Ck*DKv_Qj+A}}IHialch8`$Q%Wk zua!dnt)-No`pEatS5+E$<#ixGy~9%6BKad*(URf2D0gW6~x- zRa^4elQ%1`*8te_d(wg0p@g=$Gk0&~s>}GfMBx6jY<^m4{pSXJXCgoenVn$!3;^HTOzluyTabQYesN{& z#Pj|u%3liqc>{Im5gk9kvj^aUR6c8QDb7wg&3#8!zO3?(hWzGv6y&0J4RcAphXf}7 zndqqh`~jc&k7##k2>T3z?A&)`wldq0bfY{Gq-h7^Ci@HW+vz_vU#79v>Yjhd=)|!y#b3$v#?doV6GE|2=uOQ?)h_Z8be*6mTedd5Y0Mhu9(&z(Os4v7owo7ukydvdsU-W~hi=o#B0trIjPwp=ON4s>*GnO@bS&cXuRLs*{NKW- zI+s;`u|9No3_$mt^z5Rv{>1%f)!`EThitzN@|XKsD(qh$@^3}>9pFCcLTy4|N1WS# z_2H*W@}HxSy&~VkstkFf0Ba!g_XzKmll-)Y>|@B@9#HIjQ}l_lhLD~1dvyk60X_hf z>6U&fOJ004O@$_VX1+Fhgq(yE2Z(P zIDQBpAcS>zh}N|TF+=BR^fZeQO7i+b=t?>l6o4)d^Z7SQvA=1CkVZ}65a*+ghv1(@ zzq})ckTajslJGpGp$`wC9}j0ThFw-l(jVKhoMs}#wk&MAVhlnl$qr%&6i*jqnZkTi zc+C{vM>x}D2MP*;_F}bklsArrF{r&%?T} z5BR@kMTU#BbNjRx%UkJxB0qU}K&)eLn6xKLsoy*PNyzXt;2Er;C#UV!Tlf;}T9W^X za(rtqUq{Lv%LuZUKRpwj1XyA}+**QfuP(uQ@RIfbe5Vz4Zvt)+4GqbOZ_nDxpVq0% z^Brm4|6ZE*guVRfovZbLlIGR+=5zl0GsEoVPxD}U24OG#lFB*Czdv|41n_&ia*)Fj z{xk;jeVgF>emU?a+c?5MPV7^tr+di!pA~si2;Ov`ceNa3ut)zq*qzUnWin(|F#mg4 z>zIRe1FO&7!P^t?O&Mk2`sZbKmG(bc)7^R^JEVnFUu$vjrf181jir=waQF34&@=4B(ymtb_*>&oIPjfOO5SGwFOIf7c<`p@aa&6%1K0n+as6Q2w;v?Hy}K0b z`hGrm)4QPCN+AR1fApj-1AMJLd;P{98&DbWCOgnOn2z`Z=YQ;EYH|Fnt`Xak3H)g< zh`rCKZSlW{_HcOKZL$Te!_)VzN_sEX7XLCoD+Yfbz+?blJ3%PF9$Mpn7ru~T%f_Y2 z1Mg;lu>g9H|7E~OfXze;?VkjmX8=p_%!=QWm4?T|sKcMrTnp`5aK3hxf_!&3fD=Gr z0#>sPM1NS-m4joxI-4ro^gTmZ=JL+PD6B=VEoGNAnm;U(!X zGcVfW_eY5r^!eYit&t%+7I(5GKfPPU`@Jn53Au}$un&7ec3$s~K=()NjX#mOdqh{N z^W37|_kKCJ=gSG%c^zeLQTe&c7mas*IU~rH{J(z~AjWR=P*PovD4 zj1?=)^iA^rg8PK2_;z8Du^Q#+UX9bWm;U6n>zrPi5w`nSX1kY8WVhF!oZnF;+C(0L zrZeCW(Y6yDe%Ar=(>&%?qA$0HJdHAErsnQ+I(=&FPR!rl#GHZy;-}@ZOVglJ2X&7i zEMhC-A@U~r(_hSSel=fn7Bu-@3-F-*7Vk;vS&O5t7hoyi4xl)Dotb%{kUsG+f!)vk zAa5|}??dv^C_`!=d#-LT1%xu5cVmz$3+YP|nMdR4hxV!Gf>KZY+H0GzO9q@Z;p4h0Ac zFwz&iA(oVe3ancZI5B);fj$F(btyNjNx5M?$_@32UKLhwp(~?#7%^7?#CcdZn^$EN zlpMIGH3MkyJ~;m!al8Xq8}qHP&70L>r%T$0o6DZB&R*)$f=?~`u? z6nRfcB!)V9rn=(%V)0d;rD>c5M3c;)qpPLjw|8cy1$4o3ZJ zCK|UFZSNhuXKtvq`fo|=N#kR3SJX(|tM8kXo6YUDV@_{t_31jD2Y9_G+ls;2Rq>&Q066zVgo1qy0~<>uH`x$!Ii3 zee<#hdmITX&fd1ojkFQJVaR%FS=?$h(;rq9z>`3-8es+ap(_lbuFPHe5NbFJ!&--kYkPYyjD=DN=}$MZRt z?~^^oZ)xAg{aAj(f?J)obR5`cSHoZzx8SJHA{Gon77@nf)uWS!Ab? zy^@V1V^h?6W2{l9*YxiZ*E3zK9hq)S)*40*j*S``qt}hsBp65P;>VAS)WoNclavmS z6bML5j3?HAyJPjuLXr1UTveEs#-5XuV{CMUP9Le&Myr!kS&AV6rqcu@YPGyVK~vBu z_JSv+X{`GIsw?e`EyBF5;N3f3m^50E^9?VAb)!R-Pg(e+MYCh=+Hv8Qp|tl`pVNkL;nU9qP&SHbchD<55_uR z2YMl)$jdzr-2ce+w3UvjNd1X6bfFK2+A|-zhjPyXtS&^Nt;#z8v1W(46|KL?2Ay`T^-obA{c2P+PK8kp6aUUbQ8cBYDu#4bT)oFaC4`1OaHiBs|EqL9BxG zf8PenM=I-RM%#+;|L-0tC2a_U7jP;<|I1h)tOuZtuN4HhK=(#7Y%puqKIcla(45Q7 zI_6vg{KP{_OgRT4?_9pWGQeD?fUiy)u>1NDCm`n%Bh3f&*}M@{YZwTf*2H1XO3{m1>o+W#8b z-n?!M-TeTM;uu&_?QedrEb#%_aBr_)KCE&Tq5s!t``V)3VhG*S{~`MGeR87SVhG(E z1OE4j*`PezpVoi2iu%e!=uIz&?*4zQ|69<%rd)4n8oGA`IP!9AMUMmJ)&6I#^?9l8 z6o>BQ1Fr%qS}%L)mxuoEK=;OSU5iUY_ecQ$K>8zKhqCB@4|?wcIP@c2(AfpB{}Irg ze5ADcUxnTp0Jdj4et<9C7usNj{>3&hxBs)VhE;`rM*;5vjsaE!$j8e~XSubYds~3{ z1+~Ax7H0iPHoQFP2C!Hcl*?S+Y3Mu_aQ83J-D3PJZ@uiL2fgWfu=by-KiLVoI|B{? z9`-%5+5fj3nd|=gN%d%a{9G$QycRD(Y4I|ZEhx8rF3`Ou;55MAxm$UZGwZ+O1=k}C??sQF{m;N7?ADH#ueSCUp^#8;jy&Ne6-F*SHZcrZWTM`Yk z{(FySlt%xZj_77@S?KNx*bFG?rO%S|D=FWs|31g{rvo0>g8y8=>7zNKDt<19c|Ssi~egI)upuMp}P-Y9iY5@p|tw{j9z{0OT9R%_nW?Pe0s2^WoV5o6oh&TZi(Z2fb-NO&^Nt2^bHU51~;tV(_r1o)&-K7QY#;68K0*M=xm zADt%S5Ko%@l$F$0NK=`5+{QoE|L%cac4_Q&3#D}z;4rT>)z&kyC@IkFmyxY(KAKi1YR<@#Xkh2QpOaYui{5--- z0D6D%1BC1F@vkBu7|xs1)*a8?H$mnf0QCI<`cUddz#zmc?A_dJs@W;z}hpX}`b+(21AAH#>_JYJq!tpCV;>Nn^y4dBo^wA|OF zX~+=@d;UOnC;9ELzgT82(b>H~kRNvCAB%--^ub$O@rx)kRw_eT;*dECGG8l&{98*Y zKdq5|4;@uykz1?_`RSdm(!ATZQ7S*#-9gxm@)qC45M^>CgzQ1E{Z|g!|31o3B0ji& zasMyDXUOJqzxoMv%scG^5=um?WgUfle-IG>T?=_9Kz;e*My2@vODadByWab@hpuOj)MnLEo1a!%|Dhian+Q-sW+&J_1Hkt>Q#%yb7Nnn;UtAeG@x1?v@|VJY z-as9CM8^;C>;bqSmCssSinCKrtK%5zmR0`Ikl#Fyf?V|OVJ^w{kig_W6CL%RKj1S~ zf9MM~83ftQKa@avkd38wmg1!NQp8R67v#6oe`vl;W3AP903d@GPtOt8;s+AV&mF~nD-R)eeb}Dn zL;QLyZwt~(#8D_sI~eEwvuM#|TlS|PS2~0rYZ-B3X0X+7(O8k6#?!%opGckx1aAL@ zOQ(7qn$|%+f1vMuo&bzHIk!W-lXF8IdUgxDx&Wp@cJmJcksfk;%hO^RJMrB9vsTS_ z$(cPsyFa`8+Jo6)(~o9#j5{$Ww1(WSj;0|)b;$DyLau`-n;4RecFI|tk8$})uI$ZE zo5yiS<+N2EvW5dbBbh4zxc}JVUmkg|aW4Sh>mj$dJWV&rGufSet4%ibQjV~#UK9Gg_LJVZPB$rE`E{*(4_pkFfd1`zvWad8{1exgvF|5Te zmqvc71G#8Sq94)to@6X1;Qq7xz#5PI{G?oxy99W>wDOyDpdS?qgY5YTi;PR9XbbK? zD-Nyo$Ul`-lKt;Pw=)00CuF2|DqAAl1GruanWbY9mw)A9yX5~CKGnG__LtU$4vzuo zzLTC^l-8fP|ExM(qW_TX*FpYrUrUAk>qGvn2)_f|Ctavb2<(V+`{RdfO7fqhki8<` z%c=}{qX26lGyTBcy>gPD_LO}L+1mq(oo`D0qAYR9PW!()1F`@g07~*J?mw%KthP4( z+=J{#0bR->Q(5Xl{#Iy*2>{x|_8P)Z0N*116T)8ri-|t`#~tI(bFlG6z-N&80Dgci z8b3@_;#|2b^4VJ#a?(3rz6e{k&$-?eKk62PA5a?FXZJVlh{nQ0o1M15JUeXPi75jP zp3ny!KQ+Owd9uCy{|@DZT|^8UlFo;@VXF}~Fg3t$(IL!oWnC%6Pciu+e1H(v;UQYr zBE$@xr_s|aLKuM87eZIE2dB%!eE!W+?01?W;89aJ#QCV>A^2y}Pe+L%36~&zAt8-@Mq0eK83D^LGQKM9 z7Xd7Ouv#o{PY9k)fU{P3i?ZBazP)QRqJ?h*%lV74(B7<;_VAOJ0pBPayhRz7Q9XQ{ zxj6nL#}z=4J!Eoz@-%o)wS)gDs&_Oq&=!A^;cI|Hb1CpP+QI**o%~6L6>=SIrNNuN z5i8ocxNthrD8c@sFVMIDeQoiS=Yc* z&58^cXXo~5FV?lv|3rTB@PJsy-Y{uTmQufW{F9L3X}~jBQ%_FYt+((c*tI186Xp2U zUcQc$JC+e-FMoPQItj4Eez>&+-)3Ec_2DJ$0r-w9>fQw0A{rW!6W^w_mp`prm*+dw zy#Kv4?FoDN(>qz~0VU0|?ak->_h*LL%b(`O^i0BD`X!Zflz)HlZV2G_dgUO8Bm8L$ z=KDCo_x*CIb^I&&AhnC5ZS;748 zVeMlM))A~ehX-#@z&B--f$N`_*;U&AXpML4iR_RTQhlw(!JD2n^EH=J%E9@sU8)Vq zSr`|8U_sBY6HB{V-ScmaKjFZ4Mk#rl{l7Tc_Ta&rp3iM9r3_sE1IP7)aUXw>0Qd4z zuFBCX`F{nyR{-Yy6t?2hJkUQg ze{qI0_8Z%xe+G3({!-D;UNXBR`tu;i0DyT77ID62W=D8t#?l35`c~}!D{zlP_8I_M z%QD}a6&IK4i82=S;YXs+Q2(X9vNJ^gK-uL)(?K|sxpYx+@^69c=5Y>k`GK~1eU$i+ ztWtU9X_PsWv0{apzDfRHaNjT$-#RQZR--)KyK%bq(x1F`ozqJ*!ge3aZ1>WM?DqPT z^E;|Uo5(}ZbOszE+IE7&??OO+n%BHa^yT)Dr%~q2)ZCp;r%#RDiTT`{m}782{Ipzl zX&Q9upzaZbMQlYpMBYSy`inWvujXscf+l@4i_fDGe@{x!S{!w~080UP0L9ts%*+FY z^ofTF?0yyqd4oZJAHqLKcDeks4{n#rPdem*huJT!$u7r%KHY<~0n7xPM*2sDzaf0Z zME@Po{0{4svjAmU?*mQR*HIPgicOx({gm&^+$mL$0f z)4Ys?Q31qxSvN^O&^8ZTM#4msW#td05CaLhC6+pLI8)C&jP2GD%s&m}qC zp29oBolRo{{l57|K#}*FM7pSxXR0gCM?T7(A0pQ0<0I0erQxJ~>R{BrW}(e~cad*+5(tN)g?o-{rtcSViVz52dMx!K%aJLdGZR-dlh zd4Si8!p+x1a;^h^6L4$S#<|0-)u(4rCjs*NDtY?c>Ul}l>K{X0+A}FHFHfIaIbUn7 zel+U(0q&JRnrbE zJ=*`&x}N5Fm5fGn)Hh%IWVFt$eCg?6j2~ZOY$EtTT33vtPD8-kvbto;bJ#P{Su!@~ ziFM>5%F;NN0HFI*u^rB>JF-%&e-3i^$?I85qkiL%oSSjj`!I6xp-puUozxG){jJ5g zdcPOezHybl4FV$E?;fkqww?i2w%EmGsuhRt5 zF&2khHLwQctC!PNDMSxxk z{xqm<1Q+3GB*{zT{4=1fnwK*bf#kj@B}yI%3I>+I?aj?g6|gz&boq$h6?d3%KNI^odTz-hcuj&aAT2RowY4_$f3AjA)uWRW^g4rXtWg!wCZc6aRdj4mRfmAUz{;L= zg%7%5Or`OhK8nyp80wjMbAeTg|04fR7Rcuhz5hM^Q!Nn6oi*#9s{TJ-Z?7{!3ho2A zJKzsB5MYI?fM(RzSwbRm$ye||0-6ZJk!)qM6q*E2Fp?AyniEq9}8IP|8!B5j{lSNGpiq3*3v(u^5Cp1UX3d~_07HU^#=Ie z{`}>+e?QCoGbApr_HR4&#>m#a?w$NP`q{OfEgQy+?p5R5`g=>dKA&8F;^!vDSMs-Eu7 zOftEUU2S-I)7@3C-h1`xepNm1{QIVED?8(Yk7H*3ecq9e%!rAZclCdtX8sr)cU1o0 zzU{O7`fYH_Q=Yu)+UI+%8hG7;%`YzxUeNQMN92S<7Y$wZ$I#|~pOhVy|Id~keY$VG z_51Cw#eM1+HueAZJ>oek>)l;<$n$@=EOuAJ6aRgh`D1Y0QThMalW+a!&hPuqyT|$J zcUeomaPPaUERg=yUC)2>#_GnCMmVmRo(^u@0H|F&Re5_ec$Z+h9+`% z(Na(0(27ycKt;%tU|dmoah=OmQ5SH!{1rO4f(q_lP^JU|PItB6VuwSOV`xP+qWj4a z!B36|ZY59^ieB$`&i1Na2^Adsb3RTk#PKt>8c;T}3n;IvQ=| zqaDd3YAaHm;Hs;3x_JgncFwW+9Icey%P8vd2QcJ|VN1r(Mnjl$A9eOR(W5qA96?RQaFvQ7$1@AP5G>O|OI zD^`3&VaXaPEWOi*9f4;e?3;(KI*P)QJQQ{WKp*xo+>5Z!@A3|&uw>~Jmfq>ZQfU%l zU%qAFUJ6U4jKb18eONsDT`pSZ8!8QEXM)v`(72#d?dk!R^ZughLmH`|wN%D?6*t=a zVy6oN93yo-l4v9$F2xgJdrJL}oK)7}M-3^R9Qti3@VH!XOGH)dw~Rsu!RNF~N9o>= zb-HI#;`(Rh%53H^eS$7rd5ur8IlzXc+~%L*hXf(NB6aKb^zhIBdH-2& zlsqyZuFICY9+*b&N~J=)gRebwK{_Fq8kiccI2Lat*YnOWdWMUB>^JlgTdYf~EPzg`;$Zemdkc<3911VOoGi(#OdKLf z3^RIeZ(V?l3ODh1PuZw{ADA8BIX4d74heQIA4y{C!>C=a(0gK0|GviNS6TC^X^<$U z_k{`yphK~v^F==S@{xFN2;=ml6xkKG-&W~TCfFKk6*ntC6qXLV(bIGK3q0;BXLX&A z1!f&X1Y!0%t|eQ8aAfPk*1E+?U1Y?K2`-KaJ`l6$)|lmY$E1j)-__84Vw=506LK98WD{;o}|6;}IT5YJ$*QV`3$k_?;- z91olejJQGC{e!kFNC!J2Opw|#9G)1w26zbYI$#_;8GIbr0{kyv=sCCx7_@>%A?*}k z3vep%>A>(K4^{!gw>-EA7=DPsRlwQ64+9Scegk+I@b|ztusV1+G73Be2LtB;(~dK= zr@>0#5y0mI7XhyUE(U%Wcr@^vz$L(+1CIed5(RH8aDU)&z>|O>W3UEz0&pB!jb4zT zmoy462GAccnEx&YCYTMdaj*mX00BT1$6o%7?xzFh0%`!W0P_J007Ro6umv!l-%kd< z96&TzF--iBO+W{dT1H~9Lsh-NGP7yAn+V>aDuz+c86JjMxsd*J$nhhdpO4BSIY|3r&_M{IE@JHk>K=*ef7C4!)#qivR6m~$3>rZj@Ug%(z{df5fHCzN ztOv$OJUActMBpXBCjnmqO!f1Xz*Ik92izAp4z+QdG*Ab0e;Qy2U;w}h7!05=^gIIJS6R!2<3O+Y+Ax_@5(dm5nfPvyQhfX32v(Kz|f>yM!Uef@tm z7g@iF9d%snCR9|c8Zg!WQxKlQiud~ZpX%m}mip=-O6gOb+f7XYzts9!j1yeE{z0Em zyI`xa+XYY6N?@v(f-beWZPf}|D7B6H8*l>RQ(O_A<}2R9J@sYcfuG}aPT=D?G{(B5n%wL>O`Gu`45+i+81#l;n>}JxeDrB zfjXZ;?^`qO;c0h4yQPhL#5jBcFXKH#qQFNX-L7ba7)w|enW{^-HREtfS8bD38F%xv z`sva_+ZcPONQ?5WMsbmnDPPJF{viN`7h#S;zEE`VtL2NQayrvx8+5|Psxc=X6GMD{ z54t%3)qZ1`EmK5@5WVFJfPfl&MYF{zT)^N*c&88o?5)dZ_ zcn~n=TcoeQ*%w4#g5A^HDUGKPhK;8%c4FfxD=>|xsDFWH!6T7NN3xkiNusgkU!<*o z1U#eXG&VV0lSj3o7)jWcULG225ieQ5RCZA|IPC-j4b>iESU&*43_7848PT9|8R-T( z)7eG3 zS`G$o20R3K8}K8bH{K@z3IR0N6#)EsHLn566Vd+{b#1&Z3RD=o7WYsu0vh}OX?RFs z#e04I-_o3~e!jNAQ|tA(F-cYGaVRc6@2bunTWD2}l0HT^zgy_ERl7a@fD=o0`g!6) zpKTURlIovz#(c6`$3-y@3%*(X4@~8r;)!oAE41Td!R5uotmAC_n zugYdu_$*kf+5yTtnv)CH4!H1=uJIhxZ`eZY8^A1mEQ$s^?&PTjE~kBlggLMlz}A#ahGLJYA{>#f7n1>;Nc%rSEmxsqGu-nXU2Anzo2| zQ1eM`i^{1I#C4jA*k82uu_+?GLZ{#B@w2uzs&*a}MBWlHq314msL$u#RKRe(ueDwh z&D+GDE7C1-I|ELe%Q;8UiUEbE_HYWqyab@QBD|QF23d`wwrY-es*a=2E7F1BJq8nL z6rb8f6hmIFV^|r-Ez1{lPuPX}80|+PtCx{)G{?r~qac2e+B7g1M1KHfQLW$6$75q> z8Vkpv^;GBAPC@-Xl>HWMv1t}XP}!hDOL3{19u4e$`)n}NyJ?*b+p-vmrH{wOfn_;bL?z;6PR zt$zSaw*D0`+4^o^vh}WDoNWDYV6ye&fyvfs{6>9OI-X$^8J@cY2ifWHQ|0n_=F z3h-et$|_)5uc!u22d)7=9T<5MoD4i2nAR`c!1IAUz?TAhfmZ|11bzUx4){^vdf*+v zvw%Mbh8+j#$cF~t!@5b*9N@nKpAS4374beh~E;CkT2z{`M_0ACG! zA@JXUF9O~S3>yhP1AGba2f)jLzXe_a9CL^yT?%|S@Rh(P0$&B33VbziAuwz!SOL5e zcslU4z;l8B27Dp#4Zzm`-v}0-1HJ|K?*rco{5|k(z&&Fn>2~1bfL8+#0=^SC0~od% z90$A(cq;IE;902Y4m$2H;zP9{}C}yb<^*;7!0gfFA_@8u%gL{lJ@ndw0iK z_`rV!-Ud7vcsuZL;6~sHz>fkez>fj@fgcB60{kTK6~Ipc-vRtI@Wa5*0KW+QEbu$P zC{w|&fnNgN1N<^nxUq*MeT4hxfjayTWV4SQFJRcb2tKdrDbl^3>8Nl0tGl5?M&H{cPI2-tD;9TH6z-a%2eR`p72ks9% z0yqaaAGj2FB=C8_1;8_aM*+_U#@b$R1#k)QDqyV92JZ(R1N@bE$}(Oi-1u#2d@G?7kDl3dBB^1rvg6? zJPr8Yzz*O~ffZnCOsjy81g-`i1Y83=6d0d<42}Ute;v8a><4}fH~{<_a2@c+!1chpfoB2t?2Y;n_$1&4U<>dZ;1R%cfhPjP$1Ugpo)26P zjJ76tA@Bm=>w$y7>wp&mZv$Qg{1WhD;17V80RITQ6gc)sNxA^|IN)W#G>W+pI0yJ5 z;Bmkg15X3K1lR|>9C!)v3gDH%mjbT`z6^LX@a4cy0AB(8GVqnaJAkhO-U)mSu-f0a z0)31;Kn|dYWBuc8p3(VF>aKp}v_Q1~-A9t%uB{X3#b@d+sW6hJ)x zeHt+J9|r=c&yx+H^>LbGqO=H)0MI)NfN0Wu5z(RhNa5%?rKgXdg8OjsML6Pv(joe( zfC+$H0Qm(Z1L*xoKpKGL91b9QM3-bD9V7xsXB3|JC;27;NCza_F#ytuUIq%A1)y-G zQ%aZK6Q+ABfYM0^5U(UR@ke=QmXq`-^djUU{n2xxGZa8Pi~|rqB>;L(Kyr)+3P0L;!Uq7($`b~@kG255U&)M z6yD7*+u;VB)`Bk@3CNJa`z z@8}s}{cp-El9}d#>GzocviW#6&iE1iaa2vr*AH~{kiR|6gb{COQb8lW?MPKdL9hrSKV$G;=*@Kf3WAY8=n={Lc59Md?3?$P&R zxQ^ey!|zw{d$dLDy-kGU7=3W|Jey;3l*B8E#w~>Z&ciAEely4DTe0_>dHBEZ=jgMr z=M9`*sffp)pUcDd8G6w|-SBST!GAG&nO^M_!YT|I*QhY1=q!FQ?ZTMx7o#Ka5 zVZteow!0Q9q|k4*hr=7$pmMjuc58{jrTM_eaM z1JLtRv!QDk2mfQFLAv)z8A)_y(VUPP&jmiZN|7DbMSL|JkB>q>n8*K*K7Itpb3sE5 z%W2riUrOa+8giwpWON`GanyG_PGu+#&9|^P!Vw%g5OLIZJdT~_$JBJZu+^>+9Fs*{ zH4KmIpt-$}eq;Cong|PWC~rJ$vN3G8Fk!oiuvHJhyyc2{-M-8K4Z zI@EMjXAcoxea^#U@>gG0x`eU+F2epnThu?qXBQ?zn8i}$kVs1n$IBYh67qb@;u{w` zMI7}VkCR68=)4|)JYA%w3zQ zVR+ok)|(`i@mX=nF;D~68xFhl80llju}GEXv-jfR5Im=KA8{RnAIGzsuN%cP^>j%6 z`H1TF7vxL@J#qNnBUQQAEqtYWqwENc&9~p zM{8{Fv))kC^k_ek(2>AIhUkxI=H19<-qGG4K}%pkllJ$B{cYxVv_AyX|LiiqBVRX6 z!LtkEXczHGK5R4|qs#n`e9ADT%`Wph@)he5;T`#a^$YW^3nZhlBWZ~0Ao@jTkM!US zi)VxnVba8ar*81yCqGK^*zbaw9X9tWZD(}Y{J9jwv(Esn*rrU^GMJmD7^lX~I9e%dA8 z{vmO5=YKm<7Oilgn?VOoNLDvCwfZHi-)FbhVDGi!tHdD~Gt>uF*bMHsI@)yr45Qp? zLVkXPOcj}s{?w2TAO~w|8XjdOW zcj|?8dvqby292J^0_GmD z)L+1mi~M?6_E~{34S`h)=KI51cXZiVHXjAt2LO^RD=C{Piz$04D=8bXB+E<%T_B9_ z*nT=T7l-Zx?V%&TK-xP;`{u~^iTs`zZ~cJDG)@8Z2Mhq53K$3=IR*g+15N`Z0*HSL z;D7l_|6dmFPuW`3fbpAh?>^W2s;^Mv5*&syROz$1*&!=lcXe}Lk-KQZxKa3G92M4H zC8G-`0*@eIz4-x$etZ#b;=H5JLhtPG#|dJd^sIHj!{?@w!u;~tH+=Q4-^TZ;mb!nt zZ&cl@4{hH3#DJY2+*kT?Vbw9898vfAYo*sFKK#L3jyo1544pP)=rzwLPi;JXWd4yK z1y{Z@@w~IIKkM|w+mGJx(fSeZJ+$SM&2!zuUz;}Q_Vd1JIJ@S)f$#PG=9O+_#Y`{?D**Z;V6#mt4fuK)CkBO6zJ{`KUV zUOm^pfAbsOJGX3q_p7-31|?k>)BA{D8U}7SGx><0*SUtoZn(P7xw-#*+Ijfj4~yyj z;!Nw%9lPvt)=k}lBWGmYmiq3A^`{&eJ49NPmbvR{=L^T~I44KGe%K2~KJ~+AUB12l z#p6C7^KiZY&aa;6diZC{Z`?NMd+8s~Eq?chz&qz0b?2IH6KZ;m`stnXFX$Jyb4}t= zUmyRpwDgS$KfGNO8_bfH?R#|dx35S8AD*-NSZ9Uwfs}OPHT6&0yBvLX!Ijs^J%gW~ zwdupGD?UF>T7F#P>-oz9QkQC$0H;+{R1iPOXZc`LFYKPmGmMUi9t`t?O;Z*(qNde^?eQ(||{dnfSDzrW}yPoC&m<=nGx*LGX% zw%B0r_-zik%Y`4`|IDg;3-ABnFTtDcedXtj_2&dDNXlc+TFN?)#$WhL1kE^olz+ET8-Gb?@)GP4W$R-SOSiH*Y<4 zZp?ramL2xvxlf(fIQjKsj-Qcm^XuOzSuf4Z>^bGa4OziQPAfkC;<4X9dd9@}7u{O% zQrByj9XjWO!wX!&9`b_^`Byx6R&vb0%O6gUeeT1UP1k<#{S)n&#m=8 zn)&3CtG;~w`BBp0(>zNr>L0w|<`Nx33f1fQUpF5{^Pt6Ov-u}eCy4wr=-(CGm!za!z!K-duaFMHT>9w;i z?6Gt7#-*PeX}P(2de-f`vU}b6;lHM@T)aE@t{+Q_FQ}RhtIyK3~4;6&%19gPk|k`_Ic>4 z-Q6F*vHahkWUT#lb;T>v(w}Rm{c>K6W#__YuO2*Y>X=_n>a$YH+Vx3e{IgH|rSXs@ zF*p9acF2In6_0MZ{ner_8AneTen#@(Tc>29% zxzAs_XU(V&#*OXrR>O|BYIdFaNbOTyyXBAQ@!8gbW&gfs!P@M;ljpyA>lkI_>g%3p zeCGZSq!V9!VE(+9y{liSI$@XpgH7MW?Z2&J$-25Xe)#$FyI)&(#!qidp7MYHm)rHj ze*33CIqJA6x6C~H^?xsz`@!_IxwU;3e!Ad=51!nA#DaT%+I>XD#ivOQ zo4dJ2<(n z--6Q|)o+|y?4DYyL#bC>bmF8HEO6ey3FFP0l9ZetpVzCWEbEfS2}uE)6K9plf|>FL zFVf_qs^Jl1q5?Uc^*C}VP&3|*dHxxB1!XlhpSOaz(;cg7QKy6jwH#}hn8X8UiZFEA z+Bgir^K=uwMk=IHE>4cMNi{X}PWDNE3j46U0Gb^jZ?HsETYMUJ?dbn4* zm}MScV7w2rF?q>Yna{C??sb8LIg}LUWhAF7S(VAzi78cSDT!&Anoq3Es7g(&bfl-* zlCvC2r6W0HKZu|sqh`oBWmd7rMJWb+bxMxa{8SgAP^q$E4|{kcp!^EG*2RLJ>zxio z|5i;Y%nK1M#4;H$XFA6k*537xwX%&U`sbp$$urh=FHgO7;I<3k!Vf49SKFxt-bw}D z8qwq;zp=m=o2wIP%Ht4e#0bK&lrWNQGLe!nnx^};7}1`OXR^%iF{(bb2J;^n<P9^^GpZr1=(T%696v)eg*6g17G9W{{d*8E9?b1`vBep z?AO7s`2BCd-vJ{5UBgEHogPA-IKYj7-vHs{Hb46u;R?gC3)#ZSuh#|reiJ};LGz2h z>jgPt0hFg^8C$yl0&#|$nSUfY`AG+R0sjOD{|7Uv19A@;Jb-BP-K>-UATG@tYuA?O zn%b&&it%g(M2ke_t08;~t%b_Ryr#{j78hAY#p zeYRNe*g^7>4xR^yrDH+9!!YFT0eH28Np2)7O4?YR1|xPt98U z*{RuUKLvckFx_XY{p!@TwcoRFscR{`#*fwx+&4G3Gvxmd(pnAp{vd@~VHfwz&+iQR zUx(aR0rnrHK)(O%T6cbNXUP8`!|5K2k_E$x`AbU38w}VIr9hLvDhb!}DML=${fye*Hq2Z=7C`F;2f_|C`R{(Dp)K;SiB_)GgoEs{fK`A!ova5<{(D+4|2~wH z%GSu$ny_34Gl75UL>;t8{x2YZzt+gqmave07~thj(m{LVzosqnv?UH??*q6N(9yQg zR{6h2-qU$G2lRsc>3~K+N7V~$k^dLSZabiY>k@)86kem9`0|CW=>40T`8v%C%HUY{6 zAL#!a4mocHtmQHn0rwH_|HOZ4pe-8Ej!X^xXdK?SfbOIt8jk?lCv|V^3cOe9+8D!d zOrx}5|Nh+)@NmLXqtusUM8J@ACW7>w2offOgefA+haks0fhm7TziK{7jZixUWch~| zjl=1FpVUamcqM>b5?~rYoD&fofSW(Bh#FYDp`a_^IQVTB0G|OEi{FEQ}5Flk=d3*!iDYZXW;V)@L3Dkj^8_hKLyZ!#g~AuU9zEo&d4-e z8z&!hn;Q2oQI&a`v;2Qvw@VnFY(ixb*4S0+PJP8o{2g2>8`Qd`QN1l1bEqUEV z{0&P}a0;N)&QE}D{|cZpFZKiPBWULL+ZV1IS-SE@`eXw>QVafJ zGwY!5eFP+j>Gv+&Z^832;0|9O0H0mJuM5ET@YH=v>{jXS3tHr#AMy1Bf_%&*ZO5?aa-m@v>&rgeFr(_0$R21OnQoRfsZWc^FO3_ z;y()gi!e)x=3N)6{6nvi?8p54WAI-UiJ#U!2hSzo`P(+|e@h$rr!w*(> zpZ0LIWiQ_idj7$a*;ZP*zYB2;=U{~6ucc?;JsG|6jm=htx&2>-~p={}tf>y9oNHcI&Cd>qie+cJpMd9bLCLhxH%8M{|7Y zb#C~Lc-IMCv=>*eUl=pzo+*~O8zx@}Ssn$v0C;B6y`yiPyJ6C#nRj~GG5Y#+?p&PT zT>nRJ?~#5#qo>yqzt3HFZ5Qv|p1*kScApG5!FBg6ZLhnT{+h+b?Xe%qvk%NP59Ix= zi^s-oX-I0W|JJNsfq(MLEdrd?e%J*XKb)1m_M5XZ*M153f&up6ot3usJG}c5Kw(%~ zbiTi|YRQ>#4>zPl>OV)a8U6E5LGS*QHM@2b;5WmOe(T>y3KQk?D~bQ>msZ4Wo|D!d z{l5mDZa|v*2=IG8v+^tWZ-f2( z6LDyYj$KHz2=Kn1zi_|x&!Xg0D?6s}?d5+e_}BVT;EVPet|R^q5ODjM*;@Pg88-8O zLhpJE{Y(Py%yvw=(sW3&(K`Y9`&Rzu`d9gn(tfDFOm%HopMUUlD0q0MIo|X%MfEM&5B2wH9&zQ?IW7C#gYUmW zuhbu6?Xfv8NG|b=u>QW4znT6ozIax1`ri$GZ`wLH>71<#Qp27-qql$h4IZdIJrnQ= z@zaUG^ncNcIdPljW}5pCbiU_SK=rnznI~;qn$@bgTj=!=z+CYDo6t4MVb-_#UWAGA zIn)25E0-OzcJX-EeG5mf+_*4r{^nqI`PL;_N1OH9+I#SD6!>`zn8_e`6PS36lFvvs z#`q_`7OuKVtH)c*XLI4fYd+vj;<*!m*-vxncf>pBcocy7c9`{Tz9$*!S(MM2{x7=c zZ-+dxb$TWIo-b$6Sa~^opBcahK>vGrTjT*RR2C+Hw@=M{neW@e|BCyrjoY?;`a1Bu zj{rRHkMR4mw(w7Jz!%j?cEE?kV+R4VpUWP&Ca$ruW*za}0zA=H{<#b>(03kqZv<{q zFSQ{rnEhP7X=PmF_L`RTzZbI2Z4dtx7d+A)%F}??1Ab@&&-%KE@qfjGQStvCY$~U{ z{EPUI;Y0w9J8ABst@gz1=gJ3Lv>(#_wcx+Q*HWSXzk>f;fIk52C0Qs>2%`AS^ndk( zSG8n6o56c$?!)Q@eoFw?faec^_jC~d~9L2XfFouTvbX9`L>yklS9q+8Q7H4?#Z60FckxKY(8YyocYP0Dl3vglNNldZ7Nf89M$L z@FsYE;E6_i=|37B+8TXZdFY6E;FI=v9SeL~#@Zi-=ic$fgu*-jGv)NV-c2X^7j0VA z_4X}`^X}O?d;G?&zT`)?&xop@+!4GTEHqTFAqfshJM+53wFnMNC&w@xjFpDdJ-*)F z7kD2qw8JoR*MQMOXZI*+1`Hutd=_rh19~XzMZ34@%%u zVDQ;U_d2|j?jaAukdNU7k_0cSE+jwPvbrt+hFcb#uJD0!3O_uA@rd2;4|3ed@wXiB z1zy1QKzM(!i>lAvUAiJN+_kzK!7yoF{hp63Nzw>_=BL%}RY?&0oiD6i9Sv9l_$PqY zvTj&%epZNF^(8On~C5DjpoG8-YPINZUOKL8C;^7@YtNKnzI}kU)Tbj?SHI3jh22ReL8D7Qre$idDBQXN70P^iL?dwwv?v+J=T5u zApL)Y;o;-O>rT%QVZ)R^k)9bpAmT)eYt{$5`0k#526(s%a6Q)0o!+~A23vw&Te3gF z$9vJH+nR6>HzY@!KFx{N1C~b*yO!hZ)#X?ZUY-HKIjxBM6JQt7P>4^QJsWNMv`*cT zd!$+UyMOMmXw#=XSAPSv)US^AJxl+-d3n*MPyJw;gNT-XOW|6Z{y3!F55UHD9l%Fx z(x*C@`E4TI7ds$r(oJj9FBfGB@jM4O{hLJEgpoFl^Sb#nT9 zu-35z>jq)x-H~=rz`O0_fyuvN-f(^Sqcz=Iwk}K?td}?3Z=_9g%WRFMjeM~5SFUiS zt-Ywc@_`GB^R})S9@fV{T>A73>7L)lv^D#WL_3=2NSo&4ZfPSAO#TNR@tuir`$htc z-SrUF`T0nj_JZEp1|C@Yo40uykZ!oS*LS1Q0fj-@qzBrA*&2Ib=|8;99Vz{=YsAg* zg!IW5B-%OZ=F;DT{AhK*o9lws;pu#5oK=nkBmu-c#k5w{n24ym&?l$wV+@2}u3@bGKrmUxUaG%f zY=Bvu)?c7U-|4y>@Co31-0#4c|J;?Ua$?plPw$2{hW0pp2KuzG=4||Kl@y?NA%OXL z>+nx2Ru3;;vm&G0BMp|dw_i&1t&Bc+ zXJZpe3%_3joYYbRpmPf7(D%2((SPyw%Q7R;r?l=uTFvg?0qvsz?*q*Gq5Czfb^H_G zCLn)>{FY=`u%XoO{ZUE_@_cpaErn^TFB#e#|FpM?mHXz>u&=wgEBvr$EZi{q70~?% zzVTb<-F41zigWYDqse~4>0ji#i2_oYHj{PuBQ1=|<>^ z>h&uDYcZ$2mT>srKdr^sZ!N}rYtz>JfH1o#{L;%Vp5ARsLvnNce+_z%0W^P!=6>tn zf&MegE@|inf8yroKZ7{Lf1BtpT)wy^`WJwY@c?a&6~8rqtrmVibN-48HTq%n|23Ws z1n)-!Xst>ci$(gamlI(O^kGNBW~lsNrnwbL$k|pyqlkaK8-o7fCYd@ zasLtUcfgNv`p<#p2Uv$(1ZdZK9%z!^MsKVe_CI6Y8_e%=)#i&&xo>M-Z!=%we*cqw zrTtiN+Anp*+EEOxA2HYuydO3F{(p*)dK`mwD}t^Pj#!{$0I)9A9cxnEu^!bO@rm9M z(*E~{OVkge#ASf!hmB~qRYpMFg*NR}fP($t>^tJv19%+zTW6zR@mF22us;zmAFvxh z{fFO{uN`q7_5kPbx`4hHD zV-K%6KGCTWY3gzPJ+@TD|CZC(eevz1OV=;W3K#z=eLVf|Y3nXO+I_cgOwGE5Okb;) zj1Cu{+UX5|Cz`@fPo%B=0ndK|?7H)YrDunWPjgJ$0OoO%`Tp&zFQ^F@|6#->A4qd} z^ZnabEOUj6Uy8VW0ef1Y@%H7*+~)Yqw}fl$%;1Kw?h z#@lmm_*<_vS5HmYer>VVk2291g!o!pXQK7?75872iu&STsEY_*(#I9Q5vL#EX;WO% z<=gOq$f0_e0CYBpIA)BnRBzb-ceY~MytFV1O)6IVWNijL6o#$cdU~G?*x1c*oXTGW4d-z3-asZ zc1+kZ=gT$EkCY^WQt2dVg3mKuu?NbPTCd9%Q2f?{vKpJuYfVl{O|_QQ+I)esfXAm; zCb;UVoo*4#YKmsD`@J9}-*TLkaC3OC*>ARN&lx_u)+N^~KEKoB&W%sDB*n{$+wO5V z-PO7Ab%CnHtoY%1y?W+w>TOIpBNt2u_q4fFGsDREsIBj#93B5>QQXB?%4{0TG&8RFt{puj3; zb)C;fO4O@Uh9V6w2Mv^SbLD{p<@mfprLwL%$7*;D4S?JPn0b}QS8Jvup6iI@yBi87 zOoE1Z6i&eBan#uZ+${65EJ>Esq|BsL(xl-HORkJrq6nN~Ny@PrAE`{KrEpZ8(~;M| z8h?}fGjdck*+ZT=T%+X;UWFd}^X8_eW!uxU(vuT2(j8Ta$;l2|Vs>g)T4GXCQbu}Z zR$4|?O7i?+bE|AhQkr5)*2&{Sp&%)as(xhe)$Lz8NAv>iY*+ zJyIoJ)T@;Zl8z7~F;SGP2m$KTEE$&Mi1B$w7CT)^z6ct74yD*-tM&^bOv-RC#=9K)`ZO<%N{aa* zCqBuql$4Ye&Gz~fzu?38OaxRp7zvi^ykk9fwF*%yO(-u!q^xZ01gibRyvlcb+zqv! zI)8p$paz-cj7(*+)9vugiXtGGEpXZVey4qc)2q0k{8EoYm#gJIo7+#7)MTYnt-^}j zwn~@c5OsFs09zQC9s}3kW=Nu-uMhqm~s90b&WdR@BUXeSp%$fvF!rE#YajXI{ z*5Ae&U2mgJtM7UJ6GT;8tjO6bi(utg1SfE62)0 zuzU7;yf@&ib6N1yWN+Is-y%{UaVKvT5=DLgWCPLaXhD`W*+K?M+l%ip{Tt zwLWG@UPqW(6;rbRds?@v2L%fld7-Mnsi8;)@Vh=rA{=9 zRQdXaX{jR+5H?g}s__^ewZ(ucoo;hAM5PUB8S9!BDk2^Sz3K>+DhnX0Z?)T!XYN4r z$6O43B^JJ7V>AoUH0HZ)t_Hu;Ke5iGlqrF{QVex!>uM(|7}lW&~C1XVm$_hj? zvm1Cn+UXAH`gIt2vf+$w{-!DS7S42q%UN0BRsv~B%?Ec-k5fyC8${EIl`uLiYw$zU zVqypEMhs&qv;}PJ4=TjaL{d~yAz`%PEEu{YS6G8prugce$bqQi7B*lU@3a%AQO7C5 z5G&9SeQ<4dF6tPOHfDGVN5RH?;WQEEXbD$G`6;+T2d^Tnzf}@ zsAfU$Eu4ExI2&up{KHJ{MYbX#Sqc@e%hNz}ga7S%3rTWd%A}TI2W#Qf z7;L7F*TQsmK@D};)MdY@+R&(*^C`8is0bpQWvtUZGZeVLv#P(0g|Zr(zux9@I#~Ck zzq-6rj(O*SgLtPZO!HOjszbRsQ;QZVL1?_9>w0E7l=QSLhb^V566+>a=&VN7^^DYj znK?o$is@}#r^zKbgiA9aaR zRVyanqO^Qc*1-wtaa2-#BbNs8Xb%6hZzSSzg61e%Edq3$~L{2(y zZbqfUmX(^C0;i1Zs>HPP%FIMtO1hGmY0J#cOvy;HDe2iEzYD%fjyjHcH|SbWN;b#J zo~q4x%k`jHJh23Cejb{@YesA_^`jSEJZnb$l;ouJwB-E4#Nv$f?8LOp!u-Un%#75; z?1H5xd=yS(ReXPRy{S*b~$2 zRY{3iN>+AaQf5YFR+T*o-IAzuM9CQRqq*~F7S2t;SkPLMv6+=`i`Fpe<;CbF^r9K# z$V{(tq$R@|Qd3hQxWkd2n3bO9NK8?xQnJ&Ov~)*yRDv7QGiadAg+yl|@V9{rMY!%l zI}~SDS7hr*t4glQfR9&Va#BhXRUk^DEiEfEu?m`VWT#|jR#l}&Q-Yu*gKDBN4r3J> zXQ)A$V_vP7oRPEz0ChbHIj#=m!Uj=Su&7cMj#^kK@Mv*pZ9ypC%Un(aa65zc`@ylV zSWz6>$d6h9L+TSfbpZu=QtyQKnSmf&2u)$(e-ZF`TrNxlSM>MtIGC$e`iI`MK!P?zxdO zi)&9^@*xWdtGZ}}50N-{q@Q48b9a%&7iMbCO7XlcR=^YG#i`Tnfc$cew#gqvLe+9GQk)AqttK##bkngBcUQ=N~cV**ZHu1ZBpt4jZD}YUYEMD&xKqw4_kGGKXN^1s+q&~ z8uS$obkXSzhEB*(9}iU+s%u|_9(EIpEmOm`oOOo2BXvlc?>mZIF}KGB{(88X!}C@I zFr?hHMDe;Dp;6(Gmv0Mw!)Wp;9I*qQUpeD2;}YtI3Ks@!t0ECY3pY@SNv2sC4f0T( z*)46Fuxj))IPBEqsh3YZWplx0&&-9lDVNwZV@JP({6Q^&*?~^&x;IUo=T?OiD(d|1 z8eh~il+7^XI+Fnj9=*&x%;LBE{lAlzSZAyA88B3oP4kTQvAFn_jtUIqJasG@8>CJ-Wp$OzTUYGN!oD8KslFcV;yCeuoJmb`!?uC1c?&#~LOGuN8CpB_`%O95OZ;$(7iqI!mT~L2|$& zS2<_1r(SiwT6TGCG`y0XZu!hIIVCAMQx5G)JF|>!qaqJSGk2jkA+929MNLi7ZD_5~ zGhI>NKS6)bH8BXHh3M-;dvCAsVQg#OB^6zW=JXf;uM#AM1h5a2s}~adUY< z##Di(P3N46;it9(+4v?byKLW6Gc4(Hb5Q$If@1W<)Tz9KSsS7Xpn+7#u~yi$-uOcu z8fSbFD7FIfJ5iyt5aeip z=~ZkmrCp7Ad-0nM z6QYLwea%@3_7a=SQ5dhG{b3KabpVs4Q*(s#7vx%;&QR4LH=vgxvojNfE7TC#hSrKb zr->r8Mt)4Z%QQ^zRI&Do*V4Q-!uoE@?SyHq;yS zHxHX%g#l=!psZ~LeN9s!U_4Xfyp^#PpW#3bg5tKHsbLxlv~ZY4vCoMa4Rs& z(yOPsR8E>u-%)+S);D_fWJ}`olr67R(_s;C5##OnP?>oM_3DWoR%l$zPpQOte28pg zKRCrgr{C+cHH`OR;bo|t+^Z*ZQt#OND@Ii6m1&4wxH;!Pc0E-RRiO9veS_pPgO5G)8a#CpD@?3cv&@HZ51^) zo;H_cBx~(*7$W4)m2RK}XR6jwDq>qKv{ZG(m^V@Dh=qzI-^2j^bQGDNe)}n6c+)` z)2_}!Ppt(#Beu%xw-n+45e3uTY+~Fewx8-Gfp?q*<*79VEo9O9zMh3#a3%$uF19-f ztvEl#DBY4}Nl!tE?0_W7Yq0!8V>_Jy$?3E|q0M=05Fz9gZB8J$%>s~d8u$9?X{%n6 zty2zn^8&MVN_idDU~~l2u<-|nKsBrD9II9n8=H@PuYL2y7+I1C^4s1{&(fw8JF4ZN zzSd+#uJdEOU*q&+#1FR$jQneDGZfiJyNuAi3XMNyI>LsA|1?)%r-MW=SHRBYQHR<& zn9U1KJfk^^<4>?U!8V@LqqrQudM8sWo*R!|87y1ZD3IetZoJNI(W15+%(>Wy4cRCW zlngcY{FN4)Cp1JhH8maJKN~Oml$mvKWeBaQ^T6ER@k2Z4S%rpcPY3EqY5|D<~(MS=^QH{hLHfkBGyFmAkb%Vka&JdD~W4~$CN4rn_)H6wE%`ub|xg`iO7 zaUl_+mmk3TeI;Cg99<5743!9Lu(Re%HBkp0 zT$US8hd+d==G0U)rgBj9=`buzIB3tfrSLZ}F0TJhGT} zWak%RM|M#vnhbGXl4fpUlWot2+qR`hzF=rZ51@?b^@dVQS2v7Dv&X${@*y)>-zt=3 zD>k1-P7)>EY*19IQRj+Tr!ZJnWoZ_dLk$Q!!mWuFYHu_%EFiBt)dDS}6r2|4#Au<3 z88wZE8dtYJOtZJ90m;s}!9_)w!m}Yu6io22mi+0q*{vaN8BJb!(TGVYaN~_SJmN58 zh&qCCEYY0Y<)|Nh&KYduIh16XRH9EL$EvAc+zrGX$mgg2X+}xaAb(bZ zx}EwqyrZKH#?=Ky?YxP2whJu3I5}-3?E)*zkC*NIhzbnL*%=jj;gJBEO5%H>;$WVY zGR{5Z&3JA++h%2f$F8~uEnapjv$U7m!;tQCtdV7DlbE_{Ul@pPTXDQ>mcD7_-T~5U zy%@dp+QS1ZJsBu1mxV?jR{onLAU4^Wo#QzDE8uRZL0Fs-;KV`NHxMt)IIVTY9OWSU^WKcl>%r=2LUu7v-QOq-fWX4?2M8p}js zGP+4WwF9a$-lsF>v-a@7WHX5!PF&+bNgZO>T8Y)y+}guV6!&yny{(M7L>0Ml;a z%Nf8K%0A3C_%I|g7ixP(QdVV(Ez54tR?^ZkF%#Yad7Z+xD4WW(_OKI$4^2I?O=Cq4 z90g^T*nBQlhe%Abm>36|t(!kQa1xIvx&PN?<`s9D7lSGr#s&Y|IgDz06sEQPVG3`j zm~t}q#HS~xqOQW0dy_?*-*uv4=eq+gU#f*qJ2lN@r7|rgBNbbKGnDL{!%h@+B=+~X z6zvqzh%HlgW~x0kEzO>tYO|r0!Z#{9pk=~(U%2k3_Ouh_=Czi7S;ky(+3lH?$*EOU zc1MZ>+j+6>)&U~Z^dyFiMw`|icD}%@zo{M>*t8Tkt-(SJwJ<}#&y-BmhQr1(%dY&ofKJ24c2$fd$FdBtulh9&bkWVJ+Cl6^!)3jiT zP+0oIr!45}Kv#% z$9kL3i4*?EvBgzhcd|}BrGOP1HwLZ|nF<|9gI~hiL1bl14>P#V~bP-TIl3g};bsZ*nbK~u&472<3pFS3auQ&;xz1(=V zLrN7aG@6Olaf3T}Q*a^m5QEcSbp9WqWfA87(Uvny|x27Nt!Pg)X0}o;5x!hI!p%O>sJV7T)sDYF~my8 zUUWYk;0W5`1Se+9`F`;hTp8-<$TyjrG0qd=YdFJt^)$XwC-^Z|S8Yg`Y@~4HRgb+E zx?sI}TCFl$7_zyr-%P8%WLqWH^kkb`7SsAN93`MB^&AJKf(~fmLB_pdgMJ zIlmGhpHxhPsw>2Pi(F8HtRrs=9E1>hp)S7rnd^n>_evfXIu8Oy4h(qgPTD3eV{W2G z&l8rA&k_6$m4%ASodK7U5O45rj30Dv*swY$(1iF%flxz*{5zTpR_nF78<4V(ZFGCTmw6z*YxJukIzd2-@xL$-B>zV5=@XppJMN~)Lqs^<)>N92@@!=sqv2gPF4 z;CoXrzLb@CcG46qMlPu$Z)c3GknebJv(s7RvW?MfO0o)HYEfx{5IHXg7y~-?G;<_s zwBAqdDS;Xr0)k7UC556TFeeW(9>!=ngbGMeS@U|%wSG+?5rK>^1Q87ByBZSy@ zue!}s5ygQ3q1~%Zk}?vo2oJDf{o$^}4rL8XP=9t#6OtkBYyC~>L_XNH2_fwe*QQk1 z@hPTrKbpkX7-1)WgoyO&sW}A5O+JRztLI#G-CqbEnc;I(2I+)a?5M{#UC!0C7N-v4 zxZ9&@k@8S^B<2^@n-FzWL24@rGHR|Fj&K+vmuOai5IhAD-H^@tTtPJTaH9}QTrR4V zyz0j^;iG7C(8rd%C-z`xGr<()}((qmzw7A8N!3BI%ff!sGou~C&kn-EE1)rjE7WCH0hcz{2b{lMHe=&JqU6bMY_U zhH@A`1fQ`%uv(bn2Cxq7! zMmyA7v&rH>%6htlve6HNJ5_+#HPqH2T~lauV-xzRdbX7K z$3b=DeUs^vKv+|=D+!{I`z@gi7^LH!NX#`-q(`cbB8by8I7JDUQqz!n$tf0!HX*tq zDk2K2qxe3BVJ-$}Nf+#&G7wQ$?w|z*2Ri zJGj?aiBZ2(96T96-_*u2;>}c9;lqdW3@L|h!Utx#iEs?-tdNq{8>#MSdkONNRg^2s&i?F z1qOhaV?fPn)t}5_)nZxBDNv^?&ZVqp;a|-xYMgooC`3Oi% z7kPYxbfupJ5^4|EGc<}Gu9E`a?7(TakDGt%8N+%aIoO(-Bo9{q#Sf#bLwknq2%h3J zM3aJ5B7Cb1V$)2ENmXhPETv#eQK=1|mcyQwumR^sG@nY0Kd=bHivZ}y#jz?lPK;NK zg=G>x*4wt?q74GH5hc8OUHHl~xAC0tmYG6esPGb7*SjPCv_CejJcX#30vs&(}sQEQRu z#rcgEw(madR0s>jI12k(j4ZLzp*J=@P zM3pFAO(U@cS+C7c=X^|6sEBCyOc*sPBCC@O1{M<{O&^%LPbH>wjLGPF|2hdNT}=qo z`TnLeEG&qT76KX{=)`BWzDXR`KN^j>WS7EtOkgDzo7L_7q+yj@Db^FPwi=mJG<1a? z+3%@U&;!8meHKo?q17jx*9yJTtUe>DpEn>*STy&*fQ)8>O;@|IT&tcghOEp=*OK5RFZ-K!Al#b$g<>&PS^Sezs(Sb&E=@p5ZgB==e3rPC74_ zPIo~(HqfNS1+9828cl?s4X;Zpp{*abag54m%7Ptg0fD zRcbV;GpS~m&8Z&ioZ!ZA6CKGA1>`vqq4vetx_o-g6=$8%3oQ%aoQ`N+SdA0*gz4zo znJ60;W~I?oY#m$!YSmkl_O4a6q<+o|+0=xXu`y~}+t7{*I6@}2vMT0n3RjFa5y9_u z*4eZ|E~9}wjYO#)n97Fr{I1z(e7mN$(OOFyJFsaVr};&*#P|}kMgt3ywB#IOKUBPU zqYy!Dn2OemqnBm~mg=ZrimP>#){(@GAg#GIG6`suFLE7k$PQ|ebi(NrN+O}*($8G8 z=1c#;96SQ!h!^3FnSfCS#4|q71vj*UsP9?RLd}+kd?ql_iFQMojs7BYqM&AsmQib| zmnIgB?XXYuZmFF^TR_`4(VV~s#O=`4-5@QNcj@p949d}(FqJWa4pb=Y2Ucdi7_4J- zC}TWK1j!ddZKY`JPHW+~$AQ{9;^(mGQ1!?w%m;_)7U zh1Kwkm_pMd)e(YOS{WF*Ynj52ScvR@@N*KL5L5REwu}`mP`c~C9 z@61Gz_BrM$`EzO2n`x;?_u&Ga9Z*Un9#08VtJHQHIiWDkFv*SF4|6jayk#s7Lgm$9 z#9^Rc!QqRU35#OagCe*vz5pvLEa{krl%9Dy55l8|SIN-12D7CC{f34sLh z#m@WVOvCpBT{PA?B$mWnsKsOwQzKMJY?@DNW^yXAc#)T2%r08&L3V`-MTtKj>s9rN znDxYZf%-t-gCo(xOmwoxp-<5^%`rMzvuTE%(ixZ0j;KyWO-B=_YS~gJN=dbphw5A_ ziWNHRPP8C&A}Ljnesz2!t5q?1Ky#5NWpEm zfMH`3g(B9vl{mm9%Sx>#G4&{r<@{1(@CjCZ9C{QsmVR!Zh*+(L7FvCzih>DQwe$*h z_2w6y9# zFu-{MGL7Bl-HE)YAkgiAJEQ8&NK-KAud@##g}h5^ zvH70*74T6an#^sQCreE`suNvfE8N0@bdc6(6JU&=^ZLG zQM3t%8X;B{CnTt~EVF0wE*oSZ#2ybq7cwH1mXf#NQw-{|djh^MZy>Jc5{pU>W%l^0 zg!n{s?~$63YihQP0%Lv5j_R%&n_d!WnKE9UH_xOK1mQheHH6MMNfRamrAG$#=%Xfl zTa5)Pgb9Nz<(NolIv6o>N@VC_3xf&qU^>y*QHwXRp$12U5?E6Lj`)+SY>9Aofxm;2 zh_52p5?wgN&6Zd-D`HGKrjL$Z(z=X(wm3Xjrh(y9urSpPLqMT3^%>!-5{VhrUn26V zCc2q4WjL4nRuOIe012tn^~&aG>{IP^V7M#*14ofdy&#_^+5%9kuk$SC=(kJJ5suM9f+ z-U+ci*Qb{p|LnPcyM5!VF}IX%dh8#^#%GqL~Yj4~5@!kP@uG{$8RnNYY zJL{ce^G>Q=@ZvYWod3ZhEz4mP1zG3@Q^^oPJH<>*@u+F6zGjk=(Oa`0KOoni~A9%k$pEJ7c7W2Jip%l^uODiky$7 z%y?kv#(VDSecDa66K^?w{is`|{awd=VIMPc$oMOFRW4t?@QU>7A1$uwwR3#+oBjUb zpECW@o-^-0cI7jZu1{WHbGWqomCetdSG4)WXIG3l{*+-C&-{9R()Mwww|CEtd1m*v zXHS02XCFNLsQ1s9eL>Yfd(7#&`_&)L81km|qcNY1%lg8fc1rQf^AAbcG4pkIUWp)3|$wTkaWu z#km^-=dUSs9dlyWK)Lz61{M(8s;dZgL3XdAhy^QtbIS9ikRa;rzW4jR zulKTqC+9h3&YU@O=FI$Ol;MO4(=*0I>!khJWJMphRX4p3)mgaga)9=ir@9yWiUmb{ zGx3hFjIj;6-acR)zG2j)g42W2Ct5GfpHuXoDJMP-IiPph-A7A!uF;CIjb>aMG_%|; z;=HYsejRPz{DlW18eE()DsS-Q4~_DLgGY35OkE!kU#oC<>oLLoo7nGcI3nFPy=n9M zT0NZ08h2lj(s0Iu>z6&HGi?_Q+Ea^Hv-{}QGafX)n~@gV;y-6vuOHW^UcX^m&a4aH z++yYM?Q72V3#`eB>|!u`iE#J*mj`yNFdR|zs^YJ~c?U*W+~~Bo@e*xbi1CM+I~zW6 z*ytVBF{1XQo#+25d;Q?R?%6}F%pEy;%&17$KAq?FpW^P$^Hleoj_3nAoy|2!8@j2pJk>BabLES~tg$?382E~@2 z{$Ly%KI}^2w$YaFbpA*%XehnczHE5wp^aQ7`4vyPIaNGYfA099F#!g;dy_|u**wOl zdHsee>kzup4C;WD%&XKboZ^io;X}z12P;bWmZ7=V7I@{#w>c+PWZmzd*T7%ZI zijte%U+2UvKmA~HdVt%*&^5D}y3O&noo{i@opXSl%{iXD}FVB|!#;bAb%$o%vQ;Q$OXV@1^5fyAI zUh*g+uS>ZAAh{x2^s$jcPWlWZ0r z`l@xz;rxgs&ZcOPby}Wo16+4GkC>u-Nm{h#+1?2F7X5hsyetDe>ojfpw#62(o*~-+dYF25VN$ME6$-i1e{oeUC z22lC`N{T4**3S?GaoOL+WK4`Btfnew^Ly5UOH_2M5H99egO~cMv2X_SGWhx8qm>*j zm|fb62OK-&U>DG?oq`n~a^M;*3@)V+M*SFwRtA)N@NbAp!1(rXmjbsbRLTIRaCj62 zq33u42tEfeKCoAo(m^^TgzYuLfso4*bkeaSj^iRmj*!W1K zhT6a&^~CZe_99QAntnS2KUKR+->6wBm=)LkGsF>ba5r$a2FTR_SsH$_N61#GX0Yh--%zurp~9Mk1Yi&;!a)te zq(%xLEKU>)RzNh{Ss8#~fIkHjGmN>HC@wM~D#V;IU1CN62gu}Tu>isXy|OkV{1TL0 z!-gZ0#tIU{zGHo{cU!6pt!k|R3oG^VoNWI%D2o+eth^lnBj-Tw31INVtaW%LK*|s* zqG<9BDr+gfBN|Cj4v(P%cqcAWCWs4*h9Czil!hoj$o?9OenVD3L1F|{2uSZBti8Mbj(SO~ypu)sZ| zkboEsFgpxeY2cqkaF74##Z3n93yKIN-%_Vd(64@W6QKiT8mcadU=LwBKnMg6{viS} zdxm;t0xkrj(T#>6)?Fl0v&4ob%Ca^mj6ph~2x-|w2LI$zQ)*Nb$<((@cnJWfIQ_vj z4H$~e8s!-$h?B*`DIzLP5Cyk{z;obCgqaOw6^L=TFas83mL9}qKxUhtR!@|M01tDw!vpgI2rm?qfs(SbR*N4vX=vz6wFoTl1v|}rjw>wN7u=?4xPw2f*5e_Lv?|B@Q-Lfh%6lH zCk_dm70;Mz&Smh3nynm^jcWU>@9#X?NJ|U-{QX8XQJi_A3`Gxrr%??M^Z`*q*{DX7 z#QmRDjab#dlm+S*&Nl#33x^GTr)7vaq*kpvD_hiXDx&{0tHB9D$*iV075`1t`8!Q) zfY|o)EcgGtea#I;V36$b$QOsYnSqNMV;4r)oZ!ep7S;cpEsY5;__>W#*<`0_|3q2q zIM|NH;5W)hfKN5HaYiX)gwa1^F{9SBYV?O}tLjxm)+VQ!5MW0|0YUPx9oAlk0tp}| zFhqW!6EPS=Fp4XHX3_`)r5g$X=oP|9tUus5R%}E3*`t6aa~XdAlccHITm~9vRb*iS zE@2UYMek?F`9EVQqp>b{8AQj$16El?G?>X?+%U(W1WJ++<|?*>C5j=U8Cl6t$e0bF zW06=d6$_di-M9J#`IqfuP7z2Lf+sD+Pa`NgJjo=e8v)KR0do+shMn|a{{TS=+)u1z zfRoJJzJbz>Z@~Zv2>JZ6z@|8lG+IzhK_pP{$C2={tOfkaz#KPFG>%@`d1dh?)@~ z%O2@ICK}$c#DWyqwW=Bfjd!d(7PPO?`_jK@FmhXynkj%UAyNq2yna$V$(zw6y8SW8 zE($jS4ulycIK*_cuyTP7*tk!yabY1(ZCn&6Sb;K_mw$Sm|0_&dMBhQf6_EaL0Gk=h zGz7Q+)@vNOidH)S3#(fRe-jxPyOJ6CX#4wi)PAl~yKs-%*G793)I2 z6q%Z(ewJ6%cS942;KVMH!sV%=bb*a9J|4hF1PZ-Eux!)_$xsn3DYBy`NWjg3j}S-@ z>bocop=`n}97GpHC&NZG8X3&c?vx0a=+$3zDjLI2Sdw-W1#J6|ww4z9`3cu%9H-z* z^?~n$>}Ik(gI_j<&X7lNp=x16mVYHj6j6=?lNZzw=|vnUus4+4b4L}iC>|`WkRp$w zJu8g~MS3YcAV;9F%t?p^6T(sYel!6BenZB?zd+e$oRy>q$hHa$Tk<{MTM&=mtkMf! z-T`t5g8y>KU}YA{rX`E9fSm(Yr}12spiTTD2_u2?Fa?ZM6Q%-eiz`51xlp?*q}fx4 z{fMGcf>pHl>V z#=fL5p#&BV=1Ak0a7C|>?x>o@0Ai3CqBkHxMdE92b?+kffaeNU2u(5bl|Xq^c#+oh z&0-j=KwVc<>Z38`YH;(xR1ypY{5fVRmefaNhH0M$GuOJ=NmZ2~; z3I|CFl^U(0ExwbNr;~qww;+XyKto0Usz(&n;r<&#tmbU7z^PK0Qm}sr<){`ZU>ZTz zAFyK(&A57Vi8;(I!jA#RNKs)of;iy-9Hq=VAbM2bQ|e_+Pf#5TK~#@PHulDR&jm*0-quN&$IK zK{N3|MlpG9Dl!e!5>TV4;$hXhn!3h}dhMTGH`3BVKZAc<*N~G+WXs8SjAknk%*3IrxrDVq5&feFF7#3UkeOG_i-qQVf+z^G&C63h zp_gg0S|0~qOqYFkI&hQgO@59Fz4 zR6D}TTV;~aU3_q~D2X79DZa<528yKqDF*gPNQn0Z)Eosy{4u6hNOz%7*H1CE8O#52 zW+n4y#sOVTEZ=I7layFltRM<8{}5z|G3Isu1c-$Kyggu-XraOjs3gcD<^|?AoeXBp zh}gBDI4P*G(!`(#%sSA#i7K~7*^;>#0!~(W!Vi!}i~R)=qDsqEsUUM@qFMp-Tyr%n zKcen4|5QW)ZVIOkMJ897DitWX{OGN4fP^6&orlX_$4sxT)(PqSKC%~bs!XwWdqOdoroPn7=&jIDqVv_ABfTb}OjjEAUF$Y7_ zXngV+^+p?Hr7@C)rR*sMuQCH*^2E@N!9F8rLj_7|kmQxvL?bC#wOd|21`4Q*T!tR2 z!!-^EFBPy-U~qoLn_LF|7~l7ziw7tKSKs)yH!LwBfqI{!S1>?7ILL>`psaj2k{VqT zW5j!rP^D*TK-Gc=NaBcU1G_`z6g0|d>acVMK}|=FWIa#4z}M4Lk=h6(4j=xp-z96;mZn_>*jIL3#E}DEEFfN`3D*(QFJc(wgmN(9aQ}c=Izb90 z&>j@bh1*D{I3e~w36Q{KNRd4yAteB=31!?6K3-EOI~>9&lXyuWXcF@stqHF9n70w9 zCBV`q=1>`rD~aQpAmlXVrzm+47fD9k8@$sgR04ttY6cp?fAyHrU=1sP$6Ns^hyU|g z*BRCe1%tf7`*@Rs-&8~})nPg)ZGcs7w|g*w-fLm5rWP`|Ig_gYnf?2vH~rlqx8GvAVpESTSB6 z_DGplZ3}V=B1r}Ofqp6egLwi9xBvl2Hfxr@RlnedsJSVGRVYdbSD*{38X>+aH$)jp zq0bC2FsfA(Z%z049vq&5^{TYfT7ZQ*rB3L5H9YKrD^~%NOyC zWMF!R`=d0|YLy20bRgR;vlP*u;4FxguQhtG`SzmZ5@%F1R@b;0_83UR<^5zfWZKI$BdRVi?f-M)-^0G@&;^y zDlp6&w1iF1)YsBNKmI>%VfRMbsSJTS$?<9Mvu~T%0aQxSSPR+&<6xr3IxF|7(O`sE zvZ4bmDp`}23Xo)E$|=qm8?mC{8ec&=#ewe=J|-fQJfjPPtfIOb2yZ2cMVfX8Tr zsxCqiKFjTL!@g=6xuIKwp;?(FXi7EKOY9ythBm z1M1QXr~qm@K>2|!^H27Gv8#Q%A56)ArZ=p6DR|GS>x)nnj$m3KH4f-(ASrP${6F6n z@Oxpx#nns{<`ktK$;&JEP0a#ic)dDtWgJd>v&qV#*uT#{it)nQae+Fer8i>@r9*mq;0X2tl=gR}ncU6O9u> zmylTp{Qy=NNFUU*gd_OK9 zskHumH7S5mK{vjmV&!H6BtUX}3=}XkgCI<>(>k32W|HuDsZ9%+8NfauPzdzHgku8y zm}vq~12SJ6bWVoJf-5Slj+!W#r4iv!00pA_NR%xSP`8klgHQ<3QIz2UXirnt8_bdl z$4q8h4Ibo)u+PAVL%N}~=BpuCk&+|do7nhArE2JQi8{&_P+pdDlFL8g9;>%a`r!#d z(Q<^xfrMbaW~T?%5BSdGL=b41koBS9jH{6rniUK6TQO+C057H}kXUk7{z_TNz~8G9 zp<06n113kto?VeW63HWCZ=yRE6FZ2GMdZragykQWb}k zo-5jn1R`RnBv7g-8cwTHF`4_((O?V!DW4E8>t$gPfzLAXULw$S3x(dP%owGTrh@`| zzok80xvh0N(T}Ok*1*i(*`ORWvi~@*x&~~xIjD}9J(FAcTQP*HQ^7C zBw$0hx2JOfU^77ge_n zG9_7o$v&V7A~hL;D)pVx>Dv|*wkdfP4AH7%bD(4ThJ}C`hB5^-9_OnpuIbdR@=~>q z$13ks|MaRrEYMeAa>xVFQd9)-ld#?m@*tlJ`uT}SOMDo!NCIzaa>S_$qsy)j0`Yiy_FNe;^r9}n zk1xb$$@o&i7|^X8!Q&f_kEDPfDuAqja$_kUKZ6pqP27eVN8{Vz2uMd_!?#5L z10OPQUx9PAeH_5~!!g~Ax_v;hVjMMSZ)4@`ZquWit&^*bZC5v&Zt^&EW?*zoQQ#)` zz1{bKcWBrD;a)RG2C$%rqh(|=DX^LaohZPzqEkgjgxok}-#a8cBY498YX$~4?g}hO zSk;2CFYTiYKSayU4jfyVErelU2+rojh*Ipiz^j-hz1&C;HkY^#FzFa@4h^WnLb(oH ztwxS#8bRy>pn>6FEJ#5?DoSerE?iLL128%!FJc>-&rXSLpopBqyZtbS({aE^@My8= z1KlXlZppp$p+Atc0!;LPFdD-LvlE26N1|YCBw-K_C@hvZD24+G39X5+v_qt2zhQ?A z8y}5xX0M^RaxO)ar1mvPo;Rwx<@j#N@o+ju3jtWX8kM850)4-yEFY!9`>q#|jlbG2 zpuldR_czM3vsK-4IGCQD)gOC{Kgd(@MLP?2j+xoFv%tJX7h_ecLuL8U^+L8t1ja`` zA%4QE5*aFyc?4o9nZq_Rq=0R2G%zLRWq^9Yxx~W(ju?CYFlTnKFG<3|4lA!xfPs#X zO@%-^fi)R0oxn*+h_G}3d=*SB$Vmz8yc7ln05jw}kSRT5&%*hYw76z++F^9-0W0dfO@t78DVFj16XGz6+sm4)nfS}lR%o6RMj*)F8BIOssB;!02;~LPB*WD`cw~||JGGJxNelFa zV!^898Ym$@v~w$WOF^P3-E3nQ0wlct*)9ORCbyloe?#%pOv!^pFtcm?73oPxod|uZ$vnzuX166rWm$+ zR=vc-17($N_i}Aj8CRj^v|cA#0uV0x3Hb5DGEuCFQJM9}5W!g)U)5}EuEkq#2-c~} z|G*E!QH-N-6z)xw&$ZOiKw1CAwkd~Nj%hR^>+)nQWWINB>O?Z^rY9g(_|)jxbMzzCm9E3 zQV4E>LUaZdr%QkmvmhY?ZV{*xdU}<<^^+u#Zz_Kk5S`~Q)nY4`tf&TNIN*R-sXxd!i=h{74*#NUl6W<8LHNDRqIyU*biadrpQeNO z-l~`pFg;}cmXDJ$YgF%gxe^(eX<-{sWG^(UnkGlD8k57`#sSwb4WQr5D3qS5HeB@t zX`C6hO=cBgtVGCXmoSK6pV|ZPU?S|PjLHDMLg)crUWy$;pQ}HMY_s1Os_M`+PKX+o z)if2fn^mq8Y{Jvfx4(aRsB7)}=&7!TO0>f=R?b@g7A=vD^Is#Sn#R75l4>gW79p#! zo_^a@t8o@kx6!{!1vK$>bwrHZ6s%!JNSoxpm0GS^#<;@GzAN07A~!-cf?M9S8F6-0 z2@qE45b8qp<%zs!ns2b#@vGn_1a_gS{mnc1aofvT`}4D;O~8eACoJEi8_>Q!3|p#uA}y9JBJ#(YXQG zzUb#CGDRsF$FLa$9VQ_@@b4wNV$D?$UX^a&pe&zSbAZC%DmlpWThrj!g)`XAFNovm z?d#(g;4~lr2cr|GO=4d`sW*k_CZmfZW61J|779giJZ@+xGL?shg1L%JAq4TECm3py zSZW6XYGyPfp%4y$J2#Ll%2i;M8u{Ic`HaUBlp!iIX{1sKwjMhO4TW5;)WWA~e!>ek zL8@rOO8~#}Sg;`5b8%s{M~-S(G#J+>1us?VaDX)_m1eK$leIMWEJNjh4$;uuHOL zXM}qQ4=Wj-RavRB;gCHLRnq5Krh>DJT3#Z|?jIE$9}jEF8?rn|5VQ##t*9kK%^{27 zAC>cv6c8igB<7KTegTdo)UvA7*>FiL^O*Lg(s@>0f0)(G2Gl8cS7ycmlQK1d4}vU@ z5U+z)I2T!lp^wbS)muK*HAvr+lR%jWFbs1+BHR#)W6iBp2BffplxubYzXZnq7Z0CF zR4oxx0G4GBTF zTd06V7{FE#q|6iA6PJdv9) z{0+*>%!wA-SB>mKZ_B`l!Qi)4Mt@s0j_y~>t9W_@vB zeMv=pR}2NucY!OhSc%#U6^g~sj^vh1JUzZur7KRm1)gNzD#+|I8q1-JNR3~5K`>x! z^cWnjQbnOixW?2xJh^6F=@#2x4tT2ZI}8uN(1j1|p{^rLMaqQoX779>(nr+HQ=5KJ$a(9#{yo4}b?#$!Hk z?2+75{*n(EK?vl@GY&$H1+nCu40!=!B`Ijfl+S+|0Ape`p8SQ%R0Gk#j2#--)&P5RC85bU#C=_`^crU%C zR9lkN$S_(!v{+PS#mdEzCM09Z|EXfjEr5Rc%qFLA;}(Wum7EQW$@u z+)KEpR;dQ}8=VZ9e*sViVYX3m2!M+WiaQi#3gIIU^9P+I_61IWYEX{?WdM&UAv&Ci zdzG(nq0AS^p>0l)PtUd^!SbXpHkr$O{V*f1tk+pcDL!|H5k&i84t7Y#-p$%Q8Ps$wgKGkNk2=2E>L0 zWL-%B)ei@$6aNHeT;Em$aKng91aB3TBtXAGxZVsTt1^JA3dnaQY0j661~U$mY9gHU zk56Dv;b@0&cyPlA3sR+FD231mz5xjf)EY}@$W-nniR8OUrQjxp)Wtyw(XoKZBZ-5k zp#=0GK;jzexQq@5{#dL;Np7#3?XG_0vV_< zrFsC31wF;-WRSVCA-%_xz4<8e_DY^XH`xi1a_4{b;VD#9WSm;J=8T0JI6obRiEJ42K;JeMGI( zWG*qkLBzc)AhiL26H-i(SVu3(ojJiI#Xxc4yQSXo+kCDH{l?}V%H z05zaeE&vt-z#)zda+Y$0DRBZZC|+O+Mbw5Z91=Bf5Plf!X*kp(9D<_o-32$1;1=3SQWO#-tT3fJjfSlTV5&t3ja`ZBM3Ly+ z3f=aD-lNw2$rJ3hjb?>17m@SiJ78?}br8|WQ~|^yLy+rL%#?waf)D0M!6J1siWSqG z9@_SpR>-)Fs~8vax}IJbtgje((|Vw^;-+AffY}ONr)|qcH0`8bf)oIG(2(VW*3+ZW z(|tG*kd>Ta?tmz;6GTa3(T>Md7wWFA0Ca@Z$W#R7K{6@4hb2|zVo8|e6v`16lowfgZcuY*w9dQ86>kcl>joKEN!q}J>x*AMhn2C&+1khnj{&_sHTWI4*%5j zJygN2@y){SAgmPj2Tk3@T*eP&Sp;?s^+n;%n<<1XAUwjEW`r{!FN8Wi(jZ7#5sI2( zXOaD&PJ$D1{GLJl#OAAhJwD&h3uaJgXSA>UTX z3v9En7>G=!?XzFdzpE>bfp0WQWcbe1lo3rNeWA=hF+3atxHE*%)2rqg3bE+-s`!dh zT(tun2Yb-hM1tIYi~6L5v(4CknBRb-hmOfUi3vUt-f*ChrhpY&L~zJO z$QPAK4j27$BA~WF zJpncW|9_Ok044$-cVJ(FZJ!{{o4$T;uHneVuD1^LAiu*s#WkKnP>p^x2CD{haE_iAsJy--# z3MYsz0#%JD3$UWq7scfmFAAD*fNO~_;_0SNA2M@_`%+nw0$WoKLLbz!jfW@}BELCe z?0|x}1*sV9F@vceCYhW!APQSS9o9UT*fynZn^Me2Le&w-l1$Kc)1v`QOs1K1e}Un?coEPYMui(81ysr$Gy+6 z@d&cKYO*W+<5%^SF5Jl_e;~vG!<`e{HCAy~t?Ce3J!CR6WajdfX#@QGLSX)suHrOO z1qxzzp`|sJ<6+(*oTbT94rd+K0Hgw7PR}Zs3lMJw164dDMy2|vGE_*mosdv_@ z1XKqVeH&g?b5OgofFO6$Dt%EdQpG(PBd3@bkf2sqT>Z$YTvSRb=^#gaXDX#~L`}VD zSsBz-c7GX^>E2~tM=dS%^Ai~!fG4Q?3w5Ak9(-d(DZ09Va8>*h?DOCBd_hZsg3QR@ zmOCxDz|{gtf-TRcpfJ;lzAM;O;G3lw?=ba^fx`^kGyJ2jB$~U)Tzaz}Z0h=`eD%mC zt%IT(gbCc`BLgxWHzP%`&_btr@W)WSMo}my25<(3N|js#nEN#O3z*aafOZ}0B8Ux7giI}PlSAL< zgu?xaNUGsmOior{sVs|kY9h)9vbkGzT zw*vHsqE7)+_CoNBZsS(n2>Z^1msLX7*JIo18MWt1IOm1ZWRw)WJDCjrB9EvCW z#hzRQ3Gr~%Kw*;LYK-|lp2{|`uqjrloF$ERpS_O7*oyQb#zhd1E-{cIhp%D&#!iE( z2TB9j0wFotWMF@!DSAv83;PhcaH+>z;I^`3nd!vuo;YTK^Qtf z$;g!^5S&?+$PI?1g+L1$F1ZrpNCG`ETy6n4nH1gSfWtB%^dsvAmBM7}z@9Y79ug^G zO(Hm{$PbLZa>bROz{0Qe5P34h35j2TieOQndteAUii0ddU~Y=?i_h^yh;K=P6i5(B zTs|NPDn^CF#u%xX-ihHmL9o!MeaNy9qips8++~^@Tl+6yy&;sE*i46FG_`qT6ewzxlrCh7R1n*XgXa!e$3Rvip+OMz;^_v2_8LMV zQ8g0LsxCi(AX7&epq9$>@0LY1ZNP!{s*Wj6r_a`Mj+--sr061f-vpD-5o4r9C?HqL;rq|V~~}buDQx- zQ&r`nLQgSIDp;vWClGxtICg~gG6yPWkQ=(41@lnO*Q(2wu?2vE8!V$VrIiP432@$u z1jl$DIqv&NBL#8b!U;|q5*!=|8Eq3hAyTDqci>vSPEU1VRN37G%^u+m<)g~<#$?K{1W!3!Ng|k`KFX3n=~@2^T2CL zgq*YZgA&3AKy&7#do)Bt=o1Iek@Fs$(*Y`55(jRL4xDbJhjbF@L?ME!nLp-8R{iN? z4wH;5LFy_8u;UX%Rmcq19>5+E@tyh2xv zEHj%UP(|*^`4jUE9g^4cKQiM?4@CbB^R2X*R&n$J^_e~1;3F=({NVUPEG*di0WMqd z;2;PHmBb5D#6clYAW^DVoJ=27g(bDz&=o=yTMm85Q~i=4deg43ui&S!_LwF>CNUq; zZ?tPu*~*MU`BkD9g4|MliyTPk!c*-FIvOdzqS7v^P0e8mcSTt|D_282gcbXO6$`}& zYFa|0WcF+5F>9J+EzpYEh9+f$>_KpD236Bjh!(SQ*H9l&L)ffA2Zj54xc zkkSL&YtM9Rz>9(*Sx8s$E_btMKCQE`; z*sgd3{uUtTC*a32Ro?&;6et1U0!~QU!F`z+!A}p0i-`klO8f?Z3TUJ=sJ1-#@j~uC zM8O4b0pJfaG>w=E)W55=e==jVut40yEOF##jTZ@|$rF7i4{#*2-lPicRsK}3+B0vX-)g1JYFkk| zF-~}A43H4ot6L&OFfbB@FGC)*f8VyEwo{%mdSyj=1rElP5s6U^v>Pdk>Sr#rz#hxq zEYlL?MNzdR{{KlGj{GX@@02;{B8-(FSmK~3Jf+7(+MxE?lHVa~D!*4fNu$(-|C2L6 zr@bO#GO8;%eaO}8e_x;|OA6Gt{{>P2sUaZ7R9r6S_iuk%YN@4#e)|8o%OxB|D#377 z1&1`tcR*i*x-B7pq?UoFhpV5Kmi9sTEYz(7|6LK1{TP0=NN@{GK*0=d9%)wpD zo(mXE1R`rlH*ZVtco$Jrw8t2!$bZa$fbcOf;XQ?rQj%kr+zToYi{R26GETry)1k5vbJIrLN2r>6-M;(b9JX}!C&@VlxZ6hZ6_rq@sn)$5^1D`RnMM1 zEiA1qtgX$Vgt;swEvVgFxS>N3$9sFT6+^%-Arz3zB3Te` z0a=qQ#9}lqJYZP@?2J{HmLb!eg`Y?!Nd)9zDBhlV8E9AatEeFKrkATE92=88UG2H> zgfEO1_UhKXyGsunOBX8}S4%4^w;nxRY+aq4U2Uv;_Oxs;l# zy)fjD1YEi#vCQoGMoAJRcuR9};qbf#;o#d1f14oM(yqe!dbCLBE|rMEVhf|~6%C1V z1aaXa#SU0^cd~Kn?%v(X#@S7M=gGT5H3O&b_R#pQ1$4#&&8)&qGmn6M&_|YU;SZMc z!60VOl>%RPSnTPnrDay+>FN}aoc}yTC!^`Pw+`z$GiUNfyX_db(azAc%la_afoGx` za?@%xi80&jTJP2fNt9Pu0GHEcw!!m@?HdH__%*QMUgOzTBQ}`y8~gRO=xYBLUyqJ` z`TPa^@BZsA6N<|p-am1C|Ni|p4|>Y_HTkXa&3e1U7be<<-&rBDPdn%~bWc}7v~9`k zF9Y6vDp_n5QgLx&+Wt$C={aS#xxwb2d_tV+raEu%6 zFG29ZB=?ib*qm1>X+ReB6Mi-pw)+$>(cK|*pk&BwNp2h8&Y`PFW2?ZiG?{?LGQw% zM?N|rFh4k9(%X0A(t>YxbE2hE3a|K?#?}53I6wT(jo%|S&g;Ivo{&4PLz99#y>3D^ zsMm{UyxyFa6Kn9b=RA>C|J>DYp1m-WSnmDOvq?d(HW74WgZhn3zx3{LpQ%B|iVjE$ z_Su~~d#F#7f*A?FnviM&^tOq(`t2S#m^Is*z<2y=8+mm3tP*3d*mc(*ZN*)7UQ}=8 zvFi;x9T@w1U2#y`F1j1Ujy7pJ>3J{KXL-~9wh+c`Tjo_KE3m$4e4qAxUj%kK)cf%B zK8btl_og(OvT$gp{d-2NJtwU(h(Fi2)_Se8MTNCb&|dJ&xJ}Ayb~+Gmk(^pIyNmGw zgB~e4EBI>?^JsxQx8KsB0?zN*QSnwy*RKq!wIfq%lDnbT8%mAm#@+gxH_12naMi}l zW&6@=whtF}3_o`B&ujjO?9LmqTWk|K7p(c}6@F*P@y~sF3_tEj``&kRnqJAa&ym`> z$MWxeb^8jh?fC89dNOu_&a6hJo%WZuJCR=GTJp5rhBmpo%={0S(pDe0Zv?Fl6?RQ_ z)Ds6i-xR{WcFX*rS5!giy3RqPZ@(~~v*v(4eWi7WgU(UwI!R(e2DUATYDRkJ+rxci z>a_tK4mz$3^DogRG^;zqW9R#84!fq=8s7SK->B(#Gmh_x&E40ce{fp2oY&8WU)ndb zNIxye%qDPn_=ibbhR>Ldnfc1bp1Je)os^jGo32}Lt*LNcDEHatQ^N7muoqc^ezS|m+b*{hJ!NL~DxEp5G_8Z%(>82H@r$i5V zemL#q)WKbCc{L*U#)iGhc(7+~2Mh1JGx9H^xrlGRCTO_D>+wFu@hRFfpIHP=@Xl#r zEy$Q+{H$GJi-U7#P8@&Y@U~W_Tbeb=f9(N<3;Sf18*P|bxAh&r+-dI|k47z-QqS?= zO?RCg`?CTE^n10k^zzXaMPt&6KI)=rd8GSrf=>C-x4Erf?;Q7a=aX`2^IUJ?1K*}~ z*6knWaX)V7%Q5Y8p{CKY3fYj!x;weOTJ9UZdTCkWhNB_p{FcAU#Vf_lr2emtQIiKd zHxH?u-)C*nnVB)qlgwl}`wvaXEHiOiFz3!pJN;Ltg+~)>aTC@zZ!$En=tXBq@4$ig z9EIVxQf8HR*gfW6+{Ye<^Vi#_q&p1N8P_0O+j^p%^B+a+<|i2*7xd}+aomJWUr%jt z@mM5Vam?tno8Z9Ik_W4bhL<&vzRo(8V-xqsqGoSW>$!*4X+5Xs2>rB@)ZWj7X8oGB zet*LP{cM|&e_ZHvaBlx?7yXjnw(f3tGAlQ`fA774T^F=y^0D5Bt+PXinq3Odp6A?Z z;*FjGj~c!c9nE@pBxsQPNS*y}ta=Pc(rTJgXSBtqkK^i}yq4E|=A{~~mK6W?usuY`&zhmLX&>aW4N0N_ZtM(H@48-**EpU)WgG_hL5}Kve!d=`QgxE z&+m3=y}5XiProjmj=#>%-CL)m*1);Dt$*KX^!18OPX9a0x@}#a(Hsjgq2A`BBOkr~ z(6R8`+NIj(H*5;rHF|T&^1Z7=AFZe@ZI|`uh2v%eC*M7IcvfuR;dQozE-K#mXhvjq z|BkIf+NWvjOZLYOzc#sfbKd#FM2GaEAh#Ds_nIZ`^NN@fd^58~o9u$&f##W#QxPd? zMdQTM9L-^QTpSwF}2ZGUAQz7c8pSyMVaouXY1V#w`xt65uuH(h-g zddxOAHtlW8@#XbXf?uU@4$R#0(LUwmKF>{Ua@*z1xouL^@}a?+Z2h*MELv)x%M2Vj z!)V2|eC^MLb!J@(v#!^qVy9Q!Dbu|16(-snQonLO)|}A2DBEG_FYESxUY&8E?e^t8 z-??=>fLBbdRi7FTT|eJ0RC;!Oz1TPRd~&v*e>-M+iNhv%Rq(QT(1jb?{V9cin%hcgkh! z+^)OEveDp-Zj`MZ=!tdsseP@zpS3IbjLH%H-wWpqSHrl0Utv|6{ z>Q&iAyrf zzow*&(G_{_EZls;`ND65PS36A)TH2K&)BgxDWkk6Ii_z*+r1!Q=kkMP@0p-`tyi z>99v!|6dLEXf3#Hycz8(eJ7p%t9{LrtqT79$}=i#7Chw=N9;G!VoLthdTH?s{_Hz^ z>-4+E3vb@4x67@?^*;Xz^fvTxpJ36X;Azk3mmjBJFz;xwcON30q1%Nsg`uLR$Cuf( z96vq#OTJdvT?@AtjSj4BKVKvr-p;k>_EwD_#H|nSHi|P))~eH?8AY78w^vTTV0?Oe zwi|C@-)3@#ZTuEIg_Sub+(%kCX6+~Sb# zwzmKI&GiiHKDUkSEOt5RR_mR(!;*0>|2gbt&2MP;ewWv~tNkV(oqe!qLg~0gtwx1i zxnTbJ-8*B8c5e=Ky!xxtwz%fUfBk*_-E`f?DYGUFyLIT#Jiq&g+X&4h{f0MwKiGP= zdD^SeM!A<3PZ+v*$)~LG35!R~J6behPVxPIA9pSJ-0D?(k6hjMcgn3p&uG7&{H9g* zjb^o*+c=3vO|4tg_(6=%x~q?-#0O`J-5e?&)E=kP?38iJgoY=BA9R}gq3DyDR+Y8oNIG zkIZhkbXRwS`B~fvqfaLVPFv94qUF)>oZ{>mck>!d&@p~G@AqLwull_o@Ns?P7oB!z z4lq2hG_`U0fw9vbSQwsr?(kR5B}pIc%6tyro_*==a<65M0byeENsoJBt$vSB@60=H_Q!pbUixl*x7M!lk$&fz)$eS6 zV4>~9J@cOHerdDIHDctTtU1U0Yc*bezOaetdWd(YDf@XxVnZ7`#`}6`|FNlpzxl}Z zvj)%ZoGTpU7j3lR#F4&BLtH;DX;QCgBmV=DJr@<-Hl8)Qq1FA+S|;IFwmjt2ZPK;d zxRWK?Mql*ZW?3fc4DGme-|=HbPg))}uxi9xx^IA&+ar%fL1wr2+#TvvBf8Q4(EMr5 z`xweHTARE~Y^ERnL2FSfw}DxJ~Q0MJlp2XyVn8f8Nugz_%tz|da$Wc$#{{p=jF_e^HLk8?U0$hsi|u= za{Q)@S0nVN-MZTA)g-UqcKS^?AGkWSS?Z>g8t2Vsr`=o>xh?d<iJnh|!i?1wg zR!d~we9)t$q&nj!bnQ5#OUq}u(`!5sOxS((!`Lt3e!(_JjDq#Rz#0#ePcz3_GsRyTbUfX^fGpu&F&Rg@!qLFvc zZ5PM)C?8-vv8MiwC(hcpy!O8QeZW#-Y)6uoZS@uFkPm?lr#9^rnu{>rMUaLc**{#&$i zMTQyo*16spw!_@%!>e{&3!|-pn-4|An}0U1!~5k@>zT(+-uwN~Jl#>TF+sw;JCFC9 z|8Zgihsql!C8e#f>9Ta`0r z|KY69(IZYLZK`+Gs@Fr=5$>*tqbJtuGw&Gc4d+k|NQ|#oMKS*zFJ6VZs+Eu;olTLN?I-k3nRVv?pJdHYtdkId*w^@$0p_EEnE<*FLrXk+fMQ|EYiIS-raJ zcIih87aptqLVuS|`sQWpT1<#e@{{s)Cg>io{n0RYiSfj#BWf1*c5@h7tEusRr<<)W zc{ZGMa_Pwh;n!z2sduDDrlfS7B-`l}r@O@z8*%J83*+9CyB24+9@(n*!ttR)c(ua0 zmj>>6oRz3IS(-iTqp9&5UCU3rOq*Cax((@eW|L#X~8H1+&~4w-#ltSc0)pA@V$taq=Rx0#zwdOPMf+xlmX9S8T6rpb)c zjjuKqPwO^u(bZv7y&8`fdaZIV$~tyR|BiQq+xgd1B67p-HNUVt$g$t#lBgxlE!qXV zZ_C#iJ0rH-d*dFC^Tc$!;JN4KUw@#x`1!!;m+G0jOy5xJa`}hWqMqKLmtXCgvEXo* zai?ZCobKJ;F1Rphg71r>LB?UZ{qGmdzg|4UE#Ug@MOI%j&W$=TTKltB@0Nmn-A9Ng z)&6?Y`t_J5={|hD4Z|v&?{6#4F*u!hJH$*g$}HPicUjH|W5+hEkL z(P3ZiTrEwm)girB`NJ%DJShq}RmTXerf?VDpY zXJb)beePP__bb~MpRjn?L+E97a3Oz5itepX%ch^2e0?%kYoeuH+q$n$&fhVyZ|#M* zdzJn6F17ZNAw$+(_31qJMYO(lJ-+SkMJ-y+wpcpyk0w(zsw=;5;NvTe!V33YO^+Vnvv9>^;mJQ{ zKDpXd-zU0gmwxt_d&|6ept@>=5F|BaRQw?w^#ND(lunyL^gAXusRH540X`G{xpd>H97FN-r1>UU51r z@Rj4)lh$^&{qEm8>b&}^xqkCQHT%pQwP4SH^rt<=K7YBsyyc)& zJ(eD@_wCW3(PG_pf7u1JaSqPf{A8-B?xC??n?6~Y-N)eeyaq0xpI$ON|1P2IdZFN# zqVTK-pQm4%x_^GtR8E&G`Wqfr{XBKBH|J*;~W$di%piy|IxKm0dTx&Sj?E`{uB9+5k9e2v5UfhleG-#l!QZDZ@SeA+r2Gc%pD9l8ab33&9S)6=mN_P+VO--S<` z>{Iv0pE>xnYya}v&c`J)N7WKl?5OogJNR8*dP?uJl8ejy#Pw=Tm^bf^`*YhbznA7Y z)StV1llH9+JA&qL*EZ=r&WSIu-EpwUFhio>cVv$2G~e&!dG6z=3k5SK&0aVATzKjh zS;e%B=UUeum*+fOYk8+_i$(P&)v{~$C}~KJvtjMT=@;C*3v^5$G)w!GyzkMdHjT$! z;run#Y<|H3LCZIXPo>6OzU(w{wPBcj*85Luik@W+c{j7+ljw#W{R>6Mc-excWo@Uw zZ1r@izS+UIdTBle^9#C6_lwgXnEQBeW{Buk#gXZ2q-pu>z$CG9aZ}eu?Y@ke-|9bO zYE1nQ_DbvM_?wSY8g*;1?tCL*pKZxKPg{Q&Gxx!%Hf70yDHVoK#z>mCy?teaRrs-z z6#?^q_Yo}`y6DN#GdB%tou6~2_PWlw9nY4x7hUM|=J}!)q7{$!X7fiJw{CSP^V7g1 zW}OZGj7e_&G(5O>E7Kgi#E1MA^LJm_*S1@o(I%bG+LgbbRGd2L@)7qnO#?dm`mJim z`EA05)d!kJPkA_1r~8yqMpx(5)=j*5BYxSLDb2bs8yc82cZ1>X0Ar&S9~-_rp>KI` zO6O(cYkhD&b>+id%Z_LFmdl{%iQICH~WPn3Lcpnbr0m#3(~G} zviH-sX|uLUoV5gP`dwUJ_f|r!?ws0?$)mX;LmFLl z$^1ITHeIK6n~wcDkLE7CSlqu$eXkp5%{$8aj|`Y}?Y?`&pby6u73Yr3+E}OAhG*?7 zj8f}+9V&Nv*zm0I#~KStSGGaN>fRtjeyk+?c4XG-xw)NL(j-ZKOVU2>~j4!&@M_plinw!%7Y2Jw$ zi$}RlT36KH=t`4Ljc=u`I-g`>-+$o{*Lhi)bIs~_1Wt^fuWSDKR6G8)yOTP6u;F%@ zsq30DT=$P0;qXRR-C|>s?`|?VsPkc`_f%7H(TFyUo*WK-`mn{}i+>*TtUYs?wo&Q& zHphFMdF)Z%T)5MG>A)sW-|Spw`m|1~^48rCyoD{%sOYo9!|r2_2O2&+RXb*2xo+{~ zgRh1gf3iJ%{aN;adF7VL_MNZpTF&c~;#1>&y>qWaM;q+9R^CLkLv&VlQ@7{Ip)(up zIMuH3*9MN)yhAL9d+iN5lIB_Zhpo}BZuU=Ya%-N6UUR0~qfSki4ybp&#i|J>C3VKl zUo*7UyvwtahtHj}rg6a5)y4-`E#~^1KHL2ur(FB-`y;y2-rOU`vBDUgwAVRyS2z5X zxv*2ihut2$iu_}^;i514*6%8UP9Lo?*eNi#-8`q*8iARqLoCB4SxTd7^v?rynj za&q5`Mh!BJUbt`0Zqm!}&B=xPV!8);WDVWu)A{)CuVj8F%Y)|kSvA~w#XE~@$z%7Q ze%a`Azdi@!`DPoxxaJ)1s59+CLU7B9)aa*AyBeI`-ze3={OQZr56A4YoEmd%ap#J> z=BLIRKa@4Ucq`}q$%d_OXE{y}==J+=Wm9~(=N_*bVoCu$lb#-%}6wfoOjAD0OHY*)lYrD=Nml;7r=Qdh4Q9Gqzcd6;P^S^(x zJviW(lA*$W>w^Q2+!|{&aovn^yOP*8tCpl_gKKJYJt*dRj2X3$XVw6!z&enlGcW)-`U*P6<+^*}fyRN=znfXi6qt&ezF7F0{_3QJ8_N$&w6R(vX_cCZ?`&j$&;Lo`(iQ5i5xHozJ zy{}e{JWIN!^!+@#TLaU2+Xl^F(R;_hj^#%kXLdPs!h781cZ*-ePF=WFd@yOz&9GLD zqc3mVS}~=a@%6LgI$VF)yqJm}j>W-%t1F6Qx?F5u zaV)Lz<)wyPi_V9FPxadt(ki%9QITc$Ee_NEcsY6Q+Sjd2LSHt&aK5LsXsyfe;boSN zvvc}td-T#ibeo@f_t(v~69a?X%Ij{=+9HgYocgwQ;+e?8Qil*T!TYgw+qu@w?PYfS z;L-^#H(3Tc|1ski*M*O?oJRB=n6dfU?Kzn}f8Q{6b?2+M&Kd}27%nrpVHKCvpx29! zr9m@KwjEsi<>j{fc6F_@Z(f3Do|d-$*BA#ogP!*n*_7|qEzYo*bTjj9?Fl=F6n~j) zvh8v^qak;`%wL>yL#RJ))9S@TZ%?}E@e7=B99DPsJFuhmvzVk`>c%=%q}gpR8CBTS z<&JG;N~uHrW|>cCFV+gZQy$c-MeE~9{WcrDynbc+g_Dv;V@4&7cj#)jYiqyz%Q>dz zj~(t0c=R#5Uc#?ei!Zo$IB03NzU$G@YsESHZt*X_t{KyBc7{N(?4HG;LNEWvJGNzI z)g4jW^6k9|Gc)>y4ZLwF@#c#wv2Blfer(6rTj1KGuTEK)+WGFS!*heDUud)T@o{0x z(-G~5B;E~a=fCk#?eyYWSN2OM3Qs2`ZMivp{lzrSv4PeVrz1b6f$_!guW1>54mdB& zcUrP_$K`z;`*%*OZ??VZd$&(p>o$8h@-F{M<4-NymRqF+2aW3b=|tVUiCa&`@oSCG zJQid+r^CkII!{|O!KL-5kh)*|B9mL2&5Jf{XjRfK(4)AAW!s0lNB(EXr#VxuPR;&s z*VfT^T!$^TcFq;kcSxrlZyd+B=^NtOvw{27EuU&Ex%IYiGWUIrqu#A_8t*I&Z@79& zfapok+UEC9Jli)VBdXmH;~eYD8xAitv>kEmV2`|I*&kS$;Ez zo$Y)v^YH95631y)?XDiov)H5M?p^REVP^QifX54KeUgnWd(i9MRMY6|gR_sNEIhL} zKE!FyLur>zQ?5TUcI59IIqgXO&m$Hzh>rN&n^_b-B5H9u1gd3 z(;993J?z@Z?wFZND;9TqKliA%t5?P3OWWVO*5J` ztvf?pQa`_}UA+b4XJr;1+UBy!E@^(gbZ#+CIGrue;otT>1xZ|dY{f1A-b+EdkWBSLt=@(WGeLKAV zs4oMpi~^oVgfw}aT-Ykr=h<|lwJv?qb-Zuix_Zv>Var_x8}8cHYM#F@c{ks+-PKyH zN3<&YoODCm?`}!s(t9B->=&#b85&>XPW#6_7wJ7(ZaB=Xe$nJmj;#FD=4&JJ>@t@= zJlZd6)tox_Og8lYJbCx4Ppi$-66+rj^ex*F>y#I2lxTOnZKH$PJ9GBiCLS)mZkm~O zV8Ulfc0t>EQ%?>m-QoC~*Oy*SZ5uuMY&yGm)%>G7x-O};^vsN)^NS~zz3@{$bAPL7xY*#)@1ddS6=-r{^ZqL=>BTA z@%+C0``rt_%-`f;u(WvefKBB!27VCxA1jBOjD&utRtEibaB9CNZCkz0hzv+>(0PXM z|Lg8a0Gc|Q4vGp`t%_$`Ye-R0A(2x+z@ng{pa`f~5DX+}G>|k85Q=9#@T$eT`ceUG@4dVuFGvIV`h7p`6W+evo!Qyl+1Z)h8DrK` zzk-6}g`d1A(e}92$H%{3LP`48K|LEED)o5K>|Wl!tkI2}&dFPC_@VHyBCtm{WBVr~ zg5`UUUF?5hvGKROeF?dlv-UB zeV4=DSKT*f4y;}8r$gO$%GVxw(fXGTN$ul`uP8gWr26P~*O`!26m{0Wy;rrp3!T1K zb(~(~mb2UQcE%D@(X7t@>MIW(++@bVqBCt$)2`0&h*})j+xM)K&w_*ZwiahNp4w7+ z$!F@LKc^HwFWUB_lRV6SPhs8Kf1L5{x%kf0EysS@l2*JctbNOulaouXPhHgY_@C=K z)Y~6$zp=})0kuog|56l;+^2IWy_B;h+jIH0NmC3BT#x>I@c#1Xr6cmE51BCRk2f|C zI8B{D{$$qF(zvE6hnEEoO&jR=@v~O@{^;kTj;dKp|GsMa$h{A{%$+zt|KHDk+H)~~ z+~U5q7i|xz{rtzy6GyZx8FeeDN2ycyag)}xefq)3l41XvG-Ke?7j6S@e$cGNqV`Yg zI;gwlbo^vja_;Vj^$$#ozB;DYfwpfIyT99QQ1blt#XDOb06pofV&&(D)+MFZ`{cox zZAD4%1~%~h`Qu$rx{v*&dDCAXr@Bqb3NCqGcFARbO3cF9s^7Pc%PO6#Ju=*T@>>n- z>U%G3)4z1$xN4;iTT?0T9j7*)I*3SIzIIZlP?rWK{I7Q%^FSI`!z3`d9M$@6I>4 zmtVYRh1`S+n=PyCF-a{<+~~V^8Cq z4bKZceDtQ~L4IIHr`jb$>UO+befahcA+1&naHFandw+0^s0Ndd9o_ZA_VxLrPEQI> zbNZm(%ddlm1zj82Zt#g&tJ8hDxn8@MJ0NdwenzK7ZU*i73D-38t>fBjd-pqCYvbEX zBQ+Uc4^DHd-=Rc-F04)Jm8XgEa_#h2 zr)m4{F8A8h;Y8!&uU0!Rc=PuA5oI&~FkN{u_SgDrlN+>8*csouX|~^W4^7MYQ47x{ zwx66mZcop~=fi$KFlBG>H%GSAD>TL|cm1y0m2bLTotm{^#9Ip!S5u$WNqXxSzr4^b zy*K7f8$9dc4284Y^U{QdtG_+(P`g|F<5Z_U@qg6z8u3Nk)7BG4x6mjjE_qziE6+GN zE9%D%4g2T&UcS3F>FUb;RM4Eo6QBJ&CQmL4UNO)+Y1Szxd0|HLg1WEQT3K*9x5Yr+ zf|uR}TU}@SZeHJDdtmfcg=6%>HeEi7y}o~;tesIlvqt=do%cT0_q;#u%YH5{En2z6 z?p^7toN>1ES2w?#JvwE2##=*PpD}xPlbdC)og3|bJIp0!LW;x0{d>l(dEZytr1z&a zKX+Ld+os5OWgDaGlQw04bqd(rKI7TjeQ$RB;`9ZB*5`STE|-7F=)ZZ7$+-S#|u zHg%R~N{hyq!yB&g9~SJms3Emt=YQz=`=5T_JxiU| zv(>4X>wbGSoIU%;!O*mJlNGt_;*-%0qnD~Xv~f<~8o#eJtIzR|PcP~E)z(oS zIV0;WKlV+Mdz~XuYmc4wyfOK!Ve0=f!Gp$pp z`6~gJZeLy+`t~f6?NuR-4gq3r@yf;rXZ9vjrYwOg#_^gTR_Akab3?HoSeki?ZNrR_r zM*lHw?|r&y`je24zFJUvIFyQbs#o^sq&7FZdXC)hwB>nn zr^ss&>#|>4`&g-nJsWlJ{O9h+GwU_JvV1~~Kfj-K;eF4co=IcgDmiuNW!9zsz1s~e z`>O5rqzSc4YWS+sdS1(z{@$^(;gM)wlWR;Vrc7szn3|D#N(kyhAmTd@m;*2cxiN9)r(t-F98rvjuv$5#G!N3z9 ztF%YoQ(oR%v;O$;Z$8;k)U8Exx7s)Mxg8s`{ewPE!B@Y2-Sv8lA0CBd4V>1w<{OW< zzKD6c#x2hCwdkRq-`pL&t%WYVdO_yM(xX5A?5=5k+V_{O-k!mawv}EPuqE!Q_v8DI z8b*cbYmTeo`>3Px(Bo4Rb~L+o|H;$|qk{SjS3|c>ymHhxEAiZ=pSQjk{Ql9;9#>oc z*&D4k)b@P&Zv3?@?f3h7I9*)6p~uAAzRkYucJUJ z{?*(kL&nrAns=h##T$3poEtT9mZ5k0`jVuvg*!X=Uhtn1yM0W0c!yb@i*ISR_wPKl zPDdx*f&t$gD_y@udGb_Y>VVb#hg{R<-zsaJ^iIs^z1nvpoU+C?elcz0lBAMvM~uI@ z^;6Fo4k-l--`U!sdemNzWoP=Vf7$T!(e*QYgNt838?fl?yk@C?jfDn(H?Vo=N6xou zKb^)L;kz>TWcs<_wnJCcj=UGrYW=3`YZK`&2YgmE>hYUjvjO2ZmYp^}3-4OAj2z!^ zi8>a&NzD=6@)_j%+tIMAu?v2Q~C(p?dL#D63w0qW?g2Q)i516aT+0oB= z@qopsRgCPz)45)qSGnoxTcQ~S|iTY&6chzSp-{J8Djzw(g>1z6-UEGtWF) zlIl15$t%}tRG7-0-5EYv5^x+jwap5*XHhBD?;EsY;&hu9*^lL#P z1uHoa#5pToAmBUEWp4lSljw3$Bv8&PKJ#jq$_c@?Fv>K2ksHp&Yfaf|J>2tGqmMH> zysMzuaL+C>okLjgE%X)b6t<*y$ArEuv@FC^rsg!5v|^oGuyvF#)2Jc-l@$jNX8;BBe>i+;qg7LSiq{8xB1T@qi0D z_{3Cl(g^zY)iZ@Zw1M9I*NS+M#xCQ6L6n!%PIGG~fR; zKQEV#HFI?c)6peHu2Jf%a0-a0e?>}=Xzq~FinC`40A{8laVs5@=+0ut4Lw>(R*|k;aVYG-1nd zUUId;eH{#5EX*Q6q8!$N9y)Y%lyGp;#s&kVS%4P1IUT%IbAfnGBHtzgFc5`=zetE& zlg5QBJlur`=92>^J zi7DVj65|4^#AI~mngiFVz=a0uzZHV|C z{Go`4D15^o9{B|LSDy-d(W*${abU4fJMBRp1#U>LyCdA;Q9DCL#1ikKA^ z-z%F$bRgH&fU=&jqGAB&PPsZgcqAt=U)dLFD2QejuL#5aL?e@qPZZ9CD8w@Ck4mM{ zQ8@DCQJO4p52@C`FqaR~W`o~fqzl)dSVE-|zyk8+VU!S+y%vLXhfmi^ELMb@!c|9%rEB+fO1Q+(Q9~g5 z0nB7;t4;-(JZS}C^K{3-#El@%g9{9~9(mxh7TmUBfM9q9*GeQeIEcYEhnNdc!*m!a zj5t*{8HT|8kY}llxGHdt&LFrET#}5`rsobqpUY8QI628&j{)M3l3KEJ2f^iByrT=3 zdZDgt_yv9vVbmDV%Rlxj;MsYw!2pht2xcG=5xC&X7}3zs(R0wRE+(6cpjR1^pW$ut zELKF9rx&2(Q4r@U#2AL_<3d18L5uzq=3;sr zToX#AW0Y(;GP|4tjA6$tBXmMfSWNiLN~*lvO1+(+I#M^d0*3j|_B(pBki-3F@cSiI zn;m5a_;k0OceCR{#r#p>fk_xI z$8>2vEa1(!nS>F=<>AIMdIBI~yY-J`cr%{7q;d&q$xR1~MSyJ~xYz~HsD?pOl@WZR za6QJrHx*ki*m|waC@Be_DFd9bg0l<);^hI$f^`Pm5nxE`=y)yoiPnMVzXEAFMVn&kPb0o1`AOxKk0$hu%T3qo zC=5K32JY6fbIk9A?q+N;mv|?_5D&t}u-WkUs|mu<1HzvRigF|{Q$Uo(ve6c87L^b; zQ`kyzX7E%84(5OkY+q#L@WY7~3K8aYEo^eQcJauL?c@3ra+zBu&ScRL$ZU}&E+lLX zln^HHvIE27kY^Sf;he4Hn!(jx$o+}UNB?{D+Jb%(!{iv}57YTSjQ=?%wxRGl?Q0U{ zI%psI@|8kcVmpB4z~>V98V(ayh=7UAmydo}d7Y>v`&P@$;MjzCrO#(}By>B>Z31V| z>=#@;v5oXMe6y^LcJMCGht3gxq?bHsB*EIkrJ_WBQ2AstGH(@jHGdiBFqG(3Sl0h1 z`;+ZWx*v7C&=%~N{73qzGIEmDe(IVFkzADE?h-wqgBMktM_zJN0~j)yR|&tXICpYs zx8@}3J>SteZ=@l)=qd$X&tVADg)N3Gf3ndMA&UdARw-6RXk(-B_m9&?u+OOwZRiqz zhc-4!v{g(Se*e-KNw)z94s7 z`dsi#Mqw&%A%{A#PuU;j9}sqd6k%3vwgyj(iNGiY#oAFUu1o|O*i#W(Ade%E6aWR| zbAVQk0t1z&f=&jP!zLZLiqaS0Dyy_=TEgNiR_t$OG$?F56`6o!rrI0AwGPr!Qu!*- zu@JV2?Qz6|5^ZL=uc%d2Yg)Tw0EtX@37k;nf>?p%Npw?Mruh(z2wNMLRR ziW^z{ZJy_t8GkIdo3PWd7Il;^B2`F;Kf8Mt8nJQ=dc!cS$({L1+Gehi-beB<7VjQK zXi-e?AMrj-8WBON2oK)SFBHx`v(JB+DJ(p|n#CD^m)k-pRvutpRb;hx~{4N2`T8P|LWDcbhL~-kw=zj)?P>K9ot|m(oEaW+Z4H^u=hJn&B5+G9@&y;Rn z2*`Nul})3-jAbweir(3=ok?28ype^TAnQ!5G0J`*5@|t)3DKM_YJ}iT&djPoepjS@ zbX-0w%_G4kZE7E!Y~eRgt9e!HXpIK(91X{K_#{9f2g6E&v8b<3JB)rqs|}1OnDR^@ z3=((}bRp(|S2WR(BP4=}DFYY=9bBC4L2y)>?U4gpHL~ui<#|vyyb(~OVk`==K(h^? zU;&dFn8C0TU3M-6EX^)}5T+)KWlCqIYoQS$91Rd7@*a+UV1{(P^jOD+fbgk-(|Ed}z0a2GTFsVGx0V#07*zZ9W7PM0+6E%Czz-X%!F! zK7dbi9SwMDp=6RE#IG z1;pxp=Fp6kwx6RK6SM=Sjc7H7QO}*+Nzm#uQF<1v?(TR-r@T@q=3ACh;-d4aqV%p` zqHr!Tl)kDs6SiKWJe-R#>eU6WsvruYJxY{@=$bifQ8M9a0tkdqA&odnv*Qz&CCgO0 zBFk=wj>-l{%O*U_5z3XK71ZHqedH1;{vMK76Lt}DC8K$NM#}_bmj;dGYUrlbLnfuD zR^%d}A+y#l$|8P^5EzE8lmrc1eLe6g&wRpffemwr(Cvc_9)~H^k`LQ97;@a8!h9yJ{m=MYnI+rCe!@12 zYZLdU)e(gwBNIE1t&RU%B6);FbN&$`!*ROYtXNq6|0k%-a!Cn_BEcn+|7!@{HCIdJ z{I`$d|6%&ZL(ByVwzgW0#MHvUA)ed+6sNF(#zMBjKWNL0c=#n!7i?NQJ9$|RxNrhb zL?xuw95~Yi3v32eUUUt(TEgF^!*V7qDB_V|s~@c$hUbJ*Mk@t-aQ+cMsR{*Kd&p2B zv6SAT^Yq4QqY)%hY`?%B0GkDY_>@5BA)9xj5zbnW1FIwzvKAtA;SQU8LeYm+vEtUy z4T-}Z2O;Nq@LXy%1(r5YIKa-`vo$G!!LD&9NLmHExAG%!M`eRHKnwK3!zm#0n@nKc z#*L~$kB4L#cno3bqp?sY*_2x-spJso97w`85RRS!ZD8w!?ZBNA{0mKo6Pty|h{bVt z8Qn6y5e1?^ZqO`4UPch{X$L zz~X#Q^zH=Z$ctlV_!D6pRyh1PlWwmm;$z|cq*HT3}lW9L}d)tW~nJGPmw|}PE$2&bR)6Y9y6X37*3DRiOHGn6t08<4`^q$&bT?}|7CLC_<_Yu=l3tr5<@TZzt9jQJ|GYdMe~RJl^`OPsYHoR=+62owg2L8?DR@IqnUkNR z2p1)oM-e%oK$Fi_Sj^213MM$3;T7ScgsOx!3@kz{81C?ud5rBWg&N}H9g zF8~qQ03D_X7bR2%Y%e$@5S@+MLxYL!a+(nVq^hnMMkd4{hQXB*g$I_|SGz(&<%Yf! z#9G(<=U~EFRJ_P%WNy|}4d6_*p3=f%Cz@fvsxRO}Fw)|9;fQdRE z*BM}r7NDg*RwZy@=bP0mINI44rr+7uD(-boMo@&~=>RH)OR>^WTF{i!aui*L9-8Jg zfJmbJ@4{wsvYYMl8#^AgK###W$Q;Ef(%9P$ksF0(kQPbSV6yTff$rw*4VPviAa6FD ze}R>e@tT9j8gkU>a&K>eF9h4fTmHB;qbreEVT7adjj)-)EghUKA;&?0SyT{h|GkyW=}TifVWf;#_9q%y$aqVh}cUHKL!{tO^hFQK5mehjT&cu z4aE`B1<%Ov`rfvF7f!U!R36=Lf@PF_0j4hT-3r!F2>0@TZ<8g}c@`|Tyi8(b*e)g% zW4pJCiN=x#hM*#xeSy`N?sGN)zKW4!`WJGPM=2{}Y`RGehq&PYp+I8hr%HnpP(s(^+}?k%U7Q>qfE z^qpY>mNhe_@EiuT#hTPSt{2(NC;XMz63IDBJ6v)Z-N^=HU zuEDwpbo_&r! zWZ2IL6BLkOJyD?&My`@9s?ozIK?$BoO=W;X#5vw@WK65hvQ~pplU~^xK-pF~9KhxT z?XP4dpysP&4Xp0JQuIWvzK|NE55bzCgBD8nB8(AK&k zzE=%kW*c2Ou$;}Zk|Y>H8Oj@m^k?Wp72yaXcJyU1HBr?_Cc~!=up@R#E3sI4jHpnd z(fnHMg_nXc z9z%_25B7l+j z%N8TNgoUguLdYy_Du_I?{DS-)(<`zviy&)pq*P!)B!>iInI!=Fteu}99vMKUSUy~f z%4lP>3TsgD$iPUH3?%Dc(9&%mkRnV$6f&Zr)h^8w8CC5AL}X314-if(YM=U9VUE!s z*#`(c_)z$@OK-z^Lt9Z*V#A`n;Sr^hq%GCnkY8a@wHtVpOjWEw)xJ>FoQ2h1!-llR zNGw3KdDSj}_~uiUg!$AyWV8a+Y%{eFRI#npK2W5sqxOM?(kyKmW!)`sDRyINgt3U? z8JIQLb{V7$M9#GI9|1@7YGNa(UE0UmF&UQ`?5o{+kQgXc_FleeDD?WOf^kVK>1Nxc zT?i=v$qg4EBr!=GPeNZIJ@1C!-E5(Ks{ z58@hYX=JlcQ*q@$0je^)#fok4&`MQaWE}gnk3bdM#_R-&7{fTn@b-bi+P?VCwe1Xv zvvt`A5Z{z#9|*);C3H&u!-1!Ct`vkTd;ib^92OQzxHs<2AnSFIsu3DdvldI7g;0hz- ztXLUA8GCAT`~y&t=o1JEOy3|sp8#c0pqEd3WxLjj5u%%&&-X;maRdVpKCgk+74F=j zEA9#?U0MAsV-o{_K15rJ2X+wEs#D5(F)GUhV8l7my; zZ1XiF@HGViF=$UjykdP5yb}!iT&x)e^#D|1SKWXE%wJ^%Fscjm2DQdQ<8Gx>QTqC=>EdxhJ@bhEOGjT!B=PaKIH^lL2Oj7y( znCFAQ6d|r-fAi9AvP=gVK5y`g%PvE$R;UY>32{BMi;hl}WkUt<2)J*veK;qLy06J!^&7eg#4>8P{g-*Jn@f-@6Wgh9_A7Ui+{L zz?0p+q%}p1h|BcIc4wSqGJFOK5b5Dq-PXCw(cu-w6)`sVd)@c$0X>3GR{=KL>r@6C zfvrUhv~0nRb(sJRpJ)Nl$*z?K%9&ooU@y(B=K%i9W%zU#fTbE%8Z6HeBZixC=fsvh z4P-KW`U&7ZwH>Y%6N&len;402d@ropQeP&+M~Fl(Pn#QW1qrjAMvTPDvcwg?gYRg3 zgrjXr zxN?j-VjLFBG>vxFmC5i)5a4iPfXz5CdQU*b^8T9`ff)}5haU&P_{0eikY`mE0Zxa{ zs$0d-zaIG6!`2|t;u9}`{y}zSq4Tx**5E%lmoz^bI1WC-Wlv?a89r+PvNQ;Zn}0dI z!|SJElYozK##PU;8NAp&BnDc2T*$xQ06v3{P(V%@RY{;$%tc}h0{2{*aus?TpFVgp9={GcgV)roY(Hq=ig|k8ogY_|#?`fClAQp2R3@ zTEDdVULXNJ?+N-Od7I5BFbr9$H>`1{KD)ZK`KYB#hL3PzSii$&JUCKV+NH#VnAYQ+ z5>q>w44)nXLL4iz839}!#bzoo;QlusPgw@k$459d_cnI4RRn*P)k=)ShC>fSJZge3 zYItG Date: Mon, 9 Nov 2020 12:37:38 +0100 Subject: [PATCH 014/230] Updated plugin version numbers to 4.1.0 --- src/Plugins/SmartStore.AmazonPay/Description.txt | 4 ++-- src/Plugins/SmartStore.Clickatell/Description.txt | 4 ++-- src/Plugins/SmartStore.DevTools/Description.txt | 4 ++-- src/Plugins/SmartStore.FacebookAuth/Description.txt | 4 ++-- src/Plugins/SmartStore.GoogleAnalytics/Description.txt | 4 ++-- src/Plugins/SmartStore.GoogleMerchantCenter/Description.txt | 4 ++-- src/Plugins/SmartStore.OfflinePayment/Description.txt | 4 ++-- src/Plugins/SmartStore.PayPal/Description.txt | 4 ++-- src/Plugins/SmartStore.Shipping/Description.txt | 4 ++-- src/Plugins/SmartStore.ShippingByWeight/Description.txt | 4 ++-- src/Plugins/SmartStore.Tax/Description.txt | 4 ++-- src/Plugins/SmartStore.WebApi/Description.txt | 4 ++-- 12 files changed, 24 insertions(+), 24 deletions(-) diff --git a/src/Plugins/SmartStore.AmazonPay/Description.txt b/src/Plugins/SmartStore.AmazonPay/Description.txt index 653a4d3ae4..d1d7b1f869 100644 --- a/src/Plugins/SmartStore.AmazonPay/Description.txt +++ b/src/Plugins/SmartStore.AmazonPay/Description.txt @@ -1,8 +1,8 @@ FriendlyName: Login and Pay with Amazon SystemName: SmartStore.AmazonPay Group: Payment -Version: 4.0.1 -MinAppVersion: 4.0.1 +Version: 4.1.0 +MinAppVersion: 4.1.0 Author: SmartStore AG DisplayOrder: 1 FileName: SmartStore.AmazonPay.dll diff --git a/src/Plugins/SmartStore.Clickatell/Description.txt b/src/Plugins/SmartStore.Clickatell/Description.txt index 8e43756f29..7b21236685 100644 --- a/src/Plugins/SmartStore.Clickatell/Description.txt +++ b/src/Plugins/SmartStore.Clickatell/Description.txt @@ -1,8 +1,8 @@ FriendlyName: Clickatell SMS Provider SystemName: SmartStore.Clickatell Group: Mobile -Version: 4.0.1 -MinAppVersion: 4.0.1 +Version: 4.1.0 +MinAppVersion: 4.1.0 DisplayOrder: 1 FileName: SmartStore.Clickatell.dll ResourceRootKey: Plugins.Sms.Clickatell \ No newline at end of file diff --git a/src/Plugins/SmartStore.DevTools/Description.txt b/src/Plugins/SmartStore.DevTools/Description.txt index e89b8dd27f..1b877ec5cd 100644 --- a/src/Plugins/SmartStore.DevTools/Description.txt +++ b/src/Plugins/SmartStore.DevTools/Description.txt @@ -1,8 +1,8 @@ FriendlyName: Smartstore Developer Tools (MiniProfiler and other goodies) SystemName: SmartStore.DevTools Group: Developer -Version: 4.0.1 -MinAppVersion: 4.0.1 +Version: 4.1.0 +MinAppVersion: 4.1.0 DisplayOrder: 1 FileName: SmartStore.DevTools.dll ResourceRootKey: Plugins.Developer.DevTools \ No newline at end of file diff --git a/src/Plugins/SmartStore.FacebookAuth/Description.txt b/src/Plugins/SmartStore.FacebookAuth/Description.txt index b094ef35bb..cc2fb6eb8e 100644 --- a/src/Plugins/SmartStore.FacebookAuth/Description.txt +++ b/src/Plugins/SmartStore.FacebookAuth/Description.txt @@ -1,8 +1,8 @@ FriendlyName: Facebook Login SystemName: SmartStore.FacebookAuth Group: Security -Version: 4.0.1 -MinAppVersion: 4.0.1 +Version: 4.1.0 +MinAppVersion: 4.1.0 DisplayOrder: 5 FileName: SmartStore.FacebookAuth.dll ResourceRootKey: Plugins.ExternalAuth.Facebook \ No newline at end of file diff --git a/src/Plugins/SmartStore.GoogleAnalytics/Description.txt b/src/Plugins/SmartStore.GoogleAnalytics/Description.txt index f3ba5ffe9b..c61b53cd5e 100644 --- a/src/Plugins/SmartStore.GoogleAnalytics/Description.txt +++ b/src/Plugins/SmartStore.GoogleAnalytics/Description.txt @@ -1,8 +1,8 @@ FriendlyName: Google Analytics SystemName: SmartStore.GoogleAnalytics Group: Analytics -Version: 4.0.1 -MinAppVersion: 4.0.1 +Version: 4.1.0 +MinAppVersion: 4.1.0 DisplayOrder: 1 FileName: SmartStore.GoogleAnalytics.dll ResourceRootKey: Plugins.Widgets.GoogleAnalytics diff --git a/src/Plugins/SmartStore.GoogleMerchantCenter/Description.txt b/src/Plugins/SmartStore.GoogleMerchantCenter/Description.txt index 5b6cc685f8..c3df5d3a1a 100644 --- a/src/Plugins/SmartStore.GoogleMerchantCenter/Description.txt +++ b/src/Plugins/SmartStore.GoogleMerchantCenter/Description.txt @@ -1,8 +1,8 @@ FriendlyName: Google Merchant Center (GMC) feed SystemName: SmartStore.GoogleMerchantCenter Group: Marketing -Version: 4.0.1 -MinAppVersion: 4.0.1 +Version: 4.1.0 +MinAppVersion: 4.1.0 Author: SmartStore AG DisplayOrder: 1 FileName: SmartStore.GoogleMerchantCenter.dll diff --git a/src/Plugins/SmartStore.OfflinePayment/Description.txt b/src/Plugins/SmartStore.OfflinePayment/Description.txt index 232969f941..f0ef143724 100644 --- a/src/Plugins/SmartStore.OfflinePayment/Description.txt +++ b/src/Plugins/SmartStore.OfflinePayment/Description.txt @@ -2,8 +2,8 @@ Description: Contains common offline payment methods like Direct Debit, Invoice, Prepayment etc. Group: Payment SystemName: SmartStore.OfflinePayment -Version: 4.0.1 -MinAppVersion: 4.0.1 +Version: 4.1.0 +MinAppVersion: 4.1.0 DisplayOrder: 0 FileName: SmartStore.OfflinePayment.dll ResourceRootKey: Plugins.SmartStore.OfflinePayment diff --git a/src/Plugins/SmartStore.PayPal/Description.txt b/src/Plugins/SmartStore.PayPal/Description.txt index d87d5ceb14..fad65abd0c 100644 --- a/src/Plugins/SmartStore.PayPal/Description.txt +++ b/src/Plugins/SmartStore.PayPal/Description.txt @@ -2,8 +2,8 @@ Description: Provides the PayPal payment methods PayPal Standard, PayPal Direct, PayPal Express and PayPal PLUS. SystemName: SmartStore.PayPal Group: Payment -Version: 4.0.1 -MinAppVersion: 4.0.1 +Version: 4.1.0 +MinAppVersion: 4.1.0 DisplayOrder: 1 FileName: SmartStore.PayPal.dll ResourceRootKey: Plugins.SmartStore.PayPal diff --git a/src/Plugins/SmartStore.Shipping/Description.txt b/src/Plugins/SmartStore.Shipping/Description.txt index ca2bad58b5..ea61442861 100644 --- a/src/Plugins/SmartStore.Shipping/Description.txt +++ b/src/Plugins/SmartStore.Shipping/Description.txt @@ -2,8 +2,8 @@ Description: Provides shipping methods for fixed rate shipping and computation based on weight. SystemName: SmartStore.Shipping Group: Shipping -Version: 4.0.1 -MinAppVersion: 4.0.1 +Version: 4.1.0 +MinAppVersion: 4.1.0 DisplayOrder: 1 FileName: SmartStore.Shipping.dll ResourceRootKey: Plugins.SmartStore.Shipping \ No newline at end of file diff --git a/src/Plugins/SmartStore.ShippingByWeight/Description.txt b/src/Plugins/SmartStore.ShippingByWeight/Description.txt index 75dfe732ab..48b9fe7f60 100644 --- a/src/Plugins/SmartStore.ShippingByWeight/Description.txt +++ b/src/Plugins/SmartStore.ShippingByWeight/Description.txt @@ -1,8 +1,8 @@ FriendlyName: Shipping by weight SystemName: SmartStore.ShippingByWeight Group: Shipping -Version: 4.0.1 -MinAppVersion: 4.0.1 +Version: 4.1.0 +MinAppVersion: 4.1.0 DisplayOrder: 1 FileName: SmartStore.ShippingByWeight.dll ResourceRootKey: Plugins.Shipping.ByWeight \ No newline at end of file diff --git a/src/Plugins/SmartStore.Tax/Description.txt b/src/Plugins/SmartStore.Tax/Description.txt index 4c8c76c5e6..82635b6cac 100644 --- a/src/Plugins/SmartStore.Tax/Description.txt +++ b/src/Plugins/SmartStore.Tax/Description.txt @@ -2,8 +2,8 @@ Description: Contains default tax providers like FixedRate, ByRegion etc. Group: Tax SystemName: SmartStore.Tax -Version: 4.0.1 -MinAppVersion: 4.0.1 +Version: 4.1.0 +MinAppVersion: 4.1.0 DisplayOrder: 0 FileName: SmartStore.Tax.dll ResourceRootKey: Plugins.SmartStore.Tax diff --git a/src/Plugins/SmartStore.WebApi/Description.txt b/src/Plugins/SmartStore.WebApi/Description.txt index 6c569e9191..4d760b4217 100644 --- a/src/Plugins/SmartStore.WebApi/Description.txt +++ b/src/Plugins/SmartStore.WebApi/Description.txt @@ -1,8 +1,8 @@ FriendlyName: Smartstore Web API SystemName: Smartstore.WebApi Group: API -Version: 4.0.1 -MinAppVersion: 4.0.1 +Version: 4.1.0 +MinAppVersion: 4.1.0 Author: SmartStore AG DisplayOrder: 1 FileName: SmartStore.WebApi.dll From 1bdc4d1ed1869cf376ddcc6a8b8cc81b75d9c271 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Mon, 9 Nov 2020 12:40:02 +0100 Subject: [PATCH 015/230] Updated Smartstore version number to 4.1.0 --- SmartStoreNET.Tasks.Targets | 2 +- src/AssemblyVersionInfo.cs | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/SmartStoreNET.Tasks.Targets b/SmartStoreNET.Tasks.Targets index 23217bbf80..ea81ba849b 100644 --- a/SmartStoreNET.Tasks.Targets +++ b/SmartStoreNET.Tasks.Targets @@ -39,7 +39,7 @@ x86 $(BUILD_NUMBER) - 4.0.1 + 4.1.0 $(StageFolder) .$(Version) diff --git a/src/AssemblyVersionInfo.cs b/src/AssemblyVersionInfo.cs index ee72bffeb5..118362db5e 100644 --- a/src/AssemblyVersionInfo.cs +++ b/src/AssemblyVersionInfo.cs @@ -9,7 +9,7 @@ // // You can specify all the values or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly: AssemblyVersion("4.0.1.0")] +[assembly: AssemblyVersion("4.1.0.0")] -[assembly: AssemblyFileVersion("4.0.1.0")] -[assembly: AssemblyInformationalVersion("4.0.1.0")] +[assembly: AssemblyFileVersion("4.1.0.0")] +[assembly: AssemblyInformationalVersion("4.1.0.0")] From c184734f575c9082bc4f5f2237e9d525c7fa4b97 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Mon, 9 Nov 2020 13:35:38 +0100 Subject: [PATCH 016/230] Added 4.1.0 to breaking changes info --- src/Libraries/SmartStore.Core/SmartStoreVersion.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Libraries/SmartStore.Core/SmartStoreVersion.cs b/src/Libraries/SmartStore.Core/SmartStoreVersion.cs index 9a2b475c10..5dfc733e57 100644 --- a/src/Libraries/SmartStore.Core/SmartStoreVersion.cs +++ b/src/Libraries/SmartStore.Core/SmartStoreVersion.cs @@ -47,7 +47,8 @@ public static class SmartStoreVersion new Version("3.2.1"), new Version("3.2.2"), new Version("4.0.0"), - new Version("4.0.1") + new Version("4.0.1"), + new Version("4.1.0") }; private const string HELP_BASEURL = "https://docs.smartstore.com/display/"; From 094e7393531e388efa45bd6a4224525c4b4cb9c8 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Mon, 9 Nov 2020 13:37:13 +0100 Subject: [PATCH 017/230] Updated resources for 4.1.0 --- .../202011091154314_V410Resources.Designer.cs | 29 + .../202011091154314_V410Resources.cs | 857 ++++++++++++++++ .../202011091154314_V410Resources.resx | 126 +++ .../Migrations/MigrationsConfiguration.cs | 821 +-------------- .../SmartStore.Data/SmartStore.Data.csproj | 7 + .../Localization/App/de/all.smres.xml | 934 ++++++++++-------- .../App_Data/Localization/App/de/head.txt | 2 +- .../Localization/App/en/all.smres.xml | 898 +++++++++-------- .../App_Data/Localization/App/en/head.txt | 2 +- 9 files changed, 2002 insertions(+), 1674 deletions(-) create mode 100644 src/Libraries/SmartStore.Data/Migrations/202011091154314_V410Resources.Designer.cs create mode 100644 src/Libraries/SmartStore.Data/Migrations/202011091154314_V410Resources.cs create mode 100644 src/Libraries/SmartStore.Data/Migrations/202011091154314_V410Resources.resx diff --git a/src/Libraries/SmartStore.Data/Migrations/202011091154314_V410Resources.Designer.cs b/src/Libraries/SmartStore.Data/Migrations/202011091154314_V410Resources.Designer.cs new file mode 100644 index 0000000000..316f66a305 --- /dev/null +++ b/src/Libraries/SmartStore.Data/Migrations/202011091154314_V410Resources.Designer.cs @@ -0,0 +1,29 @@ +// +namespace SmartStore.Data.Migrations +{ + using System.CodeDom.Compiler; + using System.Data.Entity.Migrations; + using System.Data.Entity.Migrations.Infrastructure; + using System.Resources; + + [GeneratedCode("EntityFramework.Migrations", "6.4.4")] + public sealed partial class V410Resources : IMigrationMetadata + { + private readonly ResourceManager Resources = new ResourceManager(typeof(V410Resources)); + + string IMigrationMetadata.Id + { + get { return "202011091154314_V410Resources"; } + } + + string IMigrationMetadata.Source + { + get { return null; } + } + + string IMigrationMetadata.Target + { + get { return Resources.GetString("Target"); } + } + } +} diff --git a/src/Libraries/SmartStore.Data/Migrations/202011091154314_V410Resources.cs b/src/Libraries/SmartStore.Data/Migrations/202011091154314_V410Resources.cs new file mode 100644 index 0000000000..34543f8e68 --- /dev/null +++ b/src/Libraries/SmartStore.Data/Migrations/202011091154314_V410Resources.cs @@ -0,0 +1,857 @@ +namespace SmartStore.Data.Migrations +{ + using System; + using System.Data.Entity.Migrations; + using System.Linq; + using SmartStore.Core.Domain.Configuration; + using SmartStore.Core.Domain.Media; + using SmartStore.Core.Domain.Seo; + using SmartStore.Data.Setup; + using SmartStore.Utilities; + + public partial class V410Resources : DbMigration, ILocaleResourcesProvider, IDataSeeder + { + public override void Up() + { + } + + public override void Down() + { + } + + public bool RollbackOnFailure => false; + + public void Seed(SmartObjectContext context) + { + context.MigrateLocaleResources(MigrateLocaleResources); + MigrateSettings(context); + context.SaveChanges(); + } + + public void MigrateSettings(SmartObjectContext context) + { + var settings = context.Set(); + + // Add .ico extension to MediaSettings.ImageTypes + var name = TypeHelper.NameOf(y => y.ImageTypes, true); + var setting = settings.FirstOrDefault(x => x.Name == name); + if (setting != null) + { + var arr = setting.Value.EmptyNull() + .Replace(Environment.NewLine, " ") + .ToLower() + .Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries); + + if (!arr.Contains("ico")) + { + setting.Value += " ico"; + } + } + + // Migrate old 'defaultSeoSettings' into new SeoSettings + // Old settings. + var defaultTitle = settings.FirstOrDefault(x => x.Name == "SeoSettings.DefaultTitle"); + var defaultMetaKeywords = settings.FirstOrDefault(x => x.Name == "SeoSettings.DefaultMetaKeywords"); + var defaultMetaDescription = settings.FirstOrDefault(x => x.Name == "SeoSettings.DefaultMetaDescription"); + + // New settings. + context.MigrateSettings(x => + { + x.Add(TypeHelper.NameOf(y => y.MetaTitle, true), defaultTitle != null && defaultTitle.Value.HasValue() ? defaultTitle.Value : ""); + x.Add(TypeHelper.NameOf(y => y.MetaDescription, true), defaultMetaDescription != null && defaultMetaDescription.Value.HasValue() ? defaultMetaDescription.Value : ""); + x.Add(TypeHelper.NameOf(y => y.MetaKeywords, true), defaultMetaKeywords != null && defaultMetaKeywords.Value.HasValue() ? defaultMetaKeywords.Value : ""); + }); + + if (defaultTitle != null) settings.Remove(defaultTitle); + if (defaultMetaDescription != null) settings.Remove(defaultMetaDescription); + if (defaultMetaKeywords != null) settings.Remove(defaultMetaKeywords); + } + + public void MigrateLocaleResources(LocaleResourcesBuilder builder) + { + builder.Delete( + "Admin.SalesReport.Bestsellers.RunReport", + "Admin.SalesReport.NeverSold.RunReport", + "Admin.Customers.Reports.RunReport", + "Admin.Customers.Reports.BestBy.BestByNumberOfOrders", + "Admin.Customers.Reports.BestBy.BestByNumberOfOrders"); + + builder.AddOrUpdate("Admin.Customers.Reports.BestCustomers", "Top customers", "Top Kunden"); + + builder.AddOrUpdate("Admin.Configuration.Settings.Search.SearchProductByIdentificationNumber", + "Open product directly at SKU, MPN or GTIN", + "Produkt bei SKU, MPN oder GTIN direkt öffnen", + "Specifies whether the product page should be opened directly if the search term matches a SKU, MPN or GTIN.", + "Legt fest, ob bei einer Übereinstimmung des Suchbegriffes mit einer SKU, MPN oder GTIN die Produktseite direkt geöffnet werden soll."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.PasswordMinLength", + "Minimum password length", + "Mindestlänge eines Passworts", + "Specifies the minimum length of a password.", + "Legt die minimale Länge eines Passworts fest."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.MinDigitsInPassword", + "Minimum digits in password", + "Mindestanzahl von Ziffern im Passwort", + "Specifies the minimum number of digits for a password.", + "Legt die Mindestanzahl von Ziffern eines Passworts fest."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.MinSpecialCharsInPassword", + "Minimum special characters in password", + "Mindestanzahl von Sonderzeichen im Passwort", + "Specifies the minimum number of special characters for a password.", + "Legt die Mindestanzahl von Sonderzeichen eines Passworts fest."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.MinUppercaseCharsInPassword", + "Minimum uppercase letters in password", + "Mindestanzahl von Großbuchstaben im Passwort", + "Specifies the minimum number of uppercase letters for a password.", + "Legt die Mindestanzahl von Großbuchstaben eines Passworts fest."); + + builder.AddOrUpdate("Account.Fields.Password.MustContainChars", + "The password must contain at least {0}.", + "Das Passwort muss mindestens {0} enthalten."); + builder.AddOrUpdate("Account.Fields.Password.Digits", "{0} digits", "{0} Ziffern"); + builder.AddOrUpdate("Account.Fields.Password.SpecialChars", "{0} special characters", "{0} Sonderzeichen"); + builder.AddOrUpdate("Account.Fields.Password.UppercaseChars", "{0} uppercase letters", "{0} Großbuchstaben"); + + builder.AddOrUpdate("Admin.Rules.FilterDescriptor.PaymentMethod", "Payment method", "Zahlart"); + builder.AddOrUpdate("Admin.Rules.FilterDescriptor.Group.BrowserUserAgent", "Browser User Agent", "Browser User-Agent"); + + builder.AddOrUpdate("Admin.Orders.NoOrdersSelected", + "No orders are selected. Please select the desired orders.", + "Es sind keine Aufträge ausgewählt. Bitte wählen Sie die gewünschten Aufträge aus."); + + builder.AddOrUpdate("Admin.Orders.ProcessSelectedOrders", + "There are {0} orders selected. Would you like to proceed?", + "Es sind {0} Aufträge ausgewählt. Möchten Sie fortfahren?"); + + builder.AddOrUpdate("Admin.Orders.ProcessingResult", + "
{0} of {1} orders were successfully processed.
{2} orders cannot be changed as desired due to their current status and were skipped.", + "
Es wurden {0} von {1} Aufträgen erfolgreich verarbeitet.
{2} Aufträge können aufgrund ihres aktuellen Status nicht wie gewünscht geändert werden und wurden übersprungen."); + + builder.AddOrUpdate("Admin.Configuration.Countries.Fields.DefaultCurrency", + "Default currency", + "Standardwährung", + "Specifies the default currency. Preselects the default currency in the shop according to the country to which the current IP address belongs.", + "Legt die Standardwährung fest. Bewirkt im Shop eine Vorauswahl der Standardwährung anhand des Landes, zu dem die aktuelle IP-Adresse gehört."); + + builder.AddOrUpdate("Admin.Catalog.Attributes.CheckoutAttributes.Values.Fields.MediaFile", + "Picture", + "Bild", + "Specifies an image to be displayed as the selection element for the attribute.", + "Legt ein Bild fest, welches als Auswahlelement für das Attribut angezeigt werden soll."); + + builder.AddOrUpdate("Admin.Catalog.Attributes.CheckoutAttributes.Values.Fields.Color", + "RGB color", + "RGB-Farbe", + "Specifies a color for the color squares control.", + "Legt eine Farbe für das Farbflächen-Steuerelement fest."); + + builder.AddOrUpdate("Common.Entity.CheckoutAttributeValue", "Checkout attribute option", "Checkout-Attribut-Option"); + + builder.AddOrUpdate("Checkout.MaxOrderSubtotalAmount", + "The maximum order value for the subtotal is {0}.", + "Der Höchstbestellwert für die Zwischensumme ist {0}."); + + builder.AddOrUpdate("Checkout.MaxOrderTotalAmount", + "The maximum order value for the total is {0}.", + "Der Höchstbestellwert der Gesamtsumme ist {0}."); + + builder.AddOrUpdate("Admin.Customers.CustomerRoles.Fields.MinOrderTotal", + "Minimum order total", + "Mindestbestellwert", + "Defines the minimum order total for customers in this group.", + "Legt den Mindestbestellwert für Kunden in dieser Gruppe fest."); + + builder.AddOrUpdate("Admin.Customers.CustomerRoles.Fields.MaxOrderTotal", + "Maximum order total", + "Höchstbestellwert", + "Defines the maximum order total for customers in this group.", + "Legt den Höchstbestellwert für Kunden in dieser Gruppe fest."); + + builder.AddOrUpdate("Admin.Configuration.Settings.Order.MinOrderTotal", + "Minimum order total", + "Mindestbestellwert", + "Defines the default minimum order total for the shop. Overridden by customer group restrictions.", + "Legt den standardmäßigen Mindestbestellwert für den Shop fest. Wird von Beschränkungen in Kundengruppen überschrieben."); + + builder.AddOrUpdate("Admin.Configuration.Settings.Order.MaxOrderTotal", + "Maximum order total", + "Höchstbestellwert", + "Defines the default maximum order total for the shop. Overridden by customer group restrictions.", + "Legt den standardmäßigen Höchstbestellwert für den Shop fest. Wird von Beschränkungen in Kundengruppen überschrieben."); + + builder.AddOrUpdate("Admin.Configuration.Settings.Order.ApplyToSubtotal", + "Order total restriction in relation to subtotal", + "Beschränkung bezogen auf Zwischensumme", + "Determines whether the min/max order value refers to the order subtotal, otherwise it refers to the total amount.", + "Bestimmt, ob sich der Mindest-/Höchstbetrag auf die Auftragszwischensumme bezieht, andernfalls bezieht er sich auf den Gesamtbetrag."); + + builder.Delete("Admin.Configuration.Settings.Order.MaxOrderSubtotalAmount", + "Admin.Configuration.Settings.Order.MaxOrderSubtotalAmount.Hint", + "Admin.Configuration.Settings.Order.MaxOrderTotalAmount", + "Admin.Configuration.Settings.Order.MaxOrderTotalAmount.Hint", + "Admin.Configuration.Settings.Order.MinOrderSubtotalAmount", + "Admin.Configuration.Settings.Order.MinOrderSubtotalAmount.Hint", + "Admin.Configuration.Settings.Order.MinOrderTotalAmount", + "Admin.Configuration.Settings.Order.MinOrderTotalAmount.Hint"); + + builder.AddOrUpdate("Admin.Configuration.Settings.Order.OrderTotalRestrictionType", + "Restrictions in customer groups are cumulative", + "Beschränkungen in Kundengruppen sind kumulativ", + "Determines whether multiple order total restrictions are cumulated by customer group assignments.", + "Bestimmt, ob mehrfache Bestellwertbeschränkungen durch Kundengruppenzuordnungen kumuliert werden."); + + builder.Delete("Products.AskQuestion.Question.Text"); + + builder.AddOrUpdate("Products.AskQuestion.Sent", + "Thank you. Your inquiry has been sent successfully.", + "Vielen Dank. Ihre Anfrage wurde erfolgreich gesendet."); + + builder.AddOrUpdate("Products.AskQuestion.Question.GeneralInquiry", + "I have following questions concerning the product {0}:", + "Ich habe folgende Fragen zum Artikel {0}:"); + + builder.AddOrUpdate("Products.AskQuestion.Question.QuoteRequest", + "I would like to request price information on the following article: {0}", + "Ich bitte um Preisinformationen zu folgendem Artikel: {0}"); + + builder.AddOrUpdate("Products.AskQuestion.CallHotline", "or call directly", "oder rufen Sie direkt an"); + + builder.AddOrUpdate("Products.AskQuestion.TitleQuoteRequest", "Request for quotation", "Angebotsanfrage"); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.CustomerFormFields.Description", + "Manage form fields that are displayed during registration.
" + + "In order to ensure the address transfer from the registration form, " + + "it is necessary that the following fields are activated and filled in by the customer: " + + "
  • First name
  • Last name
  • E-mail
  • and all fields that are selected as required in the tab 'Addresses'
", + "Verwalten Sie Formularfelder, die während der Registrierung angezeigt werden.
" + + "Um die Adressübergabe aus dem Registrierungsformular zu gewährleisten, ist es notwending, " + + "dass folgende Felder aktiviert und vom Kunden ausgefüllt sind:" + + "
  • Vorname
  • Nachname
  • E-Mail
  • und alle Felder die im Tab \"Adressen\" als erforderlich ausgewählt sind
"); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.Cookies.AddCookieInfo.Title", + "Add new cookie information", + "Neue Cookie-Informationen hinzufügen"); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.Cookies.EditCookieInfo.Title", + "Edit new cookie information", + "Cookie-Informationen bearbeiten"); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.CookieInfo.Name", + "Name", + "Name", + "Specifies the display name of the cookie information.", + "Bestimmt den Anzeigenamen der Cookie-Information."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.CookieInfo.Description", + "Description", + "Beschreibung", + "Specifies the description of the cookie information.", + "Bestimmt die Beschreibung der Cookie-Information."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.CookieInfo.CookieType", + "Cookie type", + "Art des Cookies", + "Specifies the usage type of the cookie (Required, Analytics, ThirdParty).", + "Bestimmt die Verwendungsart des Cookies (Required, Analytics, ThirdParty)."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.SameSiteMode", + "'SameSite' mode", + "'SameSite' Modus"); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.SameSiteMode.AdminInstruction", + @"
SameSite Mode
+

+ The SameSite setting for cookies specifies the level of security for cookies when they are requested by other sites (e.g. in a cross-site request or in an iframe). + The recommended setting is Lax, as cookies are sent with most secure actions. +
+ If the store should also be embedded in an iframe, it is necessary to select the setting None. Additionally SSL must be set up in the store. +

+
    +
  • Unspecified: No SameSite header is transmitted to requests.
  • +
  • None: No mode specified. This setting must be used if the store should also be embedded in an iframe (SSL must be set up).
  • +
  • Lax: Recommended setting. Cookies are sent at the highest level for requests on the same website and for cross-site requests.
  • +
  • Strict: Cookies are only sent to requests from the same website.
  • +
", + @"
SameSite Modus
+

+ Die SameSite-Einstellung für Cookies bestimmt, das Sicherheitslevel für Cookies, wenn diese von anderen Seiten (z.B. in einem Cross-Site-Request oder in einem IFrame) aufgerufen werden. + Die empfohlene Einstellung ist Lax, da hier Cookies bei den meisten gesicherten Aktionen mitgesendet werden. +
+ Soll der Shop auch in ein IFrame eingebettet werden, ist es notwendig die Einstellung None zu wählen. Zusätzlich muss SSL im Shop eingerichtet sein. +

+
    +
  • Unspecified: Es wird kein SameSite-Header an Requests übermittelt.
  • +
  • None: Kein Modus angegeben. Diese Einstellung muss verwendet werden, wenn der Shop auch in ein IFrame eingebettet werden soll (SSL muss eingerichtet sein).
  • +
  • Lax: Empfohlene Einstellung. Cookies werden bei Anfragen auf derselben Website und bei Cross-Site-Requests auf höchster Ebene gesendet.
  • +
  • Strict: Cookies werden nur an Anfragen derselben Website gesendet.
  • +
"); + + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.ModalCookieConsent", + "Modal Cookie Manager", + "Cookie-Manager modal anzeigen", + "Specifies whether the Cookie Manager is displayed in a modal dialog in the frontend. The modal mode requires a customer interaction with the dialog before the customer can navigate in the store.", + "Bestimmt, ob der Cookie-Manager im Frontend in einem modalen Dialog angezeigt wird. Der modale Modus macht eine Kundeninteraktion mit dem Dialog erfoderlich, bevor der Kunde im Shop navigieren kann."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.EnableCookieConsent", + "Enable Cookie Manager", + "Cookie-Manager aktivieren", + "Specifies whether the Cookie Manager will be displayed in the frontend.", + "Legt fest, ob ein Dialog für die Zustimmung zur Nutzung von Cookies im Frontend angezeigt wird."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.CookieInfo.IsPluginInfo", + "System cookie", + "System-Cookie"); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.Cookies.CookieInfoNotFound", + "Cookie information wasn't found.", + "Cookie-Information wurde nicht gefunden."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.Cookies.RegisterCookieInfo.Title", + "Register your own cookie information", + "Eigene Cookie-Informationen registrieren"); + + builder.AddOrUpdate("CookieManager.Dialog.Hide", + "Hide", + "Ausblenden"); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.Cookies.AdminInstruction", + @"

+ If you have included third-party scripts in your shop that use cookies and are not integrated into Smartstore via a plugin, + you can provide your own information about these cookies for the Cookie Manager in the following table. + The added information is displayed in the Cookie Manager of the front end, corresponding to the type. + Cookie information provided to the Cookie Manager by active plug-ins is displayed in this table, + but cannot be edited. The texts of this information can be edited using the language resources + Admin > Configuration > Regional Settings > Languages. +

", + @"

+ Wenn Sie Skripte von Drittanbietern in Ihren Shop eingebunden haben, die Cookies nutzen und die nicht über ein Plugin in Smartstore integriert sind, + können Sie in folgender Tabelle eigene Informationen über diese Cookies für den Cookie-Manager bereitstellen. + Die zugefügten Informationen werden, dem Typ entsprechend, im Cookie-Manager des Frontends angezeigt. + Cookie-Informationen, die dem Cookie-Manager von aktiven Plugins zur Verfügung gestellt werden, werden in dieser Tabelle angezeigt, + können aber nicht bearbeitet werden. Die Texte dieser Informationen können über die Sprachresourcen bearbeitet werden + Admin > Konfiguration > Regionale Einstellungen > Sprachen. +

"); + + builder.AddOrUpdate("Admin.Catalog.Products.StockQuantityNotChanged", + "The stock quantity has not been updated because the value has changed since the page was loaded (e.g. due to a placed order). Current value is {0}.", + "Der Lagerbestand wurde nicht aktualisiert, weil sich der Wert seit Laden der Seite geändert hat (z.B. durch einen Auftragseingang). Aktueller Wert ist {0}."); + + builder.AddOrUpdate("Admin.Configuration.SeoTab.Title", + "SEO settings", + "SEO-Einstellungen"); + + builder.AddOrUpdate("Admin.Configuration.Seo.MetaTitle", + "Title tag", + "Title-Tag", + "Defines the title of the page, which is displayed in search engine results. If possible, enter a unique, concise title here.", + "Bestimmt den Titel der Seite, der unter anderem in den Ergebnissen von Suchmaschinen angezeigt wird. Geben Sie hier nach Möglichkeit einen einzigartigen, prägnanten Titel an."); + + builder.AddOrUpdate("Admin.Configuration.Seo.MetaDescription", + "Meta description", + "Meta Description", + "Defines the meta description of the site. An extract of this description is displayed in search engine results below the title.", + "Bestimmt die Meta Desciption der Seite. Ein Auszug dieser Beschreibung wird in den Ergebnissen von Suchmaschinen unterhalb des Titels dargestellt."); + + builder.AddOrUpdate("Admin.Configuration.Seo.MetaKeywords", + "Meta keywords", + "Meta Keywords", + "Defines the meta keywords of the site. Enter the keywords as a comma separated list.", + "Bestimmt die Meta Keywords der Seite. Geben Sie die Keywords als kommagetrennte Liste an."); + + builder.AddOrUpdate("Admin.System.MetaInfos", + "Meta tags", + "Meta-Elemente"); + + builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.HomepageTitle", + "Title tag (Homepage)", + "Title-Tag (Startseite)", + "Defines the title tag for the homepage, which is displayed in search engine results.", + "Legt das Title-Tag für die Startseite fest, das unter anderem in den Ergebnissen von Suchmaschinen angezeigt wird."); + + builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.HomepageMetaDescription", + "Meta description (Homepage)", + "Meta Description (Startseite)", + "Defines the meta description for the homepage. An extract of this description is displayed in search engine results below the title.", + "Legt die Meta Description für die Startseite fest. Ein Auszug dieser Beschreibung wird in den Ergebnissen von Suchmaschinen unterhalb des Titels dargestellt."); + + builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.HomepageMetaKeywords", + "Meta keywords (Homepage)", + "Meta Keywords (Startseite)", + "Defines the meta keywords for the homepage. Enter the keywords as a comma separated list.", + "Legt die Meta Keywords für die Startseite fest. Geben Sie die Keywords als kommagetrennte Liste an."); + + builder.AddOrUpdate("Admin.Configuration.DeliveryTimes.Fields.MinDays", + "Delivery not before (in days)", + "Lieferung frühestens (in Tagen)", + "Specifies the minimum number of days for the delivery.", + "Legt den frühesten Zeitpunkt der Lieferung in Tagen fest."); + + builder.AddOrUpdate("Admin.Configuration.DeliveryTimes.Fields.MaxDays", + "Delivery not later than (in days)", + "Lieferung spätestens (in Tagen)", + "Specifies the maximum number of days for the delivery.", + "Legt den spätesten Zeitpunkt der Lieferung in Tagen fest."); + + builder.AddOrUpdate("Products.DeliveryDate", "Arrives:", "Lieferung:"); + + builder.AddOrUpdate("DeliveryTimes.Dates.OnTomorrow", "Tomorrow", "Morgen"); // exactly tomorrow + builder.AddOrUpdate("DeliveryTimes.Dates.Tomorrow", "tomorrow", "Morgen"); // tomorrow + + builder.AddOrUpdate("DeliveryTimes.Dates.DeliveryOn", "{0}", "{0}"); // allow "on {0}" etc. + builder.AddOrUpdate("DeliveryTimes.Dates.NotBefore", "not before {0}", "frühestens {0}"); + builder.AddOrUpdate("DeliveryTimes.Dates.Until", "until {0}", "bis {0}"); + builder.AddOrUpdate("DeliveryTimes.Dates.Between", "{0} - {1}", "{0} - {1}"); // allow "{0} till {1}" etc. + + builder.AddOrUpdate("Enums.SmartStore.Core.Domain.Directory.DeliveryTimesPresentation.None", "Do not display", "Nicht anzeigen"); + builder.AddOrUpdate("Enums.SmartStore.Core.Domain.Directory.DeliveryTimesPresentation.DateOnly", "Date only (if possible)", "Nur Datum (sofern möglich)"); + builder.AddOrUpdate("Enums.SmartStore.Core.Domain.Directory.DeliveryTimesPresentation.LabelOnly", "Label only", "Nur Label"); + builder.AddOrUpdate("Enums.SmartStore.Core.Domain.Directory.DeliveryTimesPresentation.LabelAndDate", "Label and date", "Label und Datum"); + + builder.Delete( + "Admin.Configuration.Settings.Catalog.ShowDeliveryTimesInProductLists", + "Admin.Configuration.Settings.Catalog.ShowDeliveryTimesInProductLists.Hint", + "Admin.Configuration.Settings.Catalog.ShowDeliveryTimesInProductDetail", + "Admin.Configuration.Settings.Catalog.ShowDeliveryTimesInProductDetail.Hint", + "Admin.Configuration.Settings.ShoppingCart.ShowDeliveryTimes", + "Admin.Configuration.Settings.ShoppingCart.ShowDeliveryTimes.Hint"); + + builder.AddOrUpdate("Admin.Configuration.Settings.Catalog.DeliveryTimesInProductDetail", + "Presentation of delivery times", + "Darstellung von Lieferzeiten", + "Specifies the way delivery times are displayed on product detail pages.", + "Legt die Darstellungsart von Lieferzeiten auf Produktdetailseiten fest."); + + builder.AddOrUpdate("Admin.Configuration.Settings.Catalog.DeliveryTimesInLists", + "Presentation of delivery times", + "Darstellung von Lieferzeiten", + "Specifies the way delivery times are displayed in product lists. Due to lack of space, the grid view does not show a date for the delivery time.", + "Legt die Darstellungsart von Lieferzeiten in Produktlisten fest. Aus Platzgründen wird in der Rasteransicht kein Datum zur Lieferzeit angezeigt."); + + builder.AddOrUpdate("Admin.Configuration.Settings.ShoppingCart.DeliveryTimesInShoppingCart", + "Presentation of delivery times", + "Darstellung von Lieferzeiten", + "Specifies the way delivery times are displayed in shopping cart.", + "Legt die Darstellungsart von Lieferzeiten im Warenkorb fest."); + + builder.AddOrUpdate("Admin.Configuration.Settings.Shipping.TodayShipmentHour", + "Order before x o'clock for same day shipment", + "Bis x Uhr bestellt, heute verschickt", + "Specifies the hour by which the order will be shipped the same day.", + "Legt die Stunde fest, bis zu der die Bestellung noch am selben Tag verschickt wird."); + + builder.AddOrUpdate("Admin.Configuration.Settings.Shipping.DeliveryOnWorkweekDaysOnly", + "Delivery on workweek days only", + "Lieferungen nur an Werktagen", + "Specifies whether delivery takes place only on workweek days.", + "Legt fest, ob Lieferungen nur an Werktagen stattfinden."); + + builder.AddOrUpdate("Admin.Configuration.Seo.SeName", + "URL alias", + "URL-Alias", + "Set a search engine friendly page name e.g. 'my-landing-page' to make the page URL 'http://www.yourStore.com/my-landing-page'. Leave empty to generate it automatically based on the name of the entity.", + "Legen Sie einen suchmaschinenfreundlichen Seitennamen fest, z.B. 'meine-landing-page', um die URL zu 'http://www.yourStore.com/meine-landing-page' zu machen. Lassen Sie das Feld leer, um den Pfad automatisch auf Basis des Namens der Entität zu generieren."); + + builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.PageTitleSeparator", + "Page title separator", + "Titel-Trennzeichen", + "Specify page title tag separator.", + "Legt das Trennzeichen für das Titel-Tag fest."); + + builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.PageTitleSeoAdjustment", + "Title tag order", + "Titel-Tag Reihenfolge", + "Select the page title order. The generated title tag can be (PAGE NAME | YOURSTORE.COM) or (YOURSTORE.COM | PAGE NAME).", + "Legen Sie hier die Seitentitel-Reihenfolge fest. Das erzeugte Title-Tag könnte z.B. (MEINSHOP.DE | SEITE NAME) oder (SEITE NAME | MEINSHOP.DE) lauten."); + + builder.Delete("Admin.Catalog.Categories.Fields.SeName", + "Admin.Catalog.Categories.Fields.SeName.Hint", + "Admin.Catalog.Manufacturers.Fields.SeName", + "Admin.Catalog.Manufacturers.Fields.SeName.Hint", + "Admin.Catalog.Products.Fields.SeName", + "Admin.Catalog.Products.Fields.SeName.Hint", + "Admin.ContentManagement.Blog.BlogPosts.Fields.SeName", + "Admin.ContentManagement.Blog.BlogPosts.Fields.SeName.Hint", + "Admin.ContentManagement.Forums.Forum.Fields.SeName", + "Admin.ContentManagement.Forums.Forum.Fields.SeName.Hint", + "Admin.ContentManagement.Forums.ForumGroup.Fields.SeName", + "Admin.ContentManagement.Forums.ForumGroup.Fields.SeName.Hint", + "Admin.ContentManagement.News.NewsItems.Fields.SeName", + "Admin.ContentManagement.News.NewsItems.Fields.SeName.Hint", + "Admin.ContentManagement.Topics.Fields.SeName", + "Admin.ContentManagement.Topics.Fields.SeName.Hint"); + + builder.Delete("Admin.Catalog.Categories.Fields.MetaTitle", + "Admin.Catalog.Categories.Fields.MetaTitle.Hint", + "Admin.Catalog.Manufacturers.Fields.MetaTitle", + "Admin.Catalog.Manufacturers.Fields.MetaTitle.Hint", + "Admin.Catalog.Products.Fields.MetaTitle", + "Admin.Catalog.Products.Fields.MetaTitle.Hint", + "Admin.ContentManagement.Blog.BlogPosts.Fields.MetaTitle", + "Admin.ContentManagement.Blog.BlogPosts.Fields.MetaTitle.Hint", + "Admin.ContentManagement.News.NewsItems.Fields.MetaTitle", + "Admin.ContentManagement.News.NewsItems.Fields.MetaTitle.Hint", + "Admin.ContentManagement.Topics.Fields.MetaTitle", + "Admin.ContentManagement.Topics.Fields.MetaTitle.Hint"); + + builder.Delete("Admin.Catalog.Categories.Fields.MetaDescription", + "Admin.Catalog.Categories.Fields.MetaDescription.Hint", + "Admin.Catalog.Manufacturers.Fields.MetaDescription", + "Admin.Catalog.Manufacturers.Fields.MetaDescription.Hint", + "Admin.Catalog.Products.Fields.MetaDescription", + "Admin.Catalog.Products.Fields.MetaDescription.Hint", + "Admin.ContentManagement.Blog.BlogPosts.Fields.MetaDescription", + "Admin.ContentManagement.Blog.BlogPosts.Fields.MetaDescription.Hint", + "Admin.ContentManagement.News.NewsItems.Fields.MetaDescription", + "Admin.ContentManagement.News.NewsItems.Fields.MetaDescription.Hint", + "Admin.ContentManagement.Topics.Fields.MetaDescription", + "Admin.ContentManagement.Topics.Fields.MetaDescription.Hint"); + + builder.Delete("Admin.Catalog.Categories.Fields.MetaKeywords", + "Admin.Catalog.Categories.Fields.MetaKeywords.Hint", + "Admin.Catalog.Manufacturers.Fields.MetaKeywords", + "Admin.Catalog.Manufacturers.Fields.MetaKeywords.Hint", + "Admin.Catalog.Products.Fields.MetaKeywords", + "Admin.Catalog.Products.Fields.MetaKeywords.Hint", + "Admin.ContentManagement.Blog.BlogPosts.Fields.MetaKeywords", + "Admin.ContentManagement.Blog.BlogPosts.Fields.MetaKeywords.Hint", + "Admin.ContentManagement.News.NewsItems.Fields.MetaKeywords", + "Admin.ContentManagement.News.NewsItems.Fields.MetaKeywords.Hint", + "Admin.ContentManagement.Topics.Fields.MetaKeywords", + "Admin.ContentManagement.Topics.Fields.MetaKeywords.Hint", + "Admin.ContentManagement.Blog.BlogPosts.Fields.Language", + "Admin.ContentManagement.News.NewsItems.Fields.Language"); + + builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.DefaultTitle", + "Default title tag", + "Standard-Titel-Tag", + "Defines the default title for pages in your store. You can override this for individual categories, products, manufacturer and topic pages.", + "Legt das Standard-Titel-Tag für Seiten im Shop fest. Es kann für Warengruppen, Produkte, Hersteller und Seiten individuell angegeben werden."); + + builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.DefaultMetaDescription", + "Default meta description", + "Standard Meta Beschreibung", + "Defines the default meta description for pages in your store. You can override this for individual categories, products, manufacturer and topic pages.", + "Legt die Meta Beschreibung für Seiten im Shop fest. Diese kann für Warengruppen, Produkte, Hersteller und Seiten individuell angegeben werden."); + + builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.DefaultMetaKeywords", + "Default meta keywords", + "Standard Meta Keywords", + "Defines the default meta keywords for pages in your store. You can override these for individual categories, products, manufacturer and topic pages.", + "Legt die Meta Keywords für Seiten im Shop fest. Für Warengruppen, Produkte, Hersteller und Seiten können diese individuell angegeben werden."); + + builder.AddOrUpdate("Admin.Configuration.Settings.Catalog.ShowDiscountSign", + "Show discount sign", + "Rabattzeichen anzeigen", + "Specifies whether a discount sign should be displayed on product pictures when discounts were applied.", + "Legt fest, ob ein Rabattzeichen auf dem Produktbild angezeigt werden soll, wenn Rabatte angewendet wurden."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.StateProvinceRequired", + "'State/province' required", + "'Bundesland' erferderlich", + "Check the box if 'State/province' is required.", + "Legt fest, ob Angaben im Eingabefeld 'Adresszusatz' erforderlich sind."); + + builder.AddOrUpdate("Enums.SmartStore.Core.Domain.Catalog.AttributeChoiceBehaviour.GrayOutUnavailable", + "Gray out unavailable attributes", + "Nicht verfügbare Attribute ausgrauen"); + builder.AddOrUpdate("Enums.SmartStore.Core.Domain.Catalog.AttributeChoiceBehaviour.None", + "None", + "Keines"); + + builder.AddOrUpdate("Admin.Catalog.Products.Fields.AttributeChoiceBehaviour", + "Attribute choice behaviour", + "Attribut-Auswahlverhalten", + "Specifies the behaviour when selecting attributes.", + "Legt das Verhalten bei der Auswahl von Attributen fest."); + + builder.AddOrUpdate("Admin.Catalog.Products.ProductVariantAttributes.Attributes.Fields.CustomData", + "Custom data", + "Benutzerdefinierte Daten", + "Specifies user-defined data. For free usage, e.g. for individual shop extensions.", + "Legt benutzerdefinierte Daten fest. Zur freien Verwendung, z.B. bei individuellen Shop-Erweiterungen."); + + #region Media + + var mediaRoot = "Admin.Configuration.Settings.Media."; + + builder.AddOrUpdate(mediaRoot + "ImageSizes", "Image/thumbnail sizes", "Bild-/Thumbnailgrößen"); + + builder.AddOrUpdate(mediaRoot + "DefaultPictureZoomEnabled", + "Enable image zoom", + "Bildzoom aktivieren", + "Adds 'zoom on hover' functionality to product detail images.", + "Aktiviert 'Zoom bei Hover'-Funktion für Produktdetail-Bilder."); + + builder.AddOrUpdate(mediaRoot + "AssociatedProductPictureSize", "Associated (grouped) product", "Verknüpftes (Gruppen)-Produkt"); + builder.AddOrUpdate(mediaRoot + "AvatarPictureSize", "Customer avatar", "Kundenavatar"); + builder.AddOrUpdate(mediaRoot + "BundledProductPictureSize", "Bundle items", "Bundle Stückliste"); + builder.AddOrUpdate(mediaRoot + "CartThumbBundleItemPictureSize", "Bundle items in cart", "Bundle Stückliste im Warenkorb"); + builder.AddOrUpdate(mediaRoot + "CartThumbPictureSize", "Cart", "Warenkorb"); + builder.AddOrUpdate(mediaRoot + "CategoryThumbPictureSize", "Categories", "Warengruppen"); + builder.AddOrUpdate(mediaRoot + "ManufacturerThumbPictureSize", "Brands", "Marken"); + builder.AddOrUpdate(mediaRoot + "MessageProductThumbPictureSize", "Products in e-mails", "Produkte in E-Mails"); + builder.AddOrUpdate(mediaRoot + "MiniCartThumbPictureSize", "Mini cart", "Mini-Warenkorb"); + builder.AddOrUpdate(mediaRoot + "ProductDetailsPictureSize", "Product detail", "Produktdetail"); + builder.AddOrUpdate(mediaRoot + "ProductThumbPictureSize", "Product list", "Produktliste"); + builder.AddOrUpdate(mediaRoot + "ProductThumbPictureSizeOnProductDetailsPage", "Gallery thumbnail", "Gallerie-Thumbnail"); + + builder.Delete( + mediaRoot + "AssociatedProductPictureSize.Hint", + mediaRoot + "AvatarPictureSize.Hint", + mediaRoot + "BundledProductPictureSize.Hint", + mediaRoot + "CartThumbBundleItemPictureSize.Hint", + mediaRoot + "CartThumbPictureSize.Hint", + mediaRoot + "CategoryThumbPictureSize.Hint", + mediaRoot + "ManufacturerThumbPictureSize.Hint", + mediaRoot + "MessageProductThumbPictureSize.Hint", + mediaRoot + "MiniCartThumbPictureSize.Hint", + mediaRoot + "ProductDetailsPictureSize.Hint", + mediaRoot + "ProductThumbPictureSize.Hint", + mediaRoot + "ProductThumbPictureSizeOnProductDetailsPage.Hint"); + + #endregion + + #region Customer settings + + builder.Delete("Admin.Configuration.Settings.CustomerUser.AddressFormFields.TitleEnabled", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.TitleEnabled.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CompanyEnabled", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CompanyEnabled.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CompanyRequired", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CompanyRequired.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StreetAddressEnabled", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StreetAddressEnabled.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StreetAddressRequired", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StreetAddressRequired.Hint", + "Admin.Configuration.Settings.CustomerUser.StreetAddress2Enabled", + "Admin.Configuration.Settings.CustomerUser.StreetAddress2Enabled.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StreetAddress2Enabled", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StreetAddress2Enabled.Hint", + "Admin.Configuration.Settings.CustomerUser.StreetAddress2Required", + "Admin.Configuration.Settings.CustomerUser.StreetAddress2Required.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StreetAddress2Required", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StreetAddress2Required.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.ZipPostalCodeEnabled", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.ZipPostalCodeEnabled.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.ZipPostalCodeRequired", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.ZipPostalCodeRequired.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CityEnabled", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CityEnabled.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CityRequired", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CityRequired.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CountryEnabled", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CountryEnabled.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CountryRequired", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CountryRequired.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StateProvinceEnabled", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StateProvinceEnabled.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StateProvinceRequired", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StateProvinceRequired.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.PhoneEnabled", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.PhoneEnabled.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.PhoneRequired", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.PhoneRequired.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.FaxEnabled", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.FaxEnabled.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.FaxRequired", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.FaxRequired.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.SalutationEnabled", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.SalutationEnabled.Hint", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.Salutations", + "Admin.Configuration.Settings.CustomerUser.AddressFormFields.Salutations.Hint"); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.GenderEnabled", + "'Gender' enabled", + "\"Geschlecht\" aktiv", + "Defines whether the input of 'Gender' is enabled.", + "Legt fest, ob das Eingabefeld \"Geschlecht\" aktiviert ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.TitleEnabled", + "'Title' enabled", + "\"Titel\" aktiv", + "Defines whether the input of 'Title' is enabled.", + "Legt fest, ob das Eingabefeld \"Titel\" aktiviert ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.CompanyEnabled", + "'Company' enabled", + "\"Firma\" aktiv", + "Defines whether the input of 'Company' is enabled.", + "Legt fest, ob das Eingabefeld \"Firma\" aktiviert ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.CompanyRequired", + "'Company' required", + "\"Firma\" ist erforderlich", + "Defines whether the input of 'Company' is required.", + "Legt fest, ob die Eingabe von \"Firma\" erforderlich ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.StreetAddressEnabled", + "'Street address' enabled", + "\"Straße\" aktiv", + "Defines whether the input of 'Street adress' is enabled.", + "Legt fest, ob das Eingabefeld \"Straße\" aktiviert ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.StreetAddressRequired", + "'Street address' required", + "\"Straße\" ist erforderlich", + "Defines whether the input of 'Street adress' is required.", + "Legt fest, ob die Eingabe von \"Straße\" erforderlich ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.StreetAddress2Enabled", + "'Street address addition' enabled", + "\"Adressszusatz\" aktiv", + "Defines whether the input of 'street address addition' is enabled.", + "Legt fest, ob das Eingabefeld \"Adressszusatz\" aktiviert ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.StreetAddress2Required", + "'Street address addition' required", + "\"Adressszusatz\" ist erforderlich", + "Defines whether the input of 'street address addition' is required.", + "Legt fest, ob die Eingabe von \"Adressszusatz\" erforderlich ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.ZipPostalCodeEnabled", + "'Zip / postal code' enabled", + "\"Postleitzahl\" aktiv", + "Defines whether the input of 'Zip / postal code' is enabled.", + "Legt fest, ob das Eingabefeld \"Postleitzahl\" aktiviert ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.ZipPostalCodeRequired", + "'Zip / postal code' required", + "\"Postleitzahl\" ist erforderlich", + "Defines whether the input of 'Zip / postal code' is required.", + "Legt fest, ob die Eingabe von \"Postleitzahl\" erforderlich ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.CityEnabled", + "'City' enabled", + "\"Stadt\" aktiv", + "Defines whether the input of 'City' is enabled.", + "Legt fest, ob das Eingabefeld \"Stadt\" aktiviert ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.CityRequired", + "'City' required", + "\"Stadt\" ist erforderlich", + "Defines whether the input of 'City' is required.", + "Legt fest, ob die Eingabe von \"Stadt\" erforderlich ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.CountryEnabled", + "'Country' enabled", + "\"Land\" aktiv", + "Defines whether the input of 'Country' is enabled.", + "Legt fest, ob das Eingabefeld \"Land\" aktiviert ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.CountryRequired", + "'Country' required", + "\"Land\" ist erforderlich", + "Defines whether the input of 'Country' is required.", + "Legt fest, ob die Eingabe von \"Land\" erforderlich ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.StateProvinceEnabled", + "'State / province' enabled", + "\"Bundesland\" aktiv", + "Defines whether the input of 'State / province' is enabled.", + "Legt fest, ob das Eingabefeld \"Bundesland\" aktiviert ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.StateProvinceRequired", + "'State / province' required", + "\"Bundesland\" ist erforderlich", + "Defines whether the input of 'State / province' is required.", + "Legt fest, ob die Eingabe von \"Bundesland\" erforderlich ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.PhoneEnabled", + "'Phone number' enabled", + "\"Telefon\" aktiv", + "Defines whether the input of 'Phone number' is enabled.", + "Legt fest, ob das Eingabefeld \"Telefon\" aktiviert ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.PhoneRequired", + "'Phone number' required", + "\"Telefon\" ist erforderlich", + "Defines whether the input of 'Phone number' is required.", + "Legt fest, ob die Eingabe von \"Telefon\" erforderlich ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.FaxEnabled", + "'Fax number' enabled", + "\"Fax\" aktiv", + "Defines whether the input of 'Fax number' is enabled.", + "Legt fest, ob das Eingabefeld \"Fax\" aktiviert ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.FaxRequired", + "'Fax number' required", + "\"Fax\" ist erforderlich", + "Defines whether the input of 'Fax number' is required.", + "Legt fest, ob die Eingabe von \"Fax\" erforderlich ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.NewsletterEnabled", + "'Newsletter' enabled", + "\"Newsletter\" aktiv", + "Displays the newsletter registration form.", + "Zeigt das Newsletter Anmeldeformular an."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.SalutationEnabled", + "'Salutation' enabled", + "\"Anrede\" aktiv", + "Defines whether the input of 'Salutation' is enabled.", + "Legt fest, ob das Eingabefeld \"Anrede\" aktiviert ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Salutations", + "Salutations", + "Anreden", + "Comma separated list of salutations (e.g. Mr., Mrs). Define the entries which will populate the dropdown list for salutation when entering addresses.", + "Komma getrennte Liste (z.B. Herr, Frau). Bestimmen Sie die Einträge für die Auswahl der Anrede, bei der Adresserfassung."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.DateOfBirthEnabled", + "'Date of birth' enabled", + "\"Geburtsdatum\" aktiv", + "Defines whether the input of 'Date of birth' is enabled.", + "Legt fest, ob das Eingabefeld \"Geburtsdatum\" aktiviert ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.LastNameRequired", + "'Last name' required", + "\"Nachname\" ist erforderlich", + "Defines whether the input of 'Last name' is required.", + "Legt fest, ob die Eingabe von \"Nachname\" erforderlich ist."); + + builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.FirstNameRequired", + "'First name' required", + "\"Vorname\" ist erforderlich", + "Defines whether the input of 'First name' is required.", + "Legt fest, ob die Eingabe von \"Vorname\" erforderlich ist."); + + #endregion Customer settings + + builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.SocialSettings.FacebookAppId", + "Facebook App ID", + "Facebook App ID", + "A Facebook App ID is a unique number that identifies your application and connects it to your Facebook account. It is used when sharing products, category and manufacturer pages on Facebook.", + "Eine Facebook App ID ist eine eindeutige Nummer, die Ihre Anwendung identifiziert und mit Ihrem Facebook-Account verknüpft. Wird beim Teilen von Produkten, Warengruppen- und Herstellerseiten auf Facebook genutzt."); + + builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.SocialSettings.TwitterSite", + "Twitter Username", + "Twitter-Benutzername", + "Twitter Username that gets displayed on Twitter cards when a product, category and manufacturer page is shared on Twitter. Starts with a '@'.", + "Twitter-Benutzername, der auf Twitter-Karten angezeigt wird, wenn ein Produkt, eine Kategorie oder eine Herstellerseite auf Twitter geteilt wird. Beginnt mit einem '@'."); + + builder.AddOrUpdate("Admin.ContentManagement.Topics.Validation.NoEmptyPassword", + "Password must have a value.", + "Passwort muss einen Wert haben."); + + builder.AddOrUpdate("Admin.ContentManagement.Topics.Validation.NoPasswordAllowed", + "HTML widgets cannot have a password protection.", + "HTML Widgets können keinen Passwortschutz haben."); + + builder.AddOrUpdate("Order.CompletePayment.Hint", + "Click 'Complete payment' if you have not yet paid and wish to start the payment process again.", + "Klicken Sie 'Zahlung veranlassen', falls Sie noch nicht gezahlt haben und den Zahlungsvorgang erneut starten möchten."); + + builder.AddOrUpdate("Admin.ContentManagement.Forums.ForumGroup.Updated") + .Value("de", "Die Forengruppe wurde erfolgreich aktualisiert."); + + builder.AddOrUpdate("Account.Login.NotRegisteredYet", + "Not registered yet?", + "Noch nicht registriert?"); + } + } +} diff --git a/src/Libraries/SmartStore.Data/Migrations/202011091154314_V410Resources.resx b/src/Libraries/SmartStore.Data/Migrations/202011091154314_V410Resources.resx new file mode 100644 index 0000000000..aa24204390 --- /dev/null +++ b/src/Libraries/SmartStore.Data/Migrations/202011091154314_V410Resources.resx @@ -0,0 +1,126 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + text/microsoft-resx + + + 2.0 + + + System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 + + + 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 + + + dbo + + \ No newline at end of file diff --git a/src/Libraries/SmartStore.Data/Migrations/MigrationsConfiguration.cs b/src/Libraries/SmartStore.Data/Migrations/MigrationsConfiguration.cs index 967c381f4e..a7eab830a3 100644 --- a/src/Libraries/SmartStore.Data/Migrations/MigrationsConfiguration.cs +++ b/src/Libraries/SmartStore.Data/Migrations/MigrationsConfiguration.cs @@ -5,9 +5,6 @@ using System.Linq; using Setup; using SmartStore.Core.Data; - using SmartStore.Core.Domain.Configuration; - using SmartStore.Core.Domain.Media; - using SmartStore.Core.Domain.Seo; using SmartStore.Utilities; public sealed class MigrationsConfiguration : DbMigrationsConfiguration @@ -47,828 +44,12 @@ protected override void Seed(SmartObjectContext context) public void MigrateSettings(SmartObjectContext context) { - var settings = context.Set(); - // Add .ico extension to MediaSettings.ImageTypes - var name = TypeHelper.NameOf(y => y.ImageTypes, true); - var setting = settings.FirstOrDefault(x => x.Name == name); - if (setting != null) - { - var arr = setting.Value.EmptyNull() - .Replace(Environment.NewLine, " ") - .ToLower() - .Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries); - - if (!arr.Contains("ico")) - { - setting.Value += " ico"; - } - } - - // Migrate old 'defaultSeoSettings' into new SeoSettings - // Old settings. - var defaultTitle = settings.FirstOrDefault(x => x.Name == "SeoSettings.DefaultTitle"); - var defaultMetaKeywords = settings.FirstOrDefault(x => x.Name == "SeoSettings.DefaultMetaKeywords"); - var defaultMetaDescription = settings.FirstOrDefault(x => x.Name == "SeoSettings.DefaultMetaDescription"); - - // New settings. - context.MigrateSettings(x => - { - x.Add(TypeHelper.NameOf(y => y.MetaTitle, true), defaultTitle != null && defaultTitle.Value.HasValue() ? defaultTitle.Value : ""); - x.Add(TypeHelper.NameOf(y => y.MetaDescription, true), defaultMetaDescription != null && defaultMetaDescription.Value.HasValue() ? defaultMetaDescription.Value : ""); - x.Add(TypeHelper.NameOf(y => y.MetaKeywords, true), defaultMetaKeywords != null && defaultMetaKeywords.Value.HasValue() ? defaultMetaKeywords.Value : ""); - }); - - if (defaultTitle != null) settings.Remove(defaultTitle); - if (defaultMetaDescription != null) settings.Remove(defaultMetaDescription); - if (defaultMetaKeywords != null) settings.Remove(defaultMetaKeywords); } public void MigrateLocaleResources(LocaleResourcesBuilder builder) { - builder.Delete( - "Admin.SalesReport.Bestsellers.RunReport", - "Admin.SalesReport.NeverSold.RunReport", - "Admin.Customers.Reports.RunReport", - "Admin.Customers.Reports.BestBy.BestByNumberOfOrders", - "Admin.Customers.Reports.BestBy.BestByNumberOfOrders"); - - builder.AddOrUpdate("Admin.Customers.Reports.BestCustomers", "Top customers", "Top Kunden"); - - builder.AddOrUpdate("Admin.Configuration.Settings.Search.SearchProductByIdentificationNumber", - "Open product directly at SKU, MPN or GTIN", - "Produkt bei SKU, MPN oder GTIN direkt öffnen", - "Specifies whether the product page should be opened directly if the search term matches a SKU, MPN or GTIN.", - "Legt fest, ob bei einer Übereinstimmung des Suchbegriffes mit einer SKU, MPN oder GTIN die Produktseite direkt geöffnet werden soll."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.PasswordMinLength", - "Minimum password length", - "Mindestlänge eines Passworts", - "Specifies the minimum length of a password.", - "Legt die minimale Länge eines Passworts fest."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.MinDigitsInPassword", - "Minimum digits in password", - "Mindestanzahl von Ziffern im Passwort", - "Specifies the minimum number of digits for a password.", - "Legt die Mindestanzahl von Ziffern eines Passworts fest."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.MinSpecialCharsInPassword", - "Minimum special characters in password", - "Mindestanzahl von Sonderzeichen im Passwort", - "Specifies the minimum number of special characters for a password.", - "Legt die Mindestanzahl von Sonderzeichen eines Passworts fest."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.MinUppercaseCharsInPassword", - "Minimum uppercase letters in password", - "Mindestanzahl von Großbuchstaben im Passwort", - "Specifies the minimum number of uppercase letters for a password.", - "Legt die Mindestanzahl von Großbuchstaben eines Passworts fest."); - - builder.AddOrUpdate("Account.Fields.Password.MustContainChars", - "The password must contain at least {0}.", - "Das Passwort muss mindestens {0} enthalten."); - builder.AddOrUpdate("Account.Fields.Password.Digits", "{0} digits", "{0} Ziffern"); - builder.AddOrUpdate("Account.Fields.Password.SpecialChars", "{0} special characters", "{0} Sonderzeichen"); - builder.AddOrUpdate("Account.Fields.Password.UppercaseChars", "{0} uppercase letters", "{0} Großbuchstaben"); - - builder.AddOrUpdate("Admin.Rules.FilterDescriptor.PaymentMethod", "Payment method", "Zahlart"); - builder.AddOrUpdate("Admin.Rules.FilterDescriptor.Group.BrowserUserAgent", "Browser User Agent", "Browser User-Agent"); - - builder.AddOrUpdate("Admin.Orders.NoOrdersSelected", - "No orders are selected. Please select the desired orders.", - "Es sind keine Aufträge ausgewählt. Bitte wählen Sie die gewünschten Aufträge aus."); - - builder.AddOrUpdate("Admin.Orders.ProcessSelectedOrders", - "There are {0} orders selected. Would you like to proceed?", - "Es sind {0} Aufträge ausgewählt. Möchten Sie fortfahren?"); - - builder.AddOrUpdate("Admin.Orders.ProcessingResult", - "
{0} of {1} orders were successfully processed.
{2} orders cannot be changed as desired due to their current status and were skipped.", - "
Es wurden {0} von {1} Aufträgen erfolgreich verarbeitet.
{2} Aufträge können aufgrund ihres aktuellen Status nicht wie gewünscht geändert werden und wurden übersprungen."); - - builder.AddOrUpdate("Admin.Configuration.Countries.Fields.DefaultCurrency", - "Default currency", - "Standardwährung", - "Specifies the default currency. Preselects the default currency in the shop according to the country to which the current IP address belongs.", - "Legt die Standardwährung fest. Bewirkt im Shop eine Vorauswahl der Standardwährung anhand des Landes, zu dem die aktuelle IP-Adresse gehört."); - - builder.AddOrUpdate("Admin.Catalog.Attributes.CheckoutAttributes.Values.Fields.MediaFile", - "Picture", - "Bild", - "Specifies an image to be displayed as the selection element for the attribute.", - "Legt ein Bild fest, welches als Auswahlelement für das Attribut angezeigt werden soll."); - - builder.AddOrUpdate("Admin.Catalog.Attributes.CheckoutAttributes.Values.Fields.Color", - "RGB color", - "RGB-Farbe", - "Specifies a color for the color squares control.", - "Legt eine Farbe für das Farbflächen-Steuerelement fest."); - - builder.AddOrUpdate("Common.Entity.CheckoutAttributeValue", "Checkout attribute option", "Checkout-Attribut-Option"); - - builder.AddOrUpdate("Checkout.MaxOrderSubtotalAmount", - "The maximum order value for the subtotal is {0}.", - "Der Höchstbestellwert für die Zwischensumme ist {0}."); - - builder.AddOrUpdate("Checkout.MaxOrderTotalAmount", - "The maximum order value for the total is {0}.", - "Der Höchstbestellwert der Gesamtsumme ist {0}."); - - builder.AddOrUpdate("Admin.Customers.CustomerRoles.Fields.MinOrderTotal", - "Minimum order total", - "Mindestbestellwert", - "Defines the minimum order total for customers in this group.", - "Legt den Mindestbestellwert für Kunden in dieser Gruppe fest."); - - builder.AddOrUpdate("Admin.Customers.CustomerRoles.Fields.MaxOrderTotal", - "Maximum order total", - "Höchstbestellwert", - "Defines the maximum order total for customers in this group.", - "Legt den Höchstbestellwert für Kunden in dieser Gruppe fest."); - - builder.AddOrUpdate("Admin.Configuration.Settings.Order.MinOrderTotal", - "Minimum order total", - "Mindestbestellwert", - "Defines the default minimum order total for the shop. Overridden by customer group restrictions.", - "Legt den standardmäßigen Mindestbestellwert für den Shop fest. Wird von Beschränkungen in Kundengruppen überschrieben."); - - builder.AddOrUpdate("Admin.Configuration.Settings.Order.MaxOrderTotal", - "Maximum order total", - "Höchstbestellwert", - "Defines the default maximum order total for the shop. Overridden by customer group restrictions.", - "Legt den standardmäßigen Höchstbestellwert für den Shop fest. Wird von Beschränkungen in Kundengruppen überschrieben."); - - builder.AddOrUpdate("Admin.Configuration.Settings.Order.ApplyToSubtotal", - "Order total restriction in relation to subtotal", - "Beschränkung bezogen auf Zwischensumme", - "Determines whether the min/max order value refers to the order subtotal, otherwise it refers to the total amount.", - "Bestimmt, ob sich der Mindest-/Höchstbetrag auf die Auftragszwischensumme bezieht, andernfalls bezieht er sich auf den Gesamtbetrag."); - - builder.Delete("Admin.Configuration.Settings.Order.MaxOrderSubtotalAmount", - "Admin.Configuration.Settings.Order.MaxOrderSubtotalAmount.Hint", - "Admin.Configuration.Settings.Order.MaxOrderTotalAmount", - "Admin.Configuration.Settings.Order.MaxOrderTotalAmount.Hint", - "Admin.Configuration.Settings.Order.MinOrderSubtotalAmount", - "Admin.Configuration.Settings.Order.MinOrderSubtotalAmount.Hint", - "Admin.Configuration.Settings.Order.MinOrderTotalAmount", - "Admin.Configuration.Settings.Order.MinOrderTotalAmount.Hint"); - - builder.AddOrUpdate("Admin.Configuration.Settings.Order.OrderTotalRestrictionType", - "Restrictions in customer groups are cumulative", - "Beschränkungen in Kundengruppen sind kumulativ", - "Determines whether multiple order total restrictions are cumulated by customer group assignments.", - "Bestimmt, ob mehrfache Bestellwertbeschränkungen durch Kundengruppenzuordnungen kumuliert werden."); - - builder.Delete("Products.AskQuestion.Question.Text"); - - builder.AddOrUpdate("Products.AskQuestion.Sent", - "Thank you. Your inquiry has been sent successfully.", - "Vielen Dank. Ihre Anfrage wurde erfolgreich gesendet."); - - builder.AddOrUpdate("Products.AskQuestion.Question.GeneralInquiry", - "I have following questions concerning the product {0}:", - "Ich habe folgende Fragen zum Artikel {0}:"); - - builder.AddOrUpdate("Products.AskQuestion.Question.QuoteRequest", - "I would like to request price information on the following article: {0}", - "Ich bitte um Preisinformationen zu folgendem Artikel: {0}"); - - builder.AddOrUpdate("Products.AskQuestion.CallHotline", "or call directly", "oder rufen Sie direkt an"); - - builder.AddOrUpdate("Products.AskQuestion.TitleQuoteRequest", "Request for quotation", "Angebotsanfrage"); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.CustomerFormFields.Description", - "Manage form fields that are displayed during registration.
" + - "In order to ensure the address transfer from the registration form, " + - "it is necessary that the following fields are activated and filled in by the customer: " + - "
  • First name
  • Last name
  • E-mail
  • and all fields that are selected as required in the tab 'Addresses'
", - "Verwalten Sie Formularfelder, die während der Registrierung angezeigt werden.
" + - "Um die Adressübergabe aus dem Registrierungsformular zu gewährleisten, ist es notwending, " + - "dass folgende Felder aktiviert und vom Kunden ausgefüllt sind:" + - "
  • Vorname
  • Nachname
  • E-Mail
  • und alle Felder die im Tab \"Adressen\" als erforderlich ausgewählt sind
"); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.Cookies.AddCookieInfo.Title", - "Add new cookie information", - "Neue Cookie-Informationen hinzufügen"); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.Cookies.EditCookieInfo.Title", - "Edit new cookie information", - "Cookie-Informationen bearbeiten"); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.CookieInfo.Name", - "Name", - "Name", - "Specifies the display name of the cookie information.", - "Bestimmt den Anzeigenamen der Cookie-Information."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.CookieInfo.Description", - "Description", - "Beschreibung", - "Specifies the description of the cookie information.", - "Bestimmt die Beschreibung der Cookie-Information."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.CookieInfo.CookieType", - "Cookie type", - "Art des Cookies", - "Specifies the usage type of the cookie (Required, Analytics, ThirdParty).", - "Bestimmt die Verwendungsart des Cookies (Required, Analytics, ThirdParty)."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.SameSiteMode", - "'SameSite' mode", - "'SameSite' Modus"); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.SameSiteMode.AdminInstruction", - @"
SameSite Mode
-

- The SameSite setting for cookies specifies the level of security for cookies when they are requested by other sites (e.g. in a cross-site request or in an iframe). - The recommended setting is Lax, as cookies are sent with most secure actions. -
- If the store should also be embedded in an iframe, it is necessary to select the setting None. Additionally SSL must be set up in the store. -

-
    -
  • Unspecified: No SameSite header is transmitted to requests.
  • -
  • None: No mode specified. This setting must be used if the store should also be embedded in an iframe (SSL must be set up).
  • -
  • Lax: Recommended setting. Cookies are sent at the highest level for requests on the same website and for cross-site requests.
  • -
  • Strict: Cookies are only sent to requests from the same website.
  • -
", - @"
SameSite Modus
-

- Die SameSite-Einstellung für Cookies bestimmt, das Sicherheitslevel für Cookies, wenn diese von anderen Seiten (z.B. in einem Cross-Site-Request oder in einem IFrame) aufgerufen werden. - Die empfohlene Einstellung ist Lax, da hier Cookies bei den meisten gesicherten Aktionen mitgesendet werden. -
- Soll der Shop auch in ein IFrame eingebettet werden, ist es notwendig die Einstellung None zu wählen. Zusätzlich muss SSL im Shop eingerichtet sein. -

-
    -
  • Unspecified: Es wird kein SameSite-Header an Requests übermittelt.
  • -
  • None: Kein Modus angegeben. Diese Einstellung muss verwendet werden, wenn der Shop auch in ein IFrame eingebettet werden soll (SSL muss eingerichtet sein).
  • -
  • Lax: Empfohlene Einstellung. Cookies werden bei Anfragen auf derselben Website und bei Cross-Site-Requests auf höchster Ebene gesendet.
  • -
  • Strict: Cookies werden nur an Anfragen derselben Website gesendet.
  • -
"); - - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.ModalCookieConsent", - "Modal Cookie Manager", - "Cookie-Manager modal anzeigen", - "Specifies whether the Cookie Manager is displayed in a modal dialog in the frontend. The modal mode requires a customer interaction with the dialog before the customer can navigate in the store.", - "Bestimmt, ob der Cookie-Manager im Frontend in einem modalen Dialog angezeigt wird. Der modale Modus macht eine Kundeninteraktion mit dem Dialog erfoderlich, bevor der Kunde im Shop navigieren kann."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.EnableCookieConsent", - "Enable Cookie Manager", - "Cookie-Manager aktivieren", - "Specifies whether the Cookie Manager will be displayed in the frontend.", - "Legt fest, ob ein Dialog für die Zustimmung zur Nutzung von Cookies im Frontend angezeigt wird."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.CookieInfo.IsPluginInfo", - "System cookie", - "System-Cookie"); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.Cookies.CookieInfoNotFound", - "Cookie information wasn't found.", - "Cookie-Information wurde nicht gefunden."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.Cookies.RegisterCookieInfo.Title", - "Register your own cookie information", - "Eigene Cookie-Informationen registrieren"); - - builder.AddOrUpdate("CookieManager.Dialog.Hide", - "Hide", - "Ausblenden"); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Privacy.Cookies.AdminInstruction", - @"

- If you have included third-party scripts in your shop that use cookies and are not integrated into Smartstore via a plugin, - you can provide your own information about these cookies for the Cookie Manager in the following table. - The added information is displayed in the Cookie Manager of the front end, corresponding to the type. - Cookie information provided to the Cookie Manager by active plug-ins is displayed in this table, - but cannot be edited. The texts of this information can be edited using the language resources - Admin > Configuration > Regional Settings > Languages. -

", - @"

- Wenn Sie Skripte von Drittanbietern in Ihren Shop eingebunden haben, die Cookies nutzen und die nicht über ein Plugin in Smartstore integriert sind, - können Sie in folgender Tabelle eigene Informationen über diese Cookies für den Cookie-Manager bereitstellen. - Die zugefügten Informationen werden, dem Typ entsprechend, im Cookie-Manager des Frontends angezeigt. - Cookie-Informationen, die dem Cookie-Manager von aktiven Plugins zur Verfügung gestellt werden, werden in dieser Tabelle angezeigt, - können aber nicht bearbeitet werden. Die Texte dieser Informationen können über die Sprachresourcen bearbeitet werden - Admin > Konfiguration > Regionale Einstellungen > Sprachen. -

"); - - builder.AddOrUpdate("Admin.Catalog.Products.StockQuantityNotChanged", - "The stock quantity has not been updated because the value has changed since the page was loaded (e.g. due to a placed order). Current value is {0}.", - "Der Lagerbestand wurde nicht aktualisiert, weil sich der Wert seit Laden der Seite geändert hat (z.B. durch einen Auftragseingang). Aktueller Wert ist {0}."); - - builder.AddOrUpdate("Admin.Configuration.SeoTab.Title", - "SEO settings", - "SEO-Einstellungen"); - - builder.AddOrUpdate("Admin.Configuration.Seo.MetaTitle", - "Title tag", - "Title-Tag", - "Defines the title of the page, which is displayed in search engine results. If possible, enter a unique, concise title here.", - "Bestimmt den Titel der Seite, der unter anderem in den Ergebnissen von Suchmaschinen angezeigt wird. Geben Sie hier nach Möglichkeit einen einzigartigen, prägnanten Titel an."); - - builder.AddOrUpdate("Admin.Configuration.Seo.MetaDescription", - "Meta description", - "Meta Description", - "Defines the meta description of the site. An extract of this description is displayed in search engine results below the title.", - "Bestimmt die Meta Desciption der Seite. Ein Auszug dieser Beschreibung wird in den Ergebnissen von Suchmaschinen unterhalb des Titels dargestellt."); - - builder.AddOrUpdate("Admin.Configuration.Seo.MetaKeywords", - "Meta keywords", - "Meta Keywords", - "Defines the meta keywords of the site. Enter the keywords as a comma separated list.", - "Bestimmt die Meta Keywords der Seite. Geben Sie die Keywords als kommagetrennte Liste an."); - - builder.AddOrUpdate("Admin.System.MetaInfos", - "Meta tags", - "Meta-Elemente"); - - builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.HomepageTitle", - "Title tag (Homepage)", - "Title-Tag (Startseite)", - "Defines the title tag for the homepage, which is displayed in search engine results.", - "Legt das Title-Tag für die Startseite fest, das unter anderem in den Ergebnissen von Suchmaschinen angezeigt wird."); - - builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.HomepageMetaDescription", - "Meta description (Homepage)", - "Meta Description (Startseite)", - "Defines the meta description for the homepage. An extract of this description is displayed in search engine results below the title.", - "Legt die Meta Description für die Startseite fest. Ein Auszug dieser Beschreibung wird in den Ergebnissen von Suchmaschinen unterhalb des Titels dargestellt."); - - builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.HomepageMetaKeywords", - "Meta keywords (Homepage)", - "Meta Keywords (Startseite)", - "Defines the meta keywords for the homepage. Enter the keywords as a comma separated list.", - "Legt die Meta Keywords für die Startseite fest. Geben Sie die Keywords als kommagetrennte Liste an."); - - builder.AddOrUpdate("Admin.Configuration.DeliveryTimes.Fields.MinDays", - "Delivery not before (in days)", - "Lieferung frühestens (in Tagen)", - "Specifies the minimum number of days for the delivery.", - "Legt den frühesten Zeitpunkt der Lieferung in Tagen fest."); - - builder.AddOrUpdate("Admin.Configuration.DeliveryTimes.Fields.MaxDays", - "Delivery not later than (in days)", - "Lieferung spätestens (in Tagen)", - "Specifies the maximum number of days for the delivery.", - "Legt den spätesten Zeitpunkt der Lieferung in Tagen fest."); - - builder.AddOrUpdate("Products.DeliveryDate", "Arrives:", "Lieferung:"); - - builder.AddOrUpdate("DeliveryTimes.Dates.OnTomorrow", "Tomorrow", "Morgen"); // exactly tomorrow - builder.AddOrUpdate("DeliveryTimes.Dates.Tomorrow", "tomorrow", "Morgen"); // tomorrow - - builder.AddOrUpdate("DeliveryTimes.Dates.DeliveryOn", "{0}", "{0}"); // allow "on {0}" etc. - builder.AddOrUpdate("DeliveryTimes.Dates.NotBefore", "not before {0}", "frühestens {0}"); - builder.AddOrUpdate("DeliveryTimes.Dates.Until", "until {0}", "bis {0}"); - builder.AddOrUpdate("DeliveryTimes.Dates.Between", "{0} - {1}", "{0} - {1}"); // allow "{0} till {1}" etc. - - builder.AddOrUpdate("Enums.SmartStore.Core.Domain.Directory.DeliveryTimesPresentation.None", "Do not display", "Nicht anzeigen"); - builder.AddOrUpdate("Enums.SmartStore.Core.Domain.Directory.DeliveryTimesPresentation.DateOnly", "Date only (if possible)", "Nur Datum (sofern möglich)"); - builder.AddOrUpdate("Enums.SmartStore.Core.Domain.Directory.DeliveryTimesPresentation.LabelOnly", "Label only", "Nur Label"); - builder.AddOrUpdate("Enums.SmartStore.Core.Domain.Directory.DeliveryTimesPresentation.LabelAndDate", "Label and date", "Label und Datum"); - - builder.Delete( - "Admin.Configuration.Settings.Catalog.ShowDeliveryTimesInProductLists", - "Admin.Configuration.Settings.Catalog.ShowDeliveryTimesInProductLists.Hint", - "Admin.Configuration.Settings.Catalog.ShowDeliveryTimesInProductDetail", - "Admin.Configuration.Settings.Catalog.ShowDeliveryTimesInProductDetail.Hint", - "Admin.Configuration.Settings.ShoppingCart.ShowDeliveryTimes", - "Admin.Configuration.Settings.ShoppingCart.ShowDeliveryTimes.Hint"); - - builder.AddOrUpdate("Admin.Configuration.Settings.Catalog.DeliveryTimesInProductDetail", - "Presentation of delivery times", - "Darstellung von Lieferzeiten", - "Specifies the way delivery times are displayed on product detail pages.", - "Legt die Darstellungsart von Lieferzeiten auf Produktdetailseiten fest."); - - builder.AddOrUpdate("Admin.Configuration.Settings.Catalog.DeliveryTimesInLists", - "Presentation of delivery times", - "Darstellung von Lieferzeiten", - "Specifies the way delivery times are displayed in product lists. Due to lack of space, the grid view does not show a date for the delivery time.", - "Legt die Darstellungsart von Lieferzeiten in Produktlisten fest. Aus Platzgründen wird in der Rasteransicht kein Datum zur Lieferzeit angezeigt."); - - builder.AddOrUpdate("Admin.Configuration.Settings.ShoppingCart.DeliveryTimesInShoppingCart", - "Presentation of delivery times", - "Darstellung von Lieferzeiten", - "Specifies the way delivery times are displayed in shopping cart.", - "Legt die Darstellungsart von Lieferzeiten im Warenkorb fest."); - - builder.AddOrUpdate("Admin.Configuration.Settings.Shipping.TodayShipmentHour", - "Order before x o'clock for same day shipment", - "Bis x Uhr bestellt, heute verschickt", - "Specifies the hour by which the order will be shipped the same day.", - "Legt die Stunde fest, bis zu der die Bestellung noch am selben Tag verschickt wird."); - - builder.AddOrUpdate("Admin.Configuration.Settings.Shipping.DeliveryOnWorkweekDaysOnly", - "Delivery on workweek days only", - "Lieferungen nur an Werktagen", - "Specifies whether delivery takes place only on workweek days.", - "Legt fest, ob Lieferungen nur an Werktagen stattfinden."); - - builder.AddOrUpdate("Admin.Configuration.Seo.SeName", - "URL alias", - "URL-Alias", - "Set a search engine friendly page name e.g. 'my-landing-page' to make the page URL 'http://www.yourStore.com/my-landing-page'. Leave empty to generate it automatically based on the name of the entity.", - "Legen Sie einen suchmaschinenfreundlichen Seitennamen fest, z.B. 'meine-landing-page', um die URL zu 'http://www.yourStore.com/meine-landing-page' zu machen. Lassen Sie das Feld leer, um den Pfad automatisch auf Basis des Namens der Entität zu generieren."); - - builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.PageTitleSeparator", - "Page title separator", - "Titel-Trennzeichen", - "Specify page title tag separator.", - "Legt das Trennzeichen für das Titel-Tag fest."); - - builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.PageTitleSeoAdjustment", - "Title tag order", - "Titel-Tag Reihenfolge", - "Select the page title order. The generated title tag can be (PAGE NAME | YOURSTORE.COM) or (YOURSTORE.COM | PAGE NAME).", - "Legen Sie hier die Seitentitel-Reihenfolge fest. Das erzeugte Title-Tag könnte z.B. (MEINSHOP.DE | SEITE NAME) oder (SEITE NAME | MEINSHOP.DE) lauten."); - - builder.Delete("Admin.Catalog.Categories.Fields.SeName", - "Admin.Catalog.Categories.Fields.SeName.Hint", - "Admin.Catalog.Manufacturers.Fields.SeName", - "Admin.Catalog.Manufacturers.Fields.SeName.Hint", - "Admin.Catalog.Products.Fields.SeName", - "Admin.Catalog.Products.Fields.SeName.Hint", - "Admin.ContentManagement.Blog.BlogPosts.Fields.SeName", - "Admin.ContentManagement.Blog.BlogPosts.Fields.SeName.Hint", - "Admin.ContentManagement.Forums.Forum.Fields.SeName", - "Admin.ContentManagement.Forums.Forum.Fields.SeName.Hint", - "Admin.ContentManagement.Forums.ForumGroup.Fields.SeName", - "Admin.ContentManagement.Forums.ForumGroup.Fields.SeName.Hint", - "Admin.ContentManagement.News.NewsItems.Fields.SeName", - "Admin.ContentManagement.News.NewsItems.Fields.SeName.Hint", - "Admin.ContentManagement.Topics.Fields.SeName", - "Admin.ContentManagement.Topics.Fields.SeName.Hint"); - - builder.Delete("Admin.Catalog.Categories.Fields.MetaTitle", - "Admin.Catalog.Categories.Fields.MetaTitle.Hint", - "Admin.Catalog.Manufacturers.Fields.MetaTitle", - "Admin.Catalog.Manufacturers.Fields.MetaTitle.Hint", - "Admin.Catalog.Products.Fields.MetaTitle", - "Admin.Catalog.Products.Fields.MetaTitle.Hint", - "Admin.ContentManagement.Blog.BlogPosts.Fields.MetaTitle", - "Admin.ContentManagement.Blog.BlogPosts.Fields.MetaTitle.Hint", - "Admin.ContentManagement.News.NewsItems.Fields.MetaTitle", - "Admin.ContentManagement.News.NewsItems.Fields.MetaTitle.Hint", - "Admin.ContentManagement.Topics.Fields.MetaTitle", - "Admin.ContentManagement.Topics.Fields.MetaTitle.Hint"); - - builder.Delete("Admin.Catalog.Categories.Fields.MetaDescription", - "Admin.Catalog.Categories.Fields.MetaDescription.Hint", - "Admin.Catalog.Manufacturers.Fields.MetaDescription", - "Admin.Catalog.Manufacturers.Fields.MetaDescription.Hint", - "Admin.Catalog.Products.Fields.MetaDescription", - "Admin.Catalog.Products.Fields.MetaDescription.Hint", - "Admin.ContentManagement.Blog.BlogPosts.Fields.MetaDescription", - "Admin.ContentManagement.Blog.BlogPosts.Fields.MetaDescription.Hint", - "Admin.ContentManagement.News.NewsItems.Fields.MetaDescription", - "Admin.ContentManagement.News.NewsItems.Fields.MetaDescription.Hint", - "Admin.ContentManagement.Topics.Fields.MetaDescription", - "Admin.ContentManagement.Topics.Fields.MetaDescription.Hint"); - - builder.Delete("Admin.Catalog.Categories.Fields.MetaKeywords", - "Admin.Catalog.Categories.Fields.MetaKeywords.Hint", - "Admin.Catalog.Manufacturers.Fields.MetaKeywords", - "Admin.Catalog.Manufacturers.Fields.MetaKeywords.Hint", - "Admin.Catalog.Products.Fields.MetaKeywords", - "Admin.Catalog.Products.Fields.MetaKeywords.Hint", - "Admin.ContentManagement.Blog.BlogPosts.Fields.MetaKeywords", - "Admin.ContentManagement.Blog.BlogPosts.Fields.MetaKeywords.Hint", - "Admin.ContentManagement.News.NewsItems.Fields.MetaKeywords", - "Admin.ContentManagement.News.NewsItems.Fields.MetaKeywords.Hint", - "Admin.ContentManagement.Topics.Fields.MetaKeywords", - "Admin.ContentManagement.Topics.Fields.MetaKeywords.Hint", - "Admin.ContentManagement.Blog.BlogPosts.Fields.Language", - "Admin.ContentManagement.News.NewsItems.Fields.Language"); - - builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.DefaultTitle", - "Default title tag", - "Standard-Titel-Tag", - "Defines the default title for pages in your store. You can override this for individual categories, products, manufacturer and topic pages.", - "Legt das Standard-Titel-Tag für Seiten im Shop fest. Es kann für Warengruppen, Produkte, Hersteller und Seiten individuell angegeben werden."); - - builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.DefaultMetaDescription", - "Default meta description", - "Standard Meta Beschreibung", - "Defines the default meta description for pages in your store. You can override this for individual categories, products, manufacturer and topic pages.", - "Legt die Meta Beschreibung für Seiten im Shop fest. Diese kann für Warengruppen, Produkte, Hersteller und Seiten individuell angegeben werden."); - - builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.DefaultMetaKeywords", - "Default meta keywords", - "Standard Meta Keywords", - "Defines the default meta keywords for pages in your store. You can override these for individual categories, products, manufacturer and topic pages.", - "Legt die Meta Keywords für Seiten im Shop fest. Für Warengruppen, Produkte, Hersteller und Seiten können diese individuell angegeben werden."); - - builder.AddOrUpdate("Admin.Configuration.Settings.Catalog.ShowDiscountSign", - "Show discount sign", - "Rabattzeichen anzeigen", - "Specifies whether a discount sign should be displayed on product pictures when discounts were applied.", - "Legt fest, ob ein Rabattzeichen auf dem Produktbild angezeigt werden soll, wenn Rabatte angewendet wurden."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.StateProvinceRequired", - "'State/province' required", - "'Bundesland' erferderlich", - "Check the box if 'State/province' is required.", - "Legt fest, ob Angaben im Eingabefeld 'Adresszusatz' erforderlich sind."); - - builder.AddOrUpdate("Enums.SmartStore.Core.Domain.Catalog.AttributeChoiceBehaviour.GrayOutUnavailable", - "Gray out unavailable attributes", - "Nicht verfügbare Attribute ausgrauen"); - builder.AddOrUpdate("Enums.SmartStore.Core.Domain.Catalog.AttributeChoiceBehaviour.None", - "None", - "Keines"); - - builder.AddOrUpdate("Admin.Catalog.Products.Fields.AttributeChoiceBehaviour", - "Attribute choice behaviour", - "Attribut-Auswahlverhalten", - "Specifies the behaviour when selecting attributes.", - "Legt das Verhalten bei der Auswahl von Attributen fest."); - - builder.AddOrUpdate("Admin.Catalog.Products.ProductVariantAttributes.Attributes.Fields.CustomData", - "Custom data", - "Benutzerdefinierte Daten", - "Specifies user-defined data. For free usage, e.g. for individual shop extensions.", - "Legt benutzerdefinierte Daten fest. Zur freien Verwendung, z.B. bei individuellen Shop-Erweiterungen."); - - #region Media - - var mediaRoot = "Admin.Configuration.Settings.Media."; - - builder.AddOrUpdate(mediaRoot + "ImageSizes", "Image/thumbnail sizes", "Bild-/Thumbnailgrößen"); - - builder.AddOrUpdate(mediaRoot + "DefaultPictureZoomEnabled", - "Enable image zoom", - "Bildzoom aktivieren", - "Adds 'zoom on hover' functionality to product detail images.", - "Aktiviert 'Zoom bei Hover'-Funktion für Produktdetail-Bilder."); - - builder.AddOrUpdate(mediaRoot + "AssociatedProductPictureSize", "Associated (grouped) product", "Verknüpftes (Gruppen)-Produkt"); - builder.AddOrUpdate(mediaRoot + "AvatarPictureSize", "Customer avatar", "Kundenavatar"); - builder.AddOrUpdate(mediaRoot + "BundledProductPictureSize", "Bundle items", "Bundle Stückliste"); - builder.AddOrUpdate(mediaRoot + "CartThumbBundleItemPictureSize", "Bundle items in cart", "Bundle Stückliste im Warenkorb"); - builder.AddOrUpdate(mediaRoot + "CartThumbPictureSize", "Cart", "Warenkorb"); - builder.AddOrUpdate(mediaRoot + "CategoryThumbPictureSize", "Categories", "Warengruppen"); - builder.AddOrUpdate(mediaRoot + "ManufacturerThumbPictureSize", "Brands", "Marken"); - builder.AddOrUpdate(mediaRoot + "MessageProductThumbPictureSize", "Products in e-mails", "Produkte in E-Mails"); - builder.AddOrUpdate(mediaRoot + "MiniCartThumbPictureSize", "Mini cart", "Mini-Warenkorb"); - builder.AddOrUpdate(mediaRoot + "ProductDetailsPictureSize", "Product detail", "Produktdetail"); - builder.AddOrUpdate(mediaRoot + "ProductThumbPictureSize", "Product list", "Produktliste"); - builder.AddOrUpdate(mediaRoot + "ProductThumbPictureSizeOnProductDetailsPage", "Gallery thumbnail", "Gallerie-Thumbnail"); - - builder.Delete( - mediaRoot + "AssociatedProductPictureSize.Hint", - mediaRoot + "AvatarPictureSize.Hint", - mediaRoot + "BundledProductPictureSize.Hint", - mediaRoot + "CartThumbBundleItemPictureSize.Hint", - mediaRoot + "CartThumbPictureSize.Hint", - mediaRoot + "CategoryThumbPictureSize.Hint", - mediaRoot + "ManufacturerThumbPictureSize.Hint", - mediaRoot + "MessageProductThumbPictureSize.Hint", - mediaRoot + "MiniCartThumbPictureSize.Hint", - mediaRoot + "ProductDetailsPictureSize.Hint", - mediaRoot + "ProductThumbPictureSize.Hint", - mediaRoot + "ProductThumbPictureSizeOnProductDetailsPage.Hint"); - - #endregion - - #region Customer settings - - builder.Delete("Admin.Configuration.Settings.CustomerUser.AddressFormFields.TitleEnabled", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.TitleEnabled.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CompanyEnabled", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CompanyEnabled.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CompanyRequired", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CompanyRequired.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StreetAddressEnabled", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StreetAddressEnabled.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StreetAddressRequired", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StreetAddressRequired.Hint", - "Admin.Configuration.Settings.CustomerUser.StreetAddress2Enabled", - "Admin.Configuration.Settings.CustomerUser.StreetAddress2Enabled.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StreetAddress2Enabled", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StreetAddress2Enabled.Hint", - "Admin.Configuration.Settings.CustomerUser.StreetAddress2Required", - "Admin.Configuration.Settings.CustomerUser.StreetAddress2Required.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StreetAddress2Required", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StreetAddress2Required.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.ZipPostalCodeEnabled", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.ZipPostalCodeEnabled.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.ZipPostalCodeRequired", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.ZipPostalCodeRequired.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CityEnabled", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CityEnabled.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CityRequired", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CityRequired.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CountryEnabled", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CountryEnabled.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CountryRequired", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.CountryRequired.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StateProvinceEnabled", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StateProvinceEnabled.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StateProvinceRequired", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.StateProvinceRequired.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.PhoneEnabled", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.PhoneEnabled.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.PhoneRequired", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.PhoneRequired.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.FaxEnabled", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.FaxEnabled.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.FaxRequired", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.FaxRequired.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.SalutationEnabled", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.SalutationEnabled.Hint", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.Salutations", - "Admin.Configuration.Settings.CustomerUser.AddressFormFields.Salutations.Hint"); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.GenderEnabled", - "'Gender' enabled", - "\"Geschlecht\" aktiv", - "Defines whether the input of 'Gender' is enabled.", - "Legt fest, ob das Eingabefeld \"Geschlecht\" aktiviert ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.TitleEnabled", - "'Title' enabled", - "\"Titel\" aktiv", - "Defines whether the input of 'Title' is enabled.", - "Legt fest, ob das Eingabefeld \"Titel\" aktiviert ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.CompanyEnabled", - "'Company' enabled", - "\"Firma\" aktiv", - "Defines whether the input of 'Company' is enabled.", - "Legt fest, ob das Eingabefeld \"Firma\" aktiviert ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.CompanyRequired", - "'Company' required", - "\"Firma\" ist erforderlich", - "Defines whether the input of 'Company' is required.", - "Legt fest, ob die Eingabe von \"Firma\" erforderlich ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.StreetAddressEnabled", - "'Street address' enabled", - "\"Straße\" aktiv", - "Defines whether the input of 'Street adress' is enabled.", - "Legt fest, ob das Eingabefeld \"Straße\" aktiviert ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.StreetAddressRequired", - "'Street address' required", - "\"Straße\" ist erforderlich", - "Defines whether the input of 'Street adress' is required.", - "Legt fest, ob die Eingabe von \"Straße\" erforderlich ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.StreetAddress2Enabled", - "'Street address addition' enabled", - "\"Adressszusatz\" aktiv", - "Defines whether the input of 'street address addition' is enabled.", - "Legt fest, ob das Eingabefeld \"Adressszusatz\" aktiviert ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.StreetAddress2Required", - "'Street address addition' required", - "\"Adressszusatz\" ist erforderlich", - "Defines whether the input of 'street address addition' is required.", - "Legt fest, ob die Eingabe von \"Adressszusatz\" erforderlich ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.ZipPostalCodeEnabled", - "'Zip / postal code' enabled", - "\"Postleitzahl\" aktiv", - "Defines whether the input of 'Zip / postal code' is enabled.", - "Legt fest, ob das Eingabefeld \"Postleitzahl\" aktiviert ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.ZipPostalCodeRequired", - "'Zip / postal code' required", - "\"Postleitzahl\" ist erforderlich", - "Defines whether the input of 'Zip / postal code' is required.", - "Legt fest, ob die Eingabe von \"Postleitzahl\" erforderlich ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.CityEnabled", - "'City' enabled", - "\"Stadt\" aktiv", - "Defines whether the input of 'City' is enabled.", - "Legt fest, ob das Eingabefeld \"Stadt\" aktiviert ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.CityRequired", - "'City' required", - "\"Stadt\" ist erforderlich", - "Defines whether the input of 'City' is required.", - "Legt fest, ob die Eingabe von \"Stadt\" erforderlich ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.CountryEnabled", - "'Country' enabled", - "\"Land\" aktiv", - "Defines whether the input of 'Country' is enabled.", - "Legt fest, ob das Eingabefeld \"Land\" aktiviert ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.CountryRequired", - "'Country' required", - "\"Land\" ist erforderlich", - "Defines whether the input of 'Country' is required.", - "Legt fest, ob die Eingabe von \"Land\" erforderlich ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.StateProvinceEnabled", - "'State / province' enabled", - "\"Bundesland\" aktiv", - "Defines whether the input of 'State / province' is enabled.", - "Legt fest, ob das Eingabefeld \"Bundesland\" aktiviert ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.StateProvinceRequired", - "'State / province' required", - "\"Bundesland\" ist erforderlich", - "Defines whether the input of 'State / province' is required.", - "Legt fest, ob die Eingabe von \"Bundesland\" erforderlich ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.PhoneEnabled", - "'Phone number' enabled", - "\"Telefon\" aktiv", - "Defines whether the input of 'Phone number' is enabled.", - "Legt fest, ob das Eingabefeld \"Telefon\" aktiviert ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.PhoneRequired", - "'Phone number' required", - "\"Telefon\" ist erforderlich", - "Defines whether the input of 'Phone number' is required.", - "Legt fest, ob die Eingabe von \"Telefon\" erforderlich ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.FaxEnabled", - "'Fax number' enabled", - "\"Fax\" aktiv", - "Defines whether the input of 'Fax number' is enabled.", - "Legt fest, ob das Eingabefeld \"Fax\" aktiviert ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.FaxRequired", - "'Fax number' required", - "\"Fax\" ist erforderlich", - "Defines whether the input of 'Fax number' is required.", - "Legt fest, ob die Eingabe von \"Fax\" erforderlich ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.NewsletterEnabled", - "'Newsletter' enabled", - "\"Newsletter\" aktiv", - "Displays the newsletter registration form.", - "Zeigt das Newsletter Anmeldeformular an."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.SalutationEnabled", - "'Salutation' enabled", - "\"Anrede\" aktiv", - "Defines whether the input of 'Salutation' is enabled.", - "Legt fest, ob das Eingabefeld \"Anrede\" aktiviert ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.Salutations", - "Salutations", - "Anreden", - "Comma separated list of salutations (e.g. Mr., Mrs). Define the entries which will populate the dropdown list for salutation when entering addresses.", - "Komma getrennte Liste (z.B. Herr, Frau). Bestimmen Sie die Einträge für die Auswahl der Anrede, bei der Adresserfassung."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.DateOfBirthEnabled", - "'Date of birth' enabled", - "\"Geburtsdatum\" aktiv", - "Defines whether the input of 'Date of birth' is enabled.", - "Legt fest, ob das Eingabefeld \"Geburtsdatum\" aktiviert ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.LastNameRequired", - "'Last name' required", - "\"Nachname\" ist erforderlich", - "Defines whether the input of 'Last name' is required.", - "Legt fest, ob die Eingabe von \"Nachname\" erforderlich ist."); - - builder.AddOrUpdate("Admin.Configuration.Settings.CustomerUser.FirstNameRequired", - "'First name' required", - "\"Vorname\" ist erforderlich", - "Defines whether the input of 'First name' is required.", - "Legt fest, ob die Eingabe von \"Vorname\" erforderlich ist."); - - #endregion Customer settings - - builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.SocialSettings.FacebookAppId", - "Facebook App ID", - "Facebook App ID", - "A Facebook App ID is a unique number that identifies your application and connects it to your Facebook account. It is used when sharing products, category and manufacturer pages on Facebook.", - "Eine Facebook App ID ist eine eindeutige Nummer, die Ihre Anwendung identifiziert und mit Ihrem Facebook-Account verknüpft. Wird beim Teilen von Produkten, Warengruppen- und Herstellerseiten auf Facebook genutzt."); - - builder.AddOrUpdate("Admin.Configuration.Settings.GeneralCommon.SocialSettings.TwitterSite", - "Twitter Username", - "Twitter-Benutzername", - "Twitter Username that gets displayed on Twitter cards when a product, category and manufacturer page is shared on Twitter. Starts with a '@'.", - "Twitter-Benutzername, der auf Twitter-Karten angezeigt wird, wenn ein Produkt, eine Kategorie oder eine Herstellerseite auf Twitter geteilt wird. Beginnt mit einem '@'."); - - builder.AddOrUpdate("Admin.ContentManagement.Topics.Validation.NoEmptyPassword", - "Password must have a value.", - "Passwort muss einen Wert haben."); - - builder.AddOrUpdate("Admin.ContentManagement.Topics.Validation.NoPasswordAllowed", - "HTML widgets cannot have a password protection.", - "HTML Widgets können keinen Passwortschutz haben."); - - builder.AddOrUpdate("Order.CompletePayment.Hint", - "Click 'Complete payment' if you have not yet paid and wish to start the payment process again.", - "Klicken Sie 'Zahlung veranlassen', falls Sie noch nicht gezahlt haben und den Zahlungsvorgang erneut starten möchten."); - - builder.AddOrUpdate("Admin.ContentManagement.Forums.ForumGroup.Updated") - .Value("de", "Die Forengruppe wurde erfolgreich aktualisiert."); - - builder.AddOrUpdate("Account.Login.NotRegisteredYet", - "Not registered yet?", - "Noch nicht registriert?"); + } } } diff --git a/src/Libraries/SmartStore.Data/SmartStore.Data.csproj b/src/Libraries/SmartStore.Data/SmartStore.Data.csproj index 630742b375..bb3c122551 100644 --- a/src/Libraries/SmartStore.Data/SmartStore.Data.csproj +++ b/src/Libraries/SmartStore.Data/SmartStore.Data.csproj @@ -529,6 +529,10 @@ 202010121359446_RemoveBlogAndNewsLanguage.cs + + + 202011091154314_V410Resources.cs + @@ -954,6 +958,9 @@ 202010121359446_RemoveBlogAndNewsLanguage.cs + + 202011091154314_V410Resources.cs + diff --git a/src/Presentation/SmartStore.Web/App_Data/Localization/App/de/all.smres.xml b/src/Presentation/SmartStore.Web/App_Data/Localization/App/de/all.smres.xml index 09e69cb495..4bd13957cc 100644 --- a/src/Presentation/SmartStore.Web/App_Data/Localization/App/de/all.smres.xml +++ b/src/Presentation/SmartStore.Web/App_Data/Localization/App/de/all.smres.xml @@ -264,12 +264,24 @@ Passwort + + {0} Ziffern + Passwort und Bestätigung stimmen nicht überein. Das Passwort muss mindestens {0} Zeichen lang sein. + + Das Passwort muss mindestens {0} enthalten. + + + {0} Sonderzeichen + + + {0} Großbuchstaben + Telefon @@ -369,6 +381,9 @@ Als registrierter Kunde können Sie Ihren Auftragsstatus einsehen und brauchen Ihre persönlichen Daten beim nächsten Einkauf nicht erneut einzugeben. + + Noch nicht registriert? + Ich bin bereits registriert @@ -1038,6 +1053,12 @@ Attribut-Wert Details + + RGB-Farbe + + + Legt eine Farbe für das Farbflächen-Steuerelement fest. + Legt die Anzeige-Priorität fest (1 steht bspw. für das erste Element in der Liste) @@ -1047,6 +1068,12 @@ Legt fest, ob dieser Wert voreingestellt ist. + + Bild + + + Legt ein Bild fest, welches als Auswahlelement für das Attribut angezeigt werden soll. + Name @@ -1416,24 +1443,6 @@ Vollständiger Name, der als Titel auf der Warengruppenseite angezeigt wird. - - Meta Description - - - Meta Beschreibung. Wird von Suchmaschinen ausgewertet. - - - Meta Keywords - - - Meta Schlüsselwörterliste, kommagetrennt. Wird von Suchmaschinen ausgewertet. - - - Meta Title - - - Überschreibt den Seitentitel. Standard ist der Warengruppen-Name. - Name @@ -1479,12 +1488,6 @@ Legt fest, ob die Warengruppe im Shop sichtbar ist. - - URL-Alias - - - Legt einen Suchmaschinen-freundlichen Seitennamen für die Warengruppe fest. 'Super Computer' resultiert bspw. in '~/super-computer' (# steht für ID). Standard ist der Warengruppenname. - Auf der Homepage zeigen @@ -1596,24 +1599,6 @@ Bestimmt eine Vorlage, mit dem der Hersteller und seine Produkte dargestellt werden. - - Meta Description - - - Meta Beschreibung. Wird von Suchmaschinen ausgewertet. - - - Meta Keywords - - - Meta Schlüsselwörterliste, kommagetrennt. Wird von Suchmaschinen ausgewertet. - - - Meta Title - - - Überschreibt den Seitentitel. Standard ist der Hersteller-Name. - Name @@ -1650,12 +1635,6 @@ veröffentlicht - - URL-Alias - - - Legt einen Suchmaschinen-freundlichen Seitennamen für den Hersteller fest. 'Super Hersteller' resultiert bspw. in '~/super-hersteller'. Standard ist der Herstellername. - Allgemein @@ -2020,6 +1999,12 @@ Das übergeordnete Produkt, mit dem dieses Produkt verknüpft ist. + + Attribut-Auswahlverhalten + + + Legt das Verhalten bei der Auswahl von Attributen fest. + Diese Produkte automatisch dem Warenkorb hinzufügen @@ -2329,24 +2314,6 @@ Legt die maximale Anzahl der Downloads fest. - - Meta Description - - - Meta Beschreibung. Wird von Suchmaschinen ausgewertet. - - - Meta Keywords - - - Meta Schlüsselwörterliste, kommagetrennt. Wird von Suchmaschinen ausgewertet. - - - Meta Title - - - Überschreibt den Seitentitel. Standard ist der Produkt-Name. - Mindestbetrag @@ -2497,12 +2464,6 @@ Legt eine Download-Datei als Beispiel fest. - - URL-Alias - - - Legt einen Suchmaschinen-freundlichen Seitennamen für das Produkt fest. 'Super Computer' resultiert bspw. in '~/super-computer'. Standard ist der Produktname. - Kurzbeschreibung @@ -2770,6 +2731,12 @@ Attribut + + Benutzerdefinierte Daten + + + Legt benutzerdefinierte Daten fest. Zur freien Verwendung, z.B. bei individuellen Shop-Erweiterungen. + Ist erforderlich @@ -2947,6 +2914,9 @@ Sie müssen das Produkt zunächst spreichern, bevor Sie ein Attribut festlegen können. + + Der Lagerbestand wurde nicht aktualisiert, weil sich der Wert seit Laden der Seite geändert hat (z.B. durch einen Auftragseingang). Aktueller Wert ist {0}. + Staffelpreise @@ -3634,6 +3604,12 @@ Ermöglicht den Versand an Kunden aus diesem Land. + + Standardwährung + + + Legt die Standardwährung fest. Bewirkt im Shop eine Vorauswahl der Standardwährung anhand des Landes, zu dem die aktuelle IP-Adresse gehört. + Cookie-Manager anzeigen @@ -3913,6 +3889,18 @@ Bestimmt die Standard-Lieferzeit + + Lieferung spätestens (in Tagen) + + + Legt den spätesten Zeitpunkt der Lieferung in Tagen fest. + + + Lieferung frühestens (in Tagen) + + + Legt den frühesten Zeitpunkt der Lieferung in Tagen fest. + Anzeigename @@ -4501,6 +4489,33 @@ Sie müssen zunächst speichern, bevor Sie Einschränkungen festlegen können. + + Meta Description + + + Bestimmt die Meta Desciption der Seite. Ein Auszug dieser Beschreibung wird in den Ergebnissen von Suchmaschinen unterhalb des Titels dargestellt. + + + Meta Keywords + + + Bestimmt die Meta Keywords der Seite. Geben Sie die Keywords als kommagetrennte Liste an. + + + Title-Tag + + + Bestimmt den Titel der Seite, der unter anderem in den Ergebnissen von Suchmaschinen angezeigt wird. Geben Sie hier nach Möglichkeit einen einzigartigen, prägnanten Titel an. + + + URL-Alias + + + Legen Sie einen suchmaschinenfreundlichen Seitennamen fest, z.B. 'meine-landing-page', um die URL zu 'http://www.yourStore.com/meine-landing-page' zu machen. Lassen Sie das Feld leer, um den Pfad automatisch auf Basis des Namens der Entität zu generieren. + + + SEO-Einstellungen + Einstellungen @@ -4666,6 +4681,18 @@ Lieferzeit, die angezeigt wird, wenn der Warenbestand des Produktes kleiner gleich 0 ist. + + Darstellung von Lieferzeiten + + + Legt die Darstellungsart von Lieferzeiten in Produktlisten fest. Aus Platzgründen wird in der Rasteransicht kein Datum zur Lieferzeit angezeigt. + + + Darstellung von Lieferzeiten + + + Legt die Darstellungsart von Lieferzeiten auf Produktdetailseiten fest. + Anzahl, ab der Bilder nur noch bei Variantenwechsel angezeigt werden @@ -4958,18 +4985,6 @@ Zeige die Standard-Verpackungseinheit, falls für das Produkt keine Verpackungseinheit festgelegt ist. - - Zeige Lieferzeiten - - - Bestimmt ob Lieferzeitinformationen auf der Produktdetailseite angezeigt werden. - - - Zeige Lieferzeiten in Produktlisten - - - Bestimmt ob Lieferzeiten in Produktlisten angezeigt werden. - Seitenbeschreibungen auch in Unterseiten anzeigen @@ -4983,7 +4998,7 @@ Zeigt die Maße des Produktes an. - Specifies whether a discount sign should be displayed on product pictures when discounts were applied + Rabattzeichen anzeigen Legt fest, ob ein Rabattzeichen auf dem Produktbild angezeigt werden soll, wenn Rabatte angewendet wurden. @@ -5153,135 +5168,9 @@ Adressen - - 'Stadt' aktiv - - - Aktiviert das Feld 'Stadt'. - - - 'Stadt' erforderlich - - - Die Eingabe von 'Stadt' ist erforderlich. - - - 'Firma' aktiv - - - Aktiviert das Feld 'Firma'. - - - Die Eingabe von 'Firma' ist erforderlich. - - - Legt fest, ob die Eingabe von 'Firma" erforderlich ist. - - - 'Land' aktiv - - - Legt fest, ob das Feld 'Land' aktiv ist. - - - Die Eingabe eines Landes ist erforderlich - - - Legt fest, ob die Eingabe eines Landes erforderlich ist. - Verwalten Sie Formularfelder, die während des Checkout-Prozesses und im "Mein Konto" Bereich angezeigt werden. - - 'Fax' aktiv - - - Legt fest, ob das Feld 'Fax' aktiv ist. - - - Die Eingabe von 'Fax' ist erforderlich. - - - Legt fest, ob die Eingabe von 'Fax' erforderlich ist. - - - 'Telefon' aktiv - - - Legt fest, ob das Feld 'Telefon' aktiv ist. - - - Die Eingabe von 'Telefon' ist erforderlich. - - - Legt fest, ob die Eingabe von 'Telefon' erforderlich ist. - - - 'Anrede' aktiv - - - Legt fest, ob das Feld 'Anrede' aktiv ist. - - - Anreden - - - Komma getrennte Liste (z.B. Herr, Frau). Bestimmen Sie die Einträge für die Auswahl der Anrede, bei der Adresserfassung. - - - 'Bundesland' aktiv - - - Legt fest, ob das Feld 'Bundesland' aktiv ist. - - - Die Eingabe eines Bundeslandes ist erforderlich - - - Legt fest, ob die Eingabe eines Bundeslandes erforderlich ist. - - - 'Adressszusatz' aktiv - - - Legt fest, ob das Feld 'Adressszusatz' aktiv ist. - - - Die Eingabe von 'Adressszusatz' erforderlich. - - - Legt fest, ob die Eingabe von 'Adressszusatz' erforderlich ist. - - - 'Straße' aktiv - - - Legt fest, ob das Feld 'Straße' aktiv ist. - - - Die Eingabe von 'Straße' ist erforderlich. - - - Legt fest, ob die Eingabe von 'Straße' erforderlich ist. - - - 'Titel' aktiv - - - Legt fest, ob das Feld 'Titel' aktiv ist. - - - 'PLZ' aktiv - - - Legt fest, ob das Feld 'PLZ' aktiv ist. - - - Die Eingabe von 'PLZ' ist erforderlich - - - Legt fest, ob die Eingabe von 'PLZ' erforderlich ist. - Kunden können die Zeitzone einstellen @@ -5313,34 +5202,40 @@ Legt fest, ob Kunden bei der Registrierung oder beim Ändern des Benutzernamenes, die Verfügbarkeit von Benutzernamen prüfen können. - Anzeige "Stadt" aktiviert + "Stadt" aktiv - Legt fest, ob das Eingabefeld "Stadt" während der Registrierung aktiviert ist. + Legt fest, ob das Eingabefeld "Stadt" aktiviert ist. - Die Stadt ist erforderlich + "Stadt" ist erforderlich - Legt fest, ob die Eingabe von "Stadt" während der Registrierung erforderlich ist. + Legt fest, ob die Eingabe von "Stadt" erforderlich ist. - Anzeige "Firma" aktiviert + "Firma" aktiv - Legt fest, ob das Eingabefeld "Firma" während der Registrierung aktiviert ist. + Legt fest, ob das Eingabefeld "Firma" aktiviert ist. - Firma ist erforderlich + "Firma" ist erforderlich Legt fest, ob die Eingabe von "Firma" erforderlich ist. - Anzeige "Land" aktiviert + "Land" aktiv - Legt fest, ob das Eingabefeld "Land" während der Registrierung aktiviert ist. + Legt fest, ob das Eingabefeld "Land" aktiviert ist. + + + "Land" ist erforderlich + + + Legt fest, ob die Eingabe von "Land" erforderlich ist. Kunden können Kundennummer hinterlegen @@ -5352,7 +5247,7 @@ Registrierung - Verwalten Sie Formularfelder, die während der Registrierung angezeigt werden. + Verwalten Sie Formularfelder, die während der Registrierung angezeigt werden.<br>Um die Adressübergabe aus dem Registrierungsformular zu gewährleisten, ist es notwending, dass folgende Felder aktiviert und vom Kunden ausgefüllt sind:<ul><li>Vorname</li><li>Nachname</li><li>E-Mail</li><li>und alle Felder die im Tab "Adressen" als erforderlich ausgewählt sind</li></ul> Art des Kundenlogins @@ -5394,10 +5289,10 @@ Kundeneinstellungen - Anzeige" Geburtsdatum" aktiviert + "Geburtsdatum" aktiv - Legt fest, ob das Eingabefeld "Geburtsdatum" während der Registrierung aktiviert ist. + Legt fest, ob das Eingabefeld "Geburtsdatum" aktiviert ist. Datum und Zeit @@ -5433,28 +5328,28 @@ Externe Authentifikation - Anzeige "Fax" aktiviert + "Fax" aktiv - Legt fest, ob das Eingabefeld "Faxnummer" während der Registrierung aktiviert. + Legt fest, ob das Eingabefeld "Fax" aktiviert ist. - Fax-Nummer ist erforderlich + "Fax" ist erforderlich - Legt fest, ob die Eingabe einer Fax-Nummer erforderlich ist. + Legt fest, ob die Eingabe von "Fax" erforderlich ist. - Vorname ist erforderlich + "Vorname" ist erforderlich - Legt fest, ob die Angabe des Vornamens erforderlich ist. + Legt fest, ob die Eingabe von "Vorname" erforderlich ist. - Anzeige "Geschlecht" aktiviert + "Geschlecht" aktiv - Legt fest, ob das Eingabefeld "Geschlecht" während der Registrierung aktiviert ist. + Legt fest, ob das Eingabefeld "Geschlecht" aktiviert ist. "Benachrichtigung bei Lieferfähigkeit" verbergen @@ -5475,16 +5370,34 @@ Verbirgt das Newsletter Anmeldeformular. Newsletter Anmeldungen sind nicht möglich. - Nachname ist erforderlich + "Nachname" ist erforderlich - Legt fest, ob die Angabe des Nachnamens erforderlich ist. + Legt fest, ob die Eingabe von "Nachname" erforderlich ist. + + + Mindestanzahl von Ziffern im Passwort + + + Legt die Mindestanzahl von Ziffern eines Passworts fest. + + + Mindestanzahl von Sonderzeichen im Passwort + + + Legt die Mindestanzahl von Sonderzeichen eines Passworts fest. + + + Mindestanzahl von Großbuchstaben im Passwort + + + Legt die Mindestanzahl von Großbuchstaben eines Passworts fest. - Zeige Newsletter Anmeldeformular an + "Newsletter" aktiv - Zeigt das Newsletter Anmeldeformular. Newsletter Anmeldungen sind möglich. + Zeigt das Newsletter Anmeldeformular an. Benachrichtigung bei neuer Registrierung @@ -5492,21 +5405,70 @@ Benachrichtigt den Administrator, wenn sich ein neuer Benutzer registriert hat. + + Mindestlänge eines Passworts + + + Legt die minimale Länge eines Passworts fest. + - Anzeige "Telefon" aktiviert + "Telefon" aktiv - Legt fest, ob das Eingabefeld "Telefonnummer" während der Registrierung aktiviert ist. + Legt fest, ob das Eingabefeld "Telefon" aktiviert ist. - Telefon-Nummer ist erforderlich + "Telefon" ist erforderlich - Legt fest, ob die Eingabe der Telefonnummer erforderlich ist. + Legt fest, ob die Eingabe von "Telefon" erforderlich ist. Datenschutz + + Art des Cookies + + + Bestimmt die Verwendungsart des Cookies (Required, Analytics, ThirdParty). + + + Beschreibung + + + Bestimmt die Beschreibung der Cookie-Information. + + + System-Cookie + + + Name + + + Bestimmt den Anzeigenamen der Cookie-Information. + + + Neue Cookie-Informationen hinzufügen + + + <p> + Wenn Sie Skripte von Drittanbietern in Ihren Shop eingebunden haben, die Cookies nutzen und die nicht über ein Plugin in Smartstore integriert sind, + können Sie in folgender Tabelle eigene Informationen über diese Cookies für den Cookie-Manager bereitstellen. + Die zugefügten Informationen werden, dem Typ entsprechend, im Cookie-Manager des Frontends angezeigt. + Cookie-Informationen, die dem Cookie-Manager von aktiven Plugins zur Verfügung gestellt werden, werden in dieser Tabelle angezeigt, + können aber nicht bearbeitet werden. Die Texte dieser Informationen können über die Sprachresourcen bearbeitet werden + <b>Admin > Konfiguration > Regionale Einstellungen > Sprachen</b>. + </p> + + + Cookie-Information wurde nicht gefunden. + + + Cookie-Informationen bearbeiten + + + Eigene Cookie-Informationen registrieren + Einwilligungserklärung in Formularen fordern @@ -5514,10 +5476,10 @@ Bestimmt ob in Formularen eine Checkbox angezeigt wird, die den Benutzer auffordert der Verarbeitung seiner Daten zuzustimmen. - Cookie-Hinweis aktivieren + Cookie-Manager aktivieren - Legt fest, ob ein Element für die Zustimmung zur Nutzung von Cookies im Frontend angezeigt wird. + Legt fest, ob ein Dialog für die Zustimmung zur Nutzung von Cookies im Frontend angezeigt wird. Name im Kontaktformular ist erforderlich @@ -5531,6 +5493,30 @@ Legt fest, ob die Angabe des Namens im Produktanfrage-Formular erforderlich ist. + + Cookie-Manager modal anzeigen + + + Bestimmt, ob der Cookie-Manager im Frontend in einem modalen Dialog angezeigt wird. Der modale Modus macht eine Kundeninteraktion mit dem Dialog erfoderlich, bevor der Kunde im Shop navigieren kann. + + + 'SameSite' Modus + + + <h5>SameSite Modus</h5> + <p> + Die SameSite-Einstellung für Cookies bestimmt, das Sicherheitslevel für Cookies, wenn diese von anderen Seiten (z.B. in einem Cross-Site-Request oder in einem IFrame) aufgerufen werden. + Die empfohlene Einstellung ist <b>Lax</b>, da hier Cookies bei den meisten gesicherten Aktionen mitgesendet werden. + <br /> + Soll der Shop auch in ein IFrame eingebettet werden, ist es notwendig die Einstellung <b>None</b> zu wählen. Zusätzlich muss SSL im Shop eingerichtet sein. + </p> + <ul> + <li><b>Unspecified:</b> Es wird kein SameSite-Header an Requests übermittelt.</li> + <li><b>None:</b> Kein Modus angegeben. Diese Einstellung muss verwendet werden, wenn der Shop auch in ein IFrame eingebettet werden soll (SSL muss eingerichtet sein).</li> + <li><b>Lax:</b> Empfohlene Einstellung. Cookies werden bei Anfragen auf derselben Website und bei Cross-Site-Requests auf höchster Ebene gesendet.</li> + <li><b>Strict:</b> Cookies werden nur an Anfragen derselben Website gesendet.</li> + </ul> + IP-Adresse speichern @@ -5543,6 +5529,18 @@ Legt eine Kundengruppe fest, die neu registrierten Kunden zugeordnet wird. + + "Anrede" aktiv + + + Legt fest, ob das Eingabefeld "Anrede" aktiviert ist. + + + Anreden + + + Komma getrennte Liste (z.B. Herr, Frau). Bestimmen Sie die Einträge für die Auswahl der Anrede, bei der Adresserfassung. + Anzeige des Registrierungsdatums eines Kunden @@ -5556,10 +5554,16 @@ Legt fest, ob die Herkunft (Stadt, Land) des Kunden angezeigt werden soll. - Anzeige "Bundesland" aktiviert + "Bundesland" aktiv - Legt fest, ob das Eingabefeld "Bundesland" während der Registrierung angezeigt werden soll. + Legt fest, ob das Eingabefeld "Bundesland" aktiviert ist. + + + "Bundesland" ist erforderlich + + + Legt fest, ob die Eingabe von "Bundesland" erforderlich ist. URL der zuletzt aufgerufenen Seite speichern @@ -5568,34 +5572,34 @@ Legt fest, ob die URL der zuletzt aufgerufenen Seite im Kundendatensatz gespeichert werden soll. Das Deaktivieren kann u.U. zu schnellerem Seitenaufbau führen. - Anzeige "Adressszusatz" aktiviert + "Adressszusatz" aktiv - Legt fest, ob das Eingabefeld "Adressszusatz" während der Registrierung angezeigt werden soll. + Legt fest, ob das Eingabefeld "Adressszusatz" aktiviert ist. - Adressszusatz erforderlich + "Adressszusatz" ist erforderlich - Legt fest, ob Angaben im Eingabefeld 'Adressszusatz' erforderlich sind. + Legt fest, ob die Eingabe von "Adressszusatz" erforderlich ist. - Anzeige "Strasse" aktiviert + "Straße" aktiv - Legt fest, ob das Eingabefeld "Strasse" während der Registrierung aktiviert ist. + Legt fest, ob das Eingabefeld "Straße" aktiviert ist. - Adresszeile 1 erforderlich + "Straße" ist erforderlich - Legt fest, ob Angaben in der ersten Adresszeile erforderlich sind. + Legt fest, ob die Eingabe von "Straße" erforderlich ist. - 'Titel' aktiv + "Titel" aktiv - Legt fest, ob das Feld 'Titel' aktiv ist. + Legt fest, ob das Eingabefeld "Titel" aktiviert ist. "Benutzernamen" aktiviert @@ -5616,16 +5620,16 @@ Bestimmt ob die Email-Adresse des Kunden im Checkout validiert wird. - Anzeige "Postleitzahl" aktiviert + "Postleitzahl" aktiv - Legt fest, on das Eingabefeld "Postleitzahl" während der Registrierungangezeigt werden soll. + Legt fest, ob das Eingabefeld "Postleitzahl" aktiviert ist. - Postleitzahl erforderlich + "Postleitzahl" ist erforderlich - Legt fest, ob Angabe der Postleitzahl erforderlich ist. + Legt fest, ob die Eingabe von "Postleitzahl" erforderlich ist. Zeitlimit für Bilder-Download (Minuten) @@ -6126,22 +6130,22 @@ Legt das Redirect-Verhalten fest, wenn eine Seite in der Standardsprache angefordert wird (die Standardsprache ist die erste aktive Sprache eines Stores). - Standard-Meta-Beschreibung + Standard Meta Beschreibung - Legt die Standard-Meta-Beschreibung (description) fest. Diese kann für Warengruppen, Produkte und Hersteller nochmal individuell angepasst werden. + Legt die Meta Beschreibung für Seiten im Shop fest. Diese kann für Warengruppen, Produkte, Hersteller und Seiten individuell angegeben werden. - Standard-Meta-Keywords + Standard Meta Keywords - Legt die Standard-Meta-Keywords für alle Seiten fest. Für Warengruppen, Produkte und Hersteller können diese individuell angegeben werden. + Legt die Meta Keywords für Seiten im Shop fest. Für Warengruppen, Produkte, Hersteller und Seiten können diese individuell angegeben werden. - Standard-Titel + Standard-Titel-Tag - Legt den Standard-Titel für Seiten im Shop fest. + Legt das Standard-Titel-Tag für Seiten im Shop fest. Es kann für Warengruppen, Produkte, Hersteller und Seiten individuell angegeben werden. Browsersprache erkennen @@ -6185,6 +6189,24 @@ Administrator-Menüeinträge werden entsprechend den Berechtigungen in der Zugriffsliste angezeigt. + + Meta Description (Startseite) + + + Legt die Meta Description für die Startseite fest. Ein Auszug dieser Beschreibung wird in den Ergebnissen von Suchmaschinen unterhalb des Titels dargestellt. + + + Meta Keywords (Startseite) + + + Legt die Meta Keywords für die Startseite fest. Geben Sie die Keywords als kommagetrennte Liste an. + + + Title-Tag (Startseite) + + + Legt das Title-Tag für die Startseite fest, das unter anderem in den Ergebnissen von Suchmaschinen angezeigt wird. + Verhalten bei ungültiger Sprache @@ -6207,16 +6229,16 @@ Legt fest, ob und wie Suchmaschinen die Seiten Ihres Shops indexieren. - Seiten-Titel-Anpassung + Titel-Tag Reihenfolge - SEO-Relevante Seitentitel Anpassung vornehmen. Der erzeugte Seitentitel könnte z.B. statt (MEINSHOP.DE | SEITE NAME) (SEITE NAME | MEINSHOP.DE) lauten. + Legen Sie hier die Seitentitel-Reihenfolge fest. Das erzeugte Title-Tag könnte z.B. (MEINSHOP.DE | SEITE NAME) oder (SEITE NAME | MEINSHOP.DE) lauten. Titel-Trennzeichen - Legt das Seiten-Titel-Trennzeichen fest. + Legt das Trennzeichen für das Titel-Tag fest. PDFs aktivieren @@ -6272,6 +6294,12 @@ Soziale Netzwerke + + Facebook App ID + + + Eine Facebook App ID ist eine eindeutige Nummer, die Ihre Anwendung identifiziert und mit Ihrem Facebook-Account verknüpft. Wird beim Teilen von Produkten, Warengruppen- und Herstellerseiten auf Facebook genutzt. + Facebook Link @@ -6299,6 +6327,12 @@ Lassen Sie dieses Feld leer wenn Twitter nicht angezeigt werden soll. + + Twitter-Benutzername + + + Twitter-Benutzername, der auf Twitter-Karten angezeigt wird, wenn ein Produkt, eine Kategorie oder eine Herstellerseite auf Twitter geteilt wird. Beginnt mit einem '@'. + Youtube Link @@ -6390,10 +6424,7 @@ Medien-Einstellungen - Bildgröße verknüpftes Produkt - - - Die Standardbildgröße (in Pixel) von mit einem Gruppenprodukt verknüpften Produkten. + Verknüpftes (Gruppen)-Produkt Absolute URLs erzeugen @@ -6402,34 +6433,19 @@ Erzeugt absolute URLs für Mediendateien, indem der aktuelle Hostname vorangestellt wird (z.B. http://meinshop.de/media/image/1.jpg statt /media/image/1.jpg). Hat keine Auswirkung, wenn für den Store eine CDN-URL eingerichtet wurde. - Bildgröße Avatar - - - Standardgröße in Pixeln für den Avatar. + Kundenavatar - Bildgröße des Produktes im Bundle - - - Die Standardbildgröße (in Pixel) von Produkten im Bundle. + Bundle Stückliste - Bildgröße der Thumbnails von Bundle-Bestandteilen im Warenkorb - - - Standardgröße in Pixeln der Produktthumbnails von Bundle-Bestandteilen im Warenkorb und auf dem Wunschzettel. + Bundle Stückliste im Warenkorb - Bildgröße der Thumbnails im Warenkorb - - - Standardgröße in Pixeln für Produktthumbnails im Warenkorb und auf dem Wunschzettel. + Warenkorb - Bildgröße der Kategorie-Thumbs - - - Standardgröße der Produktthumbnails auf den Warengruppenseiten. + Warengruppen Der aktuelle Speicherort ist @@ -6437,6 +6453,12 @@ Bildzoom aktivieren + + Aktiviert 'Zoom bei Hover'-Funktion für Produktdetail-Bilder. + + + Bild-/Thumbnailgrößen + Verwaiste Dateien automatisch löschen @@ -6444,10 +6466,7 @@ Legt fest, ob verwaiste Mediendateien beim nächsten Aufräumvorgang automatisch gelöscht werden sollen. - Bildgröße der Hersteller-Thumbnails - - - Standardgröße der Produktthumbnails auf den Herstellerseiten + Marken Maximale Bildgröße @@ -6471,16 +6490,10 @@ Medientypen steuern, welche Dateien hochgeladen werden können. Alle anderen Medientypen werden grundsätzlich abgelehnt. Die Typen bitte Leerzeichen getrennt und ohne Punkt angeben. - Thumbnail-Größe von Produkten in E-Mails - - - Legt die Thumbnail-Bildgröße (in Pixel) von Produkten in E-Mails fest. Geben Sie 0 ein, um keine Thumbnails anzuzeigen. + Produkte in E-Mails - Miniwarenkorb-Symbolbild-Größe - - - Legt die Miniwarenkorb-Symbolbild-Größe in Pixeln fest. + Mini-Warenkorb Bitte sichern Sie Ihre Datenbank, ehe Sie Mediendateien verschieben. Dieser Vorgang kann je nach Dateimenge mehrere Minuten in Anspruch nehmen. @@ -6501,22 +6514,13 @@ Fenster - Bildgröße von Produktdetail-Bildern - - - Standardgröße in Pixeln für die Produktdetailbilder + Produktdetail - Bildgröße von Produkt-Thumbnails - - - Standardgröße in Pixeln für Produktthumbnails + Produktliste - Produkt-Thumbnail-Grösse in Produktseite - - - Standardgröße von Thumbnails für Produktbilder, wenn mehr als ein Bild vorhanden ist. + Gallerie-Thumbnail Neuer Speicherort @@ -6605,6 +6609,12 @@ Gästen erlauben, ohne sich zu Registrieren Bestellungen aufzugeben. + + Beschränkung bezogen auf Zwischensumme + + + Bestimmt, ob sich der Mindest-/Höchstbetrag auf die Auftragszwischensumme bezieht, andernfalls bezieht er sich auf den Gesamtbetrag. + "Auftrag abgeschlossen" Seite unterbinden @@ -6641,17 +6651,17 @@ Benutzer können Bestellung erneut abschicken. - - Mindestbestellwert Zwischensumme + + Höchstbestellwert - - Legt den Mindestbestellwert der Zwischensumme fest. + + Legt den standardmäßigen Höchstbestellwert für den Shop fest. Wird von Beschränkungen in Kundengruppen überschrieben. - - Mindestbestellwert Gesamtsumme + + Mindestbestellwert - - Legt den Mindestbestellwert der Gesamtsumme fest. + + Legt den standardmäßigen Mindestbestellwert für den Shop fest. Wird von Beschränkungen in Kundengruppen überschrieben. Erlaubter Zeitraum für Retourenwünsche in Tagen @@ -6680,6 +6690,12 @@ Auftragseinstellungen + + Beschränkungen in Kundengruppen sind kumulativ + + + Bestimmt, ob mehrfache Bestellwertbeschränkungen durch Kundengruppenzuordnungen kumuliert werden. + Gewünschte Aktion für Retoure @@ -6869,6 +6885,12 @@ Legt den Suchmodus fest. Bitte beachten Sie, dass der Suchmodus die Geschwindigkeit der Suche (abhängig von der Objektanzahl) beeinflusst. 'Ist gleich' ist am schnellsten, 'Beinhaltet' am langsamsten. + + Produkt bei SKU, MPN oder GTIN direkt öffnen + + + Legt fest, ob bei einer Übereinstimmung des Suchbegriffes mit einer SKU, MPN oder GTIN die Produktseite direkt geöffnet werden soll. + Produktbilder anzeigen @@ -6887,6 +6909,12 @@ Bestimmt ob bei der Berechnung der Versandkosten nur der höchste Transportzuschlag von Produkten berücksichtigt wird. + + Lieferungen nur an Werktagen + + + Legt fest, ob Lieferungen nur an Werktagen stattfinden. + Versandereignisse anzeigen @@ -6929,6 +6957,12 @@ Legt fest, ob die Versandartauswahl nur im Checkout-Prozess angezeigt wird, wenn mehr als eine Versandart zur Verfügung steht + + Bis x Uhr bestellt, heute verschickt + + + Legt die Stunde fest, bis zu der die Bestellung noch am selben Tag verschickt wird. + Warenkorb-Einstellungen @@ -6956,6 +6990,12 @@ Legt die Anzahl der angezeigten CrossSelling Produkte fest. Die Eingabe von 0 (Null) blendet Cross-Selling aus. + + Darstellung von Lieferzeiten + + + Legt die Darstellungsart von Lieferzeiten im Warenkorb fest. + Warenkorb anzeigen, wenn ein Produkt hinzugefügt wird @@ -7025,12 +7065,6 @@ Legt fest, ob rechtliche Hinweise in der Warenkorbübersicht auf der Bestellabschlußseite angezeigt werden. Dieser Text kann in den Sprachresourcen geändert werden. - - Lieferzeiten anzeigen - - - Bestimmt ob Lieferzeiten im Warenkorb angezeigt wird. - Zeige die Rabattbox im Warenkorb @@ -7388,6 +7422,12 @@ Shop-Details ändern + + Apple Touch Icon + + + Legt das Icon fest, das von Apple-Geräten als Shortcut-Icon verwendet wird. Optimale Abmessungen für das Icon sind 180x180. + Content Delivery Network URL @@ -7397,6 +7437,12 @@ Die Reihenfolge für diesen Shop. 1 bedeutet Anfang der Liste. + + Favicon + + + Legt das Favicon für den Shop fest. Dieses Icon sollte Grafiken in den Abmessungen 16×16, 32×32 und 48×48 beinhalten. + Immer SSL verwenden @@ -7418,12 +7464,30 @@ Bitte verwenden Sie nur Buchstaben, Ziffern, Unterstriche oder Bindestriche. Das erste Zeichen sollte ein Buchstabe sein. + + Microsoft Kachelfarbe + + + Legt die Farbe fest, die von Microsoft-Geräten als Kachelfarbe verwendet wird, wenn Shortcuts zu Ihrem Shop erstellt werden. + + + Microsoft Kachelgrafik + + + Legt das Icon fest, das von Microsoft-Geräten als Kachelgrafik verwendet wird, wenn Shortcuts zu Ihrem Shop erstellt werden. Optimale Abmessungen für das Bild sind 310x310. + Shop-Name Bitte den Namen des Shops eingeben, z.B. Mein Online-Shop. + + PNG-Icon + + + Legt das PNG-Icon für den Shop fest. Dieses Icon wird von aktuellen Geräten als Favicon erkannt und verwendet, wenn Shortcuts zu Ihrem Shop erstellt werden. Optimale Abmessungen für das Icon sind 196x196. + Umrechnungswährung @@ -7688,30 +7752,9 @@ Legt das Intro des Blog-Posts fest. - - Sprache - Legt die Sprache dieses Blog-Eintrages fest. Der Kunde sieht nur Blog-Einträge in seiner Sprache. - - Meta description - - - Meta description im Seitenkopf eines Blog-Eintrags. - - - Meta keywords - - - Meta keywords im Seitenkopf eines Blog-Eintrags. - - - Meta title - - - Überschreibt den Titel der Seite als Meta title. Sonst ist die Überschrift des Blog-Eintrages das "Meta title". - Bild @@ -7730,12 +7773,6 @@ Legt die Hintergrundfarbe des Blog-Posts fest. - - SEO Namen - - - Bestimmen Sie einen suchmaschinenfreundlichen Seitennamen z.B. ''die-aktuellste-news'' damit die Seiten-Url wie folgt ausgegeben wird ''http://www.ihrShop.com/die-aktuellste-news''. Lassen Sie das Feld leer, damit der Seitenname automatisch aus dem Titel der News ermittelt wird. - Anfangsdatum @@ -7829,12 +7866,6 @@ Der Name des Forums. - - URL-Alias - - - Legt einen Suchmaschinen-freundlichen Seitennamen für das Forum fest. 'Tolles Forum' resultiert bspw. in '~/tolles-forum'. Standard ist der Name des Forums. - Das Forum wurde erfolgreich aktualisiert @@ -7871,14 +7902,8 @@ Der Name der Forengruppe. - - URL-Alias - - - Legt einen Suchmaschinen-freundlichen Seitennamen für die Forengruppe fest. 'Tolle Forengruppe' resultiert bspw. in '~/tolle-forengruppe'. Standard ist der Name der Forengruppe. - - Die Forengruppe wurde erfolgreich aktualisert. + Die Forengruppe wurde erfolgreich aktualisiert. Forenverwaltung @@ -8204,30 +8229,9 @@ Langer Beschreibungstext. - - Sprache - Die Sprache dieses Newseintrags. Ein Kunde sieht nur Einträge in seiner eigenen Sprache. - - Meta description - - - Meta description im Seitenkopf eines News-Eintrages. - - - Meta keywords - - - Meta keywords o, Seitenkops eines News-Eintrages. - - - Meta title - - - Überschreibt den Titel der Seite als Meta title. Sonst ist die Überschrift des News-Eintrags das "Meta title". - Bild @@ -8246,12 +8250,6 @@ Legt fest, ob der Eintrag im Shop veröffentlicht wird. - - SEO Namen - - - Bestimmen Sie einen suchmaschinenfreundlichen Seitennamen z.B. ''die-aktuellste-news'' damit die Seiten-Url wie folgt ausgegeben wird ''http://www.ihrShop.com/die-aktuellste-news''. Lassen Sie das Feld leer, damit der Seitenname automatisch aus dem Titel der News ermittelt wird. - Kurztext @@ -8396,6 +8394,12 @@ Legt die CSS-Klasse des Body-Elements fest. + + Art des Cookies + + + Bestimmt, ob dieses Widget in Abhängigkeit zur Kundeneinstellung im Cookie-Manager ausgegeben wird. Diese Option sollte verwendet werden, wenn Sie ein Script für einen Drittanbieter zufügen, das Cookies setzt. + Html-ID @@ -8420,24 +8424,6 @@ Legt fest, ob diese Seite passwortgeschützt werden soll. - - Meta Seitenbeschreibung (description) - - - Kurze Beschreibung des Inhalts der Webseite. - - - Meta Stichwörter (keywords) - - - Nennt Stichwörter oder Themen, die auf der Webseite vorkommen bzw. behandelt werden. Die Stichwörter werden durch Kommata voneinander getrennt, zur Verbesserung der Menschenlesbarkeit wird nach dem Komma oft ein Leerzeichen eingefügt. - - - Meta Title - - - Möglichst aussagekräftiger Titel mit prägnanten Worten. - Passwort @@ -8456,12 +8442,6 @@ Legt fest, ob der Content inline als HTML Widget dargestellt werden soll - - SEO Namen - - - Suchmaschinenfreundlicher Seitenname. - Kurztitel @@ -8519,6 +8499,12 @@ Die Seite wurde erfolgreich bearbeitet. + + Passwort muss einen Wert haben. + + + HTML Widgets können keinen Passwortschutz haben. + Leerzeichen sind nicht erlaubt. @@ -8621,6 +8607,18 @@ Zeigt an, ob diese Gruppe eine Systemgruppe ist. + + Höchstbestellwert + + + Legt den Höchstbestellwert für Kunden in dieser Gruppe fest. + + + Mindestbestellwert + + + Legt den Mindestbestellwert für Kunden in dieser Gruppe fest. + Name @@ -9116,9 +9114,6 @@ Kundenauswertungen - - Top 20 Kunden nach Auftragsanzahl - Top 20 Kunden nach Bestellwert @@ -9161,6 +9156,9 @@ Nach einem bestimmten Anfangsdatum suchen. + + Top Kunden + Registrierte Kunden @@ -9182,9 +9180,6 @@ Im letzten Jahr - - Bericht erstellen - Übersicht @@ -10955,6 +10950,9 @@ Anfangsdatum der Suche. + + Es sind keine Aufträge ausgewählt. Bitte wählen Sie die gewünschten Aufträge aus. + Lagerbestand anpassen @@ -11015,6 +11013,12 @@ Auftrag als PDF + + <div>Es wurden {0} von {1} Aufträgen erfolgreich verarbeitet.</div><div{3}>{2} Aufträge können aufgrund ihres aktuellen Status nicht wie gewünscht geändert werden und wurden übersprungen.</div> + + + Es sind {0} Aufträge ausgewählt. Möchten Sie fortfahren? + Produkte @@ -12032,6 +12036,9 @@ Geschlecht + + Browser User-Agent + Hat alle folgenden Produkte gekauft @@ -12090,7 +12097,7 @@ Bezahlt mit - Gewählte Zahlart + Zahlart Zahlungsstatus @@ -12413,9 +12420,6 @@ Suche nach einem bestimmten Zahlungsstatus, z.B. bezahlt. - - Bericht erstellen - Anfangsdatum @@ -12464,9 +12468,6 @@ Name - - Report erstellen - Anfangsdatum @@ -12677,6 +12678,9 @@ SQL-Abfrage ausführen + + Meta-Elemente + E-Mail-Verwaltung @@ -13749,6 +13753,12 @@ Bitte bestätigen Sie, dass Sie sofort Zugang zu dem digitalen Inhalt wünschen. + + Der Höchstbestellwert für die Zwischensumme ist {0}. + + + Der Höchstbestellwert der Gesamtsumme ist {0}. + Bitte warten Sie einige Sekunden, bevor Sie einen neuen Auftrag platzieren. @@ -14160,6 +14170,9 @@ Warengruppe + + Checkout-Attribut-Option + Kunde @@ -14796,6 +14809,9 @@ Ja, wir verwenden Cookies + + Ausblenden + Sie entscheiden, welche Cookies Sie zulassen oder ablehnen. Ihre Entscheidung können Sie jederzeit in Ihrem <a href='{0}'>My-Account-Bereich</a> ändern. Weitere Infos auch in unserer <a href='{1}'>Datenschutzerklärung</a>. @@ -14841,6 +14857,24 @@ Das entsprechende Produkt konnte nicht gefunden werden. + + <b>{0}</b> - <b>{1}</b> + + + <b>{0}</b> + + + frühestens <b>{0}</b> + + + Morgen + + + Morgen + + + bis <b>{0}</b> + Rechtshinweise @@ -14892,6 +14926,12 @@ Hintergrundfarbe + + Nicht verfügbare Attribute ausgrauen + + + Keines + Kästchen (Farbe & Bild) @@ -15273,6 +15313,18 @@ Mittelwert aufrunden (z.B. 0,05 Rundung: 9,225 wird auf 9,25 gerundet) + + Nur Datum (sofern möglich) + + + Label und Datum + + + Nur Label + + + Nicht anzeigen + Nur N mal @@ -16427,7 +16479,7 @@ Die Zahlung ist ausstehend. Der Käufer kann die Zahlung durchführen, indem er auf der <a href='{0}'>Bestelldetailseite</a> den Button <b>Zahlung veranlassen</b> klickt. - Die Bestellung wurde noch nicht bezahlt. Um die Zahlung nun vorzunehmen, klicken Sie die Schaltfläche 'Zahlung veranlassen' + Klicken Sie 'Zahlung veranlassen', falls Sie noch nicht gezahlt haben und den Zahlungsvorgang erneut starten möchten. Eine Rechnungslegung ist für das Land '{0}' unzulässig. @@ -17197,11 +17249,17 @@ Fragen zum Artikel? - + + oder rufen Sie direkt an + + Ich habe folgende Fragen zum Artikel {0}: + + Ich bitte um Preisinformationen zu folgendem Artikel: {0} + - Vielen Dank. Ihre Anfage wurde erfolgreich gesendet. + Vielen Dank. Ihre Anfrage wurde erfolgreich gesendet. Fragen? @@ -17209,6 +17267,9 @@ Frage zum Artikel + + Angebotsanfrage + Verfügbarkeit @@ -17296,6 +17357,9 @@ Das Produkt mit der ID {0} wurde gelöscht. + + Lieferung: + Lieferzeit: diff --git a/src/Presentation/SmartStore.Web/App_Data/Localization/App/de/head.txt b/src/Presentation/SmartStore.Web/App_Data/Localization/App/de/head.txt index 14f7878f2a..0de4ce2d5e 100644 --- a/src/Presentation/SmartStore.Web/App_Data/Localization/App/de/head.txt +++ b/src/Presentation/SmartStore.Web/App_Data/Localization/App/de/head.txt @@ -1 +1 @@ -202007241131557_V401Resources \ No newline at end of file +202011091154314_V410Resources \ No newline at end of file diff --git a/src/Presentation/SmartStore.Web/App_Data/Localization/App/en/all.smres.xml b/src/Presentation/SmartStore.Web/App_Data/Localization/App/en/all.smres.xml index ee95be42c6..cef7ff65ea 100644 --- a/src/Presentation/SmartStore.Web/App_Data/Localization/App/en/all.smres.xml +++ b/src/Presentation/SmartStore.Web/App_Data/Localization/App/en/all.smres.xml @@ -264,12 +264,24 @@ Password + + {0} digits + The password and confirmation password do not match. The password should have at least {0} characters. + + The password must contain at least {0}. + + + {0} special characters + + + {0} uppercase letters + Phone @@ -369,6 +381,9 @@ As a registered customer you will be able to shop faster, be up to date on an orders status, and keep track of the orders you have previously made. + + Not registered yet? + I am already registered @@ -1056,6 +1071,12 @@ Display order + + RGB color + + + Specifies a color for the color squares control. + The display order of the attribute value. 1 represents the first item in attribute value list. @@ -1065,6 +1086,12 @@ Determines whether this attribute value is pre selected for the customer. + + Picture + + + Specifies an image to be displayed as the selection element for the attribute. + Name @@ -1455,24 +1482,6 @@ Complete name displayed as title on the category page. - - Meta description - - - Meta description to be added to category page header. - - - Meta keywords - - - Meta keywords to be added to category page header. - - - Meta title - - - Override the page title. The default is the name of the category. - Name @@ -1518,12 +1527,6 @@ Check the box to publish this category (visible in store). Uncheck to unpublish (category not available in store). - - URL alias - - - Set a search engine friendly page name e.g. 'the-best-category' to make your page URL 'http://www.yourStore.com/the-best-category'. Leave empty to generate it automatically based on the name of the category. - Show on home page @@ -1644,24 +1647,6 @@ Choose a manufacturer template. This template defines how this manufacturer (and its products) will be displayed. - - Meta description - - - Meta description to be added to manufacturer page header. - - - Meta keywords - - - Meta keywords to be added to manufacturer page header. - - - Meta title - - - Override the page title. The default is the name of the manufacturer. - Name @@ -1698,12 +1683,6 @@ Check the box to publish this manufacturer (visible in store). Uncheck to unpublish (manufacturer not available in store). - - URL alias - - - Set a search engine friendly page name e.g. 'the-best-manufacturer' to make your page URL 'http://www.yourStore.com/the-best-manufacturer'. Leave empty to generate it automatically based on the name of the manufacturer. - Manufacturer Info @@ -2089,6 +2068,12 @@ The parent product which this one is associated to. + + Attribute choice behaviour + + + Specifies the behaviour when selecting attributes. + Automatically add these products to the cart @@ -2398,24 +2383,6 @@ The maximum number of downloads. - - Meta description - - - Meta description to be added to product page header - - - Meta keywords - - - Meta keywords to be added to product page header - - - Meta title - - - Override the page title. The default is the name of the product. - Minimum amount @@ -2566,12 +2533,6 @@ The sample download file. - - URL Alias - - - Set a search engine friendly page name e.g. 'the-best-product' to make your page URL 'http://www.yourStore.com/the-best-product'. Leave empty to generate it automatically based on the name of the product. - Short description @@ -2848,6 +2809,12 @@ Attribute + + Custom data + + + Specifies user-defined data. For free usage, e.g. for individual shop extensions. + Is Required @@ -3031,6 +2998,9 @@ You need to save the product before you can add product specification attributes for this product page. + + The stock quantity has not been updated because the value has changed since the page was loaded (e.g. due to a placed order). Current value is {0}. + Tier prices @@ -3736,6 +3706,12 @@ Allow shipping to customers located in this country. + + Default currency + + + Specifies the default currency. Preselects the default currency in the shop according to the country to which the current IP address belongs. + Display Cookie Manager @@ -4030,6 +4006,18 @@ Specifies the default delivery time. + + Delivery not later than (in days) + + + Specifies the maximum number of days for the delivery. + + + Delivery not before (in days) + + + Specifies the minimum number of days for the delivery. + Display name @@ -4648,6 +4636,33 @@ You need to save before you can specify restrictions. + + Meta description + + + Defines the meta description of the site. An extract of this description is displayed in search engine results below the title. + + + Meta keywords + + + Defines the meta keywords of the site. Enter the keywords as a comma separated list. + + + Title tag + + + Defines the title of the page, which is displayed in search engine results. If possible, enter a unique, concise title here. + + + URL alias + + + Set a search engine friendly page name e.g. 'my-landing-page' to make the page URL 'http://www.yourStore.com/my-landing-page'. Leave empty to generate it automatically based on the name of the entity. + + + SEO settings + Settings @@ -4816,6 +4831,18 @@ Delivery time to be dislayed when the stock quantity of a product is equal or less 0. + + Presentation of delivery times + + + Specifies the way delivery times are displayed in product lists. Due to lack of space, the grid view does not show a date for the delivery time. + + + Presentation of delivery times + + + Specifies the way delivery times are displayed on product detail pages. + Number from which images are only displayed on variation change @@ -5108,18 +5135,6 @@ Show default quantity unit if the product has no quantity unit set. - - Show delivery times - - - Determines whether delivery times should be display on product detail page. - - - Show delivery times in product lists - - - Determines whether delivery times are shown in product lists. - Show page description also in subpages @@ -5136,7 +5151,7 @@ Show discount sign - Rabattzeichen anzeigen + Specifies whether a discount sign should be displayed on product pictures when discounts were applied. Show GTIN @@ -5303,135 +5318,9 @@ Addresses - - 'City' enabled - - - Set if 'City' is enabled. - - - 'City' required - - - Check the box if 'City' is required. - - - 'Company' enabled - - - Set if 'Company' is enabled. - - - 'Company' required - - - Check the box if 'Company' is required. - - - 'Country' enabled - - - Set if 'Country' is enabled. - - - 'Country' required - - - Check the box if 'Country' is required. - Manage form fields that are displayed during checkout and on "My account" page. - - 'Fax number' enabled - - - Set if 'Fax number' is enabled. - - - 'Fax number' required - - - Check the box if 'Fax number' is required. - - - 'Phone number' enabled - - - Set if 'Phone number' is enabled. - - - 'Phone number' required - - - Check the box if 'Phone number' is required. - - - 'Salutation' enabled - - - Set if 'Salutation' is enabled. - - - Salutations - - - Comma separated list of salutations (e.g. Mr., Mrs). Define the entries which will populate the dropdown list for salutation when entering addresses. - - - 'State/province' enabled - - - Set if 'State/province' is enabled. - - - 'State/province' required - - - Check the box if 'State/province' is required. - - - 'Street address 2' enabled - - - Set if 'Street address 2' is enabled. - - - 'Street address 2' required - - - Check the box if 'Street address 2' is required. - - - 'Street address' enabled - - - 'Street address' enabled - - - 'Street address' required - - - Check the box if 'Street address' is required. - - - 'Title' enabled - - - Set if 'Title' is enabled. - - - 'Zip / postal code' enabled - - - Set if 'Zip / postal code' is enabled. - - - 'Zip / postal code' required - - - Check the box if 'Zip / postal code' is required. - Allow customers to select time zone @@ -5466,31 +5355,37 @@ 'City' enabled - Set if 'City' is enabled. + Defines whether the input of 'City' is enabled. 'City' required - Check the box if 'City' is required. + Defines whether the input of 'City' is required. 'Company' enabled - Set if 'Company' is enabled. + Defines whether the input of 'Company' is enabled. 'Company' required - Check the box if 'Company' is required. + Defines whether the input of 'Company' is required. 'Country' enabled - Set if 'Country' is enabled. + Defines whether the input of 'Country' is enabled. + + + 'Country' required + + + Defines whether the input of 'Country' is required. Customers can enter a customer number @@ -5502,7 +5397,7 @@ Registration - Manage form fields that are displayed during registration. + Manage form fields that are displayed during registration.<br>In order to ensure the address transfer from the registration form, it is necessary that the following fields are activated and filled in by the customer: <ul><li>First name</li><li>Last name</li><li>E-mail</li><li>and all fields that are selected as required in the tab 'Addresses'</li></ul> Customer login type @@ -5544,10 +5439,10 @@ Customer settings - 'Date of Birth' enabled + 'Date of birth' enabled - Set if 'Date of Birth' is enabled. + Defines whether the input of 'Date of birth' is enabled. DateTime settings @@ -5586,25 +5481,25 @@ 'Fax number' enabled - Set if 'Fax number' is enabled. + Defines whether the input of 'Fax number' is enabled. 'Fax number' required - Check the box if 'Fax number' is required + Defines whether the input of 'Fax number' is required. - First name required + 'First name' required - Check the box if 'First name' is required. + Defines whether the input of 'First name' is required. 'Gender' enabled - Set if 'Gender' is enabled. + Defines whether the input of 'Gender' is enabled. Hide 'Back in stock subscriptions' tab @@ -5625,16 +5520,34 @@ Check the box if you want to hide the newsletter subscription box. - Last name required + 'Last name' required - Check the box if 'Last name' is required. + Defines whether the input of 'Last name' is required. + + + Minimum digits in password + + + Specifies the minimum number of digits for a password. + + + Minimum special characters in password + + + Specifies the minimum number of special characters for a password. + + + Minimum uppercase letters in password + + + Specifies the minimum number of uppercase letters for a password. 'Newsletter' enabled - Set if 'Newsletter' is enabled + Displays the newsletter registration form. Notify about new customer registration @@ -5642,21 +5555,70 @@ Notify the store owner when a new customer is registered. + + Minimum password length + + + Specifies the minimum length of a password. + 'Phone number' enabled - Set if 'Phone number' is enabled. + Defines whether the input of 'Phone number' is enabled. 'Phone number' required - Check the box if 'Phone number' is required. + Defines whether the input of 'Phone number' is required. Privacy + + Cookie type + + + Specifies the usage type of the cookie (Required, Analytics, ThirdParty). + + + Description + + + Specifies the description of the cookie information. + + + System cookie + + + Name + + + Specifies the display name of the cookie information. + + + Add new cookie information + + + <p> + If you have included third-party scripts in your shop that use cookies and are not integrated into Smartstore via a plugin, + you can provide your own information about these cookies for the Cookie Manager in the following table. + The added information is displayed in the Cookie Manager of the front end, corresponding to the type. + Cookie information provided to the Cookie Manager by active plug-ins is displayed in this table, + but cannot be edited. The texts of this information can be edited using the language resources + <b>Admin > Configuration > Regional Settings > Languages</b>. + </p> + + + Cookie information wasn't found. + + + Edit new cookie information + + + Register your own cookie information + Get privacy consent for form submissions @@ -5664,10 +5626,10 @@ Specifies whether a checkbox is displayed in forms that prompts the user to agree to the processing of his data. - Enable cookie consent + Enable Cookie Manager - Specifies whether the cookie consent box will be displayed in the frontend. + Specifies whether the Cookie Manager will be displayed in the frontend. Name in the contact form is required @@ -5681,6 +5643,30 @@ Specifies whether the name is required in the product request form. + + Modal Cookie Manager + + + Specifies whether the Cookie Manager is displayed in a modal dialog in the frontend. The modal mode requires a customer interaction with the dialog before the customer can navigate in the store. + + + 'SameSite' mode + + + <h5>SameSite Mode</h5> + <p> + The SameSite setting for cookies specifies the level of security for cookies when they are requested by other sites (e.g. in a cross-site request or in an iframe). + The recommended setting is <b>Lax</b>, as cookies are sent with most secure actions. + <br /> + If the store should also be embedded in an iframe, it is necessary to select the setting <b>None</b>. Additionally SSL must be set up in the store. + </p> + <ul> + <li><b>Unspecified:</b> No SameSite header is transmitted to requests.</li> + <li><b>None:</b> No mode specified. This setting must be used if the store should also be embedded in an iframe (SSL must be set up).</li> + <li><b>Lax:</b> Recommended setting. Cookies are sent at the highest level for requests on the same website and for cross-site requests.</li> + <li><b>Strict:</b> Cookies are only sent to requests from the same website.</li> + </ul> + Store IP address @@ -5693,6 +5679,18 @@ Specifies a customer role that will be assigned to newly registered customers. + + 'Salutation' enabled + + + Defines whether the input of 'Salutation' is enabled. + + + Salutations + + + Comma separated list of salutations (e.g. Mr., Mrs). Define the entries which will populate the dropdown list for salutation when entering addresses. + Show customers' join date @@ -5706,10 +5704,16 @@ A value indicating whether customers' location is shown. - 'State/province' enabled + 'State / province' enabled - Set if 'State/province' is enabled. + Defines whether the input of 'State / province' is enabled. + + + 'State / province' required + + + Defines whether the input of 'State / province' is required. Store last visited page @@ -5718,34 +5722,34 @@ When enabled, the last visited page will be stored. Disable this option to improve performance. - 'Street address 2' enabled + 'Street address addition' enabled - Set if 'Street address 2' is enabled. + Defines whether the input of 'street address addition' is enabled. - 'Street address 2' required + 'Street address addition' required - Check the box if 'Street address 2' is required. + Defines whether the input of 'street address addition' is required. 'Street address' enabled - Set if 'Street address' is enabled. + Defines whether the input of 'Street adress' is enabled. 'Street address' required - Check the box if 'Street address' is required. + Defines whether the input of 'Street adress' is required. 'Title' enabled - Set if 'Title' is enabled. + Defines whether the input of 'Title' is enabled. 'Usernames' enabled @@ -5769,13 +5773,13 @@ 'Zip / postal code' enabled - Set if 'Zip / postal code' is enabled. + Defines whether the input of 'Zip / postal code' is enabled. 'Zip / postal code' required - Check the box if 'Zip / postal code' is required. + Defines whether the input of 'Zip / postal code' is required. Timeout for image download (minutes) @@ -6291,19 +6295,19 @@ Default meta description - The default meta description for pages in your store. You can override this for individual categories / products / manufacturer pages. + Defines the default meta description for pages in your store. You can override this for individual categories, products, manufacturer and topic pages. Default meta keywords - The default meta keywords for pages in your store. You can override these for individual categories / products / manufacturer pages. + Defines the default meta keywords for pages in your store. You can override these for individual categories, products, manufacturer and topic pages. - Default title + Default title tag - The default title for pages in your store. + Defines the default title for pages in your store. You can override this for individual categories, products, manufacturer and topic pages. Detect browser user language @@ -6347,6 +6351,24 @@ Hide admin menu items when access to them is denied according to access control list (permissions). + + Meta description (Homepage) + + + Defines the meta description for the homepage. An extract of this description is displayed in search engine results below the title. + + + Meta keywords (Homepage) + + + Defines the meta keywords for the homepage. Enter the keywords as a comma separated list. + + + Title tag (Homepage) + + + Defines the title tag for the homepage, which is displayed in search engine results. + Invalid language redirect behaviour @@ -6369,16 +6391,16 @@ Specifies if and how search engines indexing the pages of your store. - Page title SEO adjustment + Title tag order - Select a page title SEO adjustment. For example, generated page title could be (PAGE NAME | YOURSTORE.COM) instead of (YOURSTORE.COM | PAGE NAME). + Select the page title order. The generated title tag can be (PAGE NAME | YOURSTORE.COM) or (YOURSTORE.COM | PAGE NAME). Page title separator - Specify page title separator. + Specify page title tag separator. Enabled @@ -6434,6 +6456,12 @@ Social networks + + Facebook App ID + + + A Facebook App ID is a unique number that identifies your application and connects it to your Facebook account. It is used when sharing products, category and manufacturer pages on Facebook. + Facebook link @@ -6461,6 +6489,12 @@ Leave this field blank if twitter should not be displayed. + + Twitter Username + + + Twitter Username that gets displayed on Twitter cards when a product, category and manufacturer page is shared on Twitter. Starts with a '@'. + Youtube Link @@ -6552,10 +6586,7 @@ Media settings - Associated product image size - - - The default size (pixels) for associated product images (part of "grouped" products). + Associated (grouped) product Generate absolute URLs @@ -6564,40 +6595,31 @@ Generates absolute URLs for media files by prepending the current host name (e.g. http://myshop.com/media/image/1.jpg instead of /media/image/1.jpg). Has no effect if a CDN URL has been applied to the store. - Avatar image size - - - The default size (pixels) for avatar images. + Customer avatar - Bundled product image size - - - The default size (pixels) for bundled product images. + Bundle items - Cart/Wishlist thumbnail image size for bundle items - - - The default size (pixels) for product thumbnail images of bundle items on the shopping cart and wishlist. + Bundle items in cart - Cart/Wishlist thumbnail image size - - - The default size (pixels) for product thumbnail images on the shopping cart and wishlist. + Cart - Category thumbnail image size - - - The default size (pixels) for product thumbnail images on category pages. + Categories The current storage location is - Enable picture zoom + Enable image zoom + + + Adds 'zoom on hover' functionality to product detail images. + + + Image/thumbnail sizes Automatically delete orphaned files @@ -6606,10 +6628,7 @@ Specifies whether orphaned media files should be automatically deleted during the next cleanup operation. - Manufacturer thumbnail image size - - - The default size (pixels) for product thumbnail images on manufacturer pages. + Brands Maximum image size @@ -6633,16 +6652,10 @@ Media types control which files can be uploaded. All other media types are generally rejected. Please enter types separated by spaces and without dots. - Thumbnail size of products in emails - - - Specifies the thumbnail image size (pixels) of products in emails. Enter 0 to not display thumbnails. + Products in e-mails - Mini-shopping cart thumbnail image size - - - The default size (pixels) for product thumbnail images in the mini-shopping cart block. + Mini cart Do not forget to backup your database before changing this option. Please bear in mind that this operation can take several minutes depending on the amount of media files. @@ -6663,22 +6676,13 @@ Window - Product detail image size - - - The default size (pixels) for product detail images. + Product detail - Product thumbnail image size (catalog) - - - The default size (pixels) for product thumbnail images displayed on category or manufacturer pages. + Product list - Product thumbnail image size (product page) - - - The default size (pixels) for product thumbnail images displayed on product details page when you have more than one product image. + Gallery thumbnail New storage location @@ -6767,6 +6771,12 @@ Check the box to enable anonymous checkout (customers are not required to login/register when purchasing products) + + Order total restriction in relation to subtotal + + + Determines whether the min/max order value refers to the order subtotal, otherwise it refers to the total amount. + Disable "Order completed" page @@ -6803,17 +6813,17 @@ Check the box if you want to allow customers to make re-orders. - - Min order sub-total amount + + Maximum order total - - Min order total amount. + + Defines the default maximum order total for the shop. Overridden by customer group restrictions. - - Min order total amount + + Minimum order total - - Enter minimum order total amount. + + Defines the default minimum order total for the shop. Overridden by customer group restrictions. Number of days that the return request is available @@ -6842,6 +6852,12 @@ Order settings + + Restrictions in customer groups are cumulative + + + Determines whether multiple order total restrictions are cumulated by customer group assignments. + Return action @@ -7031,6 +7047,12 @@ Specifies the search mode. Please keep in mind that the search mode can - depending on number of objects - strongly affect search performance. 'Is equal to' is the fastest, 'Contains' the slowest. + + Open product directly at SKU, MPN or GTIN + + + Specifies whether the product page should be opened directly if the search term matches a SKU, MPN or GTIN. + Show product images @@ -7049,6 +7071,12 @@ Specifies whether to charge only the highest additional shipping surcharge of products. + + Delivery on workweek days only + + + Specifies whether delivery takes place only on workweek days. + Display shipment events @@ -7091,6 +7119,12 @@ Display shipping options during the checkout process only if more then one shipping option is available. + + Order before x o'clock for same day shipment + + + Specifies the hour by which the order will be shipped the same day. + Shopping cart settings @@ -7118,6 +7152,12 @@ The number of 'Cross-Sells' to display on shopping cart page; 0 if you don't want to load cross-sells + + Presentation of delivery times + + + Specifies the way delivery times are displayed in shopping cart. + Display cart after adding product @@ -7187,12 +7227,6 @@ Specifies whether to show hints in order summary on the confirm order page. This text can be altered in the language resources. - - Display delivery times - - - Determines whether delivery times should be displayed in shopping cart - Show discount box @@ -7559,6 +7593,12 @@ Edit store details + + Apple Touch icon + + + Defines the icon used by Apple devices as shortcut icon. Optimal dimensions for this icon are 180x180. + Content Delivery Network URL @@ -7568,6 +7608,12 @@ The display order for this store. 1 represents the top of the list. + + Favicon + + + Defines the favicon for the store. This icon should contain graphics in the dimensions 16×16, 32×32 and 48×48. + Always use SSL @@ -7589,12 +7635,30 @@ Please only use letters, digits, underscores or hyphens. The first character should be a letter. + + Microsoft tile color + + + Defines the color used by Microsoft devices as tile color when shortcuts to your store are created. + + + Microsoft tile picture + + + Defines the icon that is used by Microsoft devices as a tile picture when shortcuts to your store are created. Optimal dimensions for the picture are 310x310. + Store name Enter the name of your store e.g. Your Store. + + PNG icon + + + Defines the PNG icon for the store. This icon is recognized as favicon by up-to-date devices and used when shortcuts to your store are created. Optimal dimensions for this icon are 196x196. + Exchange rate currency @@ -7871,30 +7935,9 @@ Specifies the intro of the blog post. - - Language - The language of this blog entry. A customer will only see the blog entries for their selected language. - - Meta description - - - Meta description to be added to blog post page header. - - - Meta keywords - - - Meta keywords to be added to blog post page header. - - - Meta title - - - Override the page title. The default is the title of the blog post. - Picture @@ -7913,12 +7956,6 @@ Specifies the background color of the blog post. - - Search engine friendly page name - - - Set a search engine friendly page name e.g. 'the-best-blog-post' to make your page URL 'http://www.yourStore.com/the-best-blog-post'. Leave empty to generate it automatically based on the title of the blog post. - Start date @@ -8018,12 +8055,6 @@ The name of this forum. This is the name that the customer will see. - - URL-Alias - - - Set a search engine friendly page name e.g. 'the-best-forum' to make your page URL 'http://www.yourStore.com/the-best-forum'. Leave empty to generate it automatically based on the name of the forum. - The forum has been updated successfully. @@ -8063,12 +8094,6 @@ The name of this forum group. This is the name that the customer will see. - - URL-Alias - - - Set a search engine friendly page name e.g. 'the-best-forumgroup' to make your page URL 'http://www.yourStore.com/the-best-forumgroup'. Leave empty to generate it automatically based on the name of the forum group. - The forum group has been updated successfully. @@ -8405,30 +8430,9 @@ The full description of this news entry. - - Language - The language of this news entry. A customer will only see the news entries for their selected language. - - Meta description - - - Meta description to be added to news page header. - - - Meta keywords - - - Meta keywords to be added to news page header. - - - Meta title - - - Override the page title. The default is the title of the news. - Picture @@ -8447,12 +8451,6 @@ Determines whether the news item is published (visible) in your store. - - Search engine friendly page name - - - Set a search engine friendly page name e.g. 'the-best-news' to make your page URL 'http://www.yourStore.com/the-best-news'. Leave empty to generate it automatically based on the title of the news. - Short description @@ -8606,6 +8604,12 @@ Specifies the CSS class of the body element. + + Cookie type + + + Specifies whether this widget is displayed according to the customer's settings in the cookie manager. This option should be used if you add a third-party script that sets cookies. + Html Id @@ -8630,24 +8634,6 @@ Check the box if this topic is password protected - - Meta description - - - Meta description to be added to topic page header. - - - Meta keywords - - - Meta keywords to be added to topic page header. - - - Meta title - - - Override the page title. The default is the name of the topic. - Password @@ -8666,12 +8652,6 @@ Specifies whether the content should be displayed as an HTML widget. - - Search engine friendly page name - - - Set a search engine friendly page name e.g. 'The Best Computers' to make your page name '##-the-best-computers.aspx' (## represents the category ID). The default is the name of topic. - Short title @@ -8729,6 +8709,12 @@ The topic has been updated successfully. + + Password must have a value. + + + HTML widgets cannot have a password protection. + Whitespace isn't allowed. @@ -8834,6 +8820,18 @@ A value indicating whether it's a system role + + Maximum order total + + + Defines the maximum order total for customers in this group. + + + Minimum order total + + + Defines the minimum order total for customers in this group. + Name @@ -9347,9 +9345,6 @@ Top 20 customers by number of orders - - Top 20 customers by number of orders - Top 20 customers by order total @@ -9395,6 +9390,9 @@ The start date for the search + + Top customers + Registered customers @@ -9419,9 +9417,6 @@ In the last year - - Run report - Dashboard @@ -11219,6 +11214,9 @@ The start date for the search + + No orders are selected. Please select the desired orders. + Adjust inventory @@ -11282,6 +11280,12 @@ Order as PDF + + <div>{0} of {1} orders were successfully processed.</div><div{3}>{2} orders cannot be changed as desired due to their current status and were skipped.</div> + + + There are {0} orders selected. Would you like to proceed? + Products @@ -12323,6 +12327,9 @@ Gender + + Browser User Agent + Has purchased all products @@ -12381,7 +12388,7 @@ Paid by - Selected payment method + Payment method Payment status @@ -12710,9 +12717,6 @@ Search by a specific payment status e.g. Paid. - - Run report - Start date @@ -12764,9 +12768,6 @@ Name - - Run report - Start date @@ -12983,6 +12984,9 @@ Execute SQL query directly on database + + Meta tags + Message Queue @@ -14103,6 +14107,12 @@ Please confirm that you would like access to the digital content immediately. + + The maximum order value for the subtotal is {0}. + + + The maximum order value for the total is {0}. + Please wait several seconds before placing a new order (already placed another order several seconds ago). @@ -14514,6 +14524,9 @@ Category + + Checkout attribute option + Customer @@ -15150,6 +15163,9 @@ Yes, we use cookies + + Hide + You decide which cookies you allow or reject. You can change your decision at any time in your <a href='{0}'>My Account area</a>. Further information can also be found in our <a href='{1}'>privacy policy</a>. @@ -15195,6 +15211,24 @@ The corresponding product could not be found. + + <b>{0}</b> - <b>{1}</b> + + + <b>{0}</b> + + + not before <b>{0}</b> + + + Tomorrow + + + tomorrow + + + until <b>{0}</b> + Disclaimer @@ -15246,6 +15280,12 @@ Background color + + Gray out unavailable attributes + + + None + Boxes (color & image) @@ -15627,6 +15667,18 @@ Round midpoint up (e.g. 0.05 rounding: 9.225 will round to 9.25) + + Date only (if possible) + + + Label and date + + + Label only + + + Do not display + N times only @@ -16758,7 +16810,7 @@ The payment is pending. The buyer can make the payment by clicking on the <b>Complete payment</b> button on the <a href='{0}'>order details page</a>. - This order is not yet paid for. To pay now click the "Complete payment" button. + Click 'Complete payment' if you have not yet paid and wish to start the payment process again. The country '{0}' is not allowed for billing. @@ -17528,9 +17580,15 @@ Question about product? - + + or call directly + + I have following questions concerning the product {0}: + + I would like to request price information on the following article: {0} + Thank you. Your inquiry has been sent successfully. @@ -17540,6 +17598,9 @@ Question about product + + Request for quotation + Availability @@ -17627,6 +17688,9 @@ The product with ID {0} has been deleted. + + Arrives: + Delivery time: diff --git a/src/Presentation/SmartStore.Web/App_Data/Localization/App/en/head.txt b/src/Presentation/SmartStore.Web/App_Data/Localization/App/en/head.txt index 14f7878f2a..0de4ce2d5e 100644 --- a/src/Presentation/SmartStore.Web/App_Data/Localization/App/en/head.txt +++ b/src/Presentation/SmartStore.Web/App_Data/Localization/App/en/head.txt @@ -1 +1 @@ -202007241131557_V401Resources \ No newline at end of file +202011091154314_V410Resources \ No newline at end of file From 2d798fcd308fd792b51b3d6c7e77284ec8d1f85b Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Tue, 10 Nov 2020 12:03:17 +0100 Subject: [PATCH 018/230] Resolves #2146 multistore blog post issue --- changelog.md | 3 ++- .../SmartStore.Services/Stores/StoreMappingService.cs | 9 ++++++++- .../Controllers/ManageController.cs | 4 ---- 3 files changed, 10 insertions(+), 6 deletions(-) diff --git a/changelog.md b/changelog.md index f80e43947d..39cacbe131 100644 --- a/changelog.md +++ b/changelog.md @@ -92,7 +92,8 @@ Merging the contents of different languages must be done manually (migration is * Google Analytics: Fixed script error in conjunction with CookieManager * #2085 RTL: searchbar button wasn't aligned correctly * #2068 RTL: Fixed Page Builder slider positioning, dropdown and other alignments -* #2019 OffCancas compare: hide horizontal scrollbar +* #2019 OffCancas compare: hide horizontal scrollbar +* #2146 LimitedToStores property was not set in a rare case. ## Smartstore 4.0.1 ### New Features diff --git a/src/Libraries/SmartStore.Services/Stores/StoreMappingService.cs b/src/Libraries/SmartStore.Services/Stores/StoreMappingService.cs index de7523e900..fd08f18d52 100644 --- a/src/Libraries/SmartStore.Services/Stores/StoreMappingService.cs +++ b/src/Libraries/SmartStore.Services/Stores/StoreMappingService.cs @@ -87,10 +87,15 @@ public virtual void SaveStoreMappings(T entity, int[] selectedStoreIds) where { var existingStoreMappings = GetStoreMappings(entity); var allStores = _storeService.GetAllStores(); + var selectedIds = selectedStoreIds ?? Array.Empty(); + + entity.LimitedToStores = selectedIds.Length == 1 && selectedIds[0] == 0 + ? false + : selectedIds.Any(); foreach (var store in allStores) { - if (selectedStoreIds != null && selectedStoreIds.Contains(store.Id)) + if (selectedIds.Contains(store.Id)) { if (!existingStoreMappings.Any(x => x.StoreId == store.Id)) InsertStoreMapping(entity, store.Id); @@ -102,6 +107,8 @@ public virtual void SaveStoreMappings(T entity, int[] selectedStoreIds) where DeleteStoreMapping(storeMappingToDelete); } } + + _storeMappingRepository.Context.SaveChanges(); } public virtual void InsertStoreMapping(StoreMapping storeMapping) diff --git a/src/Presentation/SmartStore.Web.Framework/Controllers/ManageController.cs b/src/Presentation/SmartStore.Web.Framework/Controllers/ManageController.cs index dca39cdb28..29b187f3c7 100644 --- a/src/Presentation/SmartStore.Web.Framework/Controllers/ManageController.cs +++ b/src/Presentation/SmartStore.Web.Framework/Controllers/ManageController.cs @@ -58,10 +58,6 @@ protected virtual void SaveStoreMappings(T entity, int[] selectedStoreIds) wh { Guard.NotNull(entity, nameof(entity)); - entity.LimitedToStores = (selectedStoreIds?.Length ?? 0) == 1 && selectedStoreIds[0] == 0 - ? false - : selectedStoreIds?.Any() ?? false; - Services.Resolve().SaveStoreMappings(entity, selectedStoreIds); } From c7e7d00bd46eb289cd0a634766d5e93329d4a424 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Tue, 10 Nov 2020 13:52:23 +0100 Subject: [PATCH 019/230] Updated change log --- changelog.md | 1 + 1 file changed, 1 insertion(+) diff --git a/changelog.md b/changelog.md index 39cacbe131..df443fc591 100644 --- a/changelog.md +++ b/changelog.md @@ -25,6 +25,7 @@ Merging the contents of different languages must be done manually (migration is * #2036 Added block to display content slider. * #2035 Added block to display news. * #1729 Added option for title and intro inline background color. +* **PostFinance**: added new payment methods "Checkout All-in-one" and "Checkout Flex". * #1644 Graying out unavailable attribute combinations. * #1744 Added 'Orders' tab to the product editor to display all orders in which the product has been purchased. * #1735 Added a setting to open a product directly if the search term matches a SKU, MPN or GTIN. From 0f5b86c66a8c48b76bf836b1493b9b33554da5a4 Mon Sep 17 00:00:00 2001 From: Marcel Schmidt Date: Tue, 10 Nov 2020 22:54:30 +0100 Subject: [PATCH 020/230] Current customer entity should be tracked --- .../SmartStore.Services/Customers/CustomerService.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Libraries/SmartStore.Services/Customers/CustomerService.cs b/src/Libraries/SmartStore.Services/Customers/CustomerService.cs index fe5b00bad9..10c842935b 100644 --- a/src/Libraries/SmartStore.Services/Customers/CustomerService.cs +++ b/src/Libraries/SmartStore.Services/Customers/CustomerService.cs @@ -447,7 +447,7 @@ public virtual Customer FindGuestCustomerByClientIdent(string clientIdent = null IQueryable query; if (DataSettings.Current.IsSqlServer) { - query = from a in _gaRepository.TableUntracked + query = from a in _gaRepository.Table join c in _customerRepository.Table on a.EntityId equals c.Id into Customers from c in Customers.DefaultIfEmpty() where c.LastActivityDateUtc >= dateFrom @@ -460,7 +460,7 @@ from c in Customers.DefaultIfEmpty() } else { - query = from a in _gaRepository.TableUntracked + query = from a in _gaRepository.Table join c in _customerRepository.Table on a.EntityId equals c.Id into Customers from c in Customers.DefaultIfEmpty() where c.LastActivityDateUtc >= dateFrom From 13bb5b05fa0406b7f4ac219dbe107e9799601322 Mon Sep 17 00:00:00 2001 From: Marcel Schmidt Date: Tue, 10 Nov 2020 22:56:34 +0100 Subject: [PATCH 021/230] Resolves #2149 Add Browser-Upgrade-Notice for obsolete Microsoft Explorer --- .../Migrations/MigrationsConfiguration.cs | 4 +++- .../Partials/ConditionalComments.cshtml | 19 ++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/src/Libraries/SmartStore.Data/Migrations/MigrationsConfiguration.cs b/src/Libraries/SmartStore.Data/Migrations/MigrationsConfiguration.cs index a7eab830a3..60b40f93ae 100644 --- a/src/Libraries/SmartStore.Data/Migrations/MigrationsConfiguration.cs +++ b/src/Libraries/SmartStore.Data/Migrations/MigrationsConfiguration.cs @@ -49,7 +49,9 @@ public void MigrateSettings(SmartObjectContext context) public void MigrateLocaleResources(LocaleResourcesBuilder builder) { - + builder.AddOrUpdate("Common.UnsupportedBrowser", + "You are using an unsupported browser! Please consider switching to a modern browser such as Google Chrome, Firefox or Opera to fully enjoy your shopping experience.", + "Sie verwenden einen nicht unterstützten Browser! Bitte ziehen Sie in Betracht, zu einem modernen Browser wie Google Chrome, Firefox oder Opera zu wechseln, um Ihr Einkaufserlebnis in vollen Zügen genießen zu können."); } } } diff --git a/src/Presentation/SmartStore.Web/Views/Shared/Partials/ConditionalComments.cshtml b/src/Presentation/SmartStore.Web/Views/Shared/Partials/ConditionalComments.cshtml index 7abb2bad8f..012b286a75 100644 --- a/src/Presentation/SmartStore.Web/Views/Shared/Partials/ConditionalComments.cshtml +++ b/src/Presentation/SmartStore.Web/Views/Shared/Partials/ConditionalComments.cshtml @@ -12,4 +12,21 @@ - \ No newline at end of file + + +@{ + var clientRes = new KeyValuePair("unsupportedBrowser", T("Common.UnsupportedBrowser")); +} + + \ No newline at end of file From 19705765ee612034745b7be7aed306e5b36fb217 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Wed, 11 Nov 2020 10:57:17 +0100 Subject: [PATCH 022/230] MiniMapper cannot map this. Fixes GetTaskRunInfo not found in export list. --- .../Administration/Controllers/ExportController.cs | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Presentation/SmartStore.Web/Administration/Controllers/ExportController.cs b/src/Presentation/SmartStore.Web/Administration/Controllers/ExportController.cs index 44ef527899..9152d25254 100644 --- a/src/Presentation/SmartStore.Web/Administration/Controllers/ExportController.cs +++ b/src/Presentation/SmartStore.Web/Administration/Controllers/ExportController.cs @@ -331,6 +331,7 @@ private void PrepareProfileModel( { MiniMapper.Map(profile, model); + model.ScheduleTaskId = profile.SchedulingTaskId; model.ScheduleTaskName = profile.ScheduleTask.Name.NaIfEmpty(); model.IsTaskRunning = lastHistoryEntry?.IsRunning ?? false; model.IsTaskEnabled = profile.ScheduleTask.Enabled; From 4e6164830d41be7e04bb46282a6530a8584e74f9 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Wed, 11 Nov 2020 11:20:01 +0100 Subject: [PATCH 023/230] Fixed AntiForgery error in exports --- .../SmartStore.Web/Administration/Views/Export/Edit.cshtml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Presentation/SmartStore.Web/Administration/Views/Export/Edit.cshtml b/src/Presentation/SmartStore.Web/Administration/Views/Export/Edit.cshtml index a455fa0f19..ad8b7c96ec 100644 --- a/src/Presentation/SmartStore.Web/Administration/Views/Export/Edit.cshtml +++ b/src/Presentation/SmartStore.Web/Administration/Views/Export/Edit.cshtml @@ -415,7 +415,8 @@ $('#ProfileExportButton').click(function (e) { e.preventDefault(); $(this).doPostData({ - ask: @(T("Admin.Common.AskToProceed").JsText) + ask: @(T("Admin.Common.AskToProceed").JsText), + data: { "__RequestVerificationToken": $('input[name="__RequestVerificationToken"]').val() } }); return false; }); From b1f535a0409de6e6dec96619f3d9180b686e3a70 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Wed, 11 Nov 2020 12:13:32 +0100 Subject: [PATCH 024/230] Fixes export profile never updated. MiniMapper too dangerous here: DbEntityValidationException: Validation failed for one or more entities. See 'EntityValidationErrors' property for more details. InvalidOperationException: The relationship could not be changed because one or more of the foreign-key properties is non-nullable. --- .../Administration/Controllers/ExportController.cs | 13 +++++++++++-- .../Administration/Views/Export/Edit.cshtml | 1 + 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/Presentation/SmartStore.Web/Administration/Controllers/ExportController.cs b/src/Presentation/SmartStore.Web/Administration/Controllers/ExportController.cs index 9152d25254..0f59008923 100644 --- a/src/Presentation/SmartStore.Web/Administration/Controllers/ExportController.cs +++ b/src/Presentation/SmartStore.Web/Administration/Controllers/ExportController.cs @@ -755,12 +755,19 @@ public ActionResult Edit(ExportProfileModel model, bool continueEditing) return View(model); } - MiniMapper.Map(profile, model); - + profile.Name = model.Name; + profile.FileNamePattern = model.FileNamePattern; + profile.FolderName = model.FolderName; + profile.Enabled = model.Enabled; + profile.ExportRelatedData = model.ExportRelatedData; + profile.Offset = model.Offset; profile.Limit = model.Limit ?? 0; profile.BatchSize = model.BatchSize ?? 0; + profile.PerStore = model.PerStore; profile.CompletedEmailAddresses = string.Join(",", model.CompletedEmailAddresses ?? new string[0]); profile.EmailAccountId = model.EmailAccountId ?? 0; + profile.CreateZipArchive = model.CreateZipArchive; + profile.Cleanup = model.Cleanup; if (profile.Name.IsEmpty()) profile.Name = provider.Metadata.FriendlyName; @@ -779,6 +786,7 @@ public ActionResult Edit(ExportProfileModel model, bool continueEditing) projection.AppendDescriptionText = string.Join(",", model.Projection.AppendDescriptionText ?? new string[0]); projection.RemoveCriticalCharacters = model.Projection.RemoveCriticalCharacters; projection.CriticalCharacters = string.Join(",", model.Projection.CriticalCharacters ?? new string[0]); + profile.Projection = XmlHelper.Serialize(projection); } @@ -791,6 +799,7 @@ public ActionResult Edit(ExportProfileModel model, bool continueEditing) filter.StoreId = model.Filter.StoreId ?? 0; filter.CategoryIds = model.Filter.CategoryIds?.Where(x => x != 0)?.ToArray() ?? new int[0]; + profile.Filtering = XmlHelper.Serialize(filter); } diff --git a/src/Presentation/SmartStore.Web/Administration/Views/Export/Edit.cshtml b/src/Presentation/SmartStore.Web/Administration/Views/Export/Edit.cshtml index ad8b7c96ec..a7762a8e1e 100644 --- a/src/Presentation/SmartStore.Web/Administration/Views/Export/Edit.cshtml +++ b/src/Presentation/SmartStore.Web/Administration/Views/Export/Edit.cshtml @@ -11,6 +11,7 @@
@Html.AntiForgeryToken() @Html.HiddenFor(model => model.Id) + @Html.HiddenFor(model => model.ProviderSystemName)
From 1fb2eb40728449f9e0ff8e148c7e3448b0f0eb5c Mon Sep 17 00:00:00 2001 From: Marcel Schmidt Date: Wed, 11 Nov 2020 21:26:22 +0100 Subject: [PATCH 025/230] Improvement for 13bb5b0: Add Browser-Upgrade-Notice for obsolete Microsoft Explorer --- .../Partials/ConditionalComments.cshtml | 25 ++++++++++--------- 1 file changed, 13 insertions(+), 12 deletions(-) diff --git a/src/Presentation/SmartStore.Web/Views/Shared/Partials/ConditionalComments.cshtml b/src/Presentation/SmartStore.Web/Views/Shared/Partials/ConditionalComments.cshtml index 012b286a75..ea896a8c58 100644 --- a/src/Presentation/SmartStore.Web/Views/Shared/Partials/ConditionalComments.cshtml +++ b/src/Presentation/SmartStore.Web/Views/Shared/Partials/ConditionalComments.cshtml @@ -10,23 +10,24 @@ html.className += (this.top === this.window ? ' not-' : ' ') + 'framed'; } catch (e) { } - - - - -@{ - var clientRes = new KeyValuePair("unsupportedBrowser", T("Common.UnsupportedBrowser")); -} + + + \ No newline at end of file From aba139798b28f996f98f5fc01b3c160ceba72b7a Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Tue, 17 Nov 2020 08:51:28 +0100 Subject: [PATCH 026/230] Deactivated slugs were falsely always redirected without SSL --- .../SmartStore.Web.Framework/Seo/GenericPathRoute.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Presentation/SmartStore.Web.Framework/Seo/GenericPathRoute.cs b/src/Presentation/SmartStore.Web.Framework/Seo/GenericPathRoute.cs index 33a63227bb..c5ebc451c7 100644 --- a/src/Presentation/SmartStore.Web.Framework/Seo/GenericPathRoute.cs +++ b/src/Presentation/SmartStore.Web.Framework/Seo/GenericPathRoute.cs @@ -155,7 +155,7 @@ public override RouteData GetRouteData(HttpContextBase httpContext) { activeSlug = urlPrefix + "/" + activeSlug; } - response.RedirectLocation = string.Format("{0}{1}", webHelper.GetStoreLocation(false), activeSlug); + response.RedirectLocation = string.Format("{0}{1}", webHelper.GetStoreLocation(), activeSlug); response.End(); return null; } From 33b9706c6358a064ac96424b74303d6f915e7061 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Tue, 17 Nov 2020 10:39:29 +0100 Subject: [PATCH 027/230] Updated gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index 85bd82b7ff..d8cacc6b13 100644 --- a/.gitignore +++ b/.gitignore @@ -322,3 +322,6 @@ Kopie von* src/SmartStoreNET.Packager.sln Log.txt src/Presentation/SmartStore.Web/Themes/FlexMuseo/ + +# Used by SSL certificates management tools (e.g. Certify The Web). +/src/Presentation/SmartStore.Web/.well-known From 849cdd3505bdc84c878cde0c0ea2c65ca8d651fb Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Tue, 17 Nov 2020 11:04:45 +0100 Subject: [PATCH 028/230] Fixed JavaScript error in image gallery (product details) --- src/Presentation/SmartStore.Web/Scripts/smartstore.gallery.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Presentation/SmartStore.Web/Scripts/smartstore.gallery.js b/src/Presentation/SmartStore.Web/Scripts/smartstore.gallery.js index eb96bed2ab..dfc245172f 100644 --- a/src/Presentation/SmartStore.Web/Scripts/smartstore.gallery.js +++ b/src/Presentation/SmartStore.Web/Scripts/smartstore.gallery.js @@ -450,7 +450,7 @@ } function pauseVideos() { - pswpContainer.find('.video-item').each((i, el), function() { + pswpContainer.find('.video-item').each(function (i, el) { el.pause(); }); } From 3f0ea059b43adeb1863dd8ef19a1a392e344d2a6 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Tue, 17 Nov 2020 13:17:48 +0100 Subject: [PATCH 029/230] Newsletter subscriptions: added filter for customer roles in export profile and backend list --- .../DataExchange/Export/DataExporter.cs | 55 +++++++++++++------ .../NewsLetterSubscriptionController.cs | 4 +- .../NewsLetterSubscriptionListModel.cs | 6 ++ .../Views/Export/_Tab.Filter.cshtml | 11 +++- .../Views/NewsLetterSubscription/List.cshtml | 11 +++- 5 files changed, 66 insertions(+), 21 deletions(-) diff --git a/src/Libraries/SmartStore.Services/DataExchange/Export/DataExporter.cs b/src/Libraries/SmartStore.Services/DataExchange/Export/DataExporter.cs index 57d852324c..c7464e9272 100644 --- a/src/Libraries/SmartStore.Services/DataExchange/Export/DataExporter.cs +++ b/src/Libraries/SmartStore.Services/DataExchange/Export/DataExporter.cs @@ -334,12 +334,20 @@ x is ProductMediaFile || x is ProductTag || x is ProductSpecificationAttribute | ctx.CustomerExportContext.Clear(); } - if (ctx.Request.Provider.Value.EntityType == ExportEntityType.ShoppingCartItem) + switch (ctx.Request.Provider.Value.EntityType) { - _dbContext.DetachEntities(x => - { - return x is ShoppingCartItem || x is Customer || x is Product || x is ProductVariantAttributeCombination; - }); + case ExportEntityType.ShoppingCartItem: + _dbContext.DetachEntities(x => + { + return x is ShoppingCartItem || x is Customer || x is Product || x is ProductVariantAttributeCombination; + }); + break; + case ExportEntityType.NewsLetterSubscription: + _dbContext.DetachEntities(x => + { + return x is NewsLetterSubscription || x is Customer; + }); + break; } } catch (Exception ex) @@ -1322,16 +1330,26 @@ private IQueryable GetNewsLetterSubscriptionQuery(DataEx skipValue = Math.Max(ctx.Request.Profile.Offset, 0); } - var query = _subscriptionRepository.Value.TableUntracked; + var customerQuery = _customerRepository.Value.TableUntracked.Where(x => !x.Deleted); + + var query = + from ns in _subscriptionRepository.Value.TableUntracked + join c in customerQuery on ns.Email equals c.Email into customers + from c in customers.DefaultIfEmpty() + select new NewsletterSubscriber + { + Subscription = ns, + Customer = c + }; if (storeId > 0) { - query = query.Where(x => x.StoreId == storeId); + query = query.Where(x => x.Subscription.StoreId == storeId); } if (ctx.Filter.IsActiveSubscriber.HasValue) { - query = query.Where(x => x.Active == ctx.Filter.IsActiveSubscriber.Value); + query = query.Where(x => x.Subscription.Active == ctx.Filter.IsActiveSubscriber.Value); } if (ctx.Filter.WorkingLanguageId != null && ctx.Filter.WorkingLanguageId != 0) @@ -1341,32 +1359,37 @@ private IQueryable GetNewsLetterSubscriptionQuery(DataEx if (isDefaultLanguage) { - query = query.Where(x => x.WorkingLanguageId == 0 || x.WorkingLanguageId == ctx.Filter.WorkingLanguageId); + query = query.Where(x => x.Subscription.WorkingLanguageId == 0 || x.Subscription.WorkingLanguageId == ctx.Filter.WorkingLanguageId); } else { - query = query.Where(x => x.WorkingLanguageId == ctx.Filter.WorkingLanguageId); + query = query.Where(x => x.Subscription.WorkingLanguageId == ctx.Filter.WorkingLanguageId); } } if (ctx.Filter.CreatedFrom.HasValue) { var createdFrom = _services.DateTimeHelper.ConvertToUtcTime(ctx.Filter.CreatedFrom.Value, _services.DateTimeHelper.CurrentTimeZone); - query = query.Where(x => createdFrom <= x.CreatedOnUtc); + query = query.Where(x => createdFrom <= x.Subscription.CreatedOnUtc); } if (ctx.Filter.CreatedTo.HasValue) { var createdTo = _services.DateTimeHelper.ConvertToUtcTime(ctx.Filter.CreatedTo.Value, _services.DateTimeHelper.CurrentTimeZone); - query = query.Where(x => createdTo >= x.CreatedOnUtc); + query = query.Where(x => createdTo >= x.Subscription.CreatedOnUtc); + } + + if (ctx.Filter.CustomerRoleIds != null && ctx.Filter.CustomerRoleIds.Any()) + { + query = query.Where(x => x.Customer.CustomerRoleMappings.Select(y => y.CustomerRoleId).Intersect(ctx.Filter.CustomerRoleIds).Any()); } if (ctx.Request.EntitiesToExport.Any()) { - query = query.Where(x => ctx.Request.EntitiesToExport.Contains(x.Id)); + query = query.Where(x => ctx.Request.EntitiesToExport.Contains(x.Subscription.Id)); } - query = query.OrderBy(x => x.Id); + query = query.OrderBy(x => x.Subscription.Id); if (skipValue > 0) { @@ -1374,7 +1397,7 @@ private IQueryable GetNewsLetterSubscriptionQuery(DataEx } else if (ctx.LastId > 0) { - query = query.Where(x => x.Id > ctx.LastId); + query = query.Where(x => x.Subscription.Id > ctx.LastId); } if (take != int.MaxValue) @@ -1382,7 +1405,7 @@ private IQueryable GetNewsLetterSubscriptionQuery(DataEx query = query.Take(() => take); } - return query; + return query.Select(x => x.Subscription); } private List GetNewsLetterSubscriptions(DataExporterContext ctx) diff --git a/src/Presentation/SmartStore.Web/Administration/Controllers/NewsLetterSubscriptionController.cs b/src/Presentation/SmartStore.Web/Administration/Controllers/NewsLetterSubscriptionController.cs index c3aa2a8371..b67c10dfc5 100644 --- a/src/Presentation/SmartStore.Web/Administration/Controllers/NewsLetterSubscriptionController.cs +++ b/src/Presentation/SmartStore.Web/Administration/Controllers/NewsLetterSubscriptionController.cs @@ -76,12 +76,14 @@ public ActionResult SubscriptionList(GridCommand command, NewsLetterSubscription { var gridModel = new GridModel(); var allStores = Services.StoreService.GetAllStores().ToDictionary(x => x.Id); + var newsletterSubscriptions = _newsLetterSubscriptionService.GetAllNewsLetterSubscriptions( model.SearchEmail, command.Page - 1, command.PageSize, true, - model.StoreId != 0 ? new int[] { model.StoreId } : null); + model.StoreId != 0 ? new int[] { model.StoreId } : null, + model.SearchCustomerRoleIds); gridModel.Data = newsletterSubscriptions.Select(x => { diff --git a/src/Presentation/SmartStore.Web/Administration/Models/Messages/NewsLetterSubscriptionListModel.cs b/src/Presentation/SmartStore.Web/Administration/Models/Messages/NewsLetterSubscriptionListModel.cs index ecadab1823..cb4660d07d 100644 --- a/src/Presentation/SmartStore.Web/Administration/Models/Messages/NewsLetterSubscriptionListModel.cs +++ b/src/Presentation/SmartStore.Web/Administration/Models/Messages/NewsLetterSubscriptionListModel.cs @@ -1,4 +1,5 @@ using System.Collections.Generic; +using System.ComponentModel.DataAnnotations; using System.Web.Mvc; using SmartStore.Web.Framework; using SmartStore.Web.Framework.Modelling; @@ -20,6 +21,11 @@ public NewsLetterSubscriptionListModel() [SmartResourceDisplayName("Admin.Customers.Customers.List.SearchEmail")] public string SearchEmail { get; set; } + [UIHint("CustomerRoles")] + [AdditionalMetadata("multiple", true)] + [SmartResourceDisplayName("Admin.Customers.Customers.List.CustomerRoles")] + public int[] SearchCustomerRoleIds { get; set; } + [SmartResourceDisplayName("Admin.Common.Store.SearchFor")] public int StoreId { get; set; } diff --git a/src/Presentation/SmartStore.Web/Administration/Views/Export/_Tab.Filter.cshtml b/src/Presentation/SmartStore.Web/Administration/Views/Export/_Tab.Filter.cshtml index 03dfb8a7bb..ce9d241f92 100644 --- a/src/Presentation/SmartStore.Web/Administration/Views/Export/_Tab.Filter.cshtml +++ b/src/Presentation/SmartStore.Web/Administration/Views/Export/_Tab.Filter.cshtml @@ -327,12 +327,21 @@ @Html.ValidationMessageFor(x => x.Filter.IsActiveSubscriber) + + + @Html.SmartLabelFor(x => x.Filter.CustomerRoleIds) + + + @Html.EditorFor(x => x.Filter.CustomerRoleIds) + @Html.ValidationMessageFor(x => x.Filter.CustomerRoleIds) + + @Html.SmartLabelFor(x => x.Filter.WorkingLanguageId) - @Html.DropDownListFor(model => model.Filter.WorkingLanguageId, Model.Filter.AvailableLanguages) + @Html.DropDownListFor(x => x.Filter.WorkingLanguageId, Model.Filter.AvailableLanguages) @Html.ValidationMessageFor(x => x.Filter.WorkingLanguageId) diff --git a/src/Presentation/SmartStore.Web/Administration/Views/NewsLetterSubscription/List.cshtml b/src/Presentation/SmartStore.Web/Administration/Views/NewsLetterSubscription/List.cshtml index 85bbd9344b..198d34aa19 100644 --- a/src/Presentation/SmartStore.Web/Administration/Views/NewsLetterSubscription/List.cshtml +++ b/src/Presentation/SmartStore.Web/Administration/Views/NewsLetterSubscription/List.cshtml @@ -20,6 +20,10 @@ @Html.SmartLabelFor(model => model.SearchEmail) @Html.TextBoxFor(model => Model.SearchEmail, new { @class = "form-control" })
+
+ @Html.SmartLabelFor(model => model.SearchCustomerRoleIds) + @Html.EditorFor(model => model.SearchCustomerRoleIds) +
@if (Model.AvailableStores.Count > 1) {
@@ -47,8 +51,8 @@ columns.Bound(x => x.Email) .Width(500); columns.Bound(x => x.Active) - .Template(item => @Html.SymbolForBool(item.Active)) - .ClientTemplate(@Html.SymbolForBool("Active")) + .Template(item => Html.SymbolForBool(item.Active)) + .ClientTemplate(Html.SymbolForBool("Active")) .Centered() .Width(100); columns.Bound(x => x.StoreName) @@ -88,7 +92,8 @@ function onDataBinding(e) { var searchModel = { - SearchEmail: $('#@Html.FieldIdFor(model => model.SearchEmail)').val(), + SearchEmail: $('#@Html.FieldIdFor(model => model.SearchEmail)').val(), + SearchCustomerRoleIds: $('#@Html.FieldIdFor(model => model.SearchCustomerRoleIds)').val(), StoreId: $('#@Html.FieldIdFor(model => model.StoreId)').val(), }; e.data = searchModel; From f64219697b7fa88ab5cdb34524a2457a6c411cd3 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Fri, 13 Nov 2020 15:29:52 +0100 Subject: [PATCH 030/230] Fixed minor bug where country of company info settings couldn't be resetted --- .../Administration/Controllers/SettingController.cs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/Presentation/SmartStore.Web/Administration/Controllers/SettingController.cs b/src/Presentation/SmartStore.Web/Administration/Controllers/SettingController.cs index 3847cebe60..997842d7e4 100644 --- a/src/Presentation/SmartStore.Web/Administration/Controllers/SettingController.cs +++ b/src/Presentation/SmartStore.Web/Administration/Controllers/SettingController.cs @@ -1358,6 +1358,9 @@ public ActionResult GeneralCommon( #region POST mapping + // Set CountryId explicitly else it can't be resetted. + companySettings.CountryId = model.CompanyInformationSettings.CountryId ?? 0; + // (Un)track PDF logo id _mediaTracker.Value.Track(pdfSettings, prevPdfLogoId, x => x.LogoPictureId); From 462282059b8e61aea578b537745035d59c526cf7 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Fri, 13 Nov 2020 15:30:47 +0100 Subject: [PATCH 031/230] Fixed error when printing shipment details and no country was set in company information settings --- .../Views/Order/ShipmentDetails.Print.cshtml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Presentation/SmartStore.Web/Administration/Views/Order/ShipmentDetails.Print.cshtml b/src/Presentation/SmartStore.Web/Administration/Views/Order/ShipmentDetails.Print.cshtml index 7a0362b2a5..2fc538270c 100644 --- a/src/Presentation/SmartStore.Web/Administration/Views/Order/ShipmentDetails.Print.cshtml +++ b/src/Presentation/SmartStore.Web/Administration/Views/Order/ShipmentDetails.Print.cshtml @@ -39,11 +39,11 @@
@{ - var countryService = EngineContext.Current.Resolve(); - var country = countryService.GetCountryById(company.CountryId); - - var city = JoinValues(new string[] { company.ZipCode, company.City }).ToString(); - var countryAndState = JoinValues(new string[] { country.GetLocalized(x => x.Name), company.StateName }, ", ").ToString(); + var countryService = EngineContext.Current.Resolve(); + var country = countryService.GetCountryById(company.CountryId); + var countryName = country != null ? country.GetLocalized(x => x.Name) : ""; + var city = JoinValues(new string[] { company.ZipCode, company.City }).ToString(); + var countryAndState = JoinValues(new string[] { countryName, company.StateName }, ", ").ToString(); } @JoinValues(new string[] { company.CompanyName, company.Street, company.Street2, city, countryAndState }, " · ") From e08a75cd528c967f5110bc3bb7987ea70db0be24 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Tue, 17 Nov 2020 15:36:59 +0100 Subject: [PATCH 032/230] Deployment targets couldn't be deleted --- .../Administration/Views/Export/_Tab.Deployment.cshtml | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Presentation/SmartStore.Web/Administration/Views/Export/_Tab.Deployment.cshtml b/src/Presentation/SmartStore.Web/Administration/Views/Export/_Tab.Deployment.cshtml index 7defeac181..85a4192186 100644 --- a/src/Presentation/SmartStore.Web/Administration/Views/Export/_Tab.Deployment.cshtml +++ b/src/Presentation/SmartStore.Web/Administration/Views/Export/_Tab.Deployment.cshtml @@ -276,6 +276,7 @@ // delete deployment $('#export-deployment-list').find('.delete-depoyment').click(function () { $(this).doPostData({ + data: { "__RequestVerificationToken": token }, ask: @T("Admin.Common.AskToProceed").JsText }); }); From 1f7920bb657d5010b4a26c9ffb684ebea35d1457 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Tue, 17 Nov 2020 15:54:50 +0100 Subject: [PATCH 033/230] Countries couldn't be updated in grid edit mode --- .../Administration/Controllers/CountryController.cs | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Presentation/SmartStore.Web/Administration/Controllers/CountryController.cs b/src/Presentation/SmartStore.Web/Administration/Controllers/CountryController.cs index b8965930bc..005c2da204 100644 --- a/src/Presentation/SmartStore.Web/Administration/Controllers/CountryController.cs +++ b/src/Presentation/SmartStore.Web/Administration/Controllers/CountryController.cs @@ -118,7 +118,6 @@ public ActionResult CountryList(GridCommand command) } [GridAction(EnableCustomBinding = true)] - [ValidateAntiForgeryToken] [Permission(Permissions.Configuration.Country.Update)] public ActionResult CountryUpdate(CountryModel model, GridCommand command) { From e1c4fcfe5872ef44f277f801351ffcfa378d5338 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Tue, 17 Nov 2020 15:55:58 +0100 Subject: [PATCH 034/230] Order couln'd be edited by selected ids --- .../SmartStore.Web/Administration/Views/Order/List.cshtml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Presentation/SmartStore.Web/Administration/Views/Order/List.cshtml b/src/Presentation/SmartStore.Web/Administration/Views/Order/List.cshtml index 0b85ca9e43..b11cef61e1 100644 --- a/src/Presentation/SmartStore.Web/Administration/Views/Order/List.cshtml +++ b/src/Presentation/SmartStore.Web/Administration/Views/Order/List.cshtml @@ -209,8 +209,9 @@ if (!accepted) return; - var form = '
'; - form += ''; + var form = ''; + form += ''; + form += ''; form += '
'; $('body').append(form); From 1908a40cd0777502d936d227f838cecc09f2159b Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Tue, 17 Nov 2020 17:16:57 +0100 Subject: [PATCH 035/230] Fixed deletion of selected products --- .../Controllers/ProductController.cs | 24 +++++---------- .../Administration/Views/Product/List.cshtml | 29 ++++++++++++++----- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/src/Presentation/SmartStore.Web/Administration/Controllers/ProductController.cs b/src/Presentation/SmartStore.Web/Administration/Controllers/ProductController.cs index 319baaad37..a195f095ed 100644 --- a/src/Presentation/SmartStore.Web/Administration/Controllers/ProductController.cs +++ b/src/Presentation/SmartStore.Web/Administration/Controllers/ProductController.cs @@ -1416,28 +1416,18 @@ public ActionResult Delete(int id) return RedirectToAction("List"); } - [Permission(Permissions.Catalog.Product.Delete)] + [HttpPost] [ValidateAntiForgeryToken] - public ActionResult DeleteSelected(string selectedIds) + [Permission(Permissions.Catalog.Product.Delete)] + public ActionResult DeleteSelected(ICollection selectedIds) { - var products = new List(); - if (selectedIds != null) + if (selectedIds?.Any() ?? false) { - var ids = selectedIds - .Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries) - .Select(x => Convert.ToInt32(x)) - .ToArray(); - - products.AddRange(_productService.GetProductsByIds(ids)); - - for (var i = 0; i < products.Count; i++) - { - var product = products[i]; - _productService.DeleteProduct(product); - } + var products = _productService.GetProductsByIds(selectedIds.ToArray()); + products.Each(x => _productService.DeleteProduct(x)); } - return RedirectToAction("List"); + return Json(new { Result = true }); } [HttpPost] diff --git a/src/Presentation/SmartStore.Web/Administration/Views/Product/List.cshtml b/src/Presentation/SmartStore.Web/Administration/Views/Product/List.cshtml index 808ff787e0..4237e99876 100644 --- a/src/Presentation/SmartStore.Web/Administration/Views/Product/List.cshtml +++ b/src/Presentation/SmartStore.Web/Administration/Views/Product/List.cshtml @@ -204,14 +204,27 @@ $('.checkboxGroups').attr('checked', $(this).is(':checked')).change(); }); - //"Delete (selected)" button - $('#delete-selected').click(function (e) { - if (confirm(@T("Admin.Common.AskToProceed").JsText)) { - e.preventDefault(); - //redirect to required URL - setLocation('@(Url.Action("DeleteSelected", "Product"))?selectedIds=' + selectedIds.join(",")); - return false; - } + // "Delete (selected)" button. + $('#delete-selected').click(function (e) { + e.preventDefault(); + + var token = $('input[name="__RequestVerificationToken"]').val(); + + $({}).doAjax({ + type: 'POST', + url: '@Url.Action("DeleteSelected", "Product")', + ask: @T("Admin.Common.AskToProceed").JsText, + data: { selectedIds: selectedIds, __RequestVerificationToken: token }, + callbackSuccess: function (data) { + var grid = $('#products-grid').data('tGrid'); + grid.currentPage = 1; + grid.ajaxRequest(); + $('.checkboxGroups').attr('checked', false).change(); + selectedIds = []; + } + }); + + return false; }); //wire up checkboxes. From 154c74e5c8e17eca1614de70dc9170f18158fd9a Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Tue, 17 Nov 2020 19:53:41 +0100 Subject: [PATCH 036/230] Added setting to turn on SuppressIdentityHeuristicChecks for AntiForgeryToken validation --- src/Presentation/SmartStore.Web/Global.asax.cs | 7 +++++++ src/Presentation/SmartStore.Web/Web.config | 1 + 2 files changed, 8 insertions(+) diff --git a/src/Presentation/SmartStore.Web/Global.asax.cs b/src/Presentation/SmartStore.Web/Global.asax.cs index 330feb31c3..56991d9d7d 100644 --- a/src/Presentation/SmartStore.Web/Global.asax.cs +++ b/src/Presentation/SmartStore.Web/Global.asax.cs @@ -1,6 +1,7 @@ using System.Linq; using System.Net; using System.Web; +using System.Web.Helpers; using System.Web.Hosting; using System.Web.Mvc; using System.Web.Optimization; @@ -18,6 +19,7 @@ using SmartStore.Core.Events; using SmartStore.Core.Infrastructure; using SmartStore.Core.Themes; +using SmartStore.Utilities; using SmartStore.Web.Framework; using SmartStore.Web.Framework.Bundling; using SmartStore.Web.Framework.Filters; @@ -91,6 +93,11 @@ protected void Application_Start() if (mobileDisplayMode != null) DisplayModeProvider.Instance.Modes.Remove(mobileDisplayMode); + // Some hosters have configured their hosting packages to run on a web farm and thus require a machine key. + // On each app restart a new machine key will be created by IIS and decryption of AntiForgeryToken fails if no explicit machine key is set in the web.config. + // With SuppressIdentityHeuristicChecks = true we turn the machine key check off. + AntiForgeryConfig.SuppressIdentityHeuristicChecks = CommonHelper.GetAppSetting("sm:AntiForgerySuppressHeuristicChecks"); + bool installed = DataSettings.DatabaseIsInstalled(); if (installed) diff --git a/src/Presentation/SmartStore.Web/Web.config b/src/Presentation/SmartStore.Web/Web.config index af3ba1a63a..47aa2b0b72 100644 --- a/src/Presentation/SmartStore.Web/Web.config +++ b/src/Presentation/SmartStore.Web/Web.config @@ -75,6 +75,7 @@ + From ec3439f39a3c3016b3639c3533e19c531e9952b5 Mon Sep 17 00:00:00 2001 From: Marcus Gesing Date: Wed, 18 Nov 2020 12:16:53 +0100 Subject: [PATCH 037/230] Fixes rare exception when migrating discount requirements --- .../SmartStore.Data/Utilities/DataMigrator.cs | 58 +++++++++++++++---- 1 file changed, 47 insertions(+), 11 deletions(-) diff --git a/src/Libraries/SmartStore.Data/Utilities/DataMigrator.cs b/src/Libraries/SmartStore.Data/Utilities/DataMigrator.cs index a3fd6a6c13..796f12c1fa 100644 --- a/src/Libraries/SmartStore.Data/Utilities/DataMigrator.cs +++ b/src/Libraries/SmartStore.Data/Utilities/DataMigrator.cs @@ -27,6 +27,7 @@ using SmartStore.Core.Domain.Shipping; using SmartStore.Core.Infrastructure; using SmartStore.Core.IO; +using SmartStore.Core.Logging; using SmartStore.Core.Security; using SmartStore.Rules; using SmartStore.Rules.Domain; @@ -1441,19 +1442,43 @@ void AddRuleSetsForDiscountRequirements() case "discountrequirement.purchasedallproducts": case "discountrequirement.purchasedoneproduct": var productIds = new HashSet(); + var failedRequirements = new List(); + foreach (var requirement in requirements[name].Where(x => x.RestrictedProductIds.HasValue())) { - productIds.AddRange(requirement.RestrictedProductIds.ToIntArray()); + try + { + productIds.AddRange(requirement.RestrictedProductIds.ToIntArray()); + } + catch + { + failedRequirements.Add(requirement); + } } - if (productIds.Any()) + if (!failedRequirements.Any()) { - ruleSet.Rules.Add(new RuleEntity + if (productIds.Any()) { - RuleType = name == "discountrequirement.hasallproducts" || name == "discountrequirement.hasoneproduct" ? "ProductInCart" : "CartPurchasedProduct", - Operator = name == "discountrequirement.hasallproducts" || name == "discountrequirement.purchasedallproducts" ? RuleOperator.Contains : RuleOperator.In, - Value = string.Join(",", productIds) - }); + ruleSet.Rules.Add(new RuleEntity + { + RuleType = name == "discountrequirement.hasallproducts" || name == "discountrequirement.hasoneproduct" ? "ProductInCart" : "CartPurchasedProduct", + Operator = name == "discountrequirement.hasallproducts" || name == "discountrequirement.purchasedallproducts" ? RuleOperator.Contains : RuleOperator.In, + Value = string.Join(",", productIds) + }); + } + } + else + { + var sb = PooledStringBuilder.Rent(); + sb.AppendLine($"Cannnot create a rule for '{name}'."); + sb.AppendLine($"Discount name: {discount.Name.NaIfEmpty()}"); + sb.AppendLine($"Discount ID: {discount.Id}"); + sb.AppendLine(); + sb.AppendLine("Unsupported expressions for restricted product IDs:"); + failedRequirements.Each(x => sb.AppendLine(x.RestrictedProductIds)); + + LogWarning($"Cannot migrate requirements for discount '{discount.Name.NaIfEmpty()}'.", sb.ToStringAndReturn()); } break; case "discountrequirement.store": @@ -1502,7 +1527,7 @@ void AddRuleSetsForDiscountRequirements() } break; default: - $"Cannot add rule set for unknown discount requirement type ({name}).".Dump(); + LogWarning($"Cannot add rule set for unknown discount requirement type ({name}).", null); break; } } @@ -1690,7 +1715,6 @@ void AddRuleSetsForPaymentFilters() } } - /*static*/ T GetExtraData(OldDiscountRequirement req, string name) { try @@ -1712,7 +1736,6 @@ T GetExtraData(OldDiscountRequirement req, string name) return default(T); } - /*static*/ PluginFilterConfigModel GetFilterData(Dictionary syncMappings, int entityId, string rootNodeName) { try @@ -1734,7 +1757,6 @@ PluginFilterConfigModel GetFilterData(Dictionary syncMappings, return null; } - /*static*/ void AddRulesForCommonFilters(SmartObjectContext _ctx, RuleSetEntity ruleSet, PluginFilterConfigModel model, string pluginSystemName) { // Store id (if plugin is limited to stores). @@ -1807,6 +1829,20 @@ void AddRulesForCommonFilters(SmartObjectContext _ctx, RuleSetEntity ruleSet, Pl } } } + + /*static*/ + static void LogWarning(string message, string fullDescription) + { + try + { + var logger = EngineContext.Current.Resolve().GetLogger(typeof(DataMigrator)); + if (logger != null) + { + logger.Warn(fullDescription.HasValue() ? new SmartException(fullDescription) : null, message); + } + } + catch { } + } } public class OldDiscountRequirement From 57fb6e32a63db8a6aa89e7e91ac1fe2a4290f874 Mon Sep 17 00:00:00 2001 From: Michael Herzog Date: Wed, 18 Nov 2020 20:37:35 +0100 Subject: [PATCH 038/230] Fixed install bug (extension couldn't be selected when adding new project) & Closes #2140 wrong namespaces (cherry picked from commit 699aef4c85ed73c88805647ca3684c10b62c6b0a) --- .../SmartStore.VSIXProject.vsix | Bin 136867 -> 98742 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/src/Tools/SmartStore.VS.Extensions/SmartStore.VSIXProject.vsix b/src/Tools/SmartStore.VS.Extensions/SmartStore.VSIXProject.vsix index 07654a7809f32c3dd09e46d40d3f9f4c926a4b8e..92b836898ea8ac9a8c8f5236af68578f858c2a16 100644 GIT binary patch literal 98742 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

Kc%?33 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

diff --git a/src/Presentation/SmartStore.Web/Views/ShoppingCart/Partials/OrderSummary.cshtml b/src/Presentation/SmartStore.Web/Views/ShoppingCart/Partials/OrderSummary.cshtml index 3c451c5a0d..0ec3574612 100644 --- a/src/Presentation/SmartStore.Web/Views/ShoppingCart/Partials/OrderSummary.cshtml +++ b/src/Presentation/SmartStore.Web/Views/ShoppingCart/Partials/OrderSummary.cshtml @@ -106,7 +106,7 @@
-
+
-} - @if (Model.ShowConfirmOrderLegalHint && !Model.IsEditable) {